Open Thovenfish opened 1 year ago
您好! simuleval操作逻辑是:将输入文本按指定tokenizer(默认空格)处理后的序列按step发给代理程序,对接收到的内容用tgt tokenizer(默认空格)处理得到数目用于latency评估。因此输入、输出仅需保证空格隔开的文本就可以。在word-level实验中,我会在我的程序中对输入输出按sentence-piece处理;而subword level实验直接将输入和参考文本sentencepiece预处理后送入simuleval。
非常感谢您的解答。 (1)我按照您的建议对测试的命令行进行了修改,将--source --targte的输入的文本都使用了setencepiece处理后的文本。但是我发现delay数组和bleu的计算还是不正确,我发现”caat/rain/simul/transducer_searcher.py“中emit_words函数中会将输出的token_id转换成word-level而不是subword-level,由此delay的计算和bleu的计算还是不正确。下面是我的eval的命令行: simuleval --agent $pwd/caat/rain/simul/text_fullytransducer_agent.py \ --task-type mt --task transducer \ --train-dir $pwd/wmt15deen/data-bin \ --source-lang de --target-lang en \ --slang de --tlang en \ --source $data.de --target $data.en \ --data-type text --model-path $pwd/wmt15deen/models/finetune/checkpoint_best.pt \ --output $outfile --port 12321 --eager --num-processes 1 \ --decoder-step-read $readstep --step-read-blocks $readstep \ --fp16 --gen-beam 0.0001 \ --timeout 100 --intra-beam 5 --inter-beam 5 --cpu done
(2)我看到了一个可能相关的文件:caat/rain/simul/eval_mt_subword.py,我并没有使用这个文件来进行模型eval,我不确定是否我用来评估的代码文件用错了,是否可以提供eval text-to-text STmodel 在subword-level的命令行呢?
感谢您的回复~
抱歉这是我前面合并代码时引入的bug:eval_mt_subword是我早些时间使用的实验代码,在自己代码内部做的latency和bleu计算,这样推理和评估杂糅不是好的实现。而后期使用simuleval代理进行评估实验,但wordEndChecker代码里的参数项合并代码时被我弄丢了(只做sentencepiece方式的词尾判断)。临时修复就是针对subword评估将transducer_searcher.py 中第48行改为: from .eval_mt_subword import SubWordEndChecker self.word_end= SubWordEndChecker(vocab) 我将尽快修复这个bug,提供命令行参数对subword输出做处理。很抱歉这个bug给你带来的麻烦。
您好,我在eval text-to-text ST模型在wmt15 de-en数据上的性能时,看到原文中提到了latency的评估方式是在subword-level的,
但是在simuleval中貌似支持的是以word粒度为输入,以word或者char的粒度输出来评估latency,请问这里是怎么计算subword-level的latency的呢?有相关的代码吗?