技術報告:Longqlora:延長大語模型上下文長度的有效方法
Longqlora是一種記憶效率有效的方法,可擴展具有較少訓練GPU的大語言模型的上下文長度。在單個32GB V100 GPU上,Longqlora可以將Llama2 7b和13b的上下文長度從4096擴展到8192,甚至擴展到12K。 Longqlora僅在僅1000個FINETUNENS步驟之後就可以在PG19和Proof-Pile數據集上實現競爭性的困惑性能,我們的型號優於Longlora,並且非常接近MPT-7B-8K。
評估PG19驗證和證明PILE測試數據集的困惑在評估上下文長度為8192:
| 模型 | PG19 | 驗證 |
|---|---|---|
| Llama2-7b | > 1000 | > 1000 |
| MPT-7B-8K | 7.98 | 2.67 |
| longlora-lora-7b-8k | 8.20 | 2.78 |
| longlora-full-7b-8k | 7.93 | 2.73 |
| longqlora-7b-8k | 7.96 | 2.73 |
在評估驗證和證明PILE測試數據集中,評估7B模型的評估困惑在1024至8192中的評估 - PILE測試數據集:

我們採樣了大約54k長的文本,從Redpajama數據集到芬泰預性模型,其令牌長度從4096到32768。
我們還構建了一個長上下文指令數據集,以用於監督的Finetuning聊天模型。該數據集包含39K指令數據,主要包括書籍摘要,自然問題,Longqa的子集和Wizardlm的Evol-Instruct。為了適應8192的目標長度,每個數據的最大令牌數為8192。分佈如下。

| 數據集 | 描述 |
|---|---|
| longqlora-protrain-data-54k | 包括54212個數據,用於驗證模型 |
| longqlora-sft-data-39k | 包括38821個數據,用於捕獲聊天模型 |
| 模型 | 上下文長度 | 描述 |
|---|---|---|
| longqlora-llama2-7b-8k | 8192 | 基於Llama2-7b,用Longqlora-Pratrain-data-54k進行了1K步驟 |
| ? longqlora-vicuna-13b-8k | 8192 | 基於Vicuna-13b-v1.5 |
| longqlora-llama2-7b-8k-lora | 8192 | 洛拉重量 |
| longqlora-Vicuna-13b-8k-lora | 8192 | 洛拉重量 |
培訓配置保存在Train_args目錄中,一些參數如下:
sft :執行SFT任務如果設置為真,則執行訓練預處理。model_max_length :目標上下文長度。max_seq_length :訓練中的最大序列長度應小於或等於model_max_lengthlogging_steps :每個n步驟的記錄訓練損失。save_steps :每個n步驟保存模型。lora_rank :洛拉(Lora)的訓練等級。延長預算模型Llama2-7b的上下文長度:
deepspeed train.py --train_args_file ./train_args/llama2-7b-pretrain.yaml擴展聊天模型Vicuna-13b的上下文長度:
deepspeed train.py --train_args_file ./train_args/vicuna-13b-sft.yaml您可以將Lora重量合併到基本模型:
cd script
python merge_lora.py推論據預審慎的模型:
cd script/inference
python inference.py與聊天模型聊天:
cd script/inference
python chat.py下載Llama2由Longlora命名的評估數據集。
| 數據集 |
|---|
| pg19-validation.bin |
| pg19-test.bin |
| ? |
評估模型的困惑。您可以將load_in_4bit設置為true來保存內存:
cd script/evaluate
python evaluate.py
--batch_size 1
--base_model YeungNLP/LongQLoRA-Llama2-7b-8k
--seq_len 8192
--context_size 8192
--sliding_window 8192
--data_path pg19-validation.bin評估Lora重量的模型的困惑:
cd script/evaluate
python evaluate.py
--batch_size 1
--base_model YeungNLP/LongQLoRA-Llama2-7b-8k
--peft_model LongQLoRA-Llama2-7b-8k-lora
--seq_len 8192
--context_size 8192
--sliding_window 8192
--data_path pg19-validation.binLongqlora-Vicuna-13B-8K ARS產生的示例如下。
長上下文加入的示例,輸入上下文長度在4096和8192之間,大於Llama2的原始上下文長度。

簡短上下文加入的示例,模型保持了以下簡短說明的性能。

@misc{yang2023longqlora,
title={LongQLoRA: Efficient and Effective Method to Extend Context Length of Large Language Models},
author={Jianxin Yang},
year={2023},
eprint={2311.04879},
archivePrefix={arXiv},
primaryClass={cs.CL}
}