스텝 0-20K: 제한된 식단
두 단계, 하나의 실행
v2 화력호스 커리큘럼은 단일 200K 스텝 훈련 실행 내에서 두 단계로 진행됩니다:
단계 A (스텝 0 ~ 20K). Bandit은 7개의 채팅 & 산문 소스에서만 끌어옵니다:
- hermes3-general
- hermes3-creative
- hermes3-roleplay
- chat
- smoltalk
- oasst
- gutenberg
Phase B (20K에서 200K 스텝). Bandit는 전체 혼합에서 뽑아, 모든 16개 소스, reference(dictionary), technical(repo-docs, repo-commits), & social(irc, unweapon) 포함.
제한된 식단이 공유하는 것
7개의 warmup 소스 중 6개는 대화체입니다. 하나(gutenberg)는 단락 산문입니다. 함께 그들은 공통 형태를 공유합니다: 턴 구조 (프롬프트 다음 응답) 또는 서사 흐름. 7개 소스에 걸친 어휘 분포는 대략 정상적인 영어처럼 보입니다; cross-entropy 목표는 안정적인 범위에 머무릅니다; gradient 크기는 예측 가능하게 유지됩니다.
구성 필드
"curriculum_warmup_steps": 20000,
"curriculum_warmup_sources": ["hermes3-general", "hermes3-creative",
"hermes3-roleplay", "chat", "smoltalk", "oasst", "gutenberg"]
웜업 단계 식별
Warmup 없이 v1이 어떻게 보였나
v1: 0단계부터 모든 16개 소스
첫 번째 ANDREA-120M 훈련 실행(March-April 2026)은 0단계에서 전체 firehose를 활성화했습니다: 16개 소스, dictionary(> define X / < X is... 형태의 88K 단어 정의), repo-docs(markdown 문서), repo-docstrings(Python docstrings), & repo-commits(git commit 메시지)를 포함하며 chat & prose와 함께.
무엇이 잘못되었나요
초기화된 120M 모델이 무작위 가중치로 16개의 서로 다른 분포를 동시에 모델링할 수 없습니다. 구조적으로 다른 소스에서 오는 각 배치는 다른 기울기 방향을 생성합니다. 7-42 스텝마다 소스가 전환되면서 기울기 크기가 극심하게 변동되었고; 모델은 표현을 형성할 수 있을보다 빠르게 어트랙터 사이를 점프했습니다.
80K 스텝까지 v1은 region region region region region region region을 생성했습니다. Hermes3-general 교사 증류 보상(평균 340-453)은 반복적인 목록 구조 소스가 교차 엔트로피에서 가장 높은 점수를 받게 했고, bandit은 이를 '이 암들은 쉽다'로 해석했습니다. bandit은 모델을 퇴화시키는 것을 더 많이 제공했습니다.
7개 소스로 제한하는 이유
1. 분포 유사성. 모든 7개의 워밍업 소스는 유사한 형태의 텍스트(턴 구조 또는 서사)를 생성합니다. 배치 간 기울기 방향이 대체로 정렬되어 유지됩니다.
2. 응집성 우선. 모델은 정의 목록, 코드, 또는 git 메시지를 만나기 전에 어휘 빈도, 구문 패턴, 및 턴 구조를 학습합니다.
3. 안정적인 커리큘럼. 7개의 채팅/산문 소스에 걸친 Bandit 보상 신호가 비교 가능한 범위에 머무르며; UCB1 선택이 단일 이상하게 보상 높은 소스에 의해 장악되지 않습니다.
Phase B가 활성화될 때
20K 스텝에서, 모델은 ~40-50개의 샘플(100 스텝당 하나)을 생성했으며, 샘플에서 일관된 영어를 보여주고, 안정적인 빅그램 및 트리그램 분포를 구축했습니다. 이제는 사전의 > define X / < X is... 패턴, repo-docs의 코드 블록, 및 git 커밋 헤더를 채팅 구조를 잃지 않고 흡수할 수 있습니다.
v1의 실패 진단
v3 Polish는 curriculum_warmup_steps = 0으로 설정합니다
다른 시작점
v3 polish의 112,619 단계 피벗은 curriculum_warmup_steps를 0으로 설정하여 step_112600.bin에서 훈련을 재개했습니다. 언뜻 보기에 이는 모순처럼 보입니다: v2에 도움이 된 워밍업을 polish 단계에서 왜 비활성화한 걸까요?
모델이 이미 일관성을 배웠기 때문입니다
Phase A는 새로 초기화된 모델이 어휘 빈도, 턴 구조, 단락 일관성을 배우는 시간을 벌어줍니다. 112K 단계까지 모델은 이미 그 모든 것을 해냈습니다. 112K에서의 샘플 감사는 일관된 대화 턴, 하이쿠, Q&A, 대화를 보여주었습니다. 워밍업의 원래 목적(취약한 새 모델을 그래디언트 혼란으로부터 보호)은 더 이상 적용되지 않습니다.
Polish는 재가중화하며, 재시작하지 않습니다
Polish는 새로운 실행이 아니라 커리큘럼 교란입니다. 동일한 200K 목표, 동일한 아키텍처, 동일한 옵티마이저 상태, 동일한 손실 기록. 변경되는 것: 소스 상한 및 하한이 지식 암기보다 대화를 선호하도록 재가중화됩니다. 모델이 이미 일관적이기 때문에, 112,619 단계부터 모든 활성 소스가 공정한 게임입니다.
요약 표
| Phase | curriculum_warmup_steps | Why |
|---|---|---|
| v1 | (없음) | 0단계의 모든 16개 소스 -> 압축 |
| v2 (steps 0-200K) | 20,000 | 신선하게 초기화된 가중치를 그래디언트 혼란으로부터 보호 |
| v3 base (steps 0-112K) | 20,000 | v2와 동일한 보호 |
| v3 polish (steps 112K-200K) | 0 | 모델이 이미 일관성 있음; 보호할 취약한 초기화 상태 없음 |