피드로 돌아가기
Porting fairseq wmt19 translation system to transformers
Hugging Face BlogHugging Face Blog
AI/ML

Stas Bekman가 fairseq WMT19 번역 모델을 Hugging Face transformers로 포팅하면서 모델 가중치 변환, 어휘 구조 지원, API 호환성 통합을 구현

Porting fairseq wmt19 translation system to transformers

2020년 11월 3일12advanced

Context

Facebook FAIR의 WMT19 뉴스 번역 시스템은 fairseq 프레임워크로 구축되었으나, Hugging Face transformers 생태계와의 호환성이 부족했다. en-ru/ru-en 모델은 2개의 분리된 어휘를 사용하고 de-en/en-de 모델은 통합 어휘를 사용하는 등 복잡한 구조를 갖고 있었다.

Technical Solution

  • 기존 fairseq 모델의 프록시 API 작성: transformers API를 에뮬레이션하는 최소 코드로 기본 번역 기능 먼저 검증
  • torch.hub를 활용한 모델 파일 다운로드: pytorch/fairseq의 사전 훈련된 모델, 체크포인트, 설정 파일, 사전, 토크나이저 통합 로드
  • 변환 스크립트 개발: convert_bart_original_pytorch_checkpoint_to_pytorch.py를 기반으로 src/transformers/convert_fsmt_original_pytorch_checkpoint_to_pytorch.py 작성하여 fairseq 형식을 transformers 형식으로 변환
  • 2개 분리 어휘 구조 지원 구현: en-ru/ru-en 모델의 별도 크기 어휘를 순차적으로 지원하고, 이를 통해 de-en/en-de의 통합 어휘 지원은 간단히 구현
  • 로컬 변환 모델 테스트 후 S3 배포: 개발 중 로컬 복사본으로 검증 후 최종 파일을 S3에 업로드하여 온라인 버전으로 테스트

Impact

아티클에 정량적 성능 지표가 명시되지 않음.

Key Takeaway

복잡한 포팅 프로젝트는 기본 동작하는 프록시부터 시작하는 체계적인 분해(프로토타입→점진적 확대)로 접근할 때 효율적이다. 또한 다국어 모델 지원 시 간단한 구조(통합 어휘)부터 복잡한 구조(분리 어휘)로 작업하면 나중 확장이 용이하다.


대규모 머신러닝 모델을 프레임워크 간 포팅하는 엔지니어는 최소 기능 프록시(예: fairseq→transformers 래퍼)로 초기 검증을 한 후, 점진적으로 가중치 변환·어휘 구조·API 호환성을 단계적으로 구현하면, 복잡한 시스템에서 실패 위험을 줄이고 진행 상황을 추적할 수 있다.

원문 읽기