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
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for Pokqok/m2m100-onnx-ko-to-ja-zh-k-tourism

Quantized
(1)
this model