|
5 | 5 | ProphetNet(先知网络)是一种新型的 seq2seq 预训练模型。在训练时,Prophetnet 每一时刻将会学习同时预测未来的 N 个字符,这种自监督学习目标可以使得模型考虑未来更远的字符,防止模型对强局部相关(strong
|
6 | 6 | local correlation)过拟合。
|
7 | 7 |
|
8 |
| -本项目是 Prophetnet 在 PaddlePaddle 2.2 上开源实现的文本摘要的例子,包含了在 CNN/DailyMail 数据集,Gigaword 数据集上微调和生成的代码。 |
| 8 | +本项目是 Prophetnet 在 PaddlePaddle 2.4 上开源实现的文本摘要的例子,包含了在 CNN/DailyMail 数据集,Gigaword 数据集上微调和生成的代码。 |
9 | 9 |
|
10 | 10 | ### 项目依赖
|
11 | 11 |
|
12 | 12 | ```
|
13 | 13 | pip install -r requirements.txt
|
14 |
| -python -m pip install paddlepaddle-gpu==2.2.2.post112 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html |
15 |
| -pip install paddlenlp==2.2.3 |
| 14 | +python -m pip install paddlepaddle-gpu==2.4.1.post117 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html |
| 15 | +pip install paddlenlp==2.5.2 |
16 | 16 | ```
|
17 | 17 |
|
18 | 18 | ### 代码结构说明
|
@@ -64,54 +64,74 @@ bash run_train.sh <DATASET>
|
64 | 64 | - cnndm:
|
65 | 65 |
|
66 | 66 | ```
|
67 |
| -python train_prophetnet.py \ |
| 67 | +python -m paddle.distributed.launch --gpus 0 python train_prophetnet.py \ |
68 | 68 | --dataset=cnndm \
|
69 | 69 | --model_name_or_path=prophetnet-large-uncased \
|
70 |
| - --batch_size=4 \ |
71 |
| - --epochs=4 \ |
72 |
| - --lr=0.0001 \ |
| 70 | + --per_device_train_batch_size=4 \ |
| 71 | + --per_device_eval_batch_size=8 \ |
| 72 | + --num_train_epochs=4 \ |
| 73 | + --learning_rate=0.0001 \ |
73 | 74 | --warmup_init_lr=1e-07 \
|
74 | 75 | --warmup_steps=1000 \
|
75 |
| - --clip_norm=0.1 \ |
76 |
| - --num_workers=4 \ |
| 76 | + --max_grad_norm=0.1 \ |
| 77 | + --dataloader_num_workers=4 \ |
| 78 | + --logging_steps 10 \ |
| 79 | + --save_steps 100 \ |
| 80 | + --do_train \ |
| 81 | + --do_eval \ |
77 | 82 | --output_dir=./ckpt/cnndm
|
78 | 83 | ```
|
79 | 84 |
|
80 | 85 | - gigaword:
|
81 | 86 |
|
82 | 87 | ```
|
83 |
| -python train_prophetnet.py \ |
| 88 | +python -m paddle.distributed.launch --gpus 0 python train_prophetnet.py \ |
84 | 89 | --dataset=gigaword \
|
85 | 90 | --model_name_or_path=prophetnet-large-uncased \
|
86 |
| - --batch_size=16 \ |
87 |
| - --epochs=6 \ |
88 |
| - --lr=0.0001 \ |
| 91 | + --per_device_train_batch_size=16 \ |
| 92 | + --per_device_eval_batch_size=32 \ |
| 93 | + --num_train_epochs=6 \ |
| 94 | + --learning_rate=0.0001 \ |
89 | 95 | --warmup_init_lr=1e-07 \
|
90 | 96 | --warmup_steps=1000 \
|
91 |
| - --clip_norm=0.1 \ |
92 |
| - --num_workers=8 \ |
| 97 | + --max_grad_norm=0.1 \ |
| 98 | + --dataloader_num_workers=8 \ |
| 99 | + --logging_steps 10 \ |
| 100 | + --save_steps 100 \ |
| 101 | + --do_train \ |
| 102 | + --do_eval \ |
93 | 103 | --output_dir=./ckpt/gigaword
|
94 | 104 | ```
|
95 | 105 |
|
96 | 106 | 其中参数释义如下:
|
97 | 107 |
|
98 | 108 | - `dataset` 指定数据集,可选cnndm和gigaword
|
99 | 109 |
|
100 |
| -- `model_name_or_path` 预训练模型名称或本地预训练模型初始化权重文件路径。 |
| 110 | +- `model_name_or_path` 预训练模型名称或本地预训练模型初始化权重文件路径 |
| 111 | + |
| 112 | +- `per_device_train_batch_size` 表示单卡训练样本批大小 |
101 | 113 |
|
102 |
| -- `batch_size` 表示训练样本批大小。 |
| 114 | +- `per_device_eval_batch_size` 表示单卡验证样本批大小 |
103 | 115 |
|
104 |
| -- `epochs` 表示训练轮数。 |
| 116 | +- `num_train_epochs` 表示训练轮数 |
105 | 117 |
|
106 |
| -- `lr` 表示学习率 |
| 118 | +- `learning_rate` 表示学习率 |
107 | 119 |
|
108 | 120 | - `warmup_init_lr` 表示预热学习率
|
109 | 121 |
|
110 | 122 | - `warmup_steps` 表示预热学习步数
|
111 | 123 |
|
112 |
| -- `clip_norm` 表示梯度裁剪 |
| 124 | +- `max_grad_norm` 表示梯度裁剪 |
| 125 | + |
| 126 | +- `dataloader_num_workers` 指定数据加载规模 |
| 127 | + |
| 128 | +- `logging_steps` 表示打印结果间隔 |
| 129 | + |
| 130 | +- `save_steps`表示验证间隔 |
| 131 | + |
| 132 | +- `do_train` 表示是否训练 |
113 | 133 |
|
114 |
| -- `num_workers` 指定数据加载规模 |
| 134 | +- `do_eval` 表示是否验证 |
115 | 135 |
|
116 | 136 | - `output_idr` 指定微调结果权重存放路径
|
117 | 137 |
|
|
0 commit comments