Skip to main content

다국어 번역 모델로 언어 장벽 허물기

February 5, 2024

by Daniel Sturman, Chief Technology Officer


테크

체험에서 함께 채팅하고 농담을 나누며 새로 알게 된 Roblox 친구가 사실은 외국에 살고 있다는 걸 알게 되었다고 상상해 보세요. 그런데 친구는 아무 막힘 없이 영어로 채팅을 입력하고 있었고, 자신은 한국어로 채팅을 입력하고 있었다는 사실. 그것도 서로 전혀 눈치 채지 못한 상태로 말입니다. 새로운 실시간 AI 채팅 번역 덕분에 Roblox에서는 현실 세계에서는 불가능한 일이 가능해졌습니다. 서로 다른 언어를 사용하는 사람들이 몰입형 3D 체험에서 서로 원활하게 소통할 수 있게 된 것입니다. 이를 가능하게 한 것은 바로 현재 지원 중인 16개 언어(영어 및  외 15개 언어)의 모든 조합 간 직역이 가능한 사용자 정의 다국어 대형 언어 모델(Large Language Model, LLM) 덕분입니다.

이제 체험 내 텍스트 채팅 서비스를 지원하는 체험에서라면, 어떤 체험에서든 각자 다른 언어를 사용하는 사람들이 서로를 이해할 수 있게 됩니다. 채팅창에서 자동으로 한국어가 영어로, 터키어가 독일어로, 혹은 그 반대로 번역되어 사용자가 자신의 언어로 대화를 할 수 있게 되었기 때문입니다. 본 번역은 약 100밀리초 이하의 지연 시간 내에 실시간으로 이루어지므로, 사람들은 번역 기능의 진행 과정을 거의 인지하지 못할 것입니다. 이렇듯 AI를 이용한 텍스트 채팅의 실시간 자동 번역은 사람들 사이의 언어 장벽을 허물어, 전 세계 각지의 더 많은 사람들이 한자리에 모일 수 있게 해 줍니다.

통합 번역 모델 구축

AI 번역은 더 이상 새로운 기능이 아니며, Roblox 체험 내 콘텐츠의 대부분은 이미 자동 번역이 이루어지고 있습니다. 하지만 Roblox는 체험 내의 정적인 콘텐츠를 번역하는 것에서 만족하지 않고 그 이상을 이루고자 했습니다. 즉 체험 내의 상호 작용까지도 자동으로 번역할 수 있기를 원했고, 이를 현재 지원 중인 16개 언어 모두에 대해 적용하고자 했습니다. 이는 두 가지 이유에서 용감한 목표였습니다. 첫째, 단지 하나의 기본 언어(예: 영어)를 다른 기본 언어로 번역하는 것이 아니라 지원 중인 16개 언어의 모든 조합을 번역할 수 있는 시스템을 원했습니다. 둘째, 속도가 빨라야 했습니다. 실제 채팅을 지원할 만큼 충분히 빠른 속도란, 지연 시간을 약 100밀리초로 줄여야 함을 뜻했습니다.

Roblox는 전 세계에 7000만 명 이상의 일일 활성 사용자를 보유하고 있으며 지금 이 시간에도 성장을 거듭하고 있습니다. 사람들은 이곳에서 각자의 모국어로 하루 24시간 소통하며 작품을 제작합니다. 따라서 1500만 개 이상의 활성 체험에서 발생하는 모든 대화를 실시간으로 수동으로 번역하는 것은 명백히 불가능한 일입니다. 서로 다른 체험에서 각각 다른 대화를 동시에 나누는 수천만 명의 사람들에게 이러한 번역을 실시간으로 제공하려면 엄청난 속도와 정확성을 갖춘 LLM이 필요합니다. 속어와 약어(오비, 잠수, ㅋㅋㅋ 등)는 물론, Roblox 관련 언어를 인식하는 상황 인식 모델이 필요합니다. 게다가 모델은 현재 지원 중인 16개 언어의 모든 조합을 지원해야 합니다.

이를 달성하고자 Roblox는 각 언어 쌍(예: 일본어 및 스페인어)에 대한 고유한 모델을 구축해 냈습니다. 여기에는 16대16 또는 256개의 서로 다른 모델이 필요했으나, 대신 우리는 단일 모델에서 모든 언어 쌍을 처리하기 위해 통합된 트랜스포머 기반 번역 LLM을 구축했습니다. 이는 유사한 언어 그룹을 전문으로 하는 여러 번역 앱을 보유하고 이를 모두 단일 인터페이스로 사용할 수 있는 것과 같습니다. 원본 문장과 대상 언어가 주어지면 관련 ‘전문가’를 활성화해 번역을 생성하는 것입니다.

이 아키텍처를 사용하면 각 전문가의 전문 분야가 다르기 때문에 리소스를 더 잘 활용할 수 있으며, 번역 품질을 저하시키지 않고도 보다 효율적인 교육 및 추론의 결과를 낼 수 있습니다.

추론 과정을 보여주는 그림입니다. 원문 메시지는 소스 언어 및 대상 언어와 함께 RCC를 통해 전달됩니다. 백엔드를 시작하기 전에 먼저 캐시를 확인하여 이 요청에 대한 번역이 이미 있는지 확인합니다. 그렇지 않은 경우, 요청은 동적 배칭을 통해 백엔드 및 모델 서버로 전달됩니다. 여러 대상 언어로 번역할 때 효율성을 높이기 위해 인코더와 디코더 사이에 임베딩 캐시 레이어를 추가했습니다.

본 아키텍처를 사용하면 훨씬 더 효율적인 모델 훈련 및 유지 관리가 가능해집니다. 이유를 설명하면 다음과 같습니다. 첫째, 본 모델은 언어 간의 언어적 유사성을 활용할 수 있습니다. 모든 언어를 함께 훈련할 경우, 스페인어 및 포르투갈어와 같이 유사한 언어는 훈련 중에 서로의 입력을 활용해 두 언어의 번역 품질을 향상시키는 데 도움이 됩니다. 또한 LLM의 새로운 연구 및 발전이 이루어지면 이를 훨씬 더 손쉽게 테스트하고 시스템에 통합해 최신 및 최고의 기술을 활용할 수 있습니다. 만약 소스 언어가 설정되지 않았거나 잘못 설정된 경우, 통합 모델의 비교적 높은 정확성으로 인해 올바른 소스 언어를 감지하고 대상 언어로 번역할 수 있다는 이점도 누릴 수 있습니다. 실제로 입력에 여러 언어가 혼합되어 있더라도 시스템은 여전히 ​​대상 언어를 감지하고 번역할 수 있습니다. 이러한 경우 정확도는 그다지 높지 않을 수 있지만, 최종 메시지는 합리적으로 이해 가능한 수준이 됩니다.

통합 모델의 훈련은 오픈 소스 데이터 및 Roblox 체험 내 번역 데이터, 실제 인력이 레이블링 작업을 한 채팅 번역 결과, 일반적인 채팅 문장 및 문구에 대한 사전 교육에서부터 시작되었습니다. 또한 번역의 품질을 측정하기 위해 자체 번역 평가 지표 및 모델을 구축했습니다. 대부분의 기성 번역 품질 지표는 AI 번역 결과를 실제 번역 또는 참조 번역과 비교하며 주로 번역의 이해 가능성에 중점을 둡니다. 우리는 실제 번역 없이 번역의 품질을 평가하고자 했습니다.

이를 위해 정확성(추가, 누락, 오역 여부), 유창성(구두점, 철자법, 문법), 잘못된 참조(나머지 텍스트와의 불일치) 등 다양한 측면에서 검토를 진행했습니다. 그리고 각 오류의 심각도 수준에 따라 이를 심각한 오류, 주요 오류, 사소한 오류로 분류했습니다. 또한 품질을 평가하기 위해 ML 모델을 구축하고, 실제 인력이 레이블링한 오류 유형 및 점수를 가지고 훈련을 진행했습니다. 그런 다음 다국어 언어 모델을 미세 조정하여 단어 수준의 오류 및 유형을 예측하고 다차원 기준을 적용해 점수를 계산했습니다. 이는 오류의 품질 및 유형을 포괄적으로 이해하는 데 도움이 되었습니다. 이러한 방식으로, 실제 번역이 없이도 소스 텍스트 및 기계 번역을 사용해 번역 품질을 평가하고 오류를 감지할 수 있었습니다. 이렇게 얻는 품질 측정 결과를 사용하면 번역 모델의 품질을 더욱 향상시킬 수 있습니다.

사내 번역 품질 예측 모델을 활용하면 원문과 기계 번역 결과를 바탕으로 참조 번역 없이 기계 번역 품질을 평가할 수 있습니다. 본 모델은 다양한 측면에서 품질을 예측하고 각 오류를 심각한 오류, 주요 오류, 사소한 오류로 분류합니다.

덜 일반적인 번역 쌍(예: 프랑스어에서 태국어로 번역)의 경우에는 고품질 데이터가 부족한 이유로 다루기가 쉽지 않았습니다. 이러한 격차를 해소하기 위해서는 역번역을 적용해, 해당 콘텐츠를 원래 언어로 다시 번역한 다음 원문 텍스트와 비교해 정확성을 개선하는 방법을 동원했습니다. 훈련 과정에서는 반복적인 역번역을 적용해, 역번역된 데이터와 관리된(레이블링된) 데이터를 전략적으로 혼합함으로써 모델이 학습하는 번역 데이터의 양을 늘렸습니다.

모델 훈련 파이프라인의 그림입니다. 모델 훈련 중에는 병렬 데이터와 역번역 데이터가 모두 사용됩니다. 교사 모델(Teacher Model)을 훈련하고 나면, 모델 크기를 줄이고 서비스 효율성을 높이기 위해 증류 및 기타 서비스 최적화 기술을 적용합니다.

또한 모델이 오늘날의 속어를 이해할 수 있도록, 실제 인력 평가자에게 각 언어별로 인기 있고 유행인 용어를 번역하도록 하고, 해당 번역을 훈련 데이터에 포함했습니다. 본 프로세스는 최신 속어에 대한 시스템의 업데이트 상태를 유지하기 위해 주기적으로 반복될 것입니다.

결과로 생성된 채팅 번역 모델에는 대략 10억 개의 매개변수가 존재합니다. 이렇게 큰 모델을 통한 번역의 실행은 대규모로 서비스를 제공하기에는 엄청나게 리소스 집약적이며, 초당 5000건 이상의 채팅을 지원하기 위해 짧은 대기 시간이 중요한 실시간 대화의 경우 너무 오랜 시간이 걸립니다. 따라서 더 작고 가벼운 모델을 구축하기 위해 학생-교사 접근 방식으로 본 대규모 번역 모델을 사용하기로 했습니다. 이에 모델 크기를 6억 5000만 개 미만의 매개변수로 줄이고 서비스 효율성을 높이기 위해 증류, 양자화, 모델 컴파일 및 기타 서비스 최적화를 적용했습니다. 추가로, 원본 메시지와 번역된 메시지를 모두 사용자의 기기로 전송하기 위해 체험 내 문자 채팅 뒤의 API를 수정했습니다. 이는 수신자가 각자의 모국어로 메시지를 보거나 송신자의 원본 및 번역되지 않은 메시지로 빠르게 전환할 수 있게 해 줍니다.

최종 LLM이 준비된 후에는 모델 서버와 연결하기 위한 백엔드를 구현했습니다. 본 백엔드는 추가 채팅 번역 로직을 적용하고 시스템을 회사의 신뢰 및 안전 시스템과 통합하는 곳입니다. 이는 번역된 텍스트가 다른 텍스트와 동일한 수준의 정밀 조사를 거치게 함으로써 정책을 위반하는 단어나 문구를 감지하고 차단할 수 있게 해 줍니다. 플랫폼에서의 안전 및 매너를 유지하는 것을 언제나 최우선적으로 고려하는 Roblox에게 이는 매우 중요한 부분이었습니다.

지속적인 정확성 개선

테스트를 통해 우리는 이 새로운 번역 시스템이 사용자 참여를 높이고 세션의 품질을 개선함을 확인할 수 있었습니다. 자체 측정 기준에 따르면 본 모델은 Roblox 콘텐츠에 대한 상용 번역 API보다 성능이 뛰어나며, 이는 Roblox에서의 의사소통 방식이 성공적으로 최적화되었음을 나타냅니다. Roblox는 본 노력이 플랫폼 사용자의 경험을 개선해 이곳에서 게임을 즐기고, 쇼핑하고, 함께 작업하며, 다른 언어를 사용하는 친구들과 만날 수 있도록 하는 데 기여할 수 있기를 고대하고 있습니다.

사람들이 각자의 모국어로 원활하고 자연스러운 대화를 나눌 수 있는 능력을 부여함으로써, Roblox는 10억 명의 사람들을 긍정적이고 매너 있는 방식으로 연결한다는 비전에 한 걸음 더 가까이 나아가게 되었습니다.

앞으로 번역의 정확성을 더욱 높이고 모델에 더 나은 훈련 데이터를 제공하기 위해, 사용자로부터 번역에 대한 피드백을 제공받아 시스템을 더욱 빠르게 개선할 수 있는 툴 또한 출시할 계획입니다. 본 툴을 이용하면 사용자는 잘못 번역된 내용을 Roblox에 직접 알릴 수 있으며, 더 나은 번역을 제안해 모델의 개선을 위한 훈련 데이터에 추가할 수도 있게 됩니다.

본 번역 기능은 현재 지원되는 16개 언어 모두에 대해 제공되며, Roblox는 여기에서 멈추지 않을 것입니다. 지원 중인 모든 언어의 인기 채팅 문구 및 최신 속어는 물론, 체험으로부터 제공되는 최신 번역 사례를 활용해 모델을 계속 업데이트할 계획입니다. 이 아키텍처를 활용하면 해당 언어에 대해 충분한 훈련 데이터를 사용할 수 있으므로, 상대적으로 적은 노력으로 새로운 언어에 대한 모델을 훈련할 수도 있습니다. 나아가 이미지 속 텍스트, 텍스처, 3D 모델 등 다차원의 모든 것을 자동으로 번역할 수 있는 방법도 모색 중입니다.

Roblox는 이미 자동 음성 채팅 번역 등 흥미롭고 새로운 영역을 탐색 중입니다. 프랑스어 사용자가 러시아어만 할 수 있는 사람과 음성 채팅을 할 수 있다고 상상해 보세요. 두 사람 모두 목소리의 톤, 리듬, 감정까지 각자의 언어로 짧은 대기 시간만을 사이에 둔 채 서로 말하고 이해할 수 있는 것입니다. 마치 공상과학 소설같기도 하고 이를 달성하는 데는 시간이 좀 걸릴 수도 있지만, Roblox의 번역 기능 개선에 대한 노력은 지속적으로 이루어질 것입니다. 이제 머지 않아 전 세계 사람들이 텍스트 채팅은 물론, 가능한 모든 방식으로 원활하고 수월하게 소통할 수 있는 공간이 될 수 있도록 말이죠.