CoolFace
Modelpublic

Pokqok/m2m100-onnx-ko-to-ja-zh-k-tourism

sourceHugging Faceapache-2.0updated 1y agoView on Hugging Face
0likes15downloads
Model Card

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] 라이브러리가 필요합니다.

bash
pip install transformers optimum[onnxruntime] sentencepiece

아래는 Python에서 모델을 로드하고 번역을 실행하는 예제 코드입니다.

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):