-
Notifications
You must be signed in to change notification settings - Fork 1.9k
训练细节
yaoxin edited this page Jul 5, 2023
·
18 revisions
整个训练流程包括词表扩充、预训练和指令精调三部分,其中词表扩充的代码参见merge_tokenizers.py;预训练和指令精调代码参考了🤗transformers中的run_clm.py和Stanford Alpaca项目中数据集处理的相关部分。
由于原版LLaMA对中文的支持非常有限,本项目在原版LLaMA的基础上进一步扩充了中文词表。
- 在通用中文语料上训练了基于sentencepiece的20K中文词表并与原版LLaMA模型的32K词表进行合并
- 排除重复的token后,得到的最终中文LLaMA词表大小为49953
- 需要注意的是,在fine-tune阶段Alpaca比LLaMA多一个pad token,所以中文Alpaca的词表大小为49954
更多关于中文词表扩充的动机,可参考FAQ。如果欲了解扩充词表的具体方法,或者使用自己的词表对LLaMA tokenizer进行扩充,我们提供了代码merge_tokenizers.py供参考。该脚本运行方式如下:
python merge_tokenizers.py \
--llama_tokenizer_dir llama_tokenizer_dir \
--chinese_sp_model_file chinese_sp_model_file
其中
-
llama_tokenizer_dir
:指向存放原版LLaMA tokenizer的目录 -
chinese_sp_model_file
:指向用sentencepiece训练的中文词表文件
我们所使用的在中文通用语料上训练的20K中文词表也一并放出,可以在scripts/merge_tokenizer/chinese_sp.model下载。
- 具体的预训练代码可以参考scripts/training/run_clm_pt_with_peft.py,使用方式见预训练脚本。
- 技术细节请参考技术报告:https://arxiv.org/abs/2304.08177
-
指令精调阶段的任务形式基本与Stanford Alpaca相同。训练方案同样采用了LoRA进行高效精调,并进一步增加了可训练参数数量。
-
在prompt设计上,精调以及预测时采用的都是原版Stanford Alpaca不带input的模版。对于包含input字段的数据,采用
f"{instruction}+\n+{input}"
的形式进行拼接。 -
具体的指令精调代码可以参考scripts/training/run_clm_sft_with_peft.py,使用方式见指令精调脚本。
指令精调阶段使用了以下数据,其中7B模型约2M数据、13B模型约3M数据。基本构成如下:
数据 | 量级 | 来源 | 说明 |
---|---|---|---|
中英翻译数据 | 500K | 外部链接 | 在原数据集的基础上进行了采样+规则筛选 |
pCLUE数据 | 300K | 外部链接 | 在原数据集的基础上进行了采样+规则筛选 |
Alpaca数据(英) | 50K | 外部链接 | 斯坦福原版Alpaca训练数据 |
Alpaca数据(中) | 50K | 本地链接 | 本项目使用ChatGPT接口将英文版翻译为中文(筛掉一部分) |
Self-instruction数据 | 1~2M | (暂无) | 本项目使用ChatGPT接口进行爬取,具体见以下脚本描述 |
本项目提供了一个动态生成不同领域和指令类型的prompt爬取脚本script/crawl_prompt.py
。
python script/crawl_prompt.py output-file
- 思路与Stanford Alpaca中的做法基本一致,一次批量生成20组数据(可自行修改模板),以降低爬取成本
- 生成的文件包含通过
gpt-3.5-turbo
爬取的数据(你必须拥有OpenAI API key才可以使用) - 虽然指令模板中要求输出JSON,但系统并不总是会返回合法的JSON,需要自行对返回数据进行清洗
- 由于爬取时间比较长,建议后台运行该脚本。多线程运行时注意OpenAI API的调用限制上限
以下是训练基础版7B模型的训练配置。更多详情请参考我们的技术报告。
实验设置 | 预训练-第一阶段 | 预训练-第二阶段 | 指令精调 |
---|---|---|---|
Batch Size | 1024 | 1024 | 512 |
Initial Learning Rate | 2e-4 | 1e-4 | 1e-4 |
Training Steps | 3K | 6K | 6K-10K |
Max Length | 512 | 512 | 512 |
Trainable Parameters (%) | 2.97% | 6.06% | 6.22% |
Training Device | 8 × A40(48G) | 16 × A40(48G) | 16 × A40(48G) |
Distributed Training | DeepSpeed Zero-2 | DeepSpeed Zero-2 | DeepSpeed Zero-2 |
- 模型合并与转换
- 模型量化、推理、部署
- 效果与评测
- 训练细节
- 常见问题
- Model Reconstruction
- Model Quantization, Inference and Deployment
- System Performance
- Training Details
- FAQ