11.2조 토큰 학습과 Apache 2.0 라이선스를 적용한 SmolLM3

Hugging Face가 2025년 7월 8일 릴리스한 SmolLM3는 3B 파라미터 규모의 소형 언어 모델이다. 파라미터는 모델 내부에서 정보를 저장하고 처리하는 가중치 단위로, 이 수치가 낮을수록 메모리 점유율이 낮아지고 추론 속도가 빨라진다. SmolLM3는 웹, 코드, 수학, 추론 데이터로 구성된 단계적 커리큘럼을 통해 총 11.2조 개의 토큰을 학습했다. 학습 후반부에는 1,400억 개의 추론 토큰을 추가로 학습시키는 포스트 트레이닝(Post-training) 과정을 적용해 복잡한 논리 전개 능력을 강화했다.

컨텍스트 윈도우(Context Window)를 128k까지 지원하여 긴 문서를 한 번에 입력받아 분석할 수 있으며, 외부 API를 사용하는 네이티브 도구 호출(Native Tool Calling) 기능과 생각의 단계를 나누어 처리하는 듀얼 모드 추론(Dual-mode Reasoning)을 지원한다. 제공 모델은 명령어 튜닝을 거친 SmolLM3-3B와 사전 학습 가중치만 포함된 SmolLM3-3B-Base로 구분되며, 더 가벼운 SmolLM2-1.7B와 시각 정보 처리가 가능한 SmolVLM이 함께 제공된다.

모델의 투명성과 상업적 활용도를 높이기 위해 Apache 2.0 라이선스를 채택하고 전체 학습 청사진(Blueprint)을 공개했다. 학습 청사진은 데이터 구성부터 학습 설정까지의 전 과정을 기록한 문서로, 다른 개발자가 동일한 성능을 재현하거나 개선하는 기준이 된다. 지원 언어는 영어, 프랑스어, 스페인어, 독일어, 이탈리아어, 포르투갈어 등 총 6개 국어다. 이러한 개방적 구조는 단일 소비자용 GPU 환경에서도 단 몇 분 만에 파인튜닝(Fine-tuning)을 완료해 도메인 특화 모델을 만들 수 있는 기반이 된다.

듀얼 모드 추론 방식과 하드웨어 실행 조건

CPU 전용 환경에서 실행할 경우 생성 작업 기준 초당 5~8토큰을 처리한다. 모델을 처음 구동하면 약 6.7GB의 데이터를 `~/.cache/huggingface/hub/` 경로로 다운로드하며, `transformers>=4.53.0` 버전이 필수적으로 설치되어야 아키텍처 인식 오류 없이 실행 가능하다. 저사양 하드웨어에서도 구동 가능한 메모리 효율적 설계를 갖췄다.

모델 구조는 다음 단어를 예측하며 텍스트를 생성하는 디코더 전용 트랜스포머(Decoder-only Transformer) 방식을 따른다. 메모리 효율을 높이는 GQA(Grouped Query Attention)를 적용해 여러 개의 쿼리가 하나의 키와 값 쌍을 공유하게 함으로써 메모리 대역폭 병목을 완화했다. 또한 위치 임베딩을 제거한 NoPE(No Positional Embeddings) 기술을 통해 고정된 위치 정보 대신 상대적 위치 관계를 학습하여 입력 길이 제약을 유연하게 처리한다. 이러한 설계는 70B 규모의 대형 모델보다 낮은 지연 시간과 비용으로 실무에 적용 가능한 응답 속도를 낸다.

사용자는 작업 복잡도에 따라 구조적 사고를 수행하는 think 모드와 빠른 응답 중심의 no_think 모드를 선택적으로 사용한다. 복잡한 추론이 필요한 단계에서는 think 모드가 내부적으로 논리적 단계를 밟으며 정답을 도출하고, 단순 질의응답에는 no_think 모드를 사용해 응답 속도를 극대화한다. 하드웨어 가속기 사용 여부는 아래 코드로 확인한다.

python
import torch
print(f'Device: {torch.cuda.get_device_name(0) if torch.cuda.is_available() else "CPU"}')

모드 전환은 모델 로드 후 추론 설정에서 제어하며, 각 모드에 따라 토큰 생성 경로와 소요 시간이 달라진다.

python
from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "SmolLM3-3B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)

no_think 모드: 빠른 응답

inputs_no = tokenizer("2+2는?", return_tensors="pt")

out_no = model.generate(**inputs_no, max_new_tokens=10)

print(tokenizer.decode(out_no[0]))

think 모드: 구조적 추론

inputs_think = tokenizer("2+2는?", return_tensors="pt")

out_think = model.generate(**inputs_think, max_new_tokens=50, mode="think")

print(tokenizer.decode(out_think[0]))

벤치마크 수치로 분석한 3B 모델의 강점과 한계

특정 제약 조건을 지켜 답변하는 지시 이행 능력은 파라미터 규모가 더 큰 모델보다 우수하다. IFEval(지시 이행 벤치마크)에서 SmolLM3는 76.7점을 기록해 Qwen3-4B의 68.9점을 앞섰다. BFCL(도구 호출 벤치마크)에서는 92.3점을 기록하며 Llama의 도구 호출 파인튜닝 모델과 동일한 수준의 성능을 보였다.

다국어 지식 처리와 기본 추론 성능 역시 동급 규모 모델 대비 높다. Global MMLU(다국어 상식 QA) 수치는 53.5점으로 Llama-3.1-3B가 기록한 46.8점보다 높다. 특히 별도의 예시를 제공하지 않고 작업을 수행하는 제로샷(Zero-shot) 벤치마크에서 Llama-3.2-3B와 Qwen2.5-3B의 성능을 모두 상회하며, 학습 데이터의 질적 향상이 제로샷 성능 상승으로 이어졌음을 입증했다.

반면 방대한 세계 지식을 인출해야 하는 작업에서는 명확한 한계를 보인다. 심층적인 세계 지식이나 세부적인 트리비아, 여러 단계의 관련 정보를 연결해 결론을 도출하는 멀티홉 추론에서는 성능이 낮다. 역사적 맥락이 풍부한 장문의 글을 창작하는 작업 역시 지식 밀도가 낮아 부적합하다. 2025년 2월 발표된 SmolLM2 논문은 1B에서 3B 규모의 모델에서 단순히 파라미터 수를 늘리는 것보다 학습 데이터를 정교하게 선별하는 큐레이션 방식이 성능 향상에 더 효과적임을 입증했다.

이러한 지식 인출의 한계에도 불구하고, 특정 도구와 연동하는 기능적 강점을 활용하면 실무적인 자동화 시스템 구축이 가능하다.

네이티브 도구 호출을 활용한 다국어 티켓 라우터 구현

API 키 없이 오프라인으로 실행되는 SmolLM3는 티켓당 발생하는 비용이 0원이며 외부로 데이터가 전송되지 않는다. 이는 개인 식별 정보(PII)를 다루는 고객 지원 시스템에서 데이터 유출 위험을 차단하고, 네트워크 지연 시간과 전송 비용을 제거해 인프라 운영 효율을 높인다. 서버 내부에서 모든 추론이 완결되므로 보안 정책이 엄격한 금융이나 의료 분야 기업 환경에서도 도입이 가능하다.

다국어 티켓 라우터는 전체 라우팅 로직을 카테고리 분류, 언어 감지, 동일 언어 응답 생성 순으로 진행한다. 특히 모델이 내놓은 결과의 신뢰도가 0.70 미만일 때는 자동으로 인간 상담사에게 전달하는 에스컬레이션(Escalation) 구조를 갖춰 오답으로 인한 고객 불만을 방지한다.

외부 데이터베이스와 연동하기 위해 네이티브 도구 호출 기능을 사용한다. 도구의 기능과 입력값은 JSON Schema로 정의하며, 정의된 스키마는 채팅 템플릿의 `xml_tools` 항목을 통해 모델에 전달된다. 모델이 도구 사용이 필요하다고 판단하면 `<tool_call>` 블록을 출력하고, 개발자는 이 블록을 파싱하여 실제 데이터베이스 함수를 호출한 뒤 결과값을 다시 모델에 주입하는 순환 구조를 구현한다. XML 기반의 구조화된 출력은 정규표현식 등으로 쉽게 추출할 수 있어 파이프라인 구축이 용이하다.

주문 상태를 조회하는 lookup_order_status 도구를 정의하고 호출하는 라운드트립 구현 코드는 다음과 같다.

python

Tool definition as JSON Schema

tools = [

{

"name": "lookup_order_status",

"description": "Get the current status of a customer order",

"parameters": {

"type": "object",

"properties": {

"order_id": {"type": "string", "description": "The order ID to lookup"}

},

"required": ["order_id"]

}

}

]

Example of a tool call roundtrip

1. Model generates <tool_call>

2. System executes lookup_order_status(order_id="12345")

3. Result "Shipped" is fed back to model

4. Model generates final response: "Your order 12345 has been shipped."

단일 GPU 환경의 도메인 특화 파인튜닝 전략

특정 작업에 특화된 3B 모델은 단일 소비자용 GPU에 전체가 탑재되어 70B 모델 대비 운영 비용을 1/10 수준으로 낮춘다. 문서 분류나 다국어 고객 응답 같은 특정 파이프라인에서는 3B 모델이 70B 모델과 대등하거나 더 나은 성능을 내며, 모델 로드 시간이 수 초 내외로 짧아 하드웨어 제약이 심한 환경에서 효율적인 선택지가 된다.

효율적인 학습을 위해 TRL의 `SFTTrainer`와 PEFT의 LoRA(Low-Rank Adaptation) 어댑터를 사용한다. LoRA는 전체 파라미터의 1% 미만만 학습시킨 뒤 학습된 어댑터를 베이스 모델에 병합하는 방식으로, 방대한 컴퓨팅 자원 없이도 도메인 특유의 전문 어휘와 응답 스타일을 빠르게 최적화한다.

3 에포크(Epoch)를 진행한 결과 손실 값(Loss)이 1.8에서 0.3으로 감소하여 모델이 주어진 작업 형식을 정확히 학습했음을 확인했다. 단순한 프롬프트 엔지니어링보다 분류 정확도와 응답 품질이 향상되며, 모델이 출력하는 신뢰도 점수를 활용해 불확실한 응답을 필터링하는 구조를 구축할 수 있다.

bash

SFTTrainer training logs

Epoch 3/3: Loss 0.3

Fine-tuned model saved to ./smollm3-ticket-router/merged

단일 소비자용 GPU 환경에서 특정 도메인의 분류 및 응답 파이프라인를 구축하려는 경우, 1% 미만의 파라미터 튜닝만으로 충분한 실효성을 거둘 수 있는지 검증하는 것이 중요하다.

70B 모델 대비 운영 비용을 획기적으로 낮추면서도 도메인 특화 성능을 확보할 수 있다.