要求
- pytorch(版本> = 0.4)
- TQDM
- pyrouge
- 编辑部
- TensorFlow(CPU版本还可以)
- NLTK
- Spacy(和“ EN”模型)
您可以通过克隆Alec Radford的存储库来下载OpenAI预训练版本的权重,并将包含预训练权重的model文件夹放在本仓库中。
为了运行此代码,您需要通过脚本中提供的脚本使用BPE预处理数据集
数据集预处理
培训和评估脚本期望3个总输出文件: train_encoded.jsonl , val_encoded.jsonl和test_encoded.jsonl
CNN/每日邮件
可以从OpenNMT下载纸张中使用的数据和拆分。首先,使用提供的链接中的sed命令删除开始和结尾句子标签。要处理数据,请运行以下命令:
python scripts/encode_cnndm.py --src_file {source file} --tgt_file {target file} --out_file {output file}
XSUM
可以使用XSUM刮擦纸张中使用的数据和拆分。通过Extract text from HTML Files运行命令。要处理数据,请运行以下命令:
python scripts/encode_xsum.py --summary_dir {summary directory} --splits_file {split file} --train_file {train file} --val_file {val file} --test_file {test_file}
编辑部
可以从新闻编辑室下载纸张中使用的数据和拆分。要处理数据,请运行以下命令:
python scripts/encode_newsroom.py --in_file {input split file} --out_file {output file}
训练
要训练模型,请运行以下命令:
python train.py \\
--data_dir {directory containing encoded data} \\
--output_dir {name of folder to save data in} \\
--experiment_name {name of experiment to save data with} \\
--show_progress \\
--doc_model \\
--num_epochs_dat 10 \\
--num_epochs_ft 10 \\
--n_batch 16 \\
--accum_iter 4 \\
--use_pretrain
使用域自适应训练训练10个时期的预dataset的文档嵌入模型,并使用微调训练10个时期。该模型的有效批量大小为64,因为实际批量大小为16,并且我们在4个批次上积累了梯度。批次大小必须由可用的GPU数量排除。目前对多GPU使用的培训进行了优化,并且可能对单个GPU机器不起作用。
评估
要评估模型,请运行以下命令:
python evaluate.py \\
--data_file {path to encoded data file encoded data} \\
--checkpoint {checkpoint to load model weights from} \\
--beam {beam size to do beam search with} \\
--doc_model \\
--save_file {file to output results to} \\
--n_batch {batch size for evaluation, must be divisible by number of gpus}
评估测试集中的文档嵌入模型。当前评估用于多GPU使用情况,并且可能对单个GPU机器不起作用。由于评估脚本将删除一些示例,如果数据点的数量不被GPU排除,则您可能需要运行create_small_test.py脚本以获取被排除在外的最后几个文件并在最后汇总结果。
