使用更多训练数据从HuggingFace增强MarianMT预训练模型

2024-10-01 22:39:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是来自English to German的经过预训练的MarianMT机器翻译模型。我还有一大套高质量的英语到德语句子对,我想用它们来提高模型的性能,该模型是在OPUS语料库上训练的,但是没有使模型忘记OPUS训练数据。有办法吗?谢谢


Tags: to数据模型english性能句子高质量语料库
2条回答

我按照这里的描述进行了微调:https://github.com/huggingface/transformers/tree/master/examples/seq2seq#translation

培训模型(从fr到de)并在最后进行评估: python示例/seq2seq/run_translation.py do_train True do_eval True model_name_或路径赫尔辛基NLP/opus mt de fr source_lang de target_lang fr source_前缀“将德语翻译成法语:”列车文件../data/translations-train-de-fr1.json验证文件../data/translations-val-de-fr1.json输出目录../tst每个设备的翻译模型列车批次大小=每个设备4个评估批次大小=4覆盖输出目录预测值与生成真实fp16真

经过训练的模型存储在文件夹:tst translation models中

仅使用微调模型进行评估: 文件夹使用“copy_mode.sh”,必须根据语言进行调整): python示例/seq2seq/run_translation.py do_train False do_eval True model_name_或路径../tst translation models source_lang de target_lang fr source_prefix“将德语翻译为法语:”validation_file../data/translations-val-de-fr1.json per_device_eval_batch_size=4 predict_with_generate True fp16 True

你好,菲利克斯

注:请注意,培训和评估数据必须采用以下格式(每行一项): {翻译〉:{“DE”:“Freilegung der Leitung(DurCH VN StimalRet)”、“FR”:“Deae管理层”(} Par LE PA)}} /P>

您是否尝试过显示here的finetune.sh脚本?除了此处列出的CLI标志短列表外,您还可以尝试添加:

 src_lang "en" \
 tgt_lang "de" \
 num_train_epochs 400 \
 warmup_steps 20 \
 train_batch_size 32 \
 eval_batch_size 32 \
 data_dir "/data/dir" \
 output_dir "/path/to/store/model/etc" \
 cache_dir "/path/for/misc/files" \
 max_source_length 128 \
 max_target_length 128 \
 val_max_target_length 128 \
 test_max_target_length 128 \
 model_name_or_path "</path/to/pretrained>"

其中“/path/to/pretrained”可以是您机器上的本地路径,也可以是MarianMT型号(Opus en de或同等型号)。“数据/dir”有一个“train.source”和“train.target”作为源&;目标语言,因此目标的行号x是源代码中x行的翻译(与“val.source”和“val.target”相同)。我已将finetune.py脚本here更改为

parser = TranslationModule.add_model_specific_args(parser, os.getcwd())

然后运行finetune.sh脚本

注意:当我使用“fp16”标志(使用Pytorch 1.6)时,渐变变大了,所以我将其删除。此外,您可能希望检查“val_check_interval”、“check_val_every_n_epoch”,并可能检查如何保存多个检查点

相关问题 更多 >

    热门问题