@@ -188,67 +188,93 @@ data.txt(待预测数据文件),需要预测标签的文本数据。
188
188
#### 2.4.1 预训练模型微调
189
189
190
190
191
- 使用CPU/GPU训练,默认为GPU训练,使用CPU训练只需将设备参数配置改为` --device " cpu" ` :
191
+ 使用CPU/GPU训练,默认为GPU训练,使用CPU训练只需将设备参数配置改为` --device cpu ` :
192
192
``` shell
193
193
python train.py \
194
- --dataset_dir " data" \
195
- --device " gpu" \
194
+ --model_name_or_path ernie-3.0-medium-zh \
195
+ --data_dir ./data/ \
196
+ --output_dir checkpoint \
197
+ --device gpu \
198
+ --learning_rate 3e-5 \
199
+ --num_train_epochs 100 \
200
+ --early_stopping_patience 4 \
196
201
--max_seq_length 128 \
197
- --model_name " ernie-3.0-medium-zh" \
198
- --batch_size 32 \
199
- --early_stop \
200
- --epochs 100
202
+ --per_device_eval_batch_size 32 \
203
+ --per_device_train_batch_size 32 \
204
+ --num_train_epochs 100 \
205
+ --do_train \
206
+ --do_eval \
207
+ --metric_for_best_model accuracy \
208
+ --load_best_model_at_end \
209
+ --evaluation_strategy epoch \
210
+ --save_strategy epoch \
211
+ --save_total_limit 1
201
212
```
202
213
203
214
如果在CPU环境下训练,可以指定` nproc_per_node ` 参数进行多核训练:
204
215
``` shell
205
- python -m paddle.distributed.launch --nproc_per_node 8 --backend " gloo" train.py \
206
- --dataset_dir " data" \
207
- --device " cpu" \
216
+ python -m paddle.distributed.launch --nproc_per_node 8 --backend gloo train.py \
217
+ --model_name_or_path ernie-3.0-medium-zh \
218
+ --data_dir ./data/ \
219
+ --output_dir checkpoint \
220
+ --device cpu \
221
+ --learning_rate 3e-5 \
222
+ --num_train_epochs 100 \
208
223
--max_seq_length 128 \
209
- --model_name " ernie-3.0-medium-zh" \
210
- --batch_size 32 \
211
- --early_stop \
212
- --epochs 100
224
+ --per_device_eval_batch_size 32 \
225
+ --per_device_train_batch_size 32 \
226
+ --num_train_epochs 100 \
227
+ --early_stopping_patience 4 \
228
+ --do_train \
229
+ --do_eval \
230
+ --metric_for_best_model accuracy \
231
+ --load_best_model_at_end \
232
+ --evaluation_strategy epoch \
233
+ --save_strategy epoch \
234
+ --save_total_limit 1
213
235
```
214
236
215
- 如果在GPU环境中使用,可以指定` gpus ` 参数进行单卡/多卡训练。使用多卡训练可以指定多个GPU卡号,例如 --gpus " 0,1" 。如果设备只有一个GPU卡号默认为0,可使用` nvidia-smi ` 命令查看GPU使用情况:
237
+ 如果在GPU环境中使用,可以指定` gpus ` 参数进行单卡/多卡训练。使用多卡训练可以指定多个GPU卡号,例如 --gpus 0,1。如果设备只有一个GPU卡号默认为0,可使用` nvidia-smi ` 命令查看GPU使用情况:
216
238
217
239
``` shell
218
240
unset CUDA_VISIBLE_DEVICES
219
- python -m paddle.distributed.launch --gpus " 0" train.py \
220
- --dataset_dir " data" \
221
- --device " gpu" \
241
+ python -m paddle.distributed.launch --gpus 0,1 train.py \
242
+ --data_dir ./data/ \
243
+ --output_dir checkpoint \
244
+ --device cpu \
245
+ --learning_rate 3e-5 \
246
+ --num_train_epochs 100 \
222
247
--max_seq_length 128 \
223
- --model_name " ernie-3.0-medium-zh" \
224
- --batch_size 32 \
225
- --early_stop \
226
- --epochs 100
248
+ --per_device_eval_batch_size 32 \
249
+ --per_device_train_batch_size 32 \
250
+ --num_train_epochs 100 \
251
+ --early_stopping_patience 4 \
252
+ --do_train \
253
+ --do_eval \
254
+ --metric_for_best_model accuracy \
255
+ --load_best_model_at_end \
256
+ --evaluation_strategy epoch \
257
+ --save_strategy epoch \
258
+ --save_total_limit 1
227
259
```
228
260
229
- 可支持配置的参数:
261
+ 主要的配置的参数为:
262
+ - ` model_name_or_path ` : 内置模型名,或者模型参数配置目录路径。默认为` ernie-3.0-base-zh ` 。
263
+ - ` data_dir ` : 训练数据集路径,数据格式要求详见[ 数据标注] ( #数据标注 ) 。
264
+ - ` output_dir ` : 模型参数、训练日志和静态图导出的保存目录。
265
+ - ` max_seq_length ` : 最大句子长度,超过该长度的文本将被截断,不足的以Pad补全。提示文本不会被截断。
266
+ - ` num_train_epochs ` : 训练轮次,使用早停法时可以选择100
267
+ - ` early_stopping_patience ` : 在设定的早停训练轮次内,模型在开发集上表现不再上升,训练终止;默认为4。
268
+ - ` learning_rate ` : 预训练语言模型参数基础学习率大小,将与learning rate scheduler产生的值相乘作为当前学习率。
269
+ - ` do_train ` : 是否进行训练。
270
+ - ` do_eval ` : 是否进行评估。
271
+ - ` device ` : 使用的设备,默认为` gpu ` 。
272
+ - ` per_device_train_batch_size ` : 每次训练每张卡上的样本数量。可根据实际GPU显存适当调小/调大此配置。
273
+ - ` per_device_eval_batch_size ` : 每次评估每张卡上的样本数量。可根据实际GPU显存适当调小/调大此配置。
230
274
231
- * ` device ` : 选用什么设备进行训练,选择cpu、gpu、xpu、npu。如使用gpu训练,可使用参数--gpus指定GPU卡号;默认为"gpu"。
232
- * ` dataset_dir ` :必须,本地数据集路径,数据集路径中应包含train.txt,dev.txt和label.txt文件;默认为None。
233
- * ` save_dir ` :保存训练模型的目录;默认保存在当前目录checkpoint文件夹下。
234
- * ` max_seq_length ` :分词器tokenizer使用的最大序列长度,ERNIE模型最大不能超过2048。请根据文本长度选择,通常推荐128、256或512,若出现显存不足,请适当调低这一参数;默认为128。
235
- * ` model_name ` :选择预训练模型,可选"ernie-1.0-large-zh-cw","ernie-3.0-xbase-zh", "ernie-3.0-base-zh", "ernie-3.0-medium-zh", "ernie-3.0-micro-zh", "ernie-3.0-mini-zh", "ernie-3.0-nano-zh", "ernie-2.0-base-en", "ernie-2.0-large-en","ernie-m-base","ernie-m-large";默认为"ernie-3.0-medium-zh"。
236
- * ` batch_size ` :批处理大小,请结合显存情况进行调整,若出现显存不足,请适当调低这一参数;默认为32。
237
- * ` learning_rate ` :训练最大学习率;默认为3e-5。
238
- * ` epochs ` : 训练轮次,使用早停法时可以选择100;默认为10。
239
- * ` early_stop ` :选择是否使用早停法(EarlyStopping),模型在开发集经过一定epoch后精度表现不再上升,训练终止;默认为False。
240
- * ` early_stop_nums ` :在设定的早停训练轮次内,模型在开发集上表现不再上升,训练终止;默认为4。
241
- * ` logging_steps ` : 训练过程中日志打印的间隔steps数,默认5。
242
- * ` weight_decay ` :控制正则项力度的参数,用于防止过拟合,默认为0.0。
243
- * ` warmup ` :是否使用学习率warmup策略,使用时应设置适当的训练轮次(epochs);默认为False。
244
- * ` warmup_steps ` :学习率warmup策略的比例数,如果设为1000,则学习率会在1000steps数从0慢慢增长到learning_rate, 而后再缓慢衰减;默认为0。
245
- * ` init_from_ckpt ` : 模型初始checkpoint参数地址,默认None。
246
- * ` seed ` :随机种子,默认为3。
247
- * ` train_file ` :本地数据集中训练集文件名;默认为"train.txt"。
248
- * ` dev_file ` :本地数据集中开发集文件名;默认为"dev.txt"。
249
- * ` label_file ` :本地数据集中标签集文件名;默认为"label.txt"。
275
+ 训练脚本支持所有` TraingArguments ` 的参数,更多参数介绍可参考[ TrainingArguments 参数介绍] ( https://paddlenlp.readthedocs.io/zh/latest/trainer.html#trainingarguments ) 。
250
276
251
- 程序运行时将会自动进行训练,评估。同时训练过程中会自动保存开发集上最佳模型在指定的 ` save_dir ` 中,保存模型文件结构如下所示:
277
+ 程序运行时将会自动进行训练,评估。同时训练过程中会自动保存开发集上最佳模型在指定的 ` output_dir ` 中,保存模型文件结构如下所示:
252
278
253
279
``` text
254
280
checkpoint/
@@ -260,8 +286,8 @@ checkpoint/
260
286
261
287
** NOTE:**
262
288
263
- * 如需恢复模型训练,则可以设置 ` init_from_ckpt ` , 如 ` init_from_ckpt=checkpoint/model_state.pdparams ` 。
264
- * 如需训练英文文本分类任务,只需更换预训练模型参数 ` model_name ` 。英文训练任务推荐使用"ernie-2.0-base-en"、"ernie-2.0-large-en"。
289
+ * 如需恢复模型训练,则可以设置 ` resume_from_checkpoint ` , 如 ` resume_from_checkpoint=./checkpoints/checkpoint-217 ` 。
290
+ * 如需训练英文文本分类任务,只需更换预训练模型参数 ` model_name_or_path ` 。英文训练任务推荐使用"ernie-2.0-base-en"、"ernie-2.0-large-en"。
265
291
* 英文和中文以外语言的文本分类任务,推荐使用基于96种语言(涵盖法语、日语、韩语、德语、西班牙语等几乎所有常见语言)进行预训练的多语言预训练模型"ernie-m-base"、"ernie-m-large",详情请参见[ ERNIE-M论文] ( https://arxiv.org/pdf/2012.15674.pdf ) 。
266
292
267
293
#### 2.4.2 训练评估与模型优化
0 commit comments