직접 개발한 60MB짜리 경량화 LLM, 30B 토큰으로 학습 완료
I developed my own quantized LLM from scratch, trained on 30B tokens, deploys in 60 MB
핵심 요약
250M 파라미터 규모의 경량화 LLM으로, 100M 토큰 규모의 디스크 기반 검색을 통해 긴 문맥을 처리하는 모델을 개발함.
- 경량화 모델 — 250M 파라미터로 60MB 용량에 불과하며 일반 CPU에서 구동됨.
- 디스크 기반 검색 — 100M 토큰의 과거 문맥을 압축하여 디스크에서 검색하는 방식을 채택함.
- 임베딩 최적화 — 131k 토큰을 512비트 고정 코드로 처리하여 학습 파라미터 없이 효율성을 높임.
- 활용 가능성 — 비디오 게임 대화형 AI나 음성 비서의 빠른 응답용으로 적합함.
며칠 전에 r/MachineLearning에 올렸던 거 여기에도 다시 올린다. 생각보다 반응이 훨씬 좋았거든(추천 300개 넘고, 질문도 수준 높고, 까는 댓글 하나도 없었음).
GitHub 별점도 벌써 35개 찍혔다. 그래서 여기에도 공유함.
fineweb 데이터 30B 토큰으로 250M 파라미터 모델을 밑바닥부터 직접 학습시켰다. 2비트 미만으로 양자화해서 전체 배포 용량이 60MB밖에 안 되고, 램은 80MB 정도면 돌아감. 일반 노트북 CPU로도 초당 400토큰씩 뽑아내고, GPU도 필요 없고 프레임워크도 안 씀. 그냥 가벼운 컴파일된 런타임 하나면 끝임(윈도우, 리눅스 지원, MIT 라이선스).
학습 때 한 번도 안 본 영어 웹 텍스트(교육용 웹페이지, 2,048 토큰 윈도우)로 측정한 베이스 모델의 언어 모델링 성능은 이렇다: 토큰당 교차 엔트로피 3.15 nats, 퍼플렉서티 23.3, 바이트당 0.99비트.
긴 문맥 처리 방식은 이럼: 가장 최근 2048 토큰은 일반적인 KV 캐시처럼 fp16으로 유지함. 그보다 오래된 건 전부 1비트로 압축해서 디스크에 쓰는데, 토큰당 320바이트 정도라 100만 토큰 기록이 디스크에서 320MB밖에 안 됨. 처음부터 최대 1억 토큰까지 디스크 캐시에서 불러오도록 학습시켰다. 예산 문제로 그 토큰들을 다 추론하게 만든 건 아니고, 그냥 불러와서 답변하는 용도임.
어휘 사전도 일반적인 임베딩 테이블이 아님. 모든 토큰이 512비트 고정 코드고, 131k 토큰 전체 용량이 8.4MB임. 학습된 파라미터는 0이다. WordSim-353(사람이 매긴 단어 유사도 평가)으로 테스트해 봤는데, 내 테이블은 스피어만 상관계수 0.619가 나왔다. 랜덤 코드는 0.029였음. 테스트 스크립트는 저장소에 다 있다.
출력 결과 몇 개(설정값도 같이 적어놨으니 조작질 안 했다는 거 알 거임, 저장소에서 다 재현 가능함):
“광합성에 대해 두 문장으로 설명해 줘.” (greedy)
Photosynthesis is a process in which plants convert sunlight into chemical energy, which is then used to produce oxygen and other chemicals. This process is called photosynthesis.
“바다에 관한 짧은 시를 써 줘.” (temp 0.25, top-k 30, rep 1.15, seed 2)
The waves had swept over, and they were crashing against each other like rocks on top of one another. The wind was strong but not very gentle as it tried to push them towards their destination without lifting any weight or pulling away from those who stood in front of her with a stiff smile that made the sea look even more majestic than before.
“Grus-189 장치의 시리얼 넘버가 뭐야?” (답변이 디스크 아카이브 5060만 토큰 깊숙이 박혀 있음, 아카이브 모드, k=16)
SN-442976
250M 모델이니까 일반적인 사실관계에서 틀릴 수도 있다는 건 감안해라. 거대 모델들 다 이긴다고 주장하는 거 아님. 파인튜닝도 가능하고, 데모랑 전후 비교 수치까지 싹 다 포함된 키트도 넣어놨다. 파인튜닝용 마스터 가중치도 저장소에 있음:
https://github.com/QLNI/SHADOW-250M-Instruct
https://huggingface.co/NODEMIND/SHADOW-250M

