@@ -28,9 +28,102 @@ save_to_hf: false
2828` ` `
2929
3030
31- ## 1. 精调
31+ ## 1. 预训练
3232
33- ### 1.1 数据准备
33+ ### 1.1. 数据准备
34+
35+ #### 1.1.1. 在线数据流
36+
37+ 我们支持的精调数据格式是每行包含一个字典的 json 文件,每个字典包含以下字段:
38+
39+ - ` text` : `str, List(str)`, 预训练文本。
40+
41+ 样例数据:
42+
43+ ` ` ` text
44+ {"text": ["一个需要连续输入值的分类问题的示例是房屋价格预测。房屋的价格通常基于诸如平方英尺、位置、卧室和浴室数量以及像后院或车库等功能这样的因素定价。为了准确预测房屋价格,这些标准必须作为连续输入值输入到分类模型中。"]}
45+ ...
46+ ` ` `
47+
48+ # ### 1.1.2. 离线数据流
49+
50+ 我们也可以选择使用离线的比特预训练数据流,更节省内存。离线数据流制作方法如下:
51+
52+ 下载一个文本数据集,例如 https://modelscope.cn/datasets/BazingaLyn/mini_pretrain_dataset
53+
54+ 格式需为jsonl,每行格式例如BazingaLyn/mini_pretrain_dataset/pretrain_hq_v7.jsonl:
55+ ` ` ` text
56+ {"text": "番茄炒蛋\n 材料:\n 鸡蛋3个、番茄1个、油、盐、糖、水淀粉\n 做法:..."}
57+ {"text": "请描述一下如何正确规划个人理财。正确规划个人理财需要以下几个步骤..."}
58+ {"text": "请输入一段描述有关海洋保护的情景对话。Person A: 哇,这个海滩真..."}
59+ {"text": "鉴别两种不同类型的葡萄酒。鉴别葡萄酒的方法因其类型和品种而异,下..."}
60+ ` ` `
61+
62+ 运行`examples/tools/create_pretraining_data.py`,生成数据将会保存在当前目录下的`./pretrain_data.bin`和`./pretrain_data.idx`
63+ ` ` ` text
64+ python -u examples/tools/create_pretraining_data.py \
65+ --model_name_or_path "/path/to/your/Qwen3-0.6B-base" \
66+ --data_format "JSON" \
67+ --input_path "/path/to/your/BazingaLyn/mini_pretrain_dataset/pretrain_hq_v7.jsonl" \
68+ --append_eos \
69+ --output_prefix "./pretrain_data" \
70+ --workers 1 \
71+ --log_interval 10000 \
72+ --data_impl "mmap"
73+ ` ` `
74+
75+ - 参数说明
76+
77+ | 参数名 | 类型 | 说明 |
78+ |--------------------|----------- |-----------------|
79+ | `--model_name_or_path` | string | 模型路径 |
80+ | `--data_format` | string | 支持的文件格式,之前只支持 json |
81+ | `--input_path` | string | 输入的json文件的路径 |
82+ | `--append_eos` | store_true | 是否在document的结尾添加eos token |
83+ | `--output_prefix` | str | 输出文件的前缀 |
84+ | `--workers` | int | 运行的进程数 |
85+ | `--log_interval` | int | 打印日志间隔 |
86+ | `--data_impl` | str | 制作的数据集类型,默认为mmap,也可以选择lazy |
87+
88+ # ## 1.2. 全参 PT
89+
90+ 预训练需要在配置文件中指定 `stage : PT`
91+
92+ 在线数据流
93+ ` ` ` bash
94+ # 单卡
95+ paddleformers-cli train ./config/pt/full.yaml
96+ # 多卡
97+ paddleformers-cli train ./config/pt/full_tp_pp.yaml
98+ ` ` `
99+
100+ 离线数据流
101+
102+ 在配置文件中:
103+
104+ `input_dir`指定数据集的前缀,例如:数据集 `data-1-part0.bin` 需要设置为 `input_dir : " 1.0 ./data-1-part0" ` ,` 1.0` 为数据配比;
105+
106+ `split` 字段为 `train/eval` 的分配比例,如:`split : " 998,2" ` , 其中` train`为训练集,`eval`为评估集
107+
108+ `dataset_type` 指定为 `pretrain`,例如:`dataset_type : " pretrain" `
109+
110+ ` ` ` bash
111+ paddleformers-cli train ./config/pt/full_offline_data.yaml
112+ ```
113+
114+ ### 1.3. LoRA PT
115+
116+ LoRA SFT 启动命令参考
117+ ``` bash
118+ # 单卡
119+ paddleformers-cli train ./config/pt/lora.yaml
120+ # 多卡
121+ paddleformers-cli train ./config/pt/lora_tp_pp.yaml
122+ ```
123+
124+ ## 2. 精调
125+
126+ ### 2.1 数据准备
34127
35128我们支持的精调数据格式是每行包含一个字典的 json 文件,每个字典包含以下字段:
36129
@@ -51,7 +144,7 @@ wget https://bj.bcebos.com/paddlenlp/datasets/examples/alpaca_demo.gz
51144mkdir -p data/sft && tar -xf alpaca_demo.gz -C data/sft/ --strip-components=1
52145```
53146
54- # ## 1 .2 全参 SFT
147+ ### 2 .2 全参 SFT
55148
56149单卡
57150``` bash
@@ -63,17 +156,17 @@ python -u run_finetune.py ./config/sft/full.yaml
63156python -u -m paddle.distributed.launch --devices " 0,1,2,3,4,5,6,7" run_finetune.py ./config/sft/full_tp_pp.yaml
64157```
65158
66- # ## 1 .3 LoRA SFT
159+ ### 2 .3 LoRA SFT
67160
68161LoRA SFT 启动命令参考
69162``` bash
70163python -u run_finetune.py ./config/sft/lora.yaml
71164```
72165
73166
74- # # 2 . 对齐
167+ ## 3 . 对齐
75168
76- # ## 2 .1 数据准备
169+ ### 3 .1 数据准备
77170
78171我们支持的精调数据格式是每行包含一个字典的 json 文件,每个字典包含以下字段:
79172
@@ -105,7 +198,7 @@ wget https://bj.bcebos.com/paddlenlp/datasets/examples/ultrafeedback_binarized.t
105198mkdir -p data/dpo && tar -zxf ultrafeedback_binarized.tar.gz -C data/dpo/ --strip-components=1
106199```
107200
108- # ## 2 .2 全参 DPO
201+ ### 3 .2 全参 DPO
109202
110203单卡
111204``` bash
@@ -117,15 +210,15 @@ python -u ./alignment/dpo/run_dpo.py ./config/dpo/full.yaml
117210python -u -m paddle.distributed.launch --devices " 0,1,2,3,4,5,6,7" ./alignment/dpo/run_dpo.py ./config/dpo/full_tp_pp.yaml
118211```
119212
120- # ## 2 .3 LoRA DPO
213+ ### 3 .3 LoRA DPO
121214
122215LoRA DPO 启动命令参考
123216``` bash
124217python -u ./alignment/dpo/run_dpo.py ./config/dpo/lora.yaml
125218```
126219
127220
128- # # 3 . LoRA 参数合并
221+ ## 4 . LoRA 参数合并
129222
130223使用 LoRA 方式训练模型后,为了方便推理,我们提供将 LoRA 参数合并到模型主权重中的脚本` tools/mergekit.py ` 。
131224
0 commit comments