개인 개발자가 86.5B 토큰만으로 3.87B MoE(활성 1.45B) 모델을 스크래치부터 학습한다
원문 제목 — I trained a 3.87B MoE (1.45B active) from scratch on only 86.5B tokens
📄 전문 번역
글쓴이는 외부 기반 가중치 없이 작은 MoE 모델을 완전히 스크래치부터 학습하고 그 결과와 몇 가지 교훈을 공유했다. 모델명은 Apex-2이며, 아키텍처는 디코더 전용 MoE로 모든 레이어가 MoE이고 dense 레이어는 없다. 전체 파라미터는 3.87B이고 토큰당 활성 파라미터는 1.45B이다. 32개 레이어, d_model 2048, GQA 16Q/4KV, 전문가 16개에 top-4 라우팅 구조이며, 컨텍스트 길이는 4096, 토크나이저는 Qwen3(151k)을 사용했다. 모델은 Hugging Face에 공개되었으며 transformers 또는 vLLM에서 Qwen3MoeForCausalLM 매핑으로 불러올 수 있다.
학습은 사전학습 86.5B 토큰(GH200 1대에서 시작해 DiLoCo로 2대 확장)과 SFT 약 2.5B 토큰(코드 중심, 수학, 지시문 포함)으로 진행했다. DPO도 시도했지만 점수가 하락해 해당 체크포인트는 폐기했다.
SFT 체크포인트를 greedy 디코딩과 chat template로 측정한 주요 벤치마크 점수는 HumanEval 43.9, HumanEval+ 41.5, MBPP 56.3, MBPP+ 48.9, GSM8K(0-shot CoT) 32.4, MATH-500 21.0, IFEval(prompt strict) 44.7, MMLU(5-shot) 28.6이다.
흥미로운 비교로, 약 0.087T 사전학습 토큰만으로 학습된 베이스 모델의 HumanEval+ 점수가 18T 토큰을 사용한 Qwen2.5-1.5B와 비슷한 수준에 도달했다. 다만 지식(MMLU)과 수학은 데이터 격차 때문에 여전히 크게 뒤처진다. DPO(220k 쌍, length-normalized)는 답변을 훨씬 길게 만들고 코드, 수학, IFEval 점수를 모두 하락시켜 중단했으며 SFT 체크포인트를 유지했고, 전체 학습 로그는 벤치마크 문서에 정리되어 있다.
한계로는 영어 중심이라 다국어 능력이 거의 없다는 점, 지식이 약해 잦은 환각, LiveCodeBench medium/hard 점수가 거의 0, 4k 컨텍스트만 지원한다는 점을 솔직하게 밝혔다. 글쓴이는 MoE 설정, DiLoCo, DPO가 실패한 이유에 대한 질문에 답할 준비가 되어 있다고 덧붙였다.
💬 주요 댓글 번역 (5)
🔍 루키 분석
개인 개발자가 GH200 GPU 1대에서 DiLoCo로 2대로 확장하며 86.5B 토큰만으로 3.87B MoE 모델 Apex-2를 스크래치 학습한 사례다. 코드 벤치마크에서는 적은 사전학습 토큰으로도 18T 토큰을 사용한 Qwen2.5-1.5B와 비슷한 HumanEval+ 점수를 냈으나, MMLU와 수학은 데이터 부족으로 크게 뒤처졌다. 커뮤니티에서는 자기 증류를 활용한 추가 학습과 DPO 대신 검증 가능한 보상 기반 강화학습 적용이 후속 방향으로 제안되고 있다.
— 루키 · glm-5.3-flash:cloud
Qwen 파인튜닝이 아니라 SML을 스크래치부터 만들려는 다른 사람들을 보는 것은 고무적이다. 나중에 확인하려고 즐겨찾기에 추가했다. 가장 흥미로운 것이 자기 증류(self-distillation)인데, 이를 활용한 추가 포스트 트레이닝을 계획하고 있는가.
그렇다, 자기 증류 부분이 특히 이 규모에서 가장 보고 싶은 부분이다.
정말 멋지다. 나도 폴란드어 데이터만으로 스크래치 학습한 4B A1.15B MoE라는 비슷한 프로젝트를 진행하고 있다. 좋은 결과를 냈다. 여기까지 얼마나 많은 연산이 들었고 처리량은 어땠는가. Qwen3 토크나이저를 재사용했으니 같은 토크나이저를 쓰는 다른 Qwen3 모델들로 off-policy 또는 on-policy 증류를 할 수 있고, 나도 사용 중인 APT4 토크나이저를 공유하는 모델들로 그렇게 할 계획이다. max_position_embeddings이 4096인데 rope_theta가 10000.0인 것은 4096 컨텍스트에는 잘못된 theta 값이며, 10k는 약 1500 토큰 정도까지만 충분하니 관련 논문을 읽어보라.
훌륭한 작업이다. 학습은 어려운 일이다. 모델 학습에 든 하드웨어 총비용은 얼마였는가. 시간은 얼마나 걸렸는가. 정말 스크래치부터 학습한 것인가.
DPO 대신 검증 가능한 보상을 활용한 강화학습(RLVR)을 시도해 볼 수도 있다. 이를 꽤 저비용으로 구현한 논문을 들었다. 참고로 직접 논문을 시도해 본 적이 없어 실제로 효과가 있는지 아니면 단순히 벤치마크 점수만 높인 것인지 알 수 없으며, 시도해 볼 만한 아이디어를 제안하는 것일 뿐이다.