File size: 3,872 Bytes
0589609 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | ---
language:
- ko
license: mit
tags:
- hamster
- korean
- small-language-model
- educational
- onnx
- chatml
library_name: onnx
---
# πΉ HamsterLM
HamsterLMμ **νμ€ν° μΊλ¦ν°λ‘ λννλ μμ νκ΅μ΄ μΈμ΄ λͺ¨λΈ**μ
λλ€.
λΈλΌμ°μ μμ μ§μ μ€νν μ μλλ‘ ONNXλ‘ λ³νλμ΄ μμΌλ©°, κ΅μ‘ λͺ©μ μΌλ‘ μ²μλΆν° νμ΅λμμ΅λλ€.
[arman-bd/guppylm](https://github.com/arman-bd/guppylm)μμ μκ°μ λ°μ μ μλμμ΅λλ€.
## λͺ¨λΈ μ 보
| νλͺ© | κ° |
|------|------|
| νλΌλ―Έν° | ~100M |
| μν€ν
μ² | Transformer λμ½λ (RMSNorm + SwiGLU + RoPE) |
| μλ² λ© μ°¨μ | 768 |
| λ μ΄μ΄ μ | 12 |
| μ΄ν
μ
ν€λ | 12 |
| μ΅λ μνμ€ κΈΈμ΄ | 128 |
| μ΄ν ν¬κΈ° | 4,096 |
| ν ν¬λμ΄μ | ByteLevel BPE |
| λν ν¬λ§· | ChatML |
| μμν | int8 (Dynamic Quantization) |
## νμ΅ κ³Όμ
### 1λ¨κ³: μ¬μ νμ΅ (Pretrain)
- **λ°μ΄ν°**: νκ΅μ΄ μν€νΌλμ (μ½ 200λ§ μ²ν¬)
- **λͺ©ν**: νκ΅μ΄ λ¬Έλ², μ΄μ, μ‘°μ¬ λ± κΈ°λ³Έ μΈμ΄ ν¨ν΄ νμ΅
- **μ€μ **: 20K iter, batch 32, LR 1e-3 (warmup + cosine decay)
### 2λ¨κ³: SFT (Supervised Fine-Tuning)
- **λ°μ΄ν°**: Claude Haiku APIλ‘ μμ±ν νμ€ν° λν 10,000κ°
- **λͺ©ν**: νμ€ν° μΊλ¦ν°μ λ§ν¬μ λ΅λ³ μ€νμΌ νμ΅
- **μ€μ **: 5K iter, batch 32, LR 3e-4 (val loss κΈ°μ€ best checkpoint μ μ₯)
- **λ°μ΄ν° ꡬμ±**:
- κ³ μ μ§λ¬Έ ν κΈ°λ° 5,000κ°
- AI μμ± λ€μν μ§λ¬Έ 5,000κ°
- 34κ° μΉ΄ν
κ³ λ¦¬ (μΈμ¬, μμ, κ°μ , μ² ν λ±)
## νμΌ
- `hamsterlm.onnx` - int8 μμνλ ONNX λͺ¨λΈ (~90MB)
- `tokenizer.json` - HuggingFace tokenizers νμ
## μ¬μ© λ°©λ²
μ΄ λͺ¨λΈμ `transformers`μ νΈνλμ§ μλ **컀μ€ν
μν€ν
μ²**μ
λλ€.
ONNX Runtimeμ μ§μ μ¬μ©νμ¬ μΆλ‘ ν΄μΌ ν©λλ€.
### λΈλΌμ°μ λ°λͺ¨
[https://kciter.github.io/HamsterLM](https://kciter.github.io/HamsterLM) μμ μ§μ μ¬μ©ν΄ λ³Ό μ μμ΅λλ€.
λͺ¨λ μΆλ‘ μ΄ λΈλΌμ°μ μμ WASMμΌλ‘ μ€νλλ©° μλ²λ μ¬μ©νμ§ μμ΅λλ€.
### μΆλ‘ μμ
ν둬ννΈλ λ€μ ChatML νμμ λ°λΌμΌ ν©λλ€:
```
<|im_start|>user
{user_message}<|im_end|>
<|im_start|>assistant
```
λΈλΌμ°μ /Node.jsμμμ μ 체 μΆλ‘ μ½λλ [GitHub λ ν¬](https://github.com/kciter/HamsterLM)μ
`web/app.js`λ₯Ό μ°Έκ³ νμΈμ. ν ν¬λμ΄μ λ‘λ, μκΈ°νκ· λμ½λ©, top-k μνλ§μ΄ ꡬνλμ΄ μμ΅λλ€.
## λν μμ
```
User: μκΈ°μκ° ν΄λ΄
HamsterLM: λλ νμ€ν°μΌ. ν΄λ°λΌκΈ°μ¨ μμ² μ’μνκ³ λ³Όμ£Όλ¨Έλμ κ°μ λͺ¨μΌλ κ² νΉκΈ°μ§.
User: λ³Όμ£Όλ¨Έλμ λ μμ΄?
HamsterLM: μ§κΈ νΈλ°μ¨ λ κ° λ€μ΄μμ΄. λΉμμ©μ΄λΌ μ λ λͺ» μ€.
User: 무μμ΄ κ² λμΌ?
HamsterLM: μ§κ³΅ μ²μκΈ° μ리. μκ°λ§ ν΄λ κ·κ° λ©μν΄μ Έ.
```
## νκ³μ
- **μμ λͺ¨λΈ**: 100M νλΌλ―Έν°λ‘ νμ΅ λ°μ΄ν° λ²μλ₯Ό ν¬κ² λ²μ΄λλ μ§λ¬Έμ μ λ΅νμ§ λͺ»ν©λλ€
- **μ§§μ 컨ν
μ€νΈ**: μ΅λ 128 ν ν°μ΄λΌ κΈ΄ λνκ° μ΄λ ΅μ΅λλ€
- **λλ©μΈ μ ν**: νμ€ν° κ΄λ ¨ λνλ‘λ§ νμ΅λμ΄ μΌλ°μ μΈ μ§λ¬Έ(μν, κ³Όν λ±)μ λ€λ£¨μ§ μμ΅λλ€
- **μ±κΈν΄ κΆμ₯**: μΉ λ°λͺ¨μμλ μλλ₯Ό μν΄ λ¨μΌ ν΄ λνλ§ μ§μν©λλ€
- **μμν μν₯**: int8 μμνλ‘ μΈν΄ μΌλΆ ννμμ λ―ΈμΈν νμ§ μ νκ° μμ μ μμ΅λλ€
## νμ΅ νκ²½
- GPU: NVIDIA A100 (Colab Pro)
- νμ΅ μκ°: μ¬μ νμ΅ ~50λΆ + SFT ~15λΆ
## κ΄λ ¨ μλ£
- **λ°μ΄ν°μ
**: [kciter/HamsterLM-SFT](https://huggingface.co/datasets/kciter/HamsterLM-SFT)
- **μμ€ μ½λ**: [github.com/kciter/HamsterLM](https://github.com/kciter/HamsterLM)
- **μκ°μ μ€ νλ‘μ νΈ**: [GuppyLM](https://github.com/arman-bd/guppylm)
## λΌμ΄μ μ€
MIT License
|