제퍼넷 로고

Amazon Translate로 대용량 문서 번역을위한 서버리스 파이프 라인 생성

시간

우리의 이전 게시물, 우리는 실시간 번역 API 에 아마존 번역 과 AWS 람다. 그러나이 방법은 너무 큰 파일에는 작동하지 않을 수 있습니다. 너무 많은 시간이 소요되어 15 분 제한 시간 Lambda 함수의. 하나는 사용할 수 있습니다 배치 API, 그러나 이것은 XNUMX 개의 AWS 리전에서만 사용할 수 있습니다 (이 블로그 게시 기준). 일괄 번역이 지원되지 않는 지역에서 대용량 파일을 번역 할 수 있도록 다음 솔루션을 만들었습니다.

이 게시물에서는 대용량 문서의 번역을 수행하는 방법을 안내합니다.

아키텍처 개요

게시물에 소개 된 아키텍처와 비교 Amazon Translate, AWS Lambda 및 새로운 Batch Translate API를 사용하여 문서 번역, 우리 아키텍처에는 한 가지 주요 차이점이 있습니다. AWS 단계 함수, Lambda 함수 및 여러 서비스를 비즈니스 크리티컬 애플리케이션으로 쉽게 시퀀싱 할 수있는 서버리스 함수 오케 스트레이터입니다. Step Functions를 사용하면 번역 실행, 오류 또는 시간 초과시 재시도 관리, 이벤트 중심 워크 플로 조정을 추적 할 수 있습니다.

다음 다이어그램은 솔루션 아키텍처를 보여줍니다.

이 이벤트 기반 아키텍처는 새 문서가 입력에 도달 할 때 작업 흐름을 보여줍니다. 아마존 단순 스토리지 서비스 (Amazon S3) 버킷. 이 이벤트는 Step Functions 워크 플로의 시작점 역할을하는 첫 번째 Lambda 함수를 트리거합니다.

다음 다이어그램은 상태 머신과 작업 흐름을 보여줍니다.

Process Document Lambda 함수는 상태 시스템이 시작될 때 트리거됩니다. 이 기능은 문서 번역에 필요한 모든 활동을 수행합니다. S3 버킷에서 파일에 액세스하고, 함수가 실행되는 환경에서 로컬로 다운로드하고, 파일 내용을 읽고, 실시간 번역 API를 통해 전달할 수있는 문서에서 짧은 세그먼트를 추출하고, API의 출력을 사용합니다. 번역 된 문서를 만듭니다.

Amazon Translate 조절 오류 및 Lambda 함수 시간 초과 처리와 같은 다른 메커니즘은 코드 내에 구현되어 함수 시간 초과 30 초 전에 / temp 폴더에 수행 된 진행 상황을 조치를 취하고 저장하여 저장합니다. 이러한 메커니즘은 큰 텍스트 문서를 처리하는 데 중요합니다.

함수가 처리를 성공적으로 완료하면 영어의 경우 en과 같이 대상 언어 코드 용 폴더 내의 출력 S3 버킷에 번역 된 텍스트 문서를 업로드합니다. Step Functions 워크 플로는 Lambda 함수가 입력 파일을 / drop 폴더에서 입력 S3 버킷 내의 / processed 폴더로 이동하면 종료됩니다.

이제이 작업을 수행 할 수있는 모든 부분이 준비되었습니다.

AWS CloudFormation을 사용하여 솔루션 배포

제공된 AWS 계정을 시작하여이 솔루션을 배포 할 수 있습니다. AWS 클라우드 포메이션 스택. CloudFormation 템플릿은 솔루션에 필요한 리소스를 프로비저닝합니다. 템플릿은 us-east-1 리전에 스택을 생성하지만이 템플릿을 사용하여 Amazon Translate를 사용할 수있는 모든 리전에서 스택을 생성 할 수 있습니다. 이 글을 쓰는 시점에서 Amazon Translate는 16 개 상용 리전과 AWS GovCloud (미국 서부)에서 사용할 수 있습니다. 최신 지역 목록은 AWS 지역 서비스 목록.

애플리케이션을 배치하려면 다음 단계를 완료하십시오.

  1. 다음을 선택하여 CloudFormation 템플릿을 시작합니다. 발사 스택:

  1. 왼쪽 메뉴에서 다음 보기.

또는 AWS CloudFormation 콘솔에서 새 리소스로 스택 생성 (표준)선택한다. 아마존 S3 URL 템플릿 소스로 다음을 입력합니다. https://s3.amazonaws.com/aws-ml-blog/artifacts/create-a-serverless-pipeline-to-translate-large-docs-amazon-translate/translate.yml, 선택 다음 보기.

  1. 럭셔리 스택 이름,이 계정에 대한 고유 한 스택 이름을 입력하십시오. 예를 들어 서버리스 문서 번역입니다.
  2. 럭셔리 입력 버킷 이름에서 스택이 생성하는 S3 버킷의 고유 한 이름을 입력합니다. 예 : serverless-translation-input-bucket.

문서는 번역되기 전에이 버킷에 업로드됩니다. 입력 S3 버킷의 이름을 제공 할 때는 소문자 만 사용하고 공백은 사용하지 마십시오. 이 작업은 새 버킷을 생성하므로 기존 버킷의 이름을 사용하지 마십시오. 자세한 내용은 버킷 이름 지정 규칙.

  1. 럭셔리 출력 버킷 이름, 출력 S3 버킷의 고유 이름을 입력하십시오. 예 : serverless-translation-output-bucket.

이 버킷은 번역 된 문서를 저장합니다. 입력 버킷과 동일한 이름 지정 규칙을 따릅니다.

  1. 럭셔리 소스 언어 코드, 입력 문서가있는 언어 코드를 입력하십시오. 이 게시물에서는 지배적 인 언어를 감지하기 위해 auto를 입력합니다.
  2. 럭셔리 대상 언어 코드, 번역 된 문서에 사용할 언어 코드를 입력하십시오. 예를 들어 영어는 en입니다.

지원되는 언어 코드에 대한 자세한 내용은 지원되는 언어 및 언어 코드.

  1. 왼쪽 메뉴에서 다음 보기.

  1. 스택 옵션 구성 페이지에서 태그를 포함하여 스택에 대한 추가 매개 변수를 설정합니다.
  2. 왼쪽 메뉴에서 다음 보기.
  3. 선택 AWS CloudFormation이 사용자 지정 이름으로 IAM 리소스를 생성 할 수 있음을 인정합니다.
  4. 왼쪽 메뉴에서 스택 생성.

스택 생성을 완료하는 데 약 XNUMX 분이 걸립니다.

문서 번역

이제 drop / 폴더 아래의 입력 S3 버킷으로 번역하려는 텍스트 문서를 업로드 할 수 있습니다.

다음 스크린 샷은 그리스어로 된 문장이 포함 된 샘플 문서를 보여줍니다.

이 작업은 워크 플로를 시작하고 번역 된 문서는 대상 언어 폴더 (이 예에서는 en)의 출력 S3 버킷에 자동으로 표시됩니다. 파일이 표시되는 시간은 입력 문서의 크기에 따라 다릅니다.

번역 된 파일은 다음 스크린 샷과 같습니다.

Step Functions 콘솔에서 또는 관련 API 호출을 사용하여 상태 시스템의 진행 상황을 추적 할 수도 있습니다.

더 큰 파일로 솔루션을 시도해 보겠습니다. test_large.txt 파일에는 여러 AWS 블로그 게시물의 콘텐츠와 독일어로 작성된 기타 콘텐츠가 포함되어 있습니다 (예 : 게시물의 모든 텍스트를 사용합니다. AWS DeepLens (버전 2019) kommt nach Deutschland und in weitere Länder).

이 파일은 이전 테스트의 파일보다 훨씬 큽니다. 입력 버킷의 drop / 폴더에 파일을 업로드합니다.

Step Functions 콘솔에서 상태 머신의 상태를 확인하여 파이프 라인이 실행 중인지 확인할 수 있습니다.

그래프 검사기 페이지에서 주어진 시점에서 상태 머신의 상태에 대한 더 많은 통찰력을 얻을 수 있습니다. 단계를 선택하면 단계 출력 탭에는 완료율이 표시됩니다.

상태 머신이 완료되면 출력 버킷에서 번역 된 파일을 검색 할 수 있습니다.

다음 스크린 샷은 파일이 영어로 번역되었음을 보여줍니다.

문제해결

출력 S3 버킷에 번역 된 문서가 표시되지 않으면 Amazon CloudWatch 로그 해당 Lambda 함수를 찾고 잠재적 인 오류를 찾습니다. 비용 최적화를 위해 솔루션은 기본적으로 Process Document Lambda 함수에 256MB의 메모리를 사용합니다. 대용량 문서를 처리하는 동안 CloudWatch Logs의 함수에 대해 Runtime.ExitError가 표시되면 함수 메모리를 늘리십시오.

기타 고려 사항

의 힘을 강조 할 가치가 있습니다. 자동 언어 감지 기능 CloudFormation 스택을 배포 할 때 지정한 SourceLanguageCode 필드에 자동으로 캡처 된 Amazon Translate의. 이전 예에서는 그리스어 텍스트와 독일어로 된 다른 파일이 포함 된 파일을 제출했으며 둘 다 성공적으로 영어로 번역되었습니다. 이 솔루션을 사용하면 다른 언어로 소스 파일을 업로드 할 때마다 스택을 다시 배포하거나 Lambda 함수에서 소스 언어 코드를 수동으로 변경할 필요가 없습니다. Amazon Translate는 출발 어를 감지하고 번역 프로세스를 시작합니다. 배포 후 대상 언어 코드를 변경해야하는 경우 새 CloudFormation 스택을 배포하거나 기존 스택을 업데이트 할 수 있습니다.

이 솔루션은 Amazon Translate 동기식 실시간 API를 사용합니다. 문서를 단락 (개행 문자로 끝나는)으로 분할하여 최대 문서 크기 제한 (5,000 바이트)을 처리합니다. 필요한 경우 각 단락을 문장으로 추가 분할합니다 (마침표로 끝남). 소스 텍스트에 따라 이러한 구분 기호를 수정할 수 있습니다. 이 솔루션은 단일 문장에 대해 최대 5,000 바이트를 지원할 수 있으며 파일 확장자가 .txt 또는 .text 인 UTF-8 형식의 텍스트 문서 만 처리합니다. Process Document Lambda 함수에서 Python 코드를 수정하여 다양한 파일 형식을 처리 할 수 ​​있습니다.

Amazon S3 비용 외에도이 솔루션에는 Amazon Translate, Lambda 및 Step Functions의 사용 비용이 발생합니다. 자세한 내용은 Amazon Translate 요금, Amazon S3 요금, AWS Lambda 요금AWS Step Functions 요금.

결론

이 게시물에서는 다음을 사용하여 실시간으로 문서를 번역 할 수있는 서버리스 파이프 라인의 구현을 보여주었습니다. 실시간 번역 Amazon Translate의 기능과 개별 Lambda 함수의 오케 스트레이터로서 Step Functions의 기능. 이 솔루션을 사용하면 더 많은 제어가 가능하고 애플리케이션에 정교한 기능을 추가 할 수 있습니다. Amazon Translate로 고급 문서 번역 파이프 라인을 구축하십시오!

자세한 내용은를 참조 Amazon Translate 개발자 안내서Amazon Translate 리소스. Amazon Translate를 처음 사용하는 경우 첫 번째 번역 요청부터 시작하여 처음 2 개월 동안 무료로 월 12 백만자를 제공하는 프리 티어를 사용해보십시오.


저자에 관하여

제이 라오 AWS의 선임 솔루션 아키텍트입니다. 그는 고객에게 기술 지침을 제공하고 고객이 AWS에서 솔루션을 설계하고 구현하도록 돕는 것을 즐깁니다.

 세브 카스프르자크 AWS의 솔루션 아키텍트입니다. 그는 Amazon에서 고객이 Amazon 기술을 사용하여 복잡한 비즈니스 문제를 해결할 수 있도록 도와줍니다.

니키 포로스 보 티스 AWS의 솔루션 아키텍트입니다. 그는 고객이 클라우드 여정에서 성공하도록 돕는 것을 즐기고 있으며 특히 AI / ML 기술에 관심이 있습니다.

바비 쿠 보르 AWS의 디지털 혁신을위한 선임 솔루션 아키텍트로서 고객이 기계 학습, 로봇 공학 및 IoT와 같은 신흥 기술의 까다로운 문제를 해결하도록 돕습니다.

코인 스마트. 유로파 최고의 비트 코인-보르 스
출처 : https://aws.amazon.com/blogs/machine-learning/create-a-serverless-pipeline-to-translate-large-documents-with-amazon-translate/

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?