19 Mar, 2026
2 commits
-
推理”,不再是先按原始输入条数切块。也就是说,如果 100 条请求分句后变成 150 个 segments,batch_size=64 时会按 64 + 64 + 22 三批推理,推理完再按原始分句计划合并并还原成 100 条返回。这个改动在 local_seq2seq.py (line 241) 和 local_ctranslate2.py (line 391)。 日志这边也补上了两层你要的关键信息: 分句摘要日志:Translation segmentation summary,会打印输入条数、非空条数、发生分句的输入数、总 segments 数、当前 batch_size、每条输入分成多少段的统计,见 local_seq2seq.py (line 216) 和 local_ctranslate2.py (line 366)。 每个预测批次日志:Translation inference batch,会打印第几批、总批数、该批 segment 数、长度统计、首条预览。CTranslate2 另外还会打印 Translation model batch detail,补充 token 长度和 max_decoding_length,见 local_ctranslate2.py (line 294)。 我也补了测试,覆盖了“分句后再 batching”和“日志中有分句摘要与每批推理日志”,在 test_translation_local_backends.py (line 358)。
-
改动: 新增分句与预算工具:translation/text_splitter.py 接入 HF 本地后端:translation/backends/local_seq2seq.py (line 157) 接入 CT2 本地后端:translation/backends/local_ctranslate2.py (line 301) 补了测试:tests/test_translation_local_backends.py 我先把代码里实际限制梳理了一遍,关键配置在 config/config.yaml (line 133): nllb-200-distilled-600m: max_input_length=256,max_new_tokens=64,并且是 ct2_decoding_length_mode=source + extra=8。现在按这个配置计算出的保守输入预算是 56 token。 opus-mt-zh-en: max_input_length=256,max_new_tokens=256。现在保守输入预算是 248 token。 opus-mt-en-zh: 同上,也是 248 token。 这版分句策略是: 先按强边界切:。!?!?;;…、换行、英文句号 不够再按弱边界切:,,、::()()[]【】/| 再不够才按空白切 最后才做 token 预算下的硬切 超长时会“分句翻译后再回拼”,中文目标语言默认无空格回拼,英文等默认按空格回拼,尽量别切太碎 验证: python3 -m compileall translation tests/test_translation_local_backends.py 已通过
18 Mar, 2026
1 commit
17 Mar, 2026
1 commit