Skip to content

利用多语言翻译模型打破语言障碍

想象一下这样一个场景,你发现你在 Roblox 新结识的朋友(一个你在新的体验中与之聊天和打趣的人)实际上身处韩国——并且一直在用韩语打字,而你一直在用英语打字,但你们都没有察觉到这一点。 得益于我们全新的实时 AI 聊天翻译功能,我们在 Roblox 上实现了现实世界中不可能实现的事情——让说不同语言的人在我们身临其境的 3D 体验中顺畅地交流沟通。 这是因为我们的自定义多语言模型现在可以在我们目前支持的 16 种语言的任意组合之间进行直接翻译(就是这 15 种语言,以及英语)。

在任何启用了我们体验内文本聊天服务的体验中,来自不同国家的人现在都可以让非母语者明白自己说的话了。 聊天窗口将自动显示由韩语翻译而来的英语,或由土耳其语翻译而来的德语,反之亦然,这样每个人都能使用自己的母语读懂对话。 这些翻译都是实时显示的,延迟约为 100 毫秒,用户几乎感知不到文字翻译的过程。 在文本聊天中使用 AI 自动进行实时翻译可以消除语言障碍,让身处世界各地的用户欢聚一堂。

打造统一的翻译模型

AI 翻译并不是什么新鲜事了,我们大部分的体验内文本都已经实现了自动翻译。 我们并不满足于在体验内实现固有内容的翻译。 我们希望做到自动翻译交互内容——并且将这一功能应用至平台上支持的所有 16 种语言。 这是一个大胆的目标,具体原因有二:第一,我们不只是从一种主要语言(即英语)翻译成另一种主要语言,我们想要打造一个能够在我们支持的 16 种语言的任意组合之间进行翻译的系统。 第二,速度要。 速度要快到足以支持真实的聊天对话,也就是说,我们需要将延迟降低至 100 毫秒左右。

Roblox 在全球拥有超过 7000 万日活跃用户,并且这一数字还在不断增长。 在我们的平台上,用户全天都在用自己的母语进行交流和创作。 平台上有超过 1500 万个体验,为这些体验中的每一次对话提供实时的人工翻译显示是不现实的。 将实时翻译功能的服务对象扩展到数百万人,且允许他们同时在不同体验中进行不同的对话,这就需要应用具有极佳响应速度和准确性的大语言模型(以下简称“LLM”)。 我们需要一个能够识别 Roblox 平台特定语言的上下文识别模型,包括俚语和缩写(例如 obby、afk 或 lol)。 除此之外,我们的模型需要支持 Roblox 当前支持的 16 种语言的任意组合。

为了实现这一目标,我们本可以为每个语言对(例如日语和西班牙语)建立一个独特的模型,但这需要 16x16 或 256 个不同的模型。 相反,我们构建了一个统一的、基于转换器的翻译 LLM,以在单一模型中处理所有语言对。 这就像拥有多个翻译应用程序,每个应用程序专门处理一组相似的语言,所有应用程序都通过单一界面使用。 确定源语言和目标语言之后,我们可以激活相关的“专家”来生成翻译。

这种架构可以更好地利用资源,因为每个专家都有不同的专长,从而实现更有效的训练和推理,同时又不牺牲翻译质量。

推理过程示意图。 源消息以及源语言和目标语言都通过 RCC 传递。 在到达后端之前,我们首先检查缓存以查看是否已经有该请求的翻译。 如果没有,则请求将通过动态批处理传递到后端和模型服务器。 我们在编码器和解码器之间添加了一个嵌入缓存层,从而进一步提高翻译成多种目标语言时的效率。

由于以下几个原因,这种架构使得我们的模型的训练和维护效率大大提高。 首先,我们的模型能够利用不同语言之间的语言相似性。 当所有语言一起训练时,相似的语言(例如西班牙语和葡萄牙语)会在训练过程中相辅相成,这有助于提高两种语言的翻译质量。 我们还可以更轻松地测试并将新发布的 LLM 研究和进展集成到我们的系统中,从而发挥最新和最先进技术的优势。 在源语言未设置或设置错误的情况下,我们就能看到这种统一模型的另一个好处,即模型能准确地识别正确的源语言并将其翻译成目标语言。 事实上,即使输入的是多种语言,该系统仍然能够成功识别并将其翻译成目标语言。 在这些情况下,准确度可能不会那么高,但最终的信息会是比较容易理解的。

为了训练这个统一的模型,我们首先对可用的开源数据、我们自己的体验内翻译数据、人工标记的聊天翻译结果以及常见的聊天句子和短语进行了预训练。 我们还建立了自己的翻译评估指标和模型用以衡量翻译质量。 大多数现有的翻译质量指标会将 AI 翻译结果与某些基准或参考翻译进行比较,主要关注翻译的可理解性。 而我们想要在不依赖基准翻译的前提下评估翻译的质量

我们会从多个方面进行衡量,包括准确性(是否有增译、漏译或错译)、流畅性(标点符号、拼写和语法)和错误引用(与文本其余部分的差异)。 我们将这些错误分为以下严重等级:这是一个严重错误、主要错误还是次要错误? 为了评估质量,我们建立了一个 ML 模型并根据人工标记的错误类型和分数对其进行训练。 然后,我们对多语言模型进行了微调,以预测单词级别的错误和类型,并使用我们的多维标准计算分数。 我们可以借此对错误的质量和类型有一个全面的了解。 通过这种方式,我们可以通过使用源文本和机器翻译来评估翻译质量并检测错误,而无需依赖基准翻译。 利用该质量评估的结果,我们可以进一步提高翻译模型的质量。

有了源文本和机器翻译结果,我们就可以在没有参考翻译的情况下,利用内部翻译质量评估模型来评估机器翻译的质量。 该模型从不同方面评估质量,并将错误划分为严重、主要和次要三个类别。

由于缺乏高质量的数据,翻译不太常见的语言对(例如法语到泰语)还是相当有挑战性。 为了弥补这一不足,我们采用了回译的办法,将内容翻译回源语言,然后与源文本进行比较,以确保准确性。 在训练过程中,我们使用了迭代的回译,即将反向翻译数据和作为参考(标记的)数据进行策略性混合,以扩大模型可供学习的翻译数据量。

模型训练流程示意图。 模型训练期间会同时用到平行数据和回译数据。 在教师模型训练完成后,我们应用萃取和其他服务优化技术来缩小模型大小并提高服务效率。

为了帮助模型理解现代俚语,我们请人工评估人员翻译每种语言的流行和趋势术语,并将这些翻译纳入训练数据中。 我们将继续定期重复此流程,以使系统即时掌握最新的俚语。

由此产生的聊天翻译模型大约有 10 亿个参数。 通过如此大的模型进行翻译会耗费过多的资源,并且对于实时对话来说会花费太长时间,而低延迟对于支持每秒超过 5000 次的聊天至关重要。 因此,我们采用师生合作的方式使用这个大型翻译模型来构建一个更小、更轻量的模型。 我们通过萃取、量化、模型编译等服务优化方式,将模型规模缩减到 6.5 亿个参数以下,提升了服务效率。 此外,我们修改了体验内文字聊天背后的 API,以便将原始消息和翻译后的消息都发送到用户的设备。 这使收信方能够以其母语查看消息或快速切换到查看发信方未翻译的原始消息。

最终的 LLM 准备就绪后,我们就实装了一个后端来连接模型服务器。 在这个后端,我们应用了额外的聊天翻译逻辑,并将系统与我们常用的信任和安全系统整合在一起。 这可确保翻译的文本得到与其他文本相同级别的审查,以便检测和屏蔽违反我们政策的单词或短语。 安全和文明是 Roblox 日常运营的重中之重,是我们工作中至关重要的一环。

持续提高准确度

在测试中,我们发现这个新的翻译系统提升了平台用户的参与度和会话质量。 从我们自己的指标来看,我们的模型在 Roblox 内容上的表现优于商业翻译 API,这表明我们已经成功优化了人们在 Roblox 上的交流方式。 我们很高兴看到我们的努力改善了平台用户的体验,使他们能够玩游戏、购物、协作,或者仅仅是与说不同语言的朋友进行无障碍交流。

令大家都能够用自己的母语进行顺畅、自然的对话的这一能力,让我们向以乐观和文明的方式联通十亿人的目标更近了一步。

为了进一步提高翻译的准确性,并为我们的模型提供更好的训练数据,我们计划推出一款工具,让平台用户针对翻译内容提供反馈,帮助系统更快地改进。 如此一来,当用户发现翻译错误时,就可以即时告诉我们,甚至给出更好翻译的建议,供我们添加到训练数据中,以进一步改进模型。

目前,我们已支持全部 16 种语言的翻译——但依旧任重道远。 我们计划继续使用我们体验中的最新翻译示例以及我们支持的每种语言的流行聊天短语和最新俚语短语来更新我们的模型。 此外,由于这些语言已经有了相当充足的训练数据,这种架构使得以相对较少的投入针对新的语种进行模型训练成为可能。 此外,我们正在探索自动翻译多维度内容的方法:图像、纹理、3D 模型等中的文本。

现在我们已经在探索令人兴奋的新领域,包括自动语音聊天翻译。 想象一下 Roblox 上的法语用户能够与只会说俄语的用户进行语音聊天。 双方都可以用自己的语言,以很低的延迟相互交谈和理解,甚至可以理解对方的声音的音调、节奏和情感。 虽然这在当下听起来可能像是科幻小说,而且需要一些时间才能实现,但我们会继续在翻译方面下功夫。 在不久的将来,Roblox 将成为一个让世界各地的人们可以顺畅、轻松地进行交流的平台,大家不仅能通过文字聊天,还可以通过各种方式交流沟通!