Smollm3 - 작고, 다국어를 지원하는 긴 컨텍스트 추론 LLM
(huggingface.co)- SmolLM3 모델은 3B 파라미터 크기에서 효율성과 성능을 동시에 추구하는 오픈 소스 LLM임
- 영어, 프랑스어, 스페인어, 독일어, 이탈리아어, 포르투갈어 등 6개 언어를 지원하며, 최대 128k 컨텍스트 길이까지 확장 지원함
- dual mode(reasoning/non-reasoning) 로 /think, /no_think 플래그를 활용해 추론 모드 전환 가능함
- Pretraining, mid-training, post-training의 다양한 학습 단계와 공개된 데이터셋 및 엔지니어링 블루프린트를 전부 제공함
- 성능적으로 Llama-3.2-3B와 Qwen2.5-3B를 능가하며, 4B 모델에 준하는 경쟁력을 보유함
개요
SmolLM3는 3B 파라미터 규모에서 효율성과 성능을 동시에 추구하는 오픈 소스 대형 언어 모델임. 작고 빠르면서도, long-context와 다국어, 추론까지 모두 지원하는 것이 큰 차별점임.
- 3B 파라미터로 11조(11T) 토큰 학습
- 최신 성능(SoTA) 달성, 4B 모델과 경쟁 가능
- 듀얼 모드 인스트럭트 모델: /think와 /no_think를 통해 reasoning, non-reasoning 전환 지원
- 영어, 프랑스어, 스페인어, 독일어, 이탈리아어, 포르투갈어 지원
- NoPE, YaRN 적용으로 최대 128k 컨텍스트
전체 학습 과정의 아키텍처, 데이터 조합, 각 단계별 레시피를 완전히 공개함.
Pretraining
아키텍처와 학습 설정
SmolLM3는 transformer decoder 기반이며, Llama 구조를 효율과 긴 문맥에서 성능을 높이도록 수정함.
- Grouped Query Attention(GQA) : multi-head attention보다 메모리 효율적, 성능 동등 유지
- NoPE: rotary position embedding을 4번째 레이어마다 제거하여 긴 컨텍스트 성능 개선
- 문서 내 마스킹: 서로 다른 문서가 서로에게 attending하지 않도록 마스킹하여 안정적인 long-context 학습 지원
- embedding에 weight decay 제거: 안정적인 학습 동작 확보
학습 구성은:
- 2.36M 토큰의 글로벌 배치, 4096 시퀀스 길이, learning rate 2e-4, AdamW(β1:0.9, β2:0.95), weight decay 0.1, gradient clipping 1
- WSD 스케줄러: 2000 워밍업, 마지막 10%에서 선형 감소
- nanotron 프레임워크로 분산 학습, datatrove 데이터, lighteval 평가 도구 활용
- H100 GPU 384대, 24일 학습
데이터 혼합 및 단계적 학습
3단계 프리트레이닝:
- 1단계 (0T→8T) : 웹(85%, 12% 다국어), 코드(12%), 수학(3%)
- 2단계 (8T→10T) : 웹(75%, 12% 다국어), 코드(15%), 수학(10%) - 더 고품질 코드, 수학 데이터 추가
- 3단계 (10T→11.1T) : 웹(63%, 12% 다국어), 코드(24%), 수학(13%) - 고품질 코드, 수학 업샘플링, instruction/추론 데이터 도입
각 단계 데이터 혼합비는 많은 ablation 실험을 통해 최적화됨.
프리트레이닝 이후 중간(mid-) 트레이닝 과정을 추가 적용해 long-context와 reasoning 성능을 강화함.
Mid-training
Long-context 트레이닝
프리트레이닝 이후, 추가 100B 토큰을 투입하여 컨텍스트 길이를 2단계(4k→32k→64k)로 늘림.
- RoPE theta 조절로 길이 확장
- 수학, 코드, 추론 데이터 업샘플링
- NoPE 및 decay mixture로 긴 시퀀스 성능 최적화
- 학습 시에는 64k까지, 추론 시 YaRN 적용으로 128k까지 처리 가능
Reasoning 중간 트레이닝
추론성을 높이기 위해 35B 토큰(OpenThoughts3-1.2M, Llama-Nemotron-Post-Training-Dataset 등)으로 모델을 재학습함.
- 구체적 도메인 지향 없이, 일반적인 reasoning 능력 학습
- ChatML 템플릿, wrapped packing 활용
- 4 에폭(~140B 토큰) 진행 후 체크포인트 저장
Post-training
대부분의 reasoning 모델들은 폐쇄적 혹은 복잡한 RL 과정을 필요로 했으나, SmolLM3는 공개 데이터와 명확한 레시피로 dual instruction(추론/non추론) 구조를 구현함.
Chat 템플릿
- /think, /no_think 플래그를 시스템 프롬프트에 넣어 reasoning 모드 전환
- XML Tools, Python Tools 별도 섹션 제공하여 코드/툴 호출 지원
- system 메시지, metadata(date, knowledge cut-off, reasoning mode) 활용 및 유연하게 오버라이드 가능
Supervised Finetuning(SFT)
140B reasoning 데이터 미드트레이닝 이후, 1.8B 토큰(SFT 데이터: 논리적 추론/비추론)으로 수퍼바이즈드 파인트레이닝 진행
- reasoning rare domain 보완 위해 Qwen3-32B를 이용한 reasoning synthetic 데이터 생성
- Best-fit decreasing packing 등 메모리/효율 극대화
- 전체 데이터, 학습 스크립트 공개 예정
Anchored Preference Optimization(APO)
- SFT 후, Tulu3 프리퍼런스(non-reasoning), Qwen3-32B/0.6B synthetic preference pairs(reasoning) 기반으로 DPO의 변형인 APO로 모델 얼라인먼트
- triplet prompt + response로 loss 구성, 안정적인 최적화 및 성능 확보
- reasoning 미드트레이닝 영향으로 long-context 성능 저하가 관찰되어, 모델 머징을 통해 극복
모델 머징
- MergeKit 라이브러리 활용, APO 체크포인트 모델스프(0.9)+mid-training 체크포인트(0.1) 비율로 선형 머징
- 128k 롱컨텍스트 성능 회복 및 전체 성능 유지
- 최적체크포인트로 최종 모델 릴리즈
평가
베이스 모델
12개 주요 벤치마크에서 다른 3B 모델 압도 및 4B 모델과 근접한 성능
- 문서 이해, 추론, 수학, 코딩까지 고른 강점
- RULER 64k 등에서 길이 확장 능력 확실
- Global MMLU, MLMM HellaSwag, Flores-200, Belebele 등 다국어 능력 입증
- 영어 외 5개 유럽어에서도 일관적 성능
Dual Instruct / Reasoning 모델
non-reasoning 평가
SmolLM3는 Llama3.2-3B Instruct, Qwen2.5 3B Instruct보다 뛰어나며, 4B reasoning 모델급 효율·성능 모두 균형 있음
reasoning 평가
/think 활성화시 대부분 벤치마크에서 성능 급등
- AIME 2025(36.7% vs 9.3%), LiveCodeBench(30.0% vs 15.2%), GPQA Diamond(41.7% vs 35.7%) 등 어려운 문제도 해결
- Qwen3 4B와 견줄만 한 3B 추론, 수학적 reasoning, 복잡 문제 해결 능력
듀얼 모드로 속도와 심층 분석 선택 가능
실사용 안내
SmolLM3는 transformers v4.53.0 이상에서 공식 지원
- 간단한 코드로 모델 로딩, 프롬프트 작성, 추론 수행
- reasoning/non-reasoning은 시스템 프롬프트에
/think
,/no_think
플래그로 전환
툴 호출(Agentic)용으로 xml_tools, python_tools 파라미터 지원
결론
SmolLM3는 3B 규모에서 long-context, 다국어, reasoning을 모두 지원하는 fully open 모델임.
- 모든 단계별 학습 레시피, 데이터셋, 학습 로그 등 엔지니어링 블루프린트 전면 공개
- 커뮤니티의 개선과 검증 참여를 극대화할 수 있음
자료
- 모델, 스크립트, 데이터셋 등: HuggingFaceTB/SmolLM3-3B
- 논문, 평가, 경량화, 머징 도구 등은 각 GitHub, Hugging Face, 논문 링크 참고
Hacker News 의견
- 대부분의 SOTA 성능을 3B 크기에서 달성한 모습, 완전 공개와 코드, 재현 레시피까지 모두 공개한 드문 모델 클럽에 당당히 추가된 느낌. 직접 훈련하려면 약 백만 달러 상당의 GPU 시간이 필요할 것 같음 (4000 GPU/24일 기준), 공유가 풍부한 문서도 인상적, 업계에 긍정적이고 탄탄한 기여라는 평가
- 실상은 384대의 H100을 24일간 돌려야 하니, 비용이 백만 달러의 절반도 안됨
- 아침에 Phi-4-mini 벤치마크와 10분 정도 교차검증했는데, 벤치마크에서 해당 모델이 빠진 게 이상했고 전반적으로 항상 뒤처지는 걸로 나옴. 참고로 나는 LLM 클라이언트 개발 중이고, 로컬과 클라우드의 격차를 최소화하는 게 핵심 목표임 (llama.cpp 활용). 현재 마이크로소프트 외엔 로컬 AI를 지속적으로 진지하게 보는 회사가 거의 없음. 평소엔 이런 얘기 덮어두지만, HF가 정말 훌륭한 시민임에도, 슈퍼스타를 언급하지 않은 채 다른 모델의 우수성만 강조하는 건, 이 분야에서 오래된 소타(local SoTA)를 외면하는 결과라 생각, 그래서 이번엔 나서서 이야기하는 것에 의미를 둠
- 이 모델은 작고 (3B), 벤치마크에서 훌륭한 성능을 보여줌. 엣지/모바일 배포에 잘 어울리기 때문에 gemma3-4b 대비 이득이 큼. 추론/비추론 듀얼 모드 지원, 그리고 전체 훈련 방식을 완전히 공개함> SmolLM3를 엔지니어링 블루프린트와 함께 공개. 세부 구조, 도메인별 성능을 점진적으로 끌어올리는 3단계 프리트레이닝 전략, 하이브리드 추론 모델 구축 방법론까지 포함. 이런 결과 얻으려면 보통 몇 달간 역공학 하는 게 필요하지만, 우리는 전체 방법론을 공개함
- llama.cpp와 기타 추론 엔진용 챗 템플릿 문제 수정을 직접 했음, 실행하려면 다음 명령어 입력 ./llama.cpp/llama-cli -hf unsloth/SmolLM3-3B-GGUF:Q4_K_XL --jinja -ngl 99
- Qwen3 distill에 거의 근접한 성능이지만 모델 크기는 75%밖에 안됨, 이건 대단한 일. smollm 베이스 모델은 이미 고품질이라 미세조정에도 꾸준히 써왔고, 가까운 미래에는 로컬 에이전트나 코드 완성에도 쓸 계획. RL 알고리즘도 흥미롭게 보임. 지금까지는 OpenAI 알고리즘 중심으로 작업했는데, 최신 SOTA를 점검할 때가 된 것 같음 (진짜 이쪽 속도는 미친 듯이 빨라서 따라가기 힘듦)
- 다양한 엔터프라이즈 데이터셋에 파인튜닝하기 좋은 소형 모델 추천이 궁금, 우리 사업부에서 브라우저와 모바일에서 돌릴 수 있는 소형 모델을 찾고 있는데, RAG와 클라우드 리소스 고생 없이 해결하고 싶음
- 소형 모델은 지식 축적에 약점. 지식을 심으려고 파인튜닝하는 방식은 별로 권장하고 싶지 않음. 대신 오프라인 배포 가능한 내장형 RAG 시스템을 wasm으로 구현하는 게 나아보임, 이 방식으로 성공하는 사례들도 존재
- 직접 여러 모델을 다 시험해보고 제대로 된 벤치마크를 갖추는 게 중요. 머신러닝이 전문 분야는 아니지만 Mistral 7B 공식 가이드와 툴로 파인튜닝 했을 때도 결과가 기대에 미치지 못함. 데이터 셋에서 아주 특정한 질문을 넣었는데 파인튜닝 변형을 아무리 해도 제대로 답하지 못함. 정보 학습을 기대하는 것보단 벡터 검색+키워드 검색 혼합이 문맥 추출에 훨씬 효과적. 사전 훈련 데이터셋 접근법을 썼고, 데이터 기반으로 Q&A를 합성해서 훈련하는 접근이 더 나을 수 있겠지만, 그 방법까지 실험할 시간은 부족했음
- Gemma 3N 2B로 파인튜닝해 봤는데 성능 좋음, 다만 S23U에서 로딩이 느림. 일단 띄우면 잘 돌아감. SmolVLM 256M, 500M도 써봤는데 훨씬 빠르게 뜨고 앱에 자산 형태로 포함시킬 수 있음, 어느 정도 노하우 있으면 쓸 만함. 다만 작은 모델들은 파라미터 한계로 성능이 제한적. 그리고 안드로이드에선 2GB 이상 파일은 압축 이슈로 배포가 안 되니까 모델은 따로 받아야 하고, 또 다운로드 폴더에선 바로 로딩이 안 되기 때문에 앱 전용 폴더로 복사해야 함. Gemma 3N 2B가 3.14GB인데 최소 7GB 여유 공간 필요
- 이런 식으로 파인튜닝해서 얻고자 하는 목적이 궁금
- 영국 코미디 스케치 소재 같은 부분"이거, 소형이라면서도 대형 언어모델이라고요?""네, 정말 작아요.""근데 어떻게 크면서도 작죠?""대형 언어모델 기준으로 보면… 작아요.""즉, 크단 말이죠?""맞아요, 꽤 커요.""뭐랑 비교해서 큰 거죠?""소형 언어모델이랑요.""그럼 ChatGPT 같은 건 뭐죠? 대형 중에서도 대형?""정확해요. LLLM이죠."
- 호주풍 코미디 느낌, Clarke and Dawe/Utopia 스타일을 연상
- 기준 자체가 계속 변함. GPT-2는 한때 "대형"이었지만, 지금은 이 모델 크기의 절반 수준. 게다가 Sam Altman은 그때 GPT-2조차도 위험해서 공개 못 한다고 했음. 내 기준에선 소비자용 기기에서 못 돌리면 "대형"이고, 정의를 놓고 논쟁하는 건 의미가 약함
- 미니어처 거대 우주 햄스터는 건드리지 않겠음 (BG 게임 유머)
- big little planet이냐, small big planet이냐 헷갈림
- 듣기로 llama3 모델들은 꽤 파인튜닝이 쉽다고 알고 있음 (혹시 틀렸거나, 여기 더 괜찮은 모델이 있다면 지적 부탁). smollm3의 파인튜닝 난이도는 어느 정도인지 궁금, MoE LLM들은 그 부분에서 유난히 변덕을 부리는 느낌
- 흥미로운 점은, RL을 자체적으로 적용하지 않고, 대형 데이터셋에서 추론 흔적(reasoning trace)만으로 파인튜닝을 했다는 부분
- 실제론 Anchored Preference Optimization 같은 오프라인 방법을 사용함, Open R1 프로젝트에서 봤듯 소형 모델에 멀티태스크 RL 적용하는 건 꽤 만만치 않은 일. 오프라인 방법은 데이터셋 큐레이션/생성이 핵심이라 반복 속도가 훨씬 빠름. 우리가 다루는 모델 스케일에 적합한 방식임
- 멋진 작업, anton 및 관계자들에게 존경 전함. 50~100M 파라미터 크기의 모델들도 계속 이어지길 바람. Solve by LLM 테스트 케이스처럼 CPU에서 신속하게 끝나는 모델도 충분히 의미 있다고 생각