Midtraining은 일반 사전학습(pretraining)과 후학습(post-training) 사이에서 모델의 데이터 분포를 점진적으로 바꿔 특정 능력을 강화하는 중간 훈련 단계다. 최근 LLM 학습 파이프라인은 pretraining과 post-training의 2단계 구도에서 벗어나, continued pretraining(CPT), midtraining, long-context training 같은 중간 단계를 별도로 둔다.
CPT와 Midtraining의 차이
둘 다 보통 next-token prediction 계열 목표로 대규모 텍스트를 계속 학습한다는 점에서는 비슷하다. 차이는 운영 맥락에 있다.
| 구분 | Continued Pretraining(CPT) | Midtraining |
|---|---|---|
| 시작점 | 이미 공개되거나 내부에 존재하는 pretrained checkpoint | 원래 학습 일정 안의 pretrained checkpoint |
| 목적 | 특정 도메인·제품 데이터로 모델을 전문화 | 후학습 전에 고품질·도메인·추론 데이터로 분포를 점진 조정 |
| 위치 | 외부 모델을 가져온 뒤 추가 훈련하는 경우가 많다 | 원래 모델 개발 파이프라인 안에 계획되는 경우가 많다 |
| 대표 활용 | 사내 코드, 의료 문서, 금융 데이터 적응 | reasoning, instruction-like data, long-context 기반 능력 강화 |
Midtraining은 보통 처음부터 모델 학습 일정 안에 포함된다. 일반 웹·코드·문서 분포로 학습하다가 후반부에 더 높은 품질, 도메인 특화, reasoning, instruction-like 데이터로 데이터 믹스를 annealing한다. CPT는 기존 checkpoint를 특정 조직이나 제품 목적에 맞게 이어서 훈련하는 의미로 더 자주 쓰인다.
왜 필요한가
사전학습은 넓은 지식과 언어 능력을 만든다. 후학습은 지시 따르기, 안전성, 도구 사용, 추론 행동을 다듬는다. 하지만 둘 사이에는 다음 문제가 남는다.
- 특정 도메인 데이터가 일반 사전학습 분포에서 충분히 대표되지 않는다.
- 긴 컨텍스트, 코딩 세션, 수학 풀이처럼 후학습만으로는 부족한 기반 능력이 필요하다.
- RL이나 SFT가 효과를 보려면 그 전에 base model이 해당 도메인의 언어와 구조를 이미 어느 정도 이해해야 한다.
- speculative decoding용 MTP layer 같은 구조 변경을 후학습 전에 함께 적응시켜야 할 수 있다.
예를 들어 코딩 모델을 만들 때 실제 IDE 세션, repo-level 변경, 테스트 로그, tool trace를 CPT나 midtraining에 포함하면 이후 SFT·RL의 출발점이 좋아진다. llm-post-training이 “행동을 입히는 단계”라면, midtraining은 그 행동이 얹힐 도메인 기반을 넓히는 단계에 가깝다.
실무 레시피
최근 사례들을 종합하면 midtraining과 CPT는 감으로 데이터만 더 넣는 작업이 아니다.
- 짧은 proxy CPT run으로 후보 데이터셋별 효과를 먼저 본다.
- downstream eval에서 일관되게 도움이 되는 데이터만 남긴다.
- 데이터셋별 learning rate와 training duration을 따로 sweep한다.
- 오래 학습할수록 좋아지는 데이터와 빨리 과적합되는 데이터를 구분한다.
- 최종 믹스는 각 데이터셋이 최적 성능을 낸 훈련량에 비례해 가중하는 식으로 조정한다.
- in-domain 성능 향상과 general capability forgetting을 함께 측정한다.
핵심은 “어떤 데이터를 얼마나 오래 먹일지”다. 예를 들어 어떤 데이터는 1B~10B 토큰 proxy run에서 빠르게 성능 향상을 보이지만 긴 훈련에서는 일반 능력을 깎을 수 있다. 반대로 수학·코드처럼 장기 훈련에서 서서히 좋아지는 데이터도 있다.
Long-context training과의 관계
Long-context training은 midtraining과 함께 쓰이는 경우가 많지만 목표가 조금 다르다. 모델을 처음부터 아주 긴 sequence로 학습하면 비용이 크므로, 짧은 sequence로 기본 능력을 만든 뒤 별도 단계에서 128K, 256K 같은 긴 컨텍스트로 확장한다.
이 단계는 context-engineering과도 연결된다. 긴 컨텍스트 모델이 실제로 유용하려면 단순히 window 크기만 늘리는 것이 아니라, 긴 문서·코드베이스·대화 이력에서 필요한 정보를 유지하고 검색하는 훈련 분포가 필요하다.
도입 시 판단 기준
Midtraining 또는 CPT가 필요한지는 다음 질문으로 판단한다.
- RAG나 도구 호출만으로 해결되지 않는 도메인 언어·패턴 학습이 필요한가
- SFT 데이터만으로는 모델이 기본 개념을 충분히 이해하지 못하는가
- downstream RL 전에 base model의 해당 작업 성공률을 올려야 하는가
- 긴 컨텍스트, 코드 세션, 멀티모달 trace처럼 pretraining 분포와 다른 입력 구조가 필요한가
- 추가 훈련으로 일반 능력 저하를 감수할 만큼 제품 도메인이 뚜렷한가
대부분의 제품팀에는 직접 midtraining을 수행할 compute가 없다. 그래도 이 개념은 모델 선택에 중요하다. 코딩, 의료, 금융, 법률, 장문 에이전트용 모델을 비교할 때는 단순 파라미터 수보다 어떤 CPT·midtraining 데이터와 평가를 거쳤는지를 봐야 한다.
관련 문서
- llm-post-training — 원시 모델을 제품형 AI 어시스턴트로 바꾸는 후학습
- llm-fine-tuning — SFT·PEFT·LoRA·QLoRA를 포함한 파인튜닝 가이드
- llm-fine-tuning-tips-beyond-lora — LoRA 이후의 모델 적응 전략
- context-engineering — 긴 맥락을 모델이 실제로 쓰게 만드는 설계
- agent-rl-training-frameworks — 에이전트 작업용 RL 학습 프레임워크 비교
참고 자료
- Notes on Midtraining — Deep (Learning) Focus (2026-08-10)