업데이트: 소형 모델 + Engram
Update : Small model + Engram
핵심 요약
9b 모델에서 2b 모델로 전환하여 Apache 2.0 라이선스를 적용한 소형 모델 및 Engram 학습 진행 상황 공유.
- 모델 전환 — 9b Llama 대신 2b OLMo 기반 모델로 변경하여 라이선스 문제 해결
- Engram 활용 — 2b 모델과 1b Engram 테이블을 결합하여 효율적인 학습 시도
- 학습 성과 — 1500만 토큰 학습만으로도 반복 현상 없이 일관성 있는 결과 확인
- 하드웨어 요구 — 24GB VRAM에서 학습 가능하며 향후 코드 및 데이터 공개 예정
며칠 전에 9b 모델 관련해서 글 하나 올렸었지.
진짜 문제는 두 가지였어. 누군가 모델 사이즈가 너무 커서 검증하기 힘들 거라는 의견을 냈는데, 일리 있는 말이야. 그래도 난 모델 깊이가 필요했거든. 두 번째 문제는 이 모델들의 "능력"이랑 돈 많은 연구소들이 여전히 이런 모델들을 찍어내고 있다는 사실이야. 내 생각엔 별로 쓸모가 없어. 2b 모델? 이건 좀 흥미로울지도. 챗봇 만들고 싶다고? 그럼 이게 답이 될 수도 있겠지.
게다가 모델 핵심에 박혀 있는 Llama 라이선스가 진짜 골칫덩이라 그냥 갖다 버려야 했어. 제약이 너무 심해서 Apache 2.0으로 뭘 할 수가 없더라고.
그래서 OLMo 토크나이저를 쓰기로 바꿨어. 대신 d_model을 2048로 줄여서 아주 작은 2b 모델을 만들 수 있게 했지.
1/2/3 gram을 포함한 보캐불러리(vocab) 사이즈 때문에 Engram 테이블이 꽉 차서 1b가 돼버려. DS가 제안했던 10~20% 수준이 아니라 50%를 차지하는 셈이지.
결론적으로 2b 모델 + 1b Engram 조합이야.
이 모델은 d_model을 2048로 줄이면서 깊이를 확보했기 때문에, 덴스 모델에서 어텐션 기반 레지듀얼 스트림(Moonshot Kimi K3 스타일)을 활용하려고 총 40개의 SWA/Global 블록을 때려 박을 수 있게 됐어.
데이터는 초기 학습 때 표준 위키 스타일 데이터 소스에서 가져왔어. 이 데이터를 7b OLMo 모델에 통과시켜서 확률값을 생성하는 방식이야. 이렇게 하면 모델한테 다음 토큰이 32개 토큰 중 하나일 확률을 알려주는 꼴이 되지.
진짜 놀라운 건 결과였어. 토큰 1,500만 개만 학습했는데도 모델이 놀라울 정도로 말이 돼. 만약 그냥 1-hot 크로스 엔트로피를 썼다면 1,500만 토큰으로는 아무것도 안 됐을 거야. 그냥 헛소리만 늘어놨겠지. 하지만 난 임베딩을 빌려왔고, LM_head는 5k에서 2048 d_model로 다운 프로젝션했어. 스펙트럼 분석을 해보니까 "큰" 모델이 가지고 있던 데이터의 약 65%가 임베딩에 그대로 남아있더라고.
학습량이 1,500만 토큰으로 제한적이라 로마 전쟁사 같은, 그 토큰 데이터셋에 있는 내용만 옹알거리는 수준이야. 그래도 초기 모델들처럼 똑같은 토큰을 계속 반복하는 꼴은 안 보여. 보통 1,500만 토큰으로 사전 학습하면 처음엔 다들 그렇게 되거든.
어쨌든, 이 짓거리에 관심 있는 사람들을 위한 업데이트 겸 진행 상황 보고였어... 지금 HuggingFace에서 위키피디아 청크 전부 처리하면서 학습 돌리는 중이야. 시간 좀 걸릴 거야.
여기까지 읽어줬으면 고맙다. 질문 있으면 언제든 답해줄게. 예전에 누가 나보고 머신러닝도 모르는 미친놈이라고 하던데, 나 머신러닝 시작한 지 20년 넘었고 Anthropic에서 "Constitutional" 논문 나오기 전에 Opus 4 모델 레드팀 작업도 6개월 정도 했었어. 논문에 "red teamer"로 대충 언급된 것 같기도 하고. 그냥 이게 좋아서 하는 거야.
Apache 2.0 모델을 만들면 사람들이 가지고 놀 수 있게는 해주고 싶었거든. 24GB VRAM에서 100% 학습 가능한 것 같아. 학습 코드랑 모델, 데이터는 나중에 올릴게. 지금은 HF랑 Github에 올려뒀어.
예전 글은 여기 있어 :

