【问题标题】:Enhance a MarianMT pretrained model from HuggingFace with more training data使用更多训练数据增强来自 HuggingFace 的 MarianMT 预训练模型
【发布时间】:2021-04-16 19:33:17
【问题描述】:

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

【问题讨论】:

标签: python huggingface-transformers


【解决方案1】:

您是否尝试过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 或等效模型)。 “data/dir”具有源语言和目标语言的“train.source”和“train.target”,因此目标的行号 x 是源中第 x 行的翻译(与“val.源”和“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”,并可能查看this issue 以了解如何保存多个检查点。

【讨论】:

    【解决方案2】:

    我按照此处所述进行了微调:https://github.com/huggingface/transformers/tree/master/examples/seq2seq#translation

    训练模型(fr to de)并在最后进行评估: python examples/seq2seq/run_translation.py --do_train True --do_eval True --model_name_or_path Helsinki-NLP/opus-mt-de-fr --source_lang de --target_lang fr --source_prefix "将德语翻译成法语:" -- train_file ../data/translations-train-de-fr1.json --validation_file ../data/translations-val-de-fr1.json --output_dir ../tst-translation-models --per_device_train_batch_size=4 -- per_device_eval_batch_size=4 --overwrite_output_dir True --predict_with_generate True --fp16 True

    训练好的模型被存储到文件夹:tst-translation-models

    仅使用微调模型进行评估: 文件夹使用“copy_mode.sh”,必须根据语言进行调整): python examples/seq2seq/run_translation.py --do_train False --do_eval True --model_name_or_path ../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

    问候,菲利克斯

    PS:请注意,培训和评估数据必须采用以下形式(每行一个这样的条目): { "translation": { "de": "Freeilegung der Leitung (durch VN installiert)", "fr": "Dégagement de la conduite (installée par le PA)" } }

    【讨论】:

      猜你喜欢
      • 2019-04-10
      • 2017-08-19
      • 2023-03-10
      • 2021-03-31
      • 2020-05-27
      • 1970-01-01
      • 2018-07-31
      • 2020-12-15
      • 1970-01-01
      相关资源
      最近更新 更多