透過多語言翻譯模型打破語言隔閡
想像您認識了一位新的 Roblox 好友,您在新的體驗中不斷與對方聊天嘻笑,不過這位好友其實是在韓國……並且從頭到尾輸入韓文,而您則是輸入英文,但你們兩個完全沒注意到這件事情。 歸功於我們新的即時 AI 聊天翻譯,我們讓現實中不可能的事情在 Roblox 上成真了:在我們的沉浸式 3D 體驗中,讓使用不同語言的人們彼此順暢溝通。 實現可能的關鍵是我們的自訂多語言模型,這個模型目前支援針對 16 種語言進行任意組合的直接翻譯(這 15 種語言,以及英文)。
在任何啟用我們體驗內文字聊天服務的體驗中,來自不同國家/地區的人們,現在可以理解未使用其語言的人。 聊天室窗將自動顯示翻譯為英文的韓文,或翻譯為德文的土耳其文,反之亦然,讓人們彼此能看到以其語言顯示的對話。 這些翻譯會即時顯示,延遲時間僅約 100 毫秒,因此在後台發生的翻譯作業近乎無感。 在文字聊天中使用 AI 自動即時翻譯能夠移除語言隔閡,讓來自世界各地的人們更加親近。
打造統一的翻譯模型
AI 翻譯並非新技術,且我們體驗內容的大部分皆已使用自動翻譯。 但我們希望能讓體驗內的靜態內容翻譯更上層樓。 我們希望能自動翻譯互動,且我們想要讓平台上支援的 16 種語言都實現這點。 這是一個大膽的目標,原因有二:首先,我們不只是將一種主要語言(例如英文)翻譯成另一種,我們還希望系統能夠在我們支援的 16 種語言之間進行任意組合的翻譯。 其次,它必須要「快」。 速度需要快到能支援真實的聊天對話,這表示我們需要將延遲降到約 100 毫秒以下。
Roblox 在全世界擁有約七千萬名每日活躍使用者,且還在成長當中。 人們透過我們的平台,使用各自的母語來溝通和創作,每天 24 小時不間斷。 要即時手動翻譯超過 150 萬個活躍體驗當中發生的每個互動,顯然是不可行的。 要將這些即時翻譯擴展到數百萬人,且所有人都同時在不同的體驗中進行不同的對話,需要有極高速度和準確度的 LLM。 我們需要能理解上下文,且能識別 Roblox 專屬語言的模型,包括俚語和縮寫(例如 obby、afk 或 lol)。 除此之外,我們的模型必須能支援 Roblox 目前支援的 16 種語言的任意組合。
若要達成這些目標,我們可以為每個語言配對打造專屬的模型(例如日文和西班牙文),但這樣一來我們需要 16x16,也就是 256 種不同的模型。 為此,我們改為建置以轉換器為基礎的統一 LLM,來在單一模型中處理所有語言配對。 這就像是擁有多個翻譯 App,每個都專精於一組類似的語言,並可透過單一介面來使用。 根據來源句子和目標語言,我們能啟動相關的「專家」來產生翻譯。
這個架構能更充分利用資源,因為每個專家都有不同的專長,如此能實現更有效的訓練和推斷,且不會犧牲翻譯品質。
基於一些原因,這個架構比起訓練和維護我們的模型遠來得有效率。 首先,我們的模型能利用語言之間的語言相似性。 所有語言一同訓練時,相似的語言(例如西班牙文和葡萄牙文)能夠在訓練期間得益於彼此的輸入,有助於同時改進兩種語言的翻譯品質。 我們也能更輕鬆地進行測試,並在 LLM 的新研究和進步推出時整合到系統裡,以從最新且最優秀的技術獲得助益。 我們觀察到這個統一模型的另一個好處,是在來源語言未設定或設定不正確的情況下,模型能夠準確偵測正確的來源語言並翻譯成目標語言。 事實上,就算輸入內容是混合的語言,系統依然能夠偵測語言並翻譯成目標語言。 在上述情況中,準確度可能不會太高,但最後的訊息依然是合理可理解的。
為了訓練這個統一模型,我們首先使用開放原始碼資料以及我們自己的體驗內翻譯資料、人工標記的聊天翻譯結果和常見聊天句子與片語來進行預先訓練。 我們也建置了自己的翻譯評估指標和模型來衡量翻譯品質。 大多數現有的翻譯品質指標將 AI 翻譯結果與部分基準事實或參考翻譯比較,且主要重點在翻譯的可理解性。 我們想要在不使用基準事實翻譯的前提下,評估翻譯的品質。
我們會從多個方面來檢視,包括準確性(是否有任何增添、遺漏或誤譯)、流暢性(標點、拼寫和語法)以及不正確的參考(與文本其餘部分的差異)。 我們將這些錯誤分類為幾個嚴重性等級:嚴重錯誤、重大錯誤或次要錯誤。 為了評估品質,我們建置了 ML 模型並以人工標籤錯誤類型和分數進行訓練。 接著,我們再微調多重語系語言模型來預測字彙等級的錯誤和類型,並使用我們的多維度條件計算分數。 這讓我們對於品質和錯誤發生的類型能夠有全面的理解。 如此一來,我們就能使用來源文字和機器翻譯預測翻譯品質及偵測錯誤,而無須基準事實翻譯。 我們可以運用這個品質衡量結果,進一步改善翻譯模型的品質。
較少見的翻譯配對(例如法文和泰文),由於缺少高品質資料而較具挑戰性。 為了彌補這項落差,我們套用了「回譯」,亦即將內容翻譯回原本的語言,再與原始文字比較以判斷準確性。 在訓練過程中,我們使用迭代回譯,策略性地混合回譯的翻譯資料和經過監督(標記)的資料來擴展翻譯資料量,以供模型學習。
為了協助模型了解現代俚語,我們請真人評估人員翻譯每種語言的熱門與趨勢詞彙,並將翻譯內容納入我們的訓練資料。 我們會持續定期反覆進行這項流程,讓系統擁有最新的俚語。
如此產生的聊天翻譯模型大約有 10 億個參數。 透過這麼大的模型來執行翻譯作業,規模上需要的資源密集度令人望之卻步,且對於即時對話來說會耗費太多時間,因為低延遲對於支援每秒超過 5,000 個聊天至關重要。 因此我們採用師生方式來運用這個大型翻譯模型,打造出較小、較輕量的模型。 我們會套用蒸餾、量化、模型編譯和其他服務最佳化技術來將模型縮小成少於 6,500 萬個參數,並改善服務效率。 此外,我們修改了體驗內文字聊天背後的 API,將原始和翻譯後的訊息傳送到個人的裝置。 這樣能讓收件人看到母語顯示的訊息,或是快速切換來查看傳送者原始、未翻譯的訊息。
一旦最終 LLM 就緒,我們就會實作後端來與模型伺服器連結。 此後端是我們套用額外聊天翻譯邏輯,並且將系統與我們常用的信任安全系統整合的地方。 這可確保翻譯的文字受到與其他文字相同等級的審查,以偵測並封鎖違反我們政策的單字或片語。 安全和禮儀是我們在 Roblox 中的工作重點,因此這是相當重要的一環。
持續改善準確度
在測試中,我們已看到這個新的翻譯系統為我們平台的使用者帶來更強勁的互動和工作階段品質。 根據我們自己的指標,我們的模型在 Roblox 內容上的表現超過商業翻譯 API,顯示我們已成功改進人們在 Roblox 上的溝通方式。 我們很高興看到這項功能為平台使用者帶來的體驗改進,讓人們與使用不同語言的好友玩遊戲、購物、合作,或單純聯繫。
人們能夠以自己的母語進行順暢自然的對話,讓我們更接近目標:以樂觀守禮的態度將十億人連結在一起。
為了進一步改進翻譯準確度,並提供更好的訓練資料給我們的模型,我們打算推出工具,讓平台使用者針對翻譯提供意見回饋,協助系統更快速改進。 這項工具可以讓使用者在看到誤譯內容時告訴我們,甚至能建議更好的翻譯來讓我們加入訓練資料,以進一步改進模型。
這些翻譯今天起可提供我們支援的所有 16 種語言使用,但我們離完成還很遙遠。 我們計劃繼續使用最新的翻譯範例來更新我們的模型,來源包括我們支援的所有語言中的體驗、熱門聊天片語,還有最新的俚語字句等。 此外,這項架構使得訓練新語言的花費相對較低,因為那些語言將能獲得足夠的訓練資料。 此外,我們正在探索如何自動翻譯多個維度中的所有內容:圖像、紋理、3D 模型等上的文字。
另外,我們已經在探索令人興奮的新領域,包括自動語音聊天翻譯。 想像 Roblox 上的法文使用者,能夠和只會講俄文的使用者進行語音聊天。 雙方都能以自己的語言,在低延遲情況下交談並理解對方,且甚至包含語調、節奏還有聲音情感。 雖然這現在聽起來仍像是科幻情節,而且還要花一些時間才能實現,但我們會繼續在翻譯工作上推動。 在不久的將來,Roblox 將成為讓世界各地的人們不僅能透過文字聊天,還能以各種可能方式順暢無礙溝通的地方。