Tiny Head Research KO - teamswyg/laya-tools GitHub Wiki

์ดˆ์†Œํ˜• ํŒ๋‹จ ๋ชจ๋ธ ์‹คํ—˜ โ€” tinyhead-01

English ยท ์ง„ํ–‰ ์ด์Šˆ #15 ยท ์ƒ์œ„ ํ•™์Šต ์ด์Šˆ #11 ยท ๊ณต๊ฐœ HF ์ปฌ๋ ‰์…˜

๋ชฉ์ ์€ โ€œ์ž‘์—…์„ ์–ด๋А ์ˆ˜์ค€์˜ ๋ชจ๋ธ์— ๋งก๊ธธ๊นŒ?โ€๋ผ๋Š” ์ž‘์€ ๊ฒฐ์ •์„ ๋” ์ ์€ ์ž์›์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธด ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•˜๋Š” LLM์„ ์ƒˆ๋กœ ๋งŒ๋“œ๋Š” ์‹คํ—˜์€ ์•„๋‹™๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ผ์šฐํ„ฐ์˜ ๊ธฐ๋ณธ ๋™์ž‘์€ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ์— ์‹ค์ œ๋กœ ํ•œ ์ผ

v0.2์˜ ๊ณ ์ •๋œ Laya ์ธ์ฝ”๋”์™€ ํŒ๋‹จ ํ—ค๋“œ๋ฅผ ๋ถ€๋ชจ๋กœ ์‚ผ์•˜์Šต๋‹ˆ๋‹ค. LayerNorm์˜ ํ•™์Šต๋œ ๊ณฑ์…ˆยท๋ง์…ˆ์„ ์„ ํ˜• ์ธต์— ํ•ฉ์น˜๊ณ , ๊ทธ ํ—ค๋“œ๋ฅผ FP32 / INT8 / 3์ง„์œผ๋กœ ๋ณ€ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. 3์ง„์€ ๊ฐ€์ค‘์น˜๋ฅผ -1, 0, +1๊ณผ ํ–‰๋ณ„ ๋ฐฐ์œจ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. 0 ์—ฌ๋ถ€๋ฅผ ๋น„ํŠธ๋งต์œผ๋กœ, 0์ด ์•„๋‹Œ ๊ฐ’์˜ ๋ถ€ํ˜ธ๋งŒ ๋ณ„๋„ ๋น„ํŠธ์—ด๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋…ผ๋ฌธ์˜ ์•„์ด๋””์–ด๋ฅผ ์ฐธ๊ณ ํ•œ ๋…๋ฆฝ Go ๊ตฌํ˜„์ด๋ฉฐ, ๋…ผ๋ฌธ์˜ x86/GPU ์ปค๋„์ด๋‚˜ ํŒŒ์ผ ํ˜•์‹๊ณผ ํ˜ธํ™˜๋œ๋‹ค๋Š” ๋œป์€ ์•„๋‹™๋‹ˆ๋‹ค.

  • Python ์œ ์ง€: ์›๋ž˜ PyTorch ๋ชจ๋ธ์„ ๋ถˆ๋Ÿฌ์™€ MPS์—์„œ ๊ณต๊ฐœ ํ•ฉ์„ฑ ๋ฌธ์žฅ์˜ ํŠน์ง•์„ ํ•œ ๋ฒˆ ์ถ”์ถœํ•˜๋Š” ๋ณ€ํ™˜ ๋„๊ตฌ.
  • Go๋กœ ๊ตฌํ˜„: ํ—ค๋“œ ์‹คํ–‰, ์••์ถ•, ๊ฒ€์ฆ ์†์‹ค์— ๋”ฐ๋ฅธ ํ›„๋ณด ์„ ํƒ, ์ •ํ™•๋„ยท์‹ ๋ขฐ๋„ ์ง€ํ‘œ, ๋ฐ˜๋ณต ์ธก์ •, ๋ชจ๋ธ ํŒŒ์ผ ๊ฒ€์ฆ, ๊ณต๊ฐœ ํŒจํ‚ค์ง€ยทCI ํ™•์ธ.
  • ํ•™์Šต๋œ ์›๋ณธ ํ—ค๋“œ๋ฅผ ์‚ฌํ›„ ์–‘์žํ™”ํ•œ ์‹คํ—˜์ž…๋‹ˆ๋‹ค. ์ธ์ฝ”๋” ์žฌํ•™์Šต์ด๋‚˜ ternary QAT๋Š” ์•„์ง ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • ํŒ๋‹จ ๊ฒฐ๊ณผ๋Š” fast / standard / strong์˜ ํ™•๋ฅ  ์„ธ ๊ฐœ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ์ฝ”๋“œ ์ž‘์—…์ด๋‚˜ ๋ชจ๋ธ ์ „ํ™˜์„ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Python์„ Go๋กœ ๋ฐ”๊พผ๋‹ค๊ณ  MPS ์ปค๋„ ์ž์ฒด๊ฐ€ ๋นจ๋ผ์ง€์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ „ํ™˜์€ Python ์—†์ด ํ—ค๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋ฐ˜๋ณต ์‹คํ—˜์„ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ฐ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธก์ • ๊ฒฐ๊ณผ์™€ ํ•ด์„

์ „์ฒด ๊ฒฐ๊ณผ, ์‚ฌ์ „ ๊ณ„ํš, ์ธก์ • ๋ฒ”์œ„. Apple M4 Pro / Go 1.27.1. ์•„๋ž˜๋Š” ์ธ์ฝ”๋” ํŠน์ง•์ด ์ด๋ฏธ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ์„ ๋•Œ ํ—ค๋“œ๋งŒ 100,000ํšŒ ์‹คํ–‰ํ•œ ๋‹จ์ผ ์‹คํ–‰ ํ‰๊ท ์ž…๋‹ˆ๋‹ค. ์†๋„ ์šฐ์—ด์— ํ†ต๊ณ„์  ์œ ์˜์„ฑ์„ ์ฃผ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ˜•ํƒœ ํŒŒ์ผ ํฌ๊ธฐ ํ—ค๋“œ ์‹œ๊ฐ„ ํŒ๋‹จ ๋ณ€๊ฒฝ / 264๊ฑด ์••์ถ• ๊ธฐ์ค€
์›๋ž˜ v0.2 safetensors 20,772 B ์ด๋ฒˆ ๋น„๊ต ๋Œ€์ƒ ์•„๋‹˜ ๊ธฐ์ค€ ๋ถ€๋ชจ
ํ•ฉ์นœ FP32 12,332 B 4.26 ยตs 0 ํ†ต๊ณผ
ํ–‰๋ณ„ INT8 3,116 B 4.21 ยตs 0 ํ†ต๊ณผ
3์ง„, ์ž„๊ณ„๊ฐ’ 0.5 660 B 5.91 ยตs 0 ํ†ต๊ณผ
3์ง„, ์ž„๊ณ„๊ฐ’ 0.7 616 B 5.84 ยตs 1 ํƒˆ๋ฝ
3์ง„, ์ž„๊ณ„๊ฐ’ 1.0 571 B 5.14 ยตs 1 ํƒˆ๋ฝ
3์ง„, ์ž„๊ณ„๊ฐ’ 1.3 533 B 4.76 ยตs 1 ํƒˆ๋ฝ

๋ชจ๋‘ ํ˜ธ์ถœ๋‹น ํ• ๋‹น 0ํšŒ์ž…๋‹ˆ๋‹ค. 660B ํ›„๋ณด๋Š” ๋ถ€๋ชจ ํ—ค๋“œ๋ณด๋‹ค ์•ฝ 96.8% ์ž‘์ง€๋งŒ FP32๋ณด๋‹ค ๋А๋ฆฝ๋‹ˆ๋‹ค. ๋น„ํŠธ๋ฅผ ํ‘ธ๋Š” ๋น„์šฉ ๋•Œ๋ฌธ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฉฐ, ์ด๋ฒˆ ํ”„๋กœํŒŒ์ผ๋งŒ์œผ๋กœ CPU ๋ช…๋ น๋ณ„ ์›์ธ์„ ํ™•์ •ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. SIMD ๊ตฌํ˜„์€ ์•„์ง ์—†์Šต๋‹ˆ๋‹ค.

๊ฒ€์ฆ 36๊ฑด์˜ NLL๋งŒ์œผ๋กœ 0.5 ํ›„๋ณด๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. train 180 / validation 36 / calibration 24 / ์ด์ „ test 24๋Š” ๋ชจ๋‘ ์ด๋ฏธ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํ™•์ธํ–ˆ๋˜ ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ์žฌ์‚ฌ์šฉ test๋ฅผ ์ƒˆ๋กœ์šด ๋…๋ฆฝ ๊ฒ€์ฆ์ด๋ผ๊ณ  ๋ถ€๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ†ต๊ณผ๋Š” ์ด ๋ฒ”์œ„์˜ ์••์ถ• ํšŒ๊ท€ ๊ธฐ์ค€ ํ†ต๊ณผ์ด๋ฉฐ ์‹ค์ „ ์„ฑ๊ณต๋ฅ ยทํ† ํฐ ์ ˆ์•ฝยทํ•œ๊ตญ์–ดยท์ƒˆ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์ฆ๋ช…์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ธฐ์กด confidence 0.9๋ฅผ ์œ ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ•ํ•œ ๋ชจ๋ธ์ด ํ•„์š”ํ•œ ์ผ์„ fast๋กœ ๋ณด๋‚ธ ์ƒˆ ์˜ค๋ฅ˜๋Š” 0๊ฑด์ž…๋‹ˆ๋‹ค. ํ™•๋ฅ ์€ ๋‹ฌ๋ผ์กŒ์œผ๋ฏ€๋กœ ๋” ๋„“์€ ๊ฒ€์ฆ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

660B๋งŒ์œผ๋กœ ์ „์ฒด ๋ผ์šฐํ„ฐ๊ฐ€ ๋Œ์•„๊ฐ€์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์›๋ž˜ Laya ์ธ์ฝ”๋”์™€ ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ์—ฌ์ „ํžˆ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ง• ์ถ”์ถœ ๊ณผ์ •์˜ ์ตœ๋Œ€ RSS๋Š” ์•ฝ 2.60 GiB์˜€์Šต๋‹ˆ๋‹ค. ํ—ค๋“œ ๋น„๊ต ํ”„๋กœ์„ธ์Šค์˜ RSS์—๋Š” JSON ํŠน์ง•์…‹ยทGo ๋Ÿฐํƒ€์ž„ยทํ”„๋กœํŒŒ์ผ๋Ÿฌ๊นŒ์ง€ ํฌํ•จ๋˜๋ฉฐ, ์ „์ฒด Laya ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. MPS ๋“œ๋ผ์ด๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ์™€ RSS๋Š” ์ค‘๋ณต๋  ์ˆ˜ ์žˆ์–ด ๋”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

3์ง„ ํ›„๋ณด์˜ 0 ๋น„์œจ์€ ์•ฝ 39.7%์ด๊ณ , ๋ถ€ํ˜ธยท๋น„ํŠธ๋งต์€ 616B, ํ—ค๋”ยท๋ฐฐ์œจยทํŽธํ–ฅ์€ 44B์ž…๋‹ˆ๋‹ค. ๊ธฐํ˜ธ๋งŒ ์•ฝ 1.604 bit/weight๋กœ 1.58๋ณด๋‹ค ๋‚ฎ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฐ์† 5-trit ํฌ์žฅ์€ 615B๋กœ ์˜คํžˆ๋ ค 1B ์ž‘๊ณ , 128๊ฐœ ๋ธ”๋ก๋งˆ๋‹ค ํŒจ๋”ฉํ•˜๋Š” 5-trit ํฌ์žฅ์€ 624B์ž…๋‹ˆ๋‹ค. ๋” ํฌ์†Œํ•œ ํƒˆ๋ฝ ํ›„๋ณด๊ฐ€ ์ž‘๋‹ค๋Š” ์ด์œ ๋งŒ์œผ๋กœ ์„ฑ๋Šฅ ๊ธฐ์ค€์„ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์žฌํ˜„๊ณผ ์‚ฌ์šฉ

์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋Š” ๊ธฐ์กด riidolaya๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ์—ฐ๊ตฌ์ž์šฉ ๋ณ„๋„ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋กœ์ปฌ ์—ฐ์‚ฐ์—๋Š” HF ์—ฐ๊ฒฐ์ด ํ•„์š” ์—†๊ณ , ์ด๋ฏธ ๋ฐ›์€ ๋ชจ๋ธยทํŠน์ง•์„ ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

# ์ตœ์ดˆ ํŠน์ง• ์ถ”์ถœ๋งŒ ๊ธฐ์กด maintainer PyTorch/MPS ํ™˜๊ฒฝ ํ•„์š”
.cache/mps-training-venv/bin/python scripts/training/export_tiny_features.py \
  --base .cache/training/base \
  --package .cache/training/pdca-06-package-v0.2 \
  --out .cache/tinyhead/features.json

# ์ดํ›„ Go๋งŒ์œผ๋กœ ์••์ถ•ยทํ‰๊ฐ€. out์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์—ฌ์•ผ ํ•จ
go run ./cmd/riido-tinybench \
  --features .cache/tinyhead/features.json \
  --out .cache/tinyhead/my-run --iterations 100000

# ๊ณต๊ฐœ ํ›„๋ณด ํŒจํ‚ค์ง€ ๊ตฌ์กฐยทSHAยท๋ถ€๋ชจยท๋ผ์ด์„ ์Šคยท๊ฒฐ๊ณผ ์—ฐ๊ฒฐ ํ™•์ธ
# ๊ณต๊ฐœ ์ง์ „์—๋Š” ๋ฐ˜๋“œ์‹œ --require-ci ์‚ฌ์šฉ
go run ./cmd/riido-hubcheck --package .cache/tinyhead/package --require-ci

go test -race ./internal/tinyhead ./internal/researchbundle
go test ./internal/tinyhead -run '^$' -bench BenchmarkPredict -benchmem

ํŠน์ง• ์บ์‹œ๋Š” ํ† ํฌ๋‚˜์ด์ €ยท์ธ์ฝ”๋” ๋ฆฌ๋น„์ „, pooling, ์ž…๋ ฅ ํ•ด์‹œ์™€ ํ•จ๊ป˜ ์‹๋ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์‹คํ—˜์€ ๋ถ€๋ชจ ํ—ค๋“œ์™€ ๋ฐ์ดํ„ฐ SHA๋ฅผ ๊ณ ์ •ํ•œ ๊ณต๊ฐœ์šฉ 264๊ฑด๋งŒ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์›๋ฌธ์ด๋‚˜ ์‚ฌ๋‚ด ์ €์žฅ์†Œ๋ฅผ ์ž๋™ ์ˆ˜์ง‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. --cpuprofile .cache/tinyhead/local.pprof๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ ํ”„๋กœํŒŒ์ผ์€ ๊ณต๊ฐœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ๋น„๊ต ์‹คํ–‰์—์„œ๋Š” ํ”„๋กœํŒŒ์ผ๋Ÿฌ๋ฅผ ๋•๋‹ˆ๋‹ค.

RDTINY01์€ ์‹คํ—˜์šฉ ํฌ๋งท์ž…๋‹ˆ๋‹ค. little-endian 44B ํ—ค๋”๋Š” magic 8B, width 4B, kind 4B, temperature FP32, bias 3ร—FP32, scale 3ร—FP32์ž…๋‹ˆ๋‹ค. payload๋Š” ํ–‰ ์šฐ์„  3ร—width ๊ฐ€์ค‘์น˜์ž…๋‹ˆ๋‹ค. FP32๋Š” 4B, INT8์€ signed byte, 3์ง„์€ ์—ฐ์† presence bitmap ๋’ค์— nonzero ์ˆœ์„œ์˜ ์–‘์ˆ˜ ๋ถ€ํ˜ธ ๋น„ํŠธ๋ฅผ ๋‘ก๋‹ˆ๋‹ค. padding์€ 0์ž…๋‹ˆ๋‹ค. ์ถ”๋ก ์€ FP64 ๋ˆ„์‚ฐยทLayerNorm epsilon 1e-5ยทstable softmax๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋กœ๋”๋Š” ํฌ๊ธฐยท์œ ํ•œ๊ฐ’ยท๋์˜ ๋ถˆํ•„์š”ํ•œ ๋ฐ”์ดํŠธ๋ฅผ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์•„์ง ๊ณต๊ฐœ ์•ˆ์ • API๋ฅผ ์•ฝ์†ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ—ค๋“œ ๋ชจ๋ธ์€ ์ฝ๊ธฐ ์ „์šฉ์ž…๋‹ˆ๋‹ค. ํ˜ธ์ถœ์ž๋ณ„ scratch ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ž ๊ธˆ์ด ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. ๋œจ๊ฑฐ์šด ๊ฒฝ๋กœ์—๋Š” map์ด ์—†๊ณ , ์„ธ ํด๋ž˜์Šค ๊ฒฐ๊ณผ๋Š” [3]float64, ๊ฐ€์ค‘์น˜๋Š” ์—ฐ์† byte ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ๋ณด๊ณ ์„œยท๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ map์€ ๋А๋ฆฐ ์ค€๋น„ ๋‹จ๊ณ„์—๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํฌ๊ธฐ์˜ ์„ ํ˜• ๋ถ„๋ฅ˜๊ธฐ์— ECS ์ „์ฒด ๊ตฌ์กฐ๋ฅผ ๋„์ž…ํ•  ๊ทผ๊ฑฐ๋Š” ์•„์ง ์—†์Šต๋‹ˆ๋‹ค.

์ž๋ฃŒ ๊ฒ€ํ† ์—์„œ ๋ฐ˜์˜ํ•œ ์ 

์ถœ์ฒ˜ ํ™•์ธ์ผ 2026-09-30, ์ฝ”๋“œ ๋ผ์ด์„ ์Šค์™€ ๋ฆฌ๋น„์ „์€ sources.json. ์ œ3์ž ์ฝ”๋“œยท๊ฐ€์ค‘์น˜ยท๋ฐ์ดํ„ฐ๋ฅผ ์ด๋ฒˆ ๊ตฌํ˜„์— ๋ณต์‚ฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

  • Laya: ํ˜„์žฌ ๋ถ€๋ชจ ๋ชจ๋ธ. ๊ธฐ์กด Apache-2.0 ๊ณ ์ง€์™€ ์›๋ณธ ๋ฆฌ๋น„์ „์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ”์šฉ ์„ ํƒ์ง€ ํ—ค๋“œ์™€ ์šฐ๋ฆฌ์˜ ๊ณ ์ • ๋‚œ์ด๋„ ํ—ค๋“œ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
  • Laya-MLX: Apple Silicon์˜ ๋‹ค์Œ ์ธ์ฝ”๋” ๋น„๊ต ํ›„๋ณด. FP16 ํฌํŠธ์™€ ๊ฒ€์ฆ ์ž๋ฃŒ๋ฅผ ์ฐธ๊ณ ํ•˜๋˜, ๋‹ค๋ฅธ Mac์˜ ์ˆ˜์น˜๋ฅผ ์šฐ๋ฆฌ ์„ฑ๋Šฅ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์‹คํ—˜์€ ๋™์ผ ๋ฌธ์žฅยทpoolingยท์˜จ๋„ยท์ •ํ™•๋„๋กœ MPS์™€ ๋น„๊ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • JEV / TypeSafe: ์ž‘์€ ๊ฒฐ์ •์„ ๋ณ„๋„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ œํ’ˆ ๋ฐฉํ–ฅ์„ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค. API ์ ‘๊ทผ๊ณผ ๋ชจ๋ธยท๋ฐ์ดํ„ฐ ์žฌ๋ฐฐํฌ ๊ถŒ๋ฆฌ๋Š” ๋ณ„๊ฐœ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ์— ์œ ๋ฃŒ ํ˜ธ์ถœยท์‘๋‹ต ํ•™์Šตยท๊ฐ€์ค‘์น˜ ๋ณต์ œ๋ฅผ ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • Gestalt-Lab/jeff: Qwen3-4B ๊ธฐ๋ฐ˜ ์–ด๋Œ‘ํ„ฐ, ์ฝ”๋“œยท์–ด๋Œ‘ํ„ฐ Apache-2.0. calibration๊ณผ ์ •ํ™•๋„๋ฅผ ๋ณ„๋„ ๋ณด๊ณ ํ•˜๋Š” ์ ์„ ์ฑ„ํƒํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Œ ์‚ฌ์–‘ ํ›„๋ณด๋กœ ๋‹ค์šด๋กœ๋“œํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • firelex/jeff: ๋ณ„๊ฐœ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ MIT, ๊ฐ€์ค‘์น˜ Apache-2.0 ํ‘œ๊ธฐ. ํ‰๊ฐ€์…‹๊ณผ ํ•™์Šต์…‹์˜ ์ค‘๋ณต ์ œ๊ฑฐ, ์‹คํŒจ ๊ฒฐ๊ณผ ์œ ์ง€๊ฐ€ ์ฐธ๊ณ ์ ์ž…๋‹ˆ๋‹ค. ํ•™์Šต ์ž๋ฃŒ๋Š” ๋ผ์ด์„ ์Šค๊ฐ€ ์„ž์—ฌ ์žˆ์œผ๋ฏ€๋กœ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • BitNet, b1.58 ๋…ผ๋ฌธ: 3์ง„ ๋ชจ๋ธ๊ณผ ์ „์šฉ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด Laya๋ฅผ ํŒŒ์ผ ํฌ๋งท๋งŒ ๋ฐ”๊ฟ” ๊ฐ™์€ ์„ฑ๋Šฅ์˜ BitNet์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ทผ๊ฑฐ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.
  • BITCOS ๋…ผ๋ฌธ, ์†Œ๊ฐœ ๊ธ€: 0์ด ๋งŽ์€ 3์ง„ ๊ฐ€์ค‘์น˜๋ฅผ ๋น„ํŠธ๋งต๊ณผ ๋ถ€ํ˜ธ๋กœ ๋‚˜๋ˆ„๋Š” ์ €์žฅ ์•„์ด๋””์–ด๋ฅผ ์‹ค์ œ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋…ผ๋ฌธ์˜ Intel ์ปค๋„ ์†๋„๋ฅผ Apple Silicon์— ์ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์œ„์˜ byte ๋น„๊ต์ฒ˜๋Ÿผ ํ˜•์‹ยทํŒจ๋”ฉยท๋ฐฐ์œจ์„ ํฌํ•จํ•ด ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ์žฌ๋ฐฐํฌ ๋ฒ”์œ„ ์ ๊ฒ€์ด๋ฉฐ ์› ๋ชจ๋ธ์˜ ๋ชจ๋“  ์‚ฌ์ „ํ•™์Šต ๋ฐ์ดํ„ฐ ๊ถŒ๋ฆฌ๋ฅผ ๊ฒ€์ฆํ–ˆ๋‹ค๋Š” ๋ณด์žฅ์€ ์•„๋‹™๋‹ˆ๋‹ค. ํ–ฅํ›„ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด ํ•ด๋‹น ๋ฆฌ๋น„์ „์˜ LICENSE/NOTICE๋ฅผ ๋จผ์ € ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ฒฝ๋กœ์™€ ๋ชจ๋ธ ๊ด€๊ณ„

๊ฒฝ๋กœ ๋ถ€๋ชจยท์ž์‹ ๊ด€๊ณ„ ๋ชฉ์  / ๋‹ค์Œ ํ†ต๊ณผ ๊ธฐ์ค€
ํ˜„์žฌ ๊ณ ์ • ํ—ค๋“œ Laya encoder โ†’ v0.2 โ†’ FP32/INT8/3์ง„ ํ˜•์ œ ๊ฐ™์€ ํŠน์ง•ยท๊ฐ™์€ ๋ผ๋ฒจ, ์••์ถ• ์†์‹ค ํ™•์ธ. ๊ธฐ๋ณธ ๋ผ์šฐํ„ฐ ์Šน๊ฒฉ์€ ๋ณ„๋„
3์ง„ QAT v0.2 ํŠน์ง• โ†’ ์ƒˆ๋กœ ํ•™์Šตํ•œ 3์ง„ ํ—ค๋“œ ์ด๋ฒˆ ์‚ฌํ›„ ์••์ถ•๋ณด๋‹ค ๋” ์ž‘์€ ํฌ์†Œ๋„์—์„œ ํšŒ๊ท€ ์ค„์ด๊ธฐ. train๋งŒ ์—…๋ฐ์ดํŠธ, validation๋งŒ ์„ ํƒ, calibration๋งŒ ๋ณด์ •
์ธ์ฝ”๋” ์—†๋Š” ํ•™์ƒ ๊ณต๊ฐœ ์›๋ฌธ โ†’ word/char hash โ†’ ์ž‘์€ ์„ ํ˜• ๋ถ„๋ฅ˜๊ธฐ ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ค„์ด๋Š” ํ•ต์‹ฌ ๊ฐ€์„ค. LLM์œผ๋กœ ๋ถ€๋ฅด์ง€ ์•Š์Œ. Go ํ•™์Šต ๊ฐ€๋Šฅ. ๊ทœ์น™ baseline๊ณผ ๋น„๊ตํ•˜๊ณ  ๋ชจ๋ฅด๋Š” ์ž…๋ ฅ์€ ์œ ๋ณด
์ธ์ฝ”๋” ๊ฒฝ๋Ÿ‰ํ™” ๊ธฐ์กด ์ธ์ฝ”๋” โ†’ INT8 ๋˜๋Š” MLX FP16 ๋น„๊ต ์‹ค์ œ ์ฒ˜์Œ ์‹คํ–‰ยท๋ฐ˜๋ณต ์‹คํ–‰ยทRSS/MPS์™€ ํ’ˆ์งˆ์„ ๊ฐ™์ด ์ธก์ •. ์ง€์› ๊ทธ๋ž˜ํ”„ยท์ •๋ฐ€๋„ ํ™•์ธ ์ „ ์Šน๊ฒฉ ๊ธˆ์ง€

๋‹ค์Œ ์ƒˆ ํ•™์Šต์€ ์„œ๋กœ ๋‹ค๋ฅธ ์ถœ์ฒ˜/์ž‘์—… ๊ณ„์—ด๋กœ ๊ณ ์ •ํ•œ ๋ฏธ์‚ฌ์šฉ final์„ ๋จผ์ € ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: ๋ฌธ์„œ ์ˆ˜์ •, ๋กœ์ปฌ ํ•จ์ˆ˜ ๋ณ€๊ฒฝ, ํ…Œ์ŠคํŠธ ์‹คํŒจ ์กฐ์‚ฌ, API ๊ณ„์•ฝ ๋ณ€๊ฒฝ, ๋™์‹œ์„ฑยท๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ์ž‘์—…. ๋‹จ์–ด ํ•˜๋‚˜๋กœ ๋‚œ์ด๋„๊ฐ€ ๊ฒฐ์ •๋˜์ง€ ์•Š๋„๋ก ๊ฐ™์€ ์–ดํœ˜์˜ ์‰ฌ์šด/์–ด๋ ค์šด ์Œ, ํ•œ๊ตญ์–ดยท์˜์–ด, ์ •๋ณด ๋ถ€์กฑยท๋ฒ”์œ„ ๋ฐ– ์‚ฌ๋ก€๋ฅผ ๋„ฃ์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ expected tier๋Š” ๊ฐ€์„ค์ด๋ฉฐ ์‹ค์ œ ํ…Œ์ŠคํŠธ ํ†ต๊ณผยท์žฌ์‹œ๋„ยท๋น„์šฉ ๊ฒฐ๊ณผ์™€ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์‹ค์ „ ์„ฑ๊ณต ๋ผ๋ฒจ์€ ์•„์ง ํ™•๋ณดํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

ํ•™์ƒ ๋ชจ๋ธ์€ ๊ต์‚ฌ์˜ ํ‹€๋ฆฐ ํŒ๋‹จ๊นŒ์ง€ ๋ฐฐ์šฐ์ง€ ์•Š๊ฒŒ ์›๋ž˜ ์ •๋‹ต๊ณผ ๊ต์‚ฌ ํ™•๋ฅ ์„ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. confidence๋ฅผ ๋ฌด์กฐ๊ฑด ์‹ ๋ขฐํ•˜์ง€ ์•Š๊ณ  accepted precision, coverage, strongโ†’fast ์˜ค๋ฅ˜, ๋ณด์ • ์˜ค์ฐจ, ๋‹ค์ค‘ seed, ์ƒˆ ์ €์žฅ์†Œ ๊ฒฐ๊ณผ๋ฅผ ํ•จ๊ป˜ ๋ด…๋‹ˆ๋‹ค. decompositionยทrepo routing์€ ๋ณ„๋„ ํ˜•์ œ ํ—ค๋“œ๋กœ ๋‘๊ณ  ๋‚œ์ด๋„ ์„ฑ๊ณต์„ ์ „์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์กฐํ•ฉ ์‹คํ—˜์€ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜๋งŒ ์ˆ˜ํ–‰ํ•ด 24GiB Mac์˜ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋ฐœ์—ด์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. โ€œ์„ธ๊ณ„ ์ตœ์ดˆ/์ตœ์ € ์‚ฌ์–‘โ€์€ ๊ฒ€์ฆ๋œ ์ฃผ์žฅ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๊ณต๊ฐœ ์ž‘์—… ๊ณต๊ฐ„

HF ๋ชจ๋ธ ํŒจํ‚ค์ง€๋Š” ์‹คํ—˜ ์ฝ”๋“œ์˜ CI ์„ฑ๊ณต ํ›„ ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค. GitHub์—๋Š” ์ฝ”๋“œยท๊ณ„ํšยท์ž‘์€ ๊ฒฐ๊ณผยทํ•ด์‹œ๋งŒ, HF์—๋Š” 6๊ฐœ ํ—ค๋“œ์™€ ๊ณต๊ฐœ ํ•ฉ์„ฑ ํŠน์ง•ยทํ™•๋ฅ ยท๋ผ์ด์„ ์Šคยทmanifest๋ฅผ ๋‘ก๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ HF ์ปค๋ฐ‹๊ณผ ๊ฒŒ์‹œ ๊ฒ€์ฆ์€ #15์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด v0.1/v0.2๋ฅผ ๋ฎ์–ด์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ ์‹คํ—˜ โ†’ ๊ณต๊ฐœ ํŒŒ์ผ๋งŒ ์ƒˆ staging ํด๋” โ†’ Go ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ โ†’ secret scan โ†’ ์ •ํ™•ํ•œ ์†Œ์Šค ์ปค๋ฐ‹ CI โ†’ HF ๊ฒŒ์‹œ โ†’ ๊ณ ์ • ์ปค๋ฐ‹์œผ๋กœ ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œยท์ „์ˆ˜ ํ•ด์‹œ ๊ฒ€์ฆ ์ˆœ์„œ์ž…๋‹ˆ๋‹ค. ์—…๋กœ๋“œ๋Š” ๋ณ„๋„ ๋‹จ๊ณ„๋ผ ๋„คํŠธ์›Œํฌ ์žฅ์• ๊ฐ€ ํ•™์Šตยทํ‰๊ฐ€๋ฅผ ๋ง‰์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ๊ฒ€์‚ฌ๋Š” ๋ฐ์ดํ„ฐ ๊ถŒ๋ฆฌ ๊ฒ€ํ† ๋ฅผ ๋Œ€์‹ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›์‹œ pprofยทํ† ํฐยท์ ˆ๋Œ€ ๋กœ์ปฌ ๊ฒฝ๋กœยท์‚ฌ๋‚ด ์ด๋ฆ„ยท์‹ค์ œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์€ ์˜ฌ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. HF Space ์„œ๋ฒ„๋‚˜ ์œ ๋ฃŒ GPU๋Š” ๋งŒ๋“ค์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.