πΉ HamsterLM
HamsterLMμ νμ€ν° μΊλ¦ν°λ‘ λννλ μμ νκ΅μ΄ μΈμ΄ λͺ¨λΈμ λλ€. λΈλΌμ°μ μμ μ§μ μ€νν μ μλλ‘ ONNXλ‘ λ³νλμ΄ μμΌλ©°, κ΅μ‘ λͺ©μ μΌλ‘ μ²μλΆν° νμ΅λμμ΅λλ€.
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 μμ μ§μ μ¬μ©ν΄ λ³Ό μ μμ΅λλ€. λͺ¨λ μΆλ‘ μ΄ λΈλΌμ°μ μμ WASMμΌλ‘ μ€νλλ©° μλ²λ μ¬μ©νμ§ μμ΅λλ€.
μΆλ‘ μμ
ν둬ννΈλ λ€μ ChatML νμμ λ°λΌμΌ ν©λλ€:
<|im_start|>user
{user_message}<|im_end|>
<|im_start|>assistant
λΈλΌμ°μ /Node.jsμμμ μ 체 μΆλ‘ μ½λλ GitHub λ ν¬μ
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
- μμ€ μ½λ: github.com/kciter/HamsterLM
- μκ°μ μ€ νλ‘μ νΈ: GuppyLM
λΌμ΄μ μ€
MIT License