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