使用更多训练数据增强来自 HuggingFace 的 MarianMT 预训练模型
Enhance a MarianMT pretrained model from HuggingFace with more training data
我正在使用来自 English to German 的预训练 MarianMT 机器翻译模型。我还有一大套高质量的英德句对,我想用它们来增强模型的性能,它是在 OPUS 语料库上训练的,但是 without使模型忘记 OPUS 训练数据。有没有办法做到这一点?谢谢
您是否尝试过 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 是一个 t运行 行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”,并可能检查 this issue 如何保存多个检查点。
我按照此处所述进行了微调:https://github.com/huggingface/transformers/tree/master/examples/seq2seq#translation
训练模型(从 fr 到 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": "Freilegung der Leitung (durch VN installiert)", "fr": "Dégagement de la conduite (installée par le PA)" } }
我正在使用来自 English to German 的预训练 MarianMT 机器翻译模型。我还有一大套高质量的英德句对,我想用它们来增强模型的性能,它是在 OPUS 语料库上训练的,但是 without使模型忘记 OPUS 训练数据。有没有办法做到这一点?谢谢
您是否尝试过 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 是一个 t运行 行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”,并可能检查 this issue 如何保存多个检查点。
我按照此处所述进行了微调:https://github.com/huggingface/transformers/tree/master/examples/seq2seq#translation
训练模型(从 fr 到 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": "Freilegung der Leitung (durch VN installiert)", "fr": "Dégagement de la conduite (installée par le PA)" } }