harveykim's picture
docs: README์— GitHub ์ฝ”๋“œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋งํฌ ์ถ”๊ฐ€
b7b3d19
|
Raw
History Blame
8.38 kB
---
license: cc-by-nc-4.0
tags:
- translation
- korean
- english
- ko-en
- en-ko
- kanana
- kanana-1.5
- lora
- peft
- unsloth
language:
- ko
- en
library_name: peft
pipeline_tag: translation
base_model: kakaocorp/kanana-1.5-2.1b-base
datasets:
- AI-Hub-126-korean-english-parallel
model-index:
- name: kanana-1.5-2.1b-aihub-ko-en-lora
results:
- task:
type: translation
dataset:
name: AI Hub #126 โ€” ํ•œ๊ตญ์–ด-์˜์–ด ๋ณ‘๋ ฌ ๋ง๋ญ‰์น˜ (๊ท ํ˜• ๊ฒ€์ฆ์…‹ 200์Œ)
type: AI-Hub-126
metrics:
- type: bleu
value: 32.04
name: BLEU
- type: chrf
value: 57.26
name: chrF++
---
# kanana-1.5-2.1b-aihub-ko-en-lora
> **Kanana 1.5 2.1B base** (์นด์นด์˜ค)๋ฅผ **AI Hub ํ•œ-์˜ ๋ณ‘๋ ฌ ๋ง๋ญ‰์น˜ (#126)** ๋กœ QLoRA ํŒŒ์ธํŠœ๋‹ํ•œ **ํ•œโ†”์˜ ๋ฒˆ์—ญ ์–ด๋Œ‘ํ„ฐ**์ž…๋‹ˆ๋‹ค.
์ฝ”๋“œยท๋ฌธ์„œ ์ „์ฒด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ: [github.com/DeepMav/on-device-translation](https://github.com/DeepMav/on-device-translation)
์ž๋งค ๋ชจ๋ธ: [`harveykim/gemma-3-1b-aihub-ko-en-lora`](https://huggingface.co/harveykim/gemma-3-1b-aihub-ko-en-lora) โ€” ๋™์ผ ๋ฐ์ดํ„ฐยท๋™์ผ ํ‰๊ฐ€ ํ”„๋กœํ† ์ฝœ๋กœ ํ•™์Šต๋œ Gemma 3 1B ๋ฒ„์ „.
---
## ๋ชจ๋ธ ์ •๋ณด
| ํ•ญ๋ชฉ | ๊ฐ’ |
|---|---|
| ๋ฒ ์ด์Šค ๋ชจ๋ธ | [`kakaocorp/kanana-1.5-2.1b-base`](https://huggingface.co/kakaocorp/kanana-1.5-2.1b-base) (Apache-2.0) |
| ์–ด๋Œ‘ํ„ฐ | LoRA (PEFT 0.19.1), r = 32, ฮฑ = 64, dropout = 0 |
| ํƒ€๊ฒŸ ๋ชจ๋“ˆ | ์–ธ์–ด ๋ ˆ์ด์–ด ์ „์ฒด ์„ ํ˜• ๊ณ„์ธต (attn q/k/v/o + mlp gate/up/down) |
| ์–ด๋Œ‘ํ„ฐ ํฌ๊ธฐ | ์•ฝ 184 MB (`safetensors`) โ€” ํ† ํฌ๋‚˜์ด์ € ํฌํ•จ ์ด ์•ฝ 201 MB |
| ์‹œํ€€์Šค ๊ธธ์ด | 1,024 |
| ํ•™์Šต ๋ฐ์ดํ„ฐ | AI Hub #126 โ€” ํ•œ๊ตญ์–ด-์˜์–ด ๋ณ‘๋ ฌ ๋ง๋ญ‰์น˜ |
| ํ•™์Šต ์Œ ์ˆ˜ | 988,003 (์–‘๋ฐฉํ–ฅ, ๊ท ํ˜• ์ƒ˜ํ”Œ๋ง) |
| ์ง€์› ์–ธ์–ด | ํ•œ๊ตญ์–ด โ†” ์˜์–ด |
| ๋ผ์ด์„ ์Šค (์–ด๋Œ‘ํ„ฐ) | CC BY-NC 4.0 โ€” ๋น„์˜๋ฆฌ ์šฉ๋„ ํ•œ์ • |
| ๋ผ์ด์„ ์Šค (๋ฒ ์ด์Šค ๋ชจ๋ธ) | Apache 2.0 |
> **๋ฒ ์ด์Šค ๋ชจ๋ธ ์ž์ฒด๋Š” Apache 2.0**์ด๋ผ ์ƒ์šฉ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋ณธ ์–ด๋Œ‘ํ„ฐ๋Š” ํ•™์Šต ๋ฐ์ดํ„ฐ(AI Hub #126)์˜ ๋น„์˜๋ฆฌยท์—ฐ๊ตฌ ๋ชฉ์  ์ •์‹ ์— ๋งž์ถฐ **CC BY-NC 4.0**์œผ๋กœ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ์ƒ์šฉ ์‚ฌ์šฉ์„ ์›ํ•œ๋‹ค๋ฉด ์ž์ฒด ๋ฐ์ดํ„ฐ๋กœ ์žฌํ•™์Šตํ•˜์„ธ์š”.
---
## ์„ฑ๋Šฅ (๊ท ํ˜• ๊ฒ€์ฆ์…‹ 200์Œ, AI Hub #126 12๊ฐœ ์นดํ…Œ๊ณ ๋ฆฌ ร— ์–‘๋ฐฉํ–ฅ)
| ๋ชจ๋ธ | BLEU | chrF++ |
|---|---:|---:|
| Kanana 1.5 2.1B base (๋ฒ ์ด์Šค) | 13.78 | 38.11 |
| **+ LoRA (988K, 1 epoch)** | **32.04** | **57.26** |
| ฮ” | **+18.26** | **+19.15** |
### ์ž๋งค Gemma ๋ชจ๋ธ๊ณผ์˜ ๋น„๊ต (๋™์ผ ๋ฐ์ดํ„ฐยท๋™์ผ ํ‰๊ฐ€)
| ๋ชจ๋ธ | ๋ฒ ์ด์Šค BLEU | ๋ฒ ์ด์Šค chrF++ | Post-SFT BLEU | Post-SFT chrF++ |
|---|---:|---:|---:|---:|
| Gemma 3 1B-IT + LoRA | 1.88 | 23.07 | 25.13 | 49.64 |
| **Kanana 1.5 2.1B base + LoRA** | **13.78** | **38.11** | **32.04** | **57.26** |
| ์ฐจ์ด | +11.90 | +15.04 | **+6.91** | **+7.62** |
- Kanana base์˜ ์ถœ๋ฐœ์„ (13.78 BLEU)์ด Gemma-IT ๋ฒ ์ด์Šค(1.88)๋ณด๋‹ค ์›”๋“ฑํžˆ ๋†’์Œ โ€” ์นด์นด์˜ค์˜ ํ•œ๊ตญ์–ด ์‚ฌ์ „ํ•™์Šต ์šฐ์œ„
- Post-SFT ์ ˆ๋Œ€ ์ ์ˆ˜๋„ Kanana ์šฐ์œ„ (+6.91 BLEU, +7.62 chrF++)
- SFT ๊ฒŒ์ธ(ฮ”)์€ ์ถœ๋ฐœ์„ ์ด ๋‚ฎ์•˜๋˜ Gemma๊ฐ€ ๋” ํผ โ€” ๋ฒ ์ด์Šค ์ž์ฒด์˜ ํ•œ๊ตญ์–ด ๋Šฅ๋ ฅ ์ฐจ์ด๊ฐ€ ๋ฐ˜์˜๋จ
---
## ํŒŒ์ผ ๋ชฉ๋ก
| ํŒŒ์ผ | ํฌ๊ธฐ | ํ˜•์‹ |
|---|---:|---|
| `adapter_model.safetensors` | 184 MB | PEFT LoRA ๊ฐ€์ค‘์น˜ |
| `adapter_config.json` | 1.4 KB | PEFT ์„ค์ • (r=32, ฮฑ=64, target_modules) |
| `tokenizer.json` | 17 MB | Kanana ํ† ํฌ๋‚˜์ด์ € (LFS) |
| `tokenizer_config.json` / `special_tokens_map.json` / `chat_template.jinja` | ~70 KB | ํ† ํฌ๋‚˜์ด์ € ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ |
| `eval_result.json` | < 1 KB | 200์Œ BLEU/chrF ๊ฒฐ๊ณผ |
---
## ์‚ฌ์šฉ๋ฒ•
### ์ž…๋ ฅ ํฌ๋งท (์ค‘์š”)
๋ณธ ์–ด๋Œ‘ํ„ฐ๋Š” **base ๋ชจ๋ธ** ์œ„์— ํ•™์Šต๋˜์—ˆ์œผ๋ฏ€๋กœ chat template์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  raw Instruction/Response ํฌ๋งท์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:
```
### Instruction:
{์ง€์‹œ๋ฌธ}
### Input:
{์ž…๋ ฅ ๋ฌธ์žฅ โ€” ์˜ต์…˜}
### Response:
{์ถœ๋ ฅ}
```
### PyTorch + PEFT
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch
base = AutoModelForCausalLM.from_pretrained(
"kakaocorp/kanana-1.5-2.1b-base",
torch_dtype=torch.bfloat16,
device_map="auto",
)
model = PeftModel.from_pretrained(base, "harveykim/kanana-1.5-2.1b-aihub-ko-en-lora")
tok = AutoTokenizer.from_pretrained("harveykim/kanana-1.5-2.1b-aihub-ko-en-lora")
prompt = (
"### Instruction:\n๋‹ค์Œ ํ•œ๊ตญ์–ด ๋ฌธ์žฅ์„ ์˜์–ด๋กœ ๋ฒˆ์—ญํ•˜์„ธ์š”.\n\n"
"### Input:\n์˜ค๋Š˜ ์ ์‹ฌ์€ ๊น€์น˜์ฐŒ๊ฐœ ์–ด๋•Œ์š”?\n\n"
"### Response:\n"
)
inputs = tok(prompt, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=128, do_sample=False)
print(tok.decode(out[0][inputs.input_ids.shape[1]:], skip_special_tokens=True))
# โ†’ "How about kimchi stew for lunch today?"
```
### Unsloth (ํ•™์Šตยทํ‰๊ฐ€์— ๊ถŒ์žฅ, ๋” ๋น ๋ฆ„)
```python
from unsloth import FastModel
model, tok = FastModel.from_pretrained(
model_name="harveykim/kanana-1.5-2.1b-aihub-ko-en-lora",
max_seq_length=1024,
load_in_4bit=True,
)
```
---
## ํ•™์Šต ์ •๋ณด
| ํ•ญ๋ชฉ | ๊ฐ’ |
|---|---|
| ํ”„๋ ˆ์ž„์›Œํฌ | Unsloth + PEFT 0.19.1 + TRL 0.19.1 |
| ์ •๋ฐ€๋„ | bfloat16 (Unsloth 4-bit ๋ฒ ์ด์Šค) |
| ๋ฐฐ์น˜ | device๋‹น 16 ร— grad-accum 2 (effective 32) |
| ์‹œํ€€์Šค ๊ธธ์ด | 1,024 |
| ์˜ตํ‹ฐ๋งˆ์ด์ € | AdamW 8-bit |
| ํ•™์Šต๋ฅ  / ์Šค์ผ€์ค„ | 7e-5, cosine, 2% warmup |
| Weight decay | 0.01 |
| ์Šคํ… ์ˆ˜ | 30,876 (988K / 32, 1 epoch) |
| ์ด ํ•™์Šต ์‹œ๊ฐ„ | 5.88 ์‹œ๊ฐ„ (RTX 3090) |
| Train loss (์ตœ์ข…) | 1.377 |
| Eval loss | 1.413 โ†’ 1.299 (15ํšŒ ํ‰๊ฐ€, ๋‹จ์กฐ ๊ฐ์†Œ, ๊ณผ์ ํ•ฉ ์—†์Œ) |
| Seed | 42 |
์ „์ฒด ํ•™์Šต ์Šคํฌ๋ฆฝํŠธ: [`training/train_kanana.py`](https://github.com/DeepMav/on-device-translation/blob/main/training/train_kanana.py)
4๋‹จ๊ณ„ ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ: [`training/run_pipeline_kanana.sh`](https://github.com/DeepMav/on-device-translation/blob/main/training/run_pipeline_kanana.sh)
Gemma์™€์˜ ์ƒ์„ธ ๋น„๊ต ๋ฆฌํฌํŠธ: [`docs/COMPARISON_REPORT.md`](https://github.com/DeepMav/on-device-translation/blob/main/docs/COMPARISON_REPORT.md)
> Gemma ๋ชจ๋ธ ๋Œ€๋น„ LR์„ 7e-5๋กœ ๋ณด์ˆ˜์ ์œผ๋กœ ์„ค์ •ํ•œ ์ด์œ : Kanana 2.1B base๋Š” **instruct-tuned๊ฐ€ ์•„๋‹Œ raw base** ๋ชจ๋ธ์ด๋ผ, ๊ฐ•ํ•œ LR์ด ์‚ฌ์ „ํ•™์Šต๋œ ํ•œ๊ตญ์–ด ํ‘œํ˜„ ๋Šฅ๋ ฅ์„ ์†์ƒ์‹œํ‚ฌ ์œ„ํ—˜์ด ๋” ํฝ๋‹ˆ๋‹ค.
---
## ํ•œ๊ณ„์ 
- **๋„๋ฉ”์ธ ๋ถ„ํฌ ํŽธํ–ฅ** โ€” AI Hub #126 ๋ถ„ํฌ (๋Œ€ํ™”์ฒดยท๊ตฌ์–ด์ฒด ์ค‘์‹ฌ)์— ๋งž์ถฐ์ ธ ์žˆ์–ด ์‹œยท๋ฌธํ•™ยท์ „๋ฌธ ๋ถ„์•ผ๋Š” ๋ณด์žฅ ์—†์Œ
- **1 epoch ๋‹จ๋ฐฉํ–ฅ ํ•™์Šต** โ€” Eval loss๊ฐ€ ๋‹จ์กฐ ๊ฐ์†Œ ์ค‘์ด๋ฉฐ plateau ๋ฏธ๋„๋‹ฌ. ์ถ”๊ฐ€ ํ•™์Šต ์—ฌ์ง€ ์žˆ์Œ
- **Base ๋ชจ๋ธ ์ถœ๋ ฅ ํ˜•์‹ ์˜์กด** โ€” Instruction/Response ํฌ๋งท์„ ์ •ํ™•ํžˆ ๋”ฐ๋ฅด์ง€ ์•Š์œผ๋ฉด ํ’ˆ์งˆ ์ €ํ•˜
---
## ๋ผ์ด์„ ์Šค
- **์–ด๋Œ‘ํ„ฐ ๊ฐ€์ค‘์น˜ (์ด ๋ ˆํฌ)** โ€” **CC BY-NC 4.0** (๋น„์˜๋ฆฌยท์—ฐ๊ตฌ ๋ชฉ์ ). ์ถœ์ฒ˜ ํ‘œ๊ธฐ ์‹œ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
- **๋ฒ ์ด์Šค ๋ชจ๋ธ** โ€” Apache 2.0 ([`kakaocorp/kanana-1.5-2.1b-base`](https://huggingface.co/kakaocorp/kanana-1.5-2.1b-base))
- **๋ฐ์ดํ„ฐ์…‹** โ€” AI Hub #126์€ NIA(ํ•œ๊ตญ์ง€๋Šฅ์ •๋ณด์‚ฌํšŒ์ง„ํฅ์›)๊ฐ€ ์—ฐ๊ตฌ ๋ชฉ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋ฉฐ ์žฌ๋ฐฐํฌ ๊ธˆ์ง€. ์›๋ณธ ๋ฐ์ดํ„ฐ๋Š” ๋ณธ ๋ ˆํฌ์— ํฌํ•จ๋˜์ง€ ์•Š์Œ
### ์ƒ์šฉ ์‚ฌ์šฉ์„ ์›ํ•œ๋‹ค๋ฉด
๋ฒ ์ด์Šค ๋ชจ๋ธ ์ž์ฒด๋Š” Apache 2.0์ด๋ฏ€๋กœ, ๋ณธ์ธ ๋ฐ์ดํ„ฐ๋กœ ๋ณ„๋„ LoRA๋ฅผ ์žฌํ•™์Šตํ•˜๋ฉด ์ƒ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. AI Hub #126 ํ•™์Šต ๊ฒฐ๊ณผ๋ฌผ์ธ ์ด ์–ด๋Œ‘ํ„ฐ๋Š” ๋น„์˜๋ฆฌ ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
---
## ์ธ์šฉ
```bibtex
@misc{kanana_aihub_ko_en_lora_2026,
title = {kanana-1.5-2.1b-aihub-ko-en-lora: Korean-English Translation LoRA for Kanana 1.5},
author = {Kim, Harvey},
year = {2026},
url = {https://huggingface.co/harveykim/kanana-1.5-2.1b-aihub-ko-en-lora}
}
```
## ๊ฐ์‚ฌ์˜ ๊ธ€
- ๋ฒ ์ด์Šค ๋ชจ๋ธ: [Kanana 1.5 2.1B base](https://huggingface.co/kakaocorp/kanana-1.5-2.1b-base) โ€” ์นด์นด์˜ค (Apache 2.0)
- ํ•™์Šต ํ”„๋ ˆ์ž„์›Œํฌ: [Unsloth](https://github.com/unslothai/unsloth)
- ๋ฐ์ดํ„ฐ์…‹: [AI Hub #126 ํ•œ๊ตญ์–ด-์˜์–ด ๋ฒˆ์—ญ(๋ณ‘๋ ฌ) ๋ง๋ญ‰์น˜](https://www.aihub.or.kr/aihubdata/data/view.do?dataSetSn=126) โ€” ์—ฐ๊ตฌ ๋ชฉ์  ํ•œ์ •, ์›๋ณธ ๋ฐ์ดํ„ฐ๋Š” ๋ณธ ๋ ˆํฌ์— ๋ฏธํฌํ•จ
๋ณธ ๋ชจ๋ธ์€ ๊ณผํ•™๊ธฐ์ˆ ์ •๋ณดํ†ต์‹ ๋ถ€์˜ ์žฌ์›์œผ๋กœ ํ•œ๊ตญ์ง€๋Šฅ์ •๋ณด์‚ฌํšŒ์ง„ํฅ์›์˜ ์ง€์›์„ ๋ฐ›์•„ ๊ตฌ์ถ•๋œ "ํ•œ๊ตญ์–ด-์˜์–ด ๋ฒˆ์—ญ(๋ณ‘๋ ฌ) ๋ง๋ญ‰์น˜"(AI Hub, ๋ฐ์ดํ„ฐ์…‹ ๋ฒˆํ˜ธ 126)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ•™์Šต๋˜์—ˆ์Šต๋‹ˆ๋‹ค.