| --- |
| license: mit |
| language: |
| - ko |
| tags: |
| - fish |
| - character |
| - tiny-llm |
| - text-generation |
| - from-scratch |
| - korean |
| pipeline_tag: text-generation |
| --- |
| |
| <p align="center"> |
| <img src="assets/guppy.png" alt="GuppyLM" width="300"/> |
| </p> |
|
|
| <p align="center"> |
| <a href="https://github.com/xtmono/guppylm"><img src="https://img.shields.io/badge/GitHub-guppylm-181717?logo=github" alt="GitHub"/></a> |
| <a href="https://colab.research.google.com/github/xtmono/guppylm/blob/main/use_guppylm.ipynb"><img src="https://img.shields.io/badge/Open_in-Colab-F9AB00?logo=googlecolab" alt="Colab"/></a> |
| <br/><br/> |
| <a href="https://xtmono.github.io/guppylm/"><img src="https://img.shields.io/badge/Try_in-Browser-64ffda?style=for-the-badge&logo=webassembly&logoColor=white" alt="Browser Demo"/></a> |
| </p> |
|
|
| # GuppyLM โ ~10M ํ๋ผ๋ฏธํฐ ํ๊ตญ์ด ๋ฌผ๊ณ ๊ธฐ ์ฑ ๋ชจ๋ธ |
|
|
| ๊ตฌํผ๋ผ๋ ์ด๋ฆ์ ๋ฌผ๊ณ ๊ธฐ ์ญํ ์ ํ๋ ~10M ํ๋ผ๋ฏธํฐ ํ๊ตญ์ด LLM์
๋๋ค. |
| [arman-bd/guppylm](https://github.com/arman-bd/guppylm) ์๋ฌธ ์๋ณธ์ ํ๊ธํํ์ต๋๋ค. |
|
|
| ## ์์ |
|
|
| ``` |
| ๋> ์๋
๊ตฌํผ |
| ๊ตฌํผ> ์๋
! ๋ฌผ์ด ์ข์. ์ง๊ธ ๋ฐ์ ๊ทผ์ฒ์ ์์ด. |
| |
| ๋> ๋ฐฐ๊ณ ํ? |
| ๊ตฌํผ> ์ ํญ์. ์ง๊ธ ๋ฐ๋ก ์๋ก ์ฌ๋ผ๊ฐ๊ฒ. ๋ค ๋จน์ ๊ฑฐ์ผ. |
| |
| ๋> ์ธ์์ ์๋ฏธ๊ฐ ๋ญ์ผ |
| ๊ตฌํผ> ๋จน์ด. ๋ต์ ํญ์ ๋จน์ด์ผ. |
| |
| ๋> ๋๋ด ํด๋ด |
| ๊ตฌํผ> ๋ฌผ๊ณ ๊ธฐ๊ฐ ์ข์ํ๋ ์
๊ธฐ๊ฐ ๋ญ๊ฒ. ๋ฒ ์ด์ค. ๋ญ ๋ป์ธ์ง ๋ชจ๋ฅด๊ฒ ์ด. |
| |
| ๋> ์ ์ ๊ตฌํผ |
| ๊ตฌํผ> ์ ์ ์. ๊ธฐํฌ ์ซ๋ค๊ฐ ์ด์ ๋ฉ์ถ๊ฒ. ์ ์ ์์กฐ. ์ ์ ๋ฌผ. |
| ``` |
|
|
| ## ์ํคํ
์ฒ |
|
|
| | | | |
| |---|---| |
| | **ํ๋ผ๋ฏธํฐ** | ~10M | |
| | **ํ์
** | ๋ฐ๋๋ผ ํธ๋์คํฌ๋จธ (์ฒ์๋ถํฐ ํ์ต) | |
| | **๋ ์ด์ด** | 6 | |
| | **Hidden dim** | 384 | |
| | **Heads** | 6 | |
| | **FFN** | 1,152 (ReLU) | |
| | **Vocab** | 3,072 (Unigram) | |
| | **์ต๋ ์ํ์ค** | 84 ํ ํฐ | |
| | **์ ๊ทํ** | LayerNorm | |
| | **์์น ์ธ์ฝ๋ฉ** | Learned embeddings | |
| | **LM Head** | Embedding๊ณผ ๊ฐ์ค์น ๊ณต์ | |
|
|
| ## ํ์ต |
|
|
| - **๋ฐ์ดํฐ:** 12๋ง ๊ฑด ํ๊ตญ์ด ํฉ์ฑ ๋ํ (60๊ฐ ์ฃผ์ ) |
| - **์คํ
:** 12,000 |
| - **์ตํฐ๋ง์ด์ :** AdamW (Cosine LR ์ค์ผ์ค) |
| - **์์คํ
ํ๋กฌํํธ ์์** โ ์ฑ๊ฒฉ์ด ๊ฐ์ค์น์ ๋ด์ฅ |
|
|
| ## ์ฌ์ฉ๋ฒ |
|
|
| ```python |
| from inference import GuppyInference |
| |
| engine = GuppyInference('checkpoints/best_model.pt', 'data/tokenizer.json') |
| r = engine.chat_completion([{'role': 'user', 'content': '์๋
๊ตฌํผ'}]) |
| print(r['choices'][0]['message']['content']) |
| # ์๋
! ๋ฌผ์ด ์ข์. ์ง๊ธ ๋ฐ์ ๊ทผ์ฒ์ ์์ด. |
| ``` |
|
|
| ## ๋งํฌ |
|
|
| - **๋ ํฌ:** [github.com/xtmono/guppylm](https://github.com/xtmono/guppylm) |
| - **์๋ณธ:** [github.com/arman-bd/guppylm](https://github.com/arman-bd/guppylm) |
|
|
| ## ๋ผ์ด์ ์ค |
|
|
| MIT |
|
|