AWS 기술 블로그

Voithru의 GPT에서 Amazon Bedrock Claude Sonnet 3.5로의 전환 여정

보이스루(Voithru) 소개

보이스루는 ‘전세계 콘텐츠를 잇다’라는 슬로건 아래, 유튜브, 강의 등의 영상과 웹툰, 웹소설 등 뉴미디어 콘텐츠 번역을 전문으로 하는 콘텐츠 전문 번역 회사입니다. 보이스루는 다양한 콘텐츠 번역 과정에서 사람이 더 쉽고, 빠르게, 그리고 잘 번역할 수 없을까를 고민하며 이를 기술로 풀어내기 위해 노력하고 있습니다. 특히 보이스루의 AI의 서비스는 콘텐츠의 특성과 번역 프로세스에 최적화되어있습니다. 오늘은 그 중에서도 LLM을 활용한 영상 번역 AI 서비스(이하 영상번역 AI)에 대해 이야기해보고자합니다.

보이스루의 영상 번역 AI 솔루션

보이스루의 영상번역 AI는 영상을 입력으로 받아 자막을 텍스트로 변환하고, 변환한 텍스트를 이용해 다국어로 번역된 자막을 만들어내는 인공지능 기반 서비스입니다. 특히, LLM을 통한 기계번역(Machine Translation 이하 MT)을 진행하고 있습니다.

영상번역 AI 솔루션의 특징

영상 번역 AI 솔루션은 GPT 3.5를 파인 튜닝하여 사용하고 있었으며, 다음과 같은 주요 요소들을 고려하도록 설계되어있습니다.

  1. 정확성
    • 영상 번역에서 가장 중요한 요소 중 하나는 문맥을 고려한 자막이 발화자의 발화 시간에 정확히 출력되는 것입니다. 이를 위해 영상번역 AI는 문장을 일정한 단위로 합쳐서 번역하고 다시 문장 단위로 나누어 시간을 처리 하는 방식을 적용하고 있습니다.
  2. 현지화
    • 콘텐츠 번역은 정확성과 더불어 도착어의 언어적 특성이나 문화적 특성에 알맞는 번역이 중요합니다. 이를 위해, 영상번역 AI는 다양한 LLM 모델들을 fine-tuning하여, 도착어와 콘텐츠의 특성을 녹여내고자 했습니다.

기존 영상번역 AI 솔루션의 한계

  1. Output 형식의 불안정함
    • prompt와 fine-tuning을 통해 출력을 제한시켜준다고 하더라도, 데이터 또는 확률에 따라 output의 형식이 달라지는 경우가 발생하고는 합니다. 그러나 실제 서비스에서는 이 작은 가능성이 장애를 일으키고는 합니다. 형식이나 내용이 맞지 않는 출력물은 내용을 사람이 검수한 후 영상 번역 AI가 재생성하여야 합니다.
  2. 현지화 및 특정 번역 단어 반영
    • 번역 시 적용해야 할 고유 명사는 단어장을 만들어 적용하는 형태로 구현하였습니다. 하지만 특정 단어를 수정한다던가, 반영이 아예 안되는 한계가 있었습니다. 또한 문장 단위가 아닌 발화 단위로 나뉘어져있는 자막의 특성 때문에 자연스럽게 번역이 안되는 문제점이 있었습니다.
  3. 지속적인 fine-tuning 비용 발생
    • Fine-tuning의 방식은 가지고 있는 데이터의 특성을 잘 녹여낼 수 있지만, 데이터의 분포나 특징이 바뀌는 경우나 새로운 모델이 나올 경우 다시 fine-tuning을 해야하므로, 장기적으로 관리 및 유지보수에 상당한 비용이 발생하게 됩니다.

따라서, 영상 번역 AI 솔루션의 특징을 반영하고, 기존 시스템의 한계점을 해결하기 위해 프롬프트 엔지니어링과 구조 변경 작업을 진행했습니다.

영상 번역 AI 솔루션 개선하기

보이스루는 총 4주 간 프롬프트 엔지니어링 기법을 적용하고, 시스템 아키텍처를 개선하였습니다. 해당 영상 번역 AI 솔루션 품질 개선 프로젝트에서는 Amazon BedrockClaude Sonnet 3.5 모델을 이용하였습니다.

1. 프롬프트 개선

기존 솔루션에서 사용하던 prompt의 경우, 일반적인 줄글 형태였으며, 번역에 필요한 모든 지시사항을 한 번에 수행하도록 되어있었습니다. 따라서 이번 품질 개선 프로젝트에서는 번역 정확도를 위해 지시사항을 세분화하고, 순차적으로 절차를 수행하여 LLM의 응답 정확도를 높였습니다.

기존 GPT 모델의 프롬프트

You are a highly skilled translator with expertise in many languages. 
Your task is to translate given {source_language} to {target_language} 
while preserving the meaning, tone, and nuance of the original text. 

When you translate the text, you have to refer given glossary 
which already translate words. In the original text, 
there is sentence separator token [[n]]. Sentence separator must be preserved. 

Also, please maintain proper grammar, spelling, and punctuation 
in the translated version. The output should be JSON format like below, 

{"contents": }

위 프롬프트는 기존 영상 번역 AI 솔루션의 프롬프트입니다. 하나의 프롬프트에 Translator(번역가)라는 역할 주기, glossary(단어장) 반영, 주의 사항 및 JSON 형식으로 output 만들기 등의 지시 사항들이 반영되어 있습니다.

현재 Claude Sonnet 3.5 프롬프트 (번역 부분)

You are a highly skilled translator with expertise in many languages. 
Your task is to translate given {source_language} to {target_language} 
while preserving the meaning, tone, and nuance of the original text. 

When working, you must follow the given <caution> and <example>.

<caution>
...              # 번역 시 주의사항을 1. 2. 3. 형태로 정리해서 작성
</caution>

<example>
{{examples}}      # 번역 예시를 3개(few shot) 작성
</example>


Follow these steps for the translation task:
...               # 번역 수행 과정을 지시

<output>
{{
    "contents": "",
}}
</output>

위 프롬프트는 아래 시스템 아키텍처의 Translate Lambda에 해당하는 번역 절차의 프롬프트입니다. 단어장을 반영하는 절차는 위 프롬프트 수행 이전에 실행하고, 단어장이 반영된 번역 원문을 위 프롬프트를 이용해 번역합니다. 해당 프롬프트에는 XML 태그 적용, 번역 시 주의사항 안내, 번역 예시 제공, 수행 과정 지시 및 output 형식 안내 등을 지시합니다.

2. 프롬프트 엔지니어링 기법 적용하기

위 프롬프트 개선에는 크게 세 가지 프롬프트 엔지니어링 기법이 적용되었습니다. 1) XML 태그 활용 2) Few-shot 프롬프팅 3) 프롬프트 체이닝. 이 기법들에 대한 적용 과정 및 효과를 소개하겠습니다.

(2.1) XML 태그 활용 – 데이터와 지시 사항 분리하기

When working, you must follow the given <caution> and <example>.

<caution>
...              # 번역 시 주의사항을 1. 2. 3. 형태로 정리해서 작성
</caution>

<example>
{{examples}}      # 번역 예시를 3개(few shot) 작성
</example>

...

<output>
{{
    "contents": "",
}}
</output>

XML 태그를 적용한 프롬프트

XML 태그란?

  • XML 태그는 <tag></tag>와 같은 꺽쇠괄호 태그입니다. 이 태그는 쌍으로 이루어지며 <tag>와 같은 여는 태그와 </tag>와 같은 닫는 태그로 구성됩니다. XML 태그는 <tag>content</tag>와 같이 내용을 감싸는 데 사용됩니다.
    여는 태그와 닫는 태그의 이름은 정확히 동일해야 합니다. 태그 이름은 감싸고 있는 내용과 맥락적으로 관련된 이름을 지정하는 것이 좋습니다.

XML 태그를 사용한 이유

  • 정확성 향상: XML 태그는 Claude가 프롬프트의 지시, 예시, 입력 데이터 등 다양한 부분을 구별할 수 있게 해줍니다. 이를 통해 Claude가 프롬프트를 더 정확하게 파싱할 수 있어 더 관련성 있고 정확한 응답을 얻을 수 있습니다.
    명확한 구조 파악 가능: 제목과 절이 문서를 읽기 쉽게 해주듯, XML 태그는 Claude가 프롬프트 내 계층 구조와 관계를 이해하는 데 도움이 됩니다.
    쉬운 후처리: Claude에게 응답에도 XML 태그를 사용하도록 요청할 수 있어 핵심 정보를 프로그래밍 방식으로 추출하기가 쉽습니다.

적용

  • 보이스루에서는 데이터의 구조를 명확히 나누기위해 LLM의 역할을 부여하는 부분과 이 밖의 작업을 수행하기 위한 context 정보를 분리하였습니다. 더 나아가 번역 시 필요한 지시 사항, 예시 그리고 output 형식을 각각 XML태그로 구분하였습니다.

(2.2) Few-shot 프롬프팅

<examples> # 번역 예시를 3개(few shot) 작성
   <example>
     <original_contents>
        ...(번역 전 원문)
     </original_contents>
     <translated_contents>
        ...(번역 후)
     </translated_contents>
   </example>
   ...(example과 같은 형식으로 2개)
</examples>

Few-shot을 적용한 프롬프트

Few-shot 프롬프팅이란?

  • Few-shot 프롬프팅은 몇 개의 예시를 LLM에게 주어 성능을 향상시키고 응답을 원하는 방향으로 유도하는 방식입니다.

Few-shot 프롬프팅을 적용한 이유

출처: Language Models are Few-Shot Learners (2020, Cornell University)

  • 위 논문에서는, 대규모 언어 모델에서는 태스크와 무관하게 few-shot 프롬프팅으로 성능이 크게 향상되며, 때로는 최고 수준 파인 튜닝 접근법과 대등한 수준의 모델 성능 개선 결과를 보여줬습니다. 따라서, 이번 보이스루의 번역 성능 개선 프로젝트에서는 적절한 예시를 여러 개 프롬프트에 넣어 모델의 성능을 개선하는 시도를 하였습니다.

좋은 예시를 선정하는 기준

  • 관련성: Claude가 실제로 다룰 것으로 예상되는 입력과 출력 유형과 가장 유사한 예시를 선택합니다. 예시가 실제 사용 사례와 유사할수록 Claude의 성능이 좋아집니다.
  • 다양성: 다양한 시나리오와 엣지 케이스를 다루는 다양한 예시를 포함시킵니다. 이렇게 하면 Claude가 더 넓은 이해력을 기르고 다양한 입력을 처리할 수 있습니다.
  • 명확성: 명확하고 간결하며 이해하기 쉬운 예시를 만듭니다. <example> 같은 형식 태그를 사용하여 예시를 구성하고 프롬프트의 나머지 부분과 구별합니다.
  • 예시 수 조절: 이상적인 예시 수에 대한 규정은 없지만, 초기에 최소 3-5개의 예시를 제공하여 Claude에게 단단한 기반을 마련해줍니다. Claude의 성능이 기대에 미치지 못하면 언제든지 더 많은 예시를 추가할 수 있습니다.

다만, 예시를 사용할 때 다양한 시나리오를 모두 다룰 수 있도록 주의해야합니다. 특정 시나리오나 엣지 케이스에 한정된 예시를 제공하면, LLM이 해당 케이스에 집중하게 되고, 일반화 능력이 떨어져 오히려 성능이 떨어지는 경우가 발생하고는 합니다.

(2.3) 프롬프트 체이닝

프롬프트 체이닝 flow

보이스루는 복잡도와 중요도에 따라 번역 작업을 하위 작업으로 작게 쪼겠습니다. 이를 바탕으로 여러개의 하위 작업들을 묶어 프롬프트 체이닝 기술을 적용하였습니다. 그 결과, 단어장 반영과 번역이라는 큰 두개의 작업으로 번역을 진행하게 되었고, 단어장 반영의 결과물을 번역 작업의 입력으로 사용하였습니다.

프롬프트 체이닝이란?

  • 프롬프트 체이닝은 복잡한 작업을 일련의 더 작고 관리 가능한 하위 작업으로 분할하는 것입니다.
  • 각 하위 작업은 고유한 프롬프트로 캡슐화되며, 한 프롬프트의 출력이 다음 프롬프트의 입력으로 사용됩니다.

프롬프트 체이닝을 사용한 이유

  • 정확성 향상: 하나의 작업에 여러 하위 작업을 수행하지 않고, Claude가 각 단계에 전념함으로써 정확성과 일관성 향상을 기대할 수 있습니다.
  • 문제 해결의 용이성: 수행해야하는 작업을 특정 하위 작업으로 나누고, 특정 하위 작업을 격리하여 문제 해결과 개선에 용이합니다.
  • 따라서, 프롬프트 체이닝은 Claude가 자신의 이전 응답을 이해하고 후속 프롬프트에 통합할 수 있는 능력을 활용합니다. 프롬프트와 연결 구조를 신중히 설계함으로써 가장 복잡한 작업에 대해서도 Claude를 안내하여 신뢰할 수 있고 고품질의 결과를 얻을 수 있습니다.

(2.4) AWS Step Functions 적용

기존 영상 번역 AI 솔루션은 분산 처리 및 재시도를 코드를 통해 직접 구현했습니다. 이 과정을 단순화하고 시각화하기 위해 AWS Step Functions를 활용하였습니다.

AWS Step Functions는 개발자가 AWS 서비스를 사용하여 애플리케이션을 구축하고, 프로세스를 자동화하며, 마이크로서비스를 오케스트레이션하고, 데이터 및 기계 학습(ML) 파이프라인을 생성할 수 있도록 지원하는 시각적 워크플로 서비스입니다.

보이스루에서는 AWS Step Functions를 이용해 아래와 같은 워크 플로우를 구성하였습니다.

  1. Amazon API Gateway를 통해 클라이언트 애플리케이션에서 번역 원문을 전송하면 AWS Step Functions가 트리거됩니다.
  2. 번역물은 AWS Step Functions의 Map 기능을 통해 전체가 아닌 번역에 유리한 특정한 길이의 문단으로 나누어 번역됩니다.
  3. Glossary Lambda에서는 해당 번역물의 특징적인 단어들을 올바르게 번역하기 위한 “단어장”을 Amazon Bedrock Claude Sonnet이 반영합니다.
  4. Translate Lambda에서는 Glossary Lambda의 결과물을 입력으로 받아 최종 번역 결과물을 생성합니다.
    시스템 에러가 있을 경우 Fail state로 분류되어 워크플로우를 재실행하고, 아닐 경우 최종 End state에 도달합니다.
  5. Amazon API Gateway에 최종 번역물을 반환합니다.

성능 개선 결과 요약

항목 기존 영상 번역 AI 솔루션 현재 사용 모델
Context One shot Few shot
단어장 반영 한번의 API call에 LLM이 반영 및 번역 LLM(Claude Sonnet)으로 전처리 후 언어 혼합된 상태로 번역
구분자 [[number]] <sentence></sentence>
출력 형식 제어 Prompt에 ”output format should be JSON format.” output example + XML tag
고유 명사 처리 가능하지만 추적이 용이하지 않음 가능, 추적 용이
LLM API call 횟수 1회 최소 3회 (단어장 반영, 번역, 오류 검증)
실행 시간 변화 분산 처리 적용 O 기존과 비슷 (StepFunctions Map 사용)
System error rate 20% Near zero

영상 번역 AI 솔루션 개선 결과 분석

평가 방법 선정

보이스루에서는 효율적이고 지속적인 모델 평가를 위한 LLM evaluation정확한 기계 번역 결과물 평가를 위해 4명의 번역가의 Human evaluation을 동시에 진행했습니다.

1. LLM evaluation

일반적으로 많이 볼 수 있는 유즈케이스와는 달리 문학작품을 비롯한 콘텐츠 번역은 BLEU와 같은 기존의 기계번역 성능 지표만으로는 한계가 존재합니다(Thai et al. 2022). 실제로 BLEU, METEO 등 MT 평가에 많이 사용되는 지표들을 사용하여 평가를 진행하였으나,번역가의 평가와 상관 관계가 떨어지는 모습을 보였습니다.

이에 보이스루는 사람의 인지와 유사한 평가방법을 적용하여 정량적 평가를 시도하고자 했습니다. 이를 위해, G-Eval이라는 평가 방식을 도입했습니다.(Yang, et al. 2023) G-Eval은 Chain-of-Thoughts(CoT) 및 폼-필링 방식을 사용하여 20개의 평가 샘플을 받고, 이를 평균내어 최종 점수를 생산합니다.

보이스루에서는 번역에 누락, 오역이 없는지 판단하는 정확성(accuracy)와 실제 번역어가 얼마나 자연스러운지를 판단하는 유창성(fluency) 2가지를 평가 항목으로 설정하고 평가를 진행했습니다. 정확성와 유창성 두 평가 항목은 5점 척도로 진행하였으며, 점수가 높을수록 더 좋은 퀄리티를 가진 번역으로 평가하도록 설정했습니다.

Evaluation 요약

  • 평가 대상: 한일 번역 4개, 한영 번역 4개
  • 평가 방식: G-Eval
  • 평가 기준: 정확성, 유창성

정확성(accuracy)평가 결과

강의 번역 GPT 3.5 fine-tuning Claude3 sonnet Claude3.5 sonnet
A 한영 3.6 3.6125 3.875
B 한영 3.366 3.9083 3.85
C 한일 2.9 3.35 3.8
D 한일 2.9 3.15 3
E 한영 3.2 2.85 3.05
F 한일 3.5 3.35 4.15
G 한영 3 3.3 3.3
G 한일 2.6 2.4 2.75

유창성(fluency)평가 결과

강의 번역 GPT 3.5 fine-tuning Claude3 sonnet Claude3.5 sonnet
A 한영 3.875 4.1125 4.425
B 한영 3.3166 3.8166 3.75
C 한일 3.55 3.825 3.9
D 한일 3.25 3.5 3.35
E 한영 3.65 3.6 3.85
F 한일 4.15 4 4.2
G 한영 3.5 3.65 4.55
G 한일 2.6 2.55 2.75

결과 해석

  • 정확성 평가의 경우 원문을 얼마나 정확히 반영했는가를 평가이며, 오역과 원문 누락을 중점으로 평가를 진행하였습니다. GPT3.5에 비하여 Claude가 정확성 면에서 전반적으로 우수한 것으로 확인되었습니다.
  • 유창성 평가의 경우 번역이 얼마나 자연스러운지를 평가하며, 문법과 문장 구조를 중점으로 평가를 진행하였습니다. 평가 결과, GPT3.5에 비하여 Claude가 유창성 면에서 더 높은 점수를 받았습니다.
  • 전반적으로, G-eval 점수는 정확성과 유창성이 상관관계를 가지고 있음을 보여주었고, Claude의 번역물이 전반적으로 더 좋은 평가를 받았습니다. 다만, E(한영 번역)의 경우, 정확도 측면에서는 GPT3.5가, 유창성 측면에서는 Claude3.5가 우세하여, 기존의 평가 성향과는 다른 결과를 보여주었습니다.

2. Human evaluation

LLM이 수행한 기계 번역의 경우 품질이 상향 평준화되어 문법적 오류나 단어의 정확도를 측정하는 기존 MQM (Multidimensional Quality Metrics)방식의 평가로는 오히려 정확한 평가를 진행하기 어렵습니다. (참고)

이에 따라, 미묘한 어투나 현지화의 정확도 등을 반영할 수 있는 1) 두 번역 중 어떤 것이 더 높은 품질인지 선호도 평가 2) 자유 형식으로 선호도 판단의 근거 제시 방식으로 Human Evaluation을 진행하였습니다.

선호도 판단의 경우 오역, 오타, 문법적 오류, 윤문(자연스러움)을 기준으로 판단을 진행했습니다. 이 네 가지 항목은 기존 MQM 방식에도 포함된 항목이며, 실제 번역에서도 널리 사용되고 있습니다.

Evaluation 요약

  • 평가 대상: 한일 번역 4개, 한영 번역 4개(LLM evaluation과 동일한 데이터)
  • 평가자: 보이스루 번역가 4명
  • 평가 기준: 선호도

한일 번역 평가

항목 비율
Claude 3.5 Sonnet 32.90%
GPT 3.5 fine-tuning 17.90%
두 모델 모두 사용 가능 47.30%
두 모델 모두 사용 불가능 2%

한영 번역 평가

항목 비율
Claude 3.5 Sonnet 41.50%
GPT 3.5 fine-tuning 27.80%
두 모델 모두 사용 가능 24.90%
두 모델 모두 사용 불가능 5.90%

선호도 평가 결과 해석

  • GPT 3.5 fine-tuning과 Claude3.5 Sonnet의 결과를 비교 평가한 결과, 영어와 일본어 두 언어에서 모두 Claude3.5의 번역물이 더 높은 평가를 받았습니다. 특히, 한일번역의 경우 Claude3.5 Sonnet의 번역결과가 신뢰도가 높다는 것을 볼 수 있습니다.
  • 정성적 평가에서도 Claude3.5는 축약적 표현 사용과 가이드라인 준수 측면에서 높은 평가를 받았습니다. 특히 일본어의 경우 구어체는 GPT 3.5가 더 잘 구사하지만, Claude3.5가 문장의 의미를 더 정확하고 명확하게 반영한다는 평가를 받았습니다.
  • 또한, 프롬프트 개선 및 모델 변경을 통해 Claude 3.5로 생성한 번역물이 단어장을 더 잘 반영하고 있다는 평가를 받기도 했습니다. 특히, 한일 번역에서 히라가나와 카타카나로 표기해야할 부분을 잘 구분했다는 점이 돋보였습니다.
  • 한편, 두 모델 모두 사용불가하다고 판단되는 경우는 주로 윤문과 현지화에 대한 부분이었습니다. 영상 번역은 텍스트 번역과 달리, 사람의 발화를 직접 번역하기 때문에, 구어체 특성상 원어가 정제되지 않은 경우가 많습니다. 기계 번역은 이를 ‘정확하게’ 번역(원어 그대로)하기 때문에 윤문의 측면에서 부족하다고 평가를 받는 경우가 있습니다. 이는 E(한영 번역) 결과에서 두드러졌습니다.

Evaluation 결과

Human evaluation과 LLM evaluation을 이용하여 번역 품질을 측정한 결과, 프롬프트 엔지니어링을 수행한 Claude 3.5 Sonnet이 GPT 3.5를 파인 튜닝한 모델보다 더 정확하고 자연스러운 번역을 제공한다는 결론을 얻었습니다.

특히, 한일 번역에서 단어장을 더욱 잘 반영한 번역물을 생성하며, 원문을 잘 축약하여 자연스러운 번역물을 생성한다는 평가를 받았습니다. 또한, 기존에 존재하던 Output 형식의 불안정성을 해결하여 자막의 싱크가 밀리지 않고 안정적이게 생성되는 것을 확인 할 수 있었습니다.

결론

보이스루는 AI 번역 서비스를 제공하고 있는 콘텐츠 번역 전문 기업입니다. 기존에는 GPT-3.5 모델을 fine-tuning하여 영상 번역 AI 솔루션을 사용하고 있었지만, 지속적인 파인 튜닝 비용 부담과 번역 품질에 한계점이 있었습니다. 이에 Amazon Bedrock Claude 3.5 Sonnet으로 전환하며 시스템 아키텍처와 프롬프트를 개선하였습니다.

새로운 시스템에서는 AWS Step Functions를 활용하여 워크플로우를 구축하고, 프롬프트 체이닝, XML 태그 활용, Few-shot 프롬프팅 등의 기법을 적용하여 프롬프트를 개선하였습니다. 이를 통해 단어장 반영, 구분자 처리, 출력 형식 제어 등의 측면에서 향상된 성능을 보였고, 시스템 오류율을 거의 0에 가깝게 낮출 수 있었습니다.

SungRyul Eom

Seunghyun Yun

보이스루 CTO를 맡고 있는 윤승현입니다. AI를 기반으로한 번역과, 복잡한 workflow 시스템, 자동화를 통한 번역 프로세스, 업무 프로세스 효율화에 관심을 가지고 있습니다.

MinHyeok Park

Minji Jung

보이스루의 ML Engineer로서, LLM을 비롯한 다양한 ML 모델을 활용한 서비스 개발 및 운영 관리를 담당하고 있습니다. AI 기술을 통해 생산성을 높이는 데 관심을 가지고 있습니다.

Seungwon Choi

Seungwon Choi

최승원 솔루션즈 아키텍트는 고객이 최적의 솔루션을 선택하여 비즈니스 성과를 달성할 수 있도록 고객과 함께 효율적인 아키텍처를 구성하는 역할을 수행하고 있습니다.