Pokqok/m2m100-onnx-ko-to-ja-zh-k-tourism
015
M2M100 Korean Tourism Translator (ONNX)
이 모델은 facebook/m2m100_1.2B 모델을 한국 관광 관련 데이터로 파인튜닝(Fine-tuning)한 후, 추론 속도 향상을 위해 ONNX (Open Neural Network Exchange) 형식으로 변환한 번역 모델입니다.
주요 기능은 한국어(ko)와 영어(en), 일본어(ja), 중국어(zh) 간의 양방향 번역을 수행하는 것입니다.
- Base Model:
facebook/m2m100_1.2B - Specialization: Korean Tourism Domain (한국 관광 특화)
- Target Languages: English (en), Japanese (ja), Chinese (zh)
- Format: ONNX (Optimized for fast CPU/GPU inference)
Model Description
M2M100은 별도의 언어 지정 없이 100개 언어 간의 번역을 수행할 수 있는 다국어 번역 모델입니다. 이 모델은 그 중에서도 특히 한국 관광 분야의 용어와 문체에 대한 이해도를 높이기 위해, 관련 데이터셋으로 추가 학습을 진행했습니다.
특히, 한국의 특정 지명(예: 경복궁, 명동)이나 음식 이름(예: 비빔밥, 떡볶이) 등 고유명사에 대한 3개 언어(영어, 일본어, 중국어) 번역 정확도를 높이는 데 중점을 두었습니다.
ONNX 변환을 통해 기존 PyTorch 모델보다 가볍고 빠르게 작동하므로, FastAPI 등을 이용한 API 서버 배포에 매우 적합합니다.
How to Use
이 모델을 사용하려면 transformers와 함께 optimum[onnxruntime] 라이브러리가 필요합니다.
pip install transformers optimum[onnxruntime] sentencepiece아래는 Python에서 모델을 로드하고 번역을 실행하는 예제 코드입니다.
from transformers import AutoTokenizer, pipeline
from optimum.onnxruntime import ORTModelForSeq2SeqLM
# Hugging Face Hub에 있는 모델 이름
model_name = "Pokqok/m2m100-onnx-ko-to-ja-zh-k-tourism"
# 토크나이저와 ONNX 모델 로드
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = ORTModelForSeq2SeqLM.from_pretrained(model_name)
# 번역 파이프라인 생성
translator = pipeline(
"translation",
model=model,
tokenizer=tokenizer
)
# 번역할 텍스트
korean_text = "경복궁 야간개장 입장권은 어디서 구매하나요?"
# 한국어 -> 일본어 번역
result_ja = translator(
korean_text,
src_lang="ko",
tgt_lang="ja"
)
print(f"Korean to Japanese: {result_ja[0]['translation_text']}")
# 한국어 -> 중국어 번역
result_zh = translator(
korean_text,
src_lang="ko",
tgt_lang="zh"
)
print(f"Korean to Chinese: {result_zh[0]['translation_text']}")
# 한국어 -> 영어 번역
result_en = translator(
korean_text,
src_lang="ko",
tgt_lang="en"
)
print(f"Korean to English: {result_en[0]['translation_text']}")
# 일본어 -> 한국어 번역
japanese_text = "景福宮の夜間開場入場券はどこで購入できますか。"
result_ko_from_ja = translator(
japanese_text,
src_lang="ja",
tgt_lang="ko"
)
print(f"Japanese to Korean: {result_ko_from_ja[0]['translation_text']}")
# --- 출력 결과 예시 ---
# Korean to Japanese: 景福宮の夜間開場入場券はどこで購入できますか。
# Korean to Chinese: 景福宫夜间开放门票在哪里购买?
# Korean to English: Where can I buy tickets for the Gyeongbok Palace night opening?
# Japanese to Korean: 경복궁 야간 개장 입장권은 어디에서 구입합니까?Model Details
Fine-tuning
- Base Model:
facebook/m2m100_1.2B - Training Data: 자체적으로 수집 및 정제한 한국 관광 관련 문장 쌍 데이터셋 (K-Tourism Corpus)으로 파인튜닝을 진행했습니다. 이 데이터셋에는 관광지 정보, 음식, 행사 등 다양한 카테고리의 내용이 포함되어 있습니다.
- Objective: 일반적인 번역 모델이 어색하게 번역할 수 있는 한국 관광 관련 고유명사(지명, 음식 이름 등)에 대한 3개 언어 번역 품질을 높이는 것을 목표로 했습니다.
ONNX Conversion
- Performance: PyTorch 모델을 ONNX로 변환하여 양자화(quantization) 및 최적화를 거쳤습니다. 이를 통해 CPU 환경에서도 더 빠른 추론 속도를 제공하며, 이는 실시간 번역 API 서비스에 큰 이점입니다.
- Compatibility: ONNX Runtime은 다양한 하드웨어 및 플랫폼을 지원하여 모델 배포의 유연성을 높여줍니다.
Deployment
이 ONNX 모델은 FastAPI와 Docker를 사용하여 API 서버로 쉽게 배포할 수 있도록 설계되었습니다. 자세한 배포 방법은 관련 프로젝트의 Dockerfile과 app.py를 참고하세요.
Docker Hub Image
- [Repository](https://hub.docker.com/repository/docker/pokqok/m2m100-k-tourism-ko-ja-zh-onnx/general):
