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
- Downloads last month
 - 2
 
Model tree for Pokqok/m2m100-onnx-ko-to-ja-zh-k-tourism
Base model
facebook/m2m100_1.2B