본문으로 건너뛰기

© 2026 Molayo

HuggingFace헤드라인2026. 05. 07. 02:03

SmolLM3: 작지만 다국어이며 긴 컨텍스트를 이해할 수 있는 모델

요약

SmolLM3는 효율성과 성능의 최적점을 목표로 설계된 3B 규모의 대규모 언어 모델입니다. 이 모델은 Llama-3.2 및 Qwen2.5와 경쟁할 수 있는 뛰어난 성능을 보여주면서도, 다국어 지원(6개 언어)과 최대 128k에 달하는 긴 컨텍스트 처리를 제공합니다. 특히, GQA, NoPE, Intra-Document Masking 등 최신 아키텍처 개선 사항과 함께 단계별 데이터 혼합 전략을 포함한 '완전한 레시피'를 공개하여 모델 구축의 투명성을 높였습니다.

핵심 포인트

  • 3B 규모에서 SoTA 성능 달성: SmolLM3는 11T 토큰으로 훈련되었으며, 더 큰 경쟁 모델과 비교해도 우수한 효율성과 성능을 입증했습니다.
  • 최첨단 아키텍처 개선 적용: GQA(Grouped Query Attention), NoPE(RoPE 대체), Intra-Document Masking 등 여러 최신 기술을 결합하여 긴 컨텍스트 처리 능력과 훈련 안정성을 극대화했습니다.
  • 투명한 '엔지니어링 블루프린트' 제공: 모델의 아키텍처 수정 사항뿐만 아니라, 데이터 혼합 비율이 진화하는 3단계 사전 훈련 레시피까지 공개하여 연구 커뮤니티에 큰 가치를 제공합니다.
  • 다기능성 및 확장성: 영어 외 프랑스어, 스페인어 등 6개 언어를 지원하며, NoPE와 YaRN을 활용해 최대 128k의 긴 컨텍스트를 처리할 수 있습니다.

SmolLM3 는 효율성의 최적점에 위치합니다. 우리의 3B 모델은 Llama-3.2-3B 와 Qwen2.5-3B 를 능가하면서도, 더 큰 4B 대안 (Qwen3 & Gemma3) 과 경쟁력을 유지합니다. 성능 수치 외에도 우리는 공개 데이터셋과 훈련 프레임워크를 사용하여 어떻게 구축했는지 정확히 공유합니다.

모델 요약:

3B 모델은 11T 토큰으로 훈련되었으며, 3B 규모에서 SoTA (State-of-the-Art) 수준이며 4B 모델과 경쟁력 있습니다.Instruct 모델dual mode reasoning(이중 모드 추론)을 지원하며 thinkno_think 모드를 제공합니다.다국어 지원은 6 가지 언어를 지원합니다: 영어, 프랑스어, 스페인어, 독일어, 이탈리아어, 포르투갈어.긴 컨텍스트는 NoPE 를 사용하며 YaRN 을 사용하여 최대 128k 까지 지원합니다.

완전한 레시피: 우리는 SmolLM3 를 엔지니어링 블루프린트와 함께 출시합니다. 이는 아키텍처 세부 사항, 도메인별 성능을 단계별로 향상시키는 3 단계 사전 훈련 접근 방식에서 어떻게 데이터를 점진적으로 혼합하는지를 보여주는 정확한 데이터 믹스, 그리고 하이브리드 추론 모델을 구축하는 방법론을 포함합니다. 일반적으로 이러한 결과를 달성하려면 수개월의 역공학이 필요할 것입니다. 대신 우리는 전체 방법론을 제공합니다.

자신의 모델을 구축하거나 이 규모에서 성능을 구동하는 요소를 이해하고 싶다면, 이 블루프린트는 경쟁력 있는 3B 성능 뒤에 숨겨진 엔지니어링 이야기를 보여줍니다.

사전 훈련 단계를 살펴보겠습니다.

SmolLM3 는 이전 모델과 달리 아키텍처와 데이터 믹스를 모두 변경했습니다. 먼저 아키텍처와 훈련 구성을 살펴보겠습니다!

SmolLM3 는 SmolLM2 와 유사하게 연결된 임베딩을 가진 트랜스포머 디코더 아키텍처를 따르며, Llama 아키텍처를 기반으로 효율성과 긴 컨텍스트 성능을 최적화하기 위한 몇 가지 핵심 수정사항을 적용했습니다.

Grouped Query Attention (GQA): 우리는 4 개의 그룹을 사용하여 멀티헤드 어텐션을 그룹 쿼리 어텐션으로 교체했습니다. FineWeb-Edu 에서 100B 토큰으로 훈련된 3B 모델에 대한 우리의 아벨레이션은 GQA 가 멀티헤드 어텐션과 성능을 동일하게 유지하면서 추론 중 KV 캐치 크기를 크게 줄인다는 것을 보여줍니다.

NoPE: 우리는 "RoPE to NoRoPE and Back Again: A New Hybrid Attention Strategy" (Yang et al., 2025) 에서의 NoPE 를 구현하여, 모든 4 번째 층에서 회전 위치 임베딩을 선택적으로 제거했습니다. 우리의 아벨레이션이 확인한 바와 같이, 이 접근 방식은 긴 컨텍스트 성능을 향상시키면서 짧은 컨텍스트 능력을 손상시키지 않습니다.

Intra-Document Masking: "Analysing The Impact of Sequence Composition on Language Model Pre-Training" 을 따르며, 훈련 중에는 같은 훈련 시퀀스 내의 다른 문서에서 온 토큰들이 서로 어텐션하지 않도록 어텐션 마스킹을 사용합니다. Llama 3 와 유사하게, 이는 긴 컨텍스트 훈련을 더 빠르고 안정적으로 수행하면서도 짧은 컨텍스트 성능을 유지하는 데 도움이 됩니다.

Training Stability: OLMo 2 를 따르며, 임베딩 레이어에서 무게 감쇠를 제거하여 훈련 안정성을 향상시켰습니다. 이 수정은 전체적인 성능에 영향을 주지 않으면서 훈련 중 임베딩 노름이 더 건강한 값으로 자연스럽게 안정화되는 더 안정적인 훈련 역학을 기여했습니다.

이 모든 변경 사항은 FineWeb-Edu 에서 100B 토큰으로 훈련된 동일한 3B 아키텍처를 사용하여 아벨레이션으로 검증되었으며, 각 수정은 성능을 개선하거나 유지하면서 다른 이점을 제공함을 보장했습니다.

Training Configuration: 우리는 전역 배치 크기 (global batch size) 를 2.36M 토큰, 시퀀스 길이 (sequence length) 4096, 학습률 (learning rate) 2e-4, AdamW 옵티마이저 (beta1: 0.9, beta2: 0.95), 가중치 감소 (weight decay) 0.1, 그래디언트 클리핑 (gradient clipping) 1 을 사용합니다. WSD (Warmup-Stable-Decay) 스케줄러를 사용하며, warmup 단계는 2000 단계를, 마지막 10% 훈련 단계에서는 선형 감소 (linear decay) 로 0 으로 설정합니다. 훈련에는 nanotron 프레임워크, 데이터 처리에는 datatrove, 평가에는 lighteval 을 사용합니다. 모델은 384 개의 H100 GPU 를 사용하여 24 일 동안 훈련되었습니다. 분산 훈련 설정은 다음 그림에서 확인할 수 있습니다.

아키텍처 변경 외에도 우리는 훈련 레시피 (training recipe) 도 아벨레이션과 개선을 수행했습니다. 자세히 살펴보겠습니다.

SmolLM2 의 다단계 접근 방식을 따르며, 우리는 웹, 수학, 코드 데이터를 혼합하는 비율이 진화하는 3 단계 훈련 전략을 사용하여 SmolLM3 을 11.2T 토큰으로 훈련했습니다. 50B 에서 100B 토큰으로 훈련된 3B 모델에 대한 광범위한 아벨레이션을 수행하여 데이터 혼합과 비율을 결정했습니다.

프리트레닝 (pretraining) 은 다음 단계로 구성되며, 위의 그림에서도 표시됩니다:

**Stage 1: Stable phase (0T → 8T 토큰)**이 기초 단계는 핵심 데이터셋 혼합으로 강력한 일반적 능력을 구축합니다:- Web: 85% (12% 다국어) - FineWeb-Edu, DCLM, FineWeb2 와 FineWeb2-HQ

  • Code: 12% - The Stack v2 (16 프로그래밍 언어), StarCoder2 풀 리퀘스트 (pull requests), Jupyter 와 Kaggle 노트북, GitHub 이슈, 그리고 StackExchange.
  • Math: 3% - FineMath3+ 와 InfiWebMath3+

**Stage 2: Stable phase (8T → 10T 토큰)**우리는 웹 커버리지를 유지하면서 더 고품질의 수학 및 코드 데이터셋을 도입합니다:- Web: 75% (12% Multilingual)

  • Code: 15% - Stack-Edu 추가
  • Math: 10% - FineMath4+, InfiWebMath4+, MegaMath (Qwen Q&A, Pro synthetic rewrites, 텍스트 코드 인터리브드 블록 포함) 도입

**Stage 3: Decay Phase (10T → 11.1T 토큰)**마지막 단계는 수학 및 코드 데이터를 더 상수 (upsample) 합니다- Web: 63% (12% Multilingual)

  • Code: 24% - 고품질 코드 데이터의 upsampling
  • Math: 13% - 수학 데이터의 upsampling 및 OpenMathReasoning 과 같은 인스트럭션과 리ASONING 데이터셋 도입

이러한 단계와 혼합으로 우리는 베이스 모델에 매우 경쟁력 있는 성능을 달성했습니다. 평가 섹션에서 더 자세히 다룹니다. 정확한 데이터 가중치를 포함한 nanotron 훈련 설정은 여기에서 찾을 수 있습니다. 우리는 또한 중간 체크포인트와 함께 훈련 로그를 공유할 예정입니다.

주요 프리트레닝 후, 우리는 긴 컨텍스트 및 추론 (reasoning) 을 위한 미드-훈련 (mid-training) 단계에서 모델을 개선했습니다.

우리는 긴 컨텍스트 적응과 추론 적응을 '미드-훈련'이라고 부릅니다. 이는 주요 프리트레닝보다 훨씬 짧지만 여전히 다소 일반적이며 해당 두 도메인에서 모델을 개선하는 데 목적이 있습니다. 먼저 긴 컨텍스트 훈련에 대해 살펴보겠습니다.

주요 사전 학습 (pretraining) 이후, SmolLM3 를 추가적인 100B 토큰으로 학습하여 컨텍스트 길이를 확장했습니다. 우리는 RoPE theta 를 1.5M 으로 증가시켜 4k 에서 32k 컨텍스트로 전환하고, RoPE theta 를 5M 으로 증가시켜 32k 에서 64k 컨텍스트로 전환하는 두 단계 (stage) 에 걸쳐 순차적으로 컨텍스트 윈도우를 확장했습니다. 두 단계 모두 수학 (math), 코드, 추론 (reasoning) 데이터를 업샘플링 (upsampling) 했습니다. 아벨레이션 (ablations) 과정에서 특정 긴 컨텍스트 데이터 (코드 저장소, 책, 자연스러운 긴 샘플을 넘어선 긴 웹 페이지 등) 를 업샘플링하면 RULER 와 HELMET 벤치마크 성능이 추가로 향상된다는 것을 발견했습니다. NoPE 사용과 더 긴 시퀀스 및 증가된 RoPE theta 값을 가진 감쇠 혼합 (decay mixture) 데이터로 학습하는 것이 64k 까지 경쟁력 있는 긴 컨텍스트 성능을 달성하기에 충분했습니다.

Qwen2.5 를 따르며, 우리는 YARN 을 사용하여 훈련 컨텍스트 길이 너머를 외삽 (extrapolate) 합니다. 추론 (inference) 시 모델은 128k 컨텍스트까지 처리할 수 있습니다 (64k 훈련 길이의 2 배 확장).

모델의 컨텍스트 길이를 확장한 후, 우리는 일반적 추론 능력을 포함하기 위해 중간 학습 단계 (mid-training stage) 에서 모델을 학습했습니다. 중간 학습 단계와 사전/후학습 단계의 주요 차이는 특정 도메인에 초점을 맞추기 전 일반적인 능력 (general capability) 을 목표로 한다는 점입니다. 우리 사례에서는 수학이나 컴퓨터 코드와 같은 특정 도메인을 목표로 하지 않고 모델이 추론할 수 있도록 훈련하고 싶었습니다.

우리의 중간 학습 데이터셋은 Open Thought 의 OpenThoughts3-1.2M 에서 35B 토큰과 NVIDIA 의 Llama-Nemotron-Post-Training-Dataset-v1.1 의 부분집합 (subset) 을 포함하며, R1 의 추론 트레이스 (reasoning traces) 를 사용했습니다. 우리는 ChatML 채팅 템플릿을 사용하고 모델에 과도한 구조를 제공하지 않도록 패킹 (packing) 을 감쌉니다. 모델을 4 (~140B 토큰) 에POCH 동안 학습하고, 이후 SFT 단계에 체크포인트를 사용했습니다.

DeepSeek R1 과 Qwen3 와 같은 추론 모델의 출시가 모델이 명시적 추론 (explicit reasoning) 을 수행할 때 나타나는 강력한 능력을 입증했습니다. 그러나 커뮤니티는 여전히 추론 및 비추론 모드를 모두 지원하는 듀얼 인스트럭션 모델을 구축하기 위한 완전히 오픈 레시피와 공개 데이터셋이 부족합니다. 대부분의 기존 접근법은 복잡한 강화 학습 과정과 독점 데이터셋을 포함하여, 연구자들이 이러한 결과를 재현하고在此基础上 (upon these results) 구축하는 것을 어렵게 만듭니다.

본 섹션에서는 우리가 이러한 도전을 어떻게 해결했는지 설명하고 듀얼 인스트럭션 모델을 구축하기 위한 완전한 레시피를 공유합니다. 우리는 중간의 일반적 추론 능력을 포함하는 세밀하게 설계된 훈련 파이프라인을 통해 추론 및 비추론 모드 사이의 성능 균형을 상세히 설명합니다. 이는 합성 데이터 생성과 APO (Anchored Preference Optimization) - 최근 DPO 변형 - 를 사용한 정렬 (alignment) 을 포함합니다.

훈련 방법론에 돌입하기 전에, 사용자가 우리의 듀얼 모드 모델과 어떻게 상호작용하는지 확립하는 것이 필수적입니다. 채팅 템플릿은 추론 및 비추론 모드 사이의 원활한 전환을 가능하게 하는 인터페이스로, 그 설계는 우리의 훈련 데이터 형식과 모델 행동에 직접적인 영향을 미칩니다. SmolLM3 의 채팅 템플릿은 사용자가 대화 중 추론 모드를 제어할 수 있게 합니다. 사용자는 시스템 프롬프트에 /think/no_think 플래그를 포함시켜 추론 또는 비추론 모드를 활성화할 수 있습니다. 비추론 모드에서, 우리는 Qwen3 와 유사하게 모델의 응답을 빈 think 블록으로 미리 채우며 명시적 추론 없이 직접적인 답변을 보장합니다.

SmolLM3 은 도구 호출 (tool calling) 을 지원하며, 채팅 템플릿은 도구 설명을 위한 XML Tools 와 Python Tools 라는 두 가지 구분을 포함하고 있습니다. 이 특정 분류는 모델이 각 형식의 도구 정의를 정확하게 해석할 수 있도록 실험에 도움이 되었습니다.

채팅 템플릿은 추론 모드가 모두 사용할 기본 시스템 메시지와 날짜, 지식 절단일 (knowledge cut-off date), 현재 추론 모드를 포함한 메타데이터 섹션을 제공합니다. 사용자는 system 역할을 제공함으로써 기본 시스템 메시지를 교체할 수 있으며, /system_override 플래그를 사용하여 메타데이터 섹션을 제외할 수 있어 특정 사용 사례에 유연성을 제공합니다.

추론 중간 학습 단계 (reasoning mid-training stage) 를 완료한 후, 우리는 수학, 코드, 일반 추론, 지시 따르기, 다국어, 도구 호출 등 두 가지 모드의 능력을 모두 포함하도록 감독 미세 조정 (Supervised Finetuning, SFT) 을 진행합니다. 양식 모드를 훈련하려면 모든 목표 도메인에서 두 모드 모두에 강력한 성능을 유지하기 위해 데이터 혼합을 신중하게 균형 잡아야 합니다. SmolLM3 의 훈련 전반의 성능을 평가하기 위해 우리는 다음 도메인을 추적했습니다: 수학, 코드, 일반 추론, 지시 따르기, 다국어.

추론 모드 데이터셋을 구축할 때 우리가 겪은 주요 도전 과제는 특정 도메인의 추론 트레이스 (reasoning traces) 를 포함하는 데이터셋의 부족이었습니다. 이 격차를 해결하기 위해 우리는 기존 비추론 데이터셋에서 프롬프트를 사용하여 Qwen3-32B 을 추론 모드로 프롬프트하여 합성 데이터를 생성했습니다. 이는 모델이 초기 추론 모드에서 어려움을 겪었던 도메인, 즉 다중 턴 대화 (multi-turn conversations), 다국어, 일상 대화에서 성능을 개선할 수 있었습니다.

우리의 최종 데이터 혼합은 추론과 비추론 토큰의 최적 비율 및 각 모드의 구성을 조사한 광범위한 아벨레이션 (ablations) 의 결과였습니다. 결과적인 SFT 데이터셋은 18 억 토큰을 포함하며, 이는 비추론 모드 10 억 토큰과 추론 모드 8 억 토큰으로 구성되며, 이는 12 개의 비추론 데이터셋과 10 개의 추론 트레이스를 가진 데이터셋을 포함합니다. 우리는 BFD (best-fit decreasing) 패킹을 사용하며 사용자 턴과 도구 호출 결과에 대해 손실을 마스킹한 상태로 4 에포크 (~8 억 토큰) 를 훈련했습니다.

우리는 커뮤니티가 우리의 작업을 재현하고 구축할 수 있도록 이 데이터 혼합과 전체 훈련 스크립트를 배포할 예정입니다.

SFT 단계 후, 우리는 Tulu3 선호도 데이터셋을 사용하여 비추론 모드로서와 Qwen3-32B 과 Qwen3-0.6B 에서 생성한 새로운 합성 선호도 쌍을 사용하여 추론 모드에서 모델 정렬 (model alignment) 을 수행했습니다. 비추론 데이터셋의 모든 도메인의 완전한 커버리지를 보장하기 위해, 우리는 보완하는 추론 모드 선호도 쌍을 생성했습니다. 정렬을 위해 Anchored Preference Optimization 를 사용하여 Qwen3-32B 의 생성물을 "chosen" 으로 선택하고 Qwen3-0.6B 의 응답을 "rejected" 로 선택했습니다.

Anchored Preference Optimization (APO) 는 Direct Preference Optimization (DPO) 의 변형으로, 더 안정적인 최적화 목표를 제공합니다. DPO 에서 보상 함수 r_θ(x,y) 는 훈련 중 시퀀스의 확률과 훈련 시작 시 참조 모델의 비율 로그를 측정합니다:

여기서 β 는 최적화되는 모델이 참조 모델에 대해 얼마나 변화할 수 있는지를 제어합니다. DPO 손실은 프롬프트 x, 선택된 y_w 와 거절된 y_l 응답의 삼중항을 최적화합니다:

AI 자동 생성 콘텐츠

본 콘텐츠는 Hugging Face Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
2

댓글

0