865억 토큰만으로 38.7억 파라미터 MoE(활성 14.5억) 모델을 밑바닥부터 학습시켰습니다
I trained a 3.87B MoE (1.45B active) from scratch on only 86.5B tokens
핵심 요약
865억 토큰으로 밑바닥부터 학습한 소형 MoE 모델 'Apex-2'를 공개하고 학습 과정과 결과를 공유했습니다.
- 모델 아키텍처 — 38.7억 파라미터 규모의 Decoder-only MoE 구조로 설계됨
- 학습 효율성 — 865억 토큰만으로 Qwen2.5-1.5B와 대등한 코딩 성능을 달성함
- 실패 사례 — DPO 적용 시 답변 길이는 늘어났으나 코딩 및 수학 성능이 저하됨
- 모델 한계 — 영어 중심 학습으로 다국어 능력 부족 및 지식 부족으로 인한 환각 현상 발생
huggingface.co
원문 사이트로 이동
일단 읽어줘서 고맙다.
외부 베이스 웨이트 하나도 안 쓰고 밑바닥부터 직접 MoE 모델 하나 굴려봤는데, 결과랑 몇 가지 배운 점 공유하려고 글 쓴다.
Apex-2
- 아키텍처: 디코더 전용 MoE, 모든 레이어가 MoE임 (덴스 레이어 없음)
- 사이즈: 전체 파라미터 3.87B, 토큰당 활성 파라미터 1.45B
- 32 레이어, d_model 2048, GQA 16Q/4KV, 16 전문가, top-4
- 컨텍스트: 4096
- 토크나이저: Qwen3 (151k)
- 허깅페이스: https://huggingface.co/YOON1v/Apex-2
(Qwen3MoeForCausalLM 매핑을 통해 transformers / vLLM으로 로드 가능)
학습
- 프리트레인: 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+ 점수가 Qwen2.5-1.5B(이건 18T 썼음)랑 비비더라.
물론 데이터 양 차이 때문에 지식(MMLU)이나 수학 쪽은 아직 한참 딸림.
안 됐던 거
DPO(220k 쌍, 길이 정규화) 돌렸더니 답변만 쓸데없이 길어지고 코드/수학/IFEval 성능 다 깎아먹음.
그래서 바로 중단하고 SFT 체크포인트로 회귀했다. 자세한 로그는 벤치마크 리포트에 다 적어놨음.
한계점 (솔직하게)
- 영어 위주 (다국어 능력 거의 없음)
- 지식 부족 → 환각 현상 잦음
- LiveCodeBench medium/hard는 거의 0점 수준
- 4k 컨텍스트가 한계
MoE 설정이나 DiLoCo, 아니면 왜 DPO가 망했는지 궁금한 거 있으면 물어봐라. 아는 대로 답해줌.


