技术报告: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}
}