mRASP
mRASP copied to clipboard
无法复现英德数据集上无微调的结果
我下载了readme页面上的pretrain_checkpoint_last_RAS.pt,使用这个checkpoint复现无微调的德翻英结果。 数据集处理方面,经过预处理,使用mrasp的bpe词表进行切分后之后,在英法语料的句首分别拼接了LANG_TOK_DE和LANG_TOK_EN。 在生成时,使用generate的--prefix-size 1参数来保证目标端存在LANG_TOK_EN。 我使用了官方fairseq,tag:v0.10.2的代码,生成时使用的参数如下 CUDA_VISIBLE_DEVICES=8 python fairseq_cli/generate.py $DATA_PATH --path ~/mRASP/pretrain_checkpoint_last_RAS.pt --gen-subset valid --beam 5 --batch-size 16 --max-len-a 0 --max-len-b 256 --skip-invalid-size-inputs-valid-test --prefix-size 1
但我在德翻英的测试集合上只获得了bleu 17.53的结果。生成的部分翻译句子与bleu得分如下: S-2633 LANG_TOK_DE Z@@ u viel Stre@@ ss T-2633 LANG_TOK_EN To@@ o st@@ res@@ sed H-2633 -0.26273542642593384 LANG_TOK_EN To@@ o Mu@@ ch Stre@@ ss
S-1076 LANG_TOK_DE Be@@ zir@@ k Pil@@ @@@ @ sen T-1076 LANG_TOK_EN Pil@@ @@@ @ sen region H-1076 -1.3391966819763184 LANG_TOK_EN Pil@@ son@@ g Dist@@ ric@@ t
S-2911 LANG_TOK_DE Dar@@ auf bin ich stol@@ z . T-2911 LANG_TOK_EN That ple@@ @@@ @ as@@ es me . H-2911 -0.3221472203731537 LANG_TOK_EN I am pro@@ ud of this .
希望作者提供一些改进的建议
我下载了readme页面上的pretrain_checkpoint_last_RAS.pt,使用这个checkpoint复现无微调的德翻英结果。 数据集处理方面,经过预处理,使用mrasp的bpe词表进行切分后之后,在英法语料的句首分别拼接了LANG_TOK_DE和LANG_TOK_EN。 在生成时,使用generate的--prefix-size 1参数来保证目标端存在LANG_TOK_EN。 我使用了官方fairseq,tag:v0.10.2的代码,生成时使用的参数如下 CUDA_VISIBLE_DEVICES=8 python fairseq_cli/generate.py $DATA_PATH --path ~/mRASP/pretrain_checkpoint_last_RAS.pt --gen-subset valid --beam 5 --batch-size 16 --max-len-a 0 --max-len-b 256 --skip-invalid-size-inputs-valid-test --prefix-size 1
但我在德翻英的测试集合上只获得了bleu 17.53的结果。生成的部分翻译句子与bleu得分如下: S-2633 LANG_TOK_DE Z@@ u viel Stre@@ ss T-2633 LANG_TOK_EN To@@ o st@@ res@@ sed H-2633 -0.26273542642593384 LANG_TOK_EN To@@ o Mu@@ ch Stre@@ ss
S-1076 LANG_TOK_DE Be@@ zir@@ k Pil@@ @@@ @ sen T-1076 LANG_TOK_EN Pil@@ @@@ @ sen region H-1076 -1.3391966819763184 LANG_TOK_EN Pil@@ son@@ g Dist@@ ric@@ t
S-2911 LANG_TOK_DE Dar@@ auf bin ich stol@@ z . T-2911 LANG_TOK_EN That ple@@ @@@ @ as@@ es me . H-2911 -0.3221472203731537 LANG_TOK_EN I am pro@@ ud of this .
希望作者提供一些改进的建议
Hello, we updated the repo and added a customized directory, you should generate with the following script:
fairseq-generate $DATA_PATH \
--user-dir ${repo_dir}/user_dir \
-s de \
-t en \
--skip-invalid-size-inputs-valid-test \
--beam 5 --batch-size 16 --max-len-a 0 --max-len-b 256 \
--path ${ckpt} \
--task translation_w_langtok \
--lang-prefix-tok LANG_TOK_EN \
--nbest 1
我参考上面的指令,使用这个 customized directory 进行解码,报错没有这个任务。 发现translation_w_langtok.py 这个文件是空的,这原本就是空的吗
我参考上面的指令,使用这个 customized directory 进行解码,报错没有这个任务。 发现translation_w_langtok.py 这个文件是空的,这原本就是空的吗
那个commit提交的三个文件尚未实现,接着等吧
不好意思,刚刚提交了
注意 --lang-prefix-tok 后面的language token是目标端语言的language token,比如en2de的话就用--lang-prefix-tok LANG_TOK_DE
您好!很棒的工作~ 不过我有个疑问哈。WMT14 En-De 4.5M训练集 from-scratch训练,在newstest19测试的结果大约是36~37。虽然mbart原文没有这个setting,但是有同规模下的WMT17 En-Lv,4.5M这个规模使用mbart是会显著提升的。也就是说应该大于37~ 为何文中w/ mbart仅仅30.5 w/ mRASP也才35.2? 希望能解答
您好!很棒的工作~ 不过我有个疑问哈。WMT14 En-De 4.5M训练集 from-scratch训练,在newstest19测试的结果大约是36~37。虽然mbart原文没有这个setting,但是有同规模下的WMT17 En-Lv,4.5M这个规模使用mbart是会显著提升的。也就是说应该大于37~ 为何文中w/ mbart仅仅30.5 w/ mRASP也才35.2? 希望能解答
你好,你的问题是为什么mbart在en-lv上有提升而en-de没有提升吗?似乎mbart的en-de使用的是19的训练集,所以他在table 3标注en-de训练集的数量是28M,在大于10M规模的数据集上mbart就会有下降了。另外你说的36-37是根据哪篇论文?mbart report的结果是 30.9。
您好!很棒的工作~ 不过我有个疑问哈。WMT14 En-De 4.5M训练集 from-scratch训练,在newstest19测试的结果大约是36~37。虽然mbart原文没有这个setting,但是有同规模下的WMT17 En-Lv,4.5M这个规模使用mbart是会显著提升的。也就是说应该大于37~ 为何文中w/ mbart仅仅30.5 w/ mRASP也才35.2? 希望能解答
你好,你的问题是为什么mbart在en-lv上有提升而en-de没有提升吗?似乎mbart的en-de使用的是19的训练集,所以他在table 3标注en-de训练集的数量是28M,在大于10M规模的数据集上mbart就会有下降了。另外你说的36-37是根据哪篇论文?mbart report的结果是 30.9。
谢谢回复~ 提4.5M为了说 mabrt在这个规模是work的,效果比from-scratch要好。我们自己组的结果wmt14 ende训练transformer_big,在newstest19测试是~37.5BLEU,这样的话w/ mbart,这个setting应该要好于37.5。
mbart Table3 报的 30.9 BLEU 是从wmt19 ende随机抽取了28M训练数据,在newstest14做的测试。所以30.9是比较合理的~
p.s. wmt19 ende 的训练数据 训练transformer_big,在newstest 19上测试应该是 ~39-40。 anyway, 我觉得你们model的提升很合理,建议再check一下table 5的测试集~
您好,我利用你们提供2亿6千万的训练集和bpe code和vocab文件来预训练一个多语言模型,但按照您上述提及的customized task来进行无微调的EN-DE翻译任务会报错没有dict.en.txt词典。因为我使用你们的融合语料库和字典进行的训练。那是否代表我需要自建一个新的英语德语的字典用作翻译呢?还有这个DATA_PATH的训练集和开发集也都是以src和trg为标识符的,他们需要出现在无微调测试中的DATA_PATH目录中吗?
测试无微调的结果首先需要在source端手动加上source language token,比如__EN__,然后再进行binarize处理。参考这个:
fairseq-generate $DATA_PATH \
--user-dir ${repo_dir}/user_dir \
-s de \
-t en \
--skip-invalid-size-inputs-valid-test \
--beam 5 --batch-size 16 --max-len-a 0 --max-len-b 256 \
--path ${ckpt} \
--task translation_w_langtok \
--lang-prefix-tok LANG_TOK_EN \
--nbest 1