排查translate.json接口响应慢问题

如果在使用私有化部署翻译服务后,接口请求translate.json响应接口过慢,例如短短几段文本,接口响应需要30s左右,想要排查原因进行解决可根据以下步骤进行排查确定问题点。

私有化大模型翻译与传统机械翻译对比翻译慢的原因

与传统机械翻译相比,大模型翻译速度较慢,首先需要了解其背后的原因。
在私有化部署场景中,翻译通常会调用大模型接口发起请求,先返回首轮翻译结果,再由评分审核系统进行打分校验。若结果达到配置文件设定的翻译精度要求,则直接输出译文;若未达到要求,则进入第二轮修复通道,对译文进行修正后再次提交审核评分。若仍不满足标准,则继续重复“修复—评分”流程,直到最终译文完全符合要求后才返回结果。
之所以采用这一机制,是为了进一步提升翻译质量、语义准确性和表达通顺度。由于每一次调用大模型接口都会消耗一定时间,因此大模型翻译较慢的很大一部分原因,正是时间主要消耗在多轮翻译请求与修复校验过程中。

正常情况下,在正式上线前,我们会先对整站内容执行一次点击翻译,并将翻译结果提前写入缓存。这样,用户实际使用时命中的通常都是缓存结果,响应速度可达到毫秒级。
因此,首次触发大模型翻译时,只要日志中不存在异常,这类耗时基本属于正常现象,无需再进一步优化。待系统正式上线并完成缓存预热后,真正需要实时走大模型翻译的,通常只会是极少数尚未命中缓存的内容。

1.自动化检测排查是否有可优化点

在你接入 translate.js 的网页(接口翻译响应慢的页面)中, 右键 - 审核元素,然后执行以下 js

  1. translate.debug.use();

即可打开在线检测能力使用,排查是否还有可优化的设置,如果所有优化项已全部设置完毕,测试接口响应仍缓慢则继续向下排查。
更多有关此自动检测的说明,可参考: https://translate.zvo.cn/549786.html

2.查看日志

日志存放于 /mnt/service/logs/ 目录下,主要需要查看配置的文本翻译日志,其中大模型翻译时,返回的日志是否正常,首先需要了解日志具体说明,可参考:https://translate.zvo.cn/534845.html

  • 情况一:
    1. {"time":"10:08:51","originalText":"你好世界" : "18718637581"","think":false,"model":"HY-MT1.5-7B","useTime":1295,"to":"english","resultText":""Hello world": "18718637581"","score":96}
    2. {"time":"10:08:51","originalText":"code" : "今天天气很好"","think":false,"model":"HY-MT1.5-7B","useTime":1344,"to":"english","resultText":"The weather is nice today","score":96}
    3. {"time":"10:08:51","originalText":"这是一个测试","think":false,"model":"HY-MT1.5-7B","useTime":1479,"to":"english","resultText":"This is a test","score":96}
    4. {"time":"10:08:51","originalText":"欢迎使用系统",","think":false,"model":"HY-MT1.5-7B","error":"Read timed out","useTime":30196,"to":"english","score":0,"repairText":"Welcome to the system"}
    这里通过日志我们发现,正确情况下接口成功响应都在700 ~ 1500毫秒左右,也就是正常情况下接口1秒多就可完成响应返回给页面,但是出现了一条翻译通道超时问题
    1. {"time":"10:08:51","originalText":"欢迎使用系统",","think":false,"model":"HY-MT1.5-7B","error":"Read timed out","useTime":30196,"to":"english","score":0,"repairText":"Welcome to the system"}
    因此导致接口整体时长被拉长到30s左右,出现此类问题,可直接联系我们进行反馈,如果您用的也是GiteeAI翻译通道,如果您是对接的是其他第三方平台的翻译通道,可以去相应的第三方提交工单反馈下该问题,属于翻译模型出现了问题,需要厂商协助排查看看是否需要更换翻译模型等。
  • 情况二:
    在一组文本触发大模型翻译后,日志出现类似情况:
    接口整体返回翻译结果消耗近10s左右,一段长文本消耗近7s翻译,而另一段得分不满足配置文件设置的翻译精准度,会触发翻译通道进行修复,这时需要查看同样在/mnt/service/logs/日志下,修复模型文本翻译日志确认修复时间消耗多少,如果修复时间没有超过7s以上,那代表造成这个整体接口慢的原因是第一段的长文本。
    1. {"time":"10:53:19","originalText":"今天下午天气很好,大家一起去公园散步聊天,路边开着很多漂亮的小花,孩子们在草地上跑来跑去,远处还有人在安静地看书,整个画面显得轻松又温暖,让人感觉这是一个很普通但也很舒服的日常时刻。","think":"false","model":"HY-MT1.5-7B","useTime":7217,"to":"english","resultText":"The weather was nice this afternoon, and everyone went to the park for a walk and a chat. Many lovely flowers were blooming along the road, children were running around on the grass, and someone was quietly reading in the distance, making the whole scene feel relaxed, warm, ordinary, and pleasantly peaceful.","score":96}
    1. {"time":"11:01:48","originalText":"花","think":"false","model":"HY-MT1.5-7B","useTime":1789,"to":"japanese","resultText":"花のもの","score":1}
    由于大模型翻译通常采用多线程并行方式对文本进行同步处理,因此具体是否启用了多线程能力,需要结合配置文件中是否设置了多线程参数来判断。
    需要注意的是,多线程参数并非越大越好。例如,GiteeAI 模型建议将线程数设置为 100;如果超过这一数值,反而可能导致模型并发翻译时线程堆积,进而影响整体翻译效率,使速度变得更慢。
    另外,在开启多线程翻译后,接口返回时间并不是由单条文本决定的,而是取决于这一批翻译内容中耗时最长的那一句。只有当整组内容全部翻译完成后,接口才会统一返回结果。
    至于部分得分较低的语句触发修复通道并进行二次修复,这属于正常现象,也是文档开头所提到的“修复—评分”流程的具体体现,不是触发了修复通道就一定拖慢了接口翻译。