• Turing Post Korea
  • Posts
  • Topic #29: 허깅페이스의 SmolLM2 모델이 알려주는 '소형모델' 성능의 비밀

Topic #29: 허깅페이스의 SmolLM2 모델이 알려주는 '소형모델' 성능의 비밀

SLM에서 '데이터셋 품질'과 '적절한 훈련 전략'의 중요성

글을 시작하며

SLM (Small Language Model)이라는 용어, 이미 익숙하신 분들이 많으실 겁니다. 말 그대로 ‘작은 언어모델’이라는 거죠. SLM과 LLM을 구분하는 아주 구체적인 잣대가 있는 건 아니지만, 모델의 파라미터 수 기준으로는 대략 수백만 ~ 수십억 개 수준의 모델이 SLM에 해당된다고 보면 되겠습니다.

SLM은 말 그대로 ‘작고 경량이기 때문’에, 스마트폰 같은 엣지 디바이스에서도 실행할 수 있고, 그래서 더 많은, 다양한 사용자가 AI 서비스를 사용할 수 있게 해 줍니다 - 한 가지 문제라면, SLM은 특히 학습 데이터의 품질에 아주 민감하다는 건데요. 그래서 데이터셋의 ‘품질’이 LLM보다 SLM의 경우에 더 중요하다고들 하죠.

오늘은, 한 번 허깅페이스의 SmolLM 모델 패밀리를 통해서 ‘작은 모델을 학습시키는데 있어서 데이터셋의 역할’을 살펴볼까 합니다. 특히 SmolLM2 모델을 중심으로 해서, 허깅페이스가 ‘고품질의 데이터셋’, 그리고 ‘소형 AI 모델이 학습 전략’에 어떤 기여를 했는지 확인해 볼 기회도 될 것 같습니다.

오늘 에피소드에서는 아래와 같은 내용을 다룹니다:

‘소형 모델’ 훈련 이면(裏面)의 비밀

자, 소형 모델인데도 더 큰 모델보다 때로는 좋은 성능을 보일 때가 있죠? 그 비결은 뭘까요?

이 차이를 만들어내는, 몇 가지의 핵심적인 전략이 있습니다:

  1. Distillation(증류)
    더 큰 모델이 가지고 있는 지식, 능력을 유지하면서, 작은 모델이 이걸 ‘모방’하도록 훈련시키는 방법

  2. Quantization(양자화)
    가중치 당 더 적은 비트수를 사용한다든가 하는 방식으로 ‘수치 데이터’의 정밀도를 줄여서, 모델을 더 작고 효율적으로 만드는 방법

  3. 처음부터 훈련 (Training from Scratch)
    아예 처음부터, 파라미터 수가 작더라도 높은 성능을 발휘하도록, 데이터셋도 신중하게 선별해서 만들고 아키텍처도 최적화하는 등, 소형 모델에 맞게 설계하고 훈련하는 방법

오늘 이야기할 내용은 바로 ‘세 번째 전략’입니다 - ‘고품질 학습 데이터’를 사용해서 모델의 추론 능력을 향상시키는 방법이죠.

용량이 적은 소형 모델에 있어서 데이터의 중요성은 상대적으로 대형 모델의 경우보다 더 큽니다. 랜덤한 정보를 암기하는게 아니라, 필수적으로 중요한 지식, 추론 기술 같은 걸 신중하게 훈련하고 최적화해야 하니까요. 그리고, 소형 모델은 데이터의 노이즈에 더 민감해서, 다양한 데이터 소스를 신중하게 선택, 필터링하고 밸런스를 잘 맞추는게 중요합니다. 특히, 모델이 효과적으로 학습을 할 수 있게끔 전문화된 데이터셋 (수학이라든가 코드 데이터셋 같은 것들이겠죠)들의 적절한 조합을 찾아내는 것도 중요하구요.

요즘 오픈소스 이야기가 많지만, 사실 소형 모델을 어떻게 훈련하는지에 대한 세부 사항은 잘 공유되지 않습니다. 그런데 역시 ‘오픈소스’에 대해 강한 의지를 가진 허깅페이스의 연구자들이 SmolLM, SmolLM2, SmolVLM, SmolVLM2 등 소형 모델 제품군을 만들고 훈련 가이드까지 제공하면서 AI 커뮤니티에 기여한 겁니다.

SmolLM에서 SmolVLM2까지

SmolLM 모델군에 여러 개의 모델들이 있는데, 이 모두가 ‘공통적인 개념’으로 접근을 했을까요? 2024년 7월 SmolLM이 처음 출시되었을 때부터, 허깅페이스는 아래와 같은 개념으로 SmolLM 모델군의 개발 전략을 정리했습니다:

  • 스마트폰부터 노트북까지, 로컬 디바이스에서도 사용할 수 있는 ‘강력한 소형 모델을 최대한 많이’ 개발한다

  • ‘고품질의 데이터셋’으로 이 모델들을 훈련시킨다

  • ‘완전히 오픈된 모델과 데이터셋’을 개발한다

SmolLM 모델 시리즈의 첫번째 패밀리는 세 가지 사이즈로 나왔습니다:

  • 파라미터 수 135M (아주 경량의 모델)

  • 파라미터 수 360M (중간 사이즈, 균형잡힌 모델)

  • 파라미터 1.7B (대형 모델보다는 작지만 상대적으로 강력한 모델)

SmolLM이 우수한 성능을 달성한, 고성능의 온디바이스 SLM으로 자리잡은 그 비결은 SmolLM-Corpus라는 고품질의 데이터셋으로 진행한 훈련입니다:

  • Cosmopedia v2
    AI로 생성한, 34,000개가 넘는 주제의 교과서, 그리고 이야기들과 코드로 구성된 280억 개의 토큰 데이터입니다. 이것들 중에 40%는 중학교 수준의 컨텐츠 (상식과 과학 지식 중심), 30%는 대학교 수준의 컨텐츠, 그리고 나머지 30% 정도의 기타 데이터 소스가 혼합되어 있습니다.

  • FineWeb-Edu
    광범위한 FineWeb 데이터셋으로부터 선별한, 교육 컨텐츠를 담고 있는 웹 페이지의 모음인데, 2,200억 개의 단어로 구성됩니다.

  • Python-Edu
    40억 개 단어 규모의 고품질 Python 코드 예제들입니다.

이 SmolLM-Corpus는 교육적인 가치가 높은 컨텐츠로 구성되어 있고, 합성 데이터와 실제 교육자료를 결합해서, SmolLM 모델이 다양한 도메인에서 높은 성능을 발휘하게 되는 핵심 역할을 합니다.

허깅페이스는 135M 버전, 그리고 360M 버전을 훈련시키는데 SmolLM-Corpus에서 6,000억 개의 토큰을 사용했고, 1.7B 버전은 1조 개의 토큰으로 훈련했구요. 이들 간에는 아키텍처도 다릅니다.

135M, 그리고 360M 모델은 Grouped-Query Attention(GQA)를 사용해서 추론 속도를 높입니다.

Grouped Query Attention(GQA)은, 트랜스포머 모델의 어텐션 메커니즘을 최적화한 것으로, 추론 (Inference) 속도와 메모리의 효율성을 개선하기 위해 만들어졌는데요.

기본적인 MHA (Multi-Head Attention)에서는 각각의 어텐션 헤드가 개별적으로 쿼리(Q), 키(K), 값(V) 프로젝션을 가지지만, GQA에서는 여러 쿼리(Q) 헤드가 동일한 키(K)와 값(V) 프로젝션을 공유합니다.

편집자 주

135M, 360M 모델의 경우, 모델 사이즈를 작게 유지하면서도 성능을 높이기 위해서 ‘너비보다 깊이를 우선시’합니다 - 즉, 레이어당 더 적은 수의 뉴런을 가지고 있고, 레이어 숫자가 많다는 겁니다. 반면에, 1.7B 모델의 아키텍처는 전통적인 GPT 스타일의 트랜스포머와 비슷하구요.

아래 표에서 SmolLM 모델이 상식적 추론, 세계 지식 (World Knowledge), 코딩 기술 영역에서 보여주는 성능입니다:

Image Credit: SmolLM 허깅페이스 블로그

이어서 2024년 11월 2일, 허깅페이스에서는 세 가지 크기 (파라미터 수 135M, 360M, 1.7B)의 SmolLM2를 공개했습니다. 이 업데이트 버전은, 이전의 데이터셋에 더해서 추가로 수학 및 코드 데이터셋을 선별하고 훈련 기술도 개선해서 SmolLM보다 더 나은 성능을 보이도록 한 모델입니다 - 여러 단계를 걸쳐서 11조 개 단어 규모의 데이터로 훈련시켰다고 하는데요. 이 모델에 대한 논문은 2025년 2월 4일 발표되었는데, 그 이후에 더 많은 관심과 인기를 받았습니다. 우리도 이 글에서 SmolLM2에 대해서 좀 더 자세히 이야기를 하려고 한다고 말씀드렸죠.

2024년 11월 26일에 허깅페이스는 Smol 모델을 ‘멀티모달’ 영역으로 확장했습니다. 역시 규모는 작지만 강력한 멀티모달 모델 SmolVLM은, 이미지에 대한 질문에 답변하고, 사진을 설명하고, 여러 개의 이미지를 기반으로 이야기를 만듭니다. 이미지가 없을 때 일반적인 텍스트를 다루는 AI로도 작동하지만, 이미지를 생성할 수는 없습니다.

Image Credit: SmolVLM 블로그

SmolVLMIdefics3라는 대형 모델을 기반으로 하고, 소형의 언어 모델 백본인 SmolLM2 1.7B를 활용합니다. 컨텍스트 윈도우는 RoPE(Rotary Positional Embedding) 기본값을 증가시켜서 16,000 토큰까지 확장되었습니다.

Idefics3 모델은 허깅페이스에서 개발한 거대 멀티모달 AI 모델로, 텍스트와 이미지를 모두 이해하고 처리할 수 있는 모델입니다.

편집자 주

SmolVLM이 가지고 있는 특징은 다음과 같습니다:

  • 향상된 이미지 압축 능력
    ‘픽셀 셔플(Pixel Shuffle) 전략’을 사용해서 이미지 데이터를 더 많이 압축합니다 (이전 설계의 ‘4배 압축’보다 더 큰 ‘9배 압축’). ‘픽셀 셔플’은 깊이(채널) 차원의 데이터를 공간 차원(높이와 너비)으로 재배열하는데, 이렇게 해서 처리 속도를 높이고 메모리의 사용량을 줄여줍니다. 참고로 ‘픽셀 셔플’은 딥러닝 모델에서 이미지를 처리할 때 계산의 효율성, 메모리의 효율성을 높일 때 많이 사용되는 기법입니다.

  • 시각적 토큰 인코딩
    SmolVLM은 큰 이미지를 효율적으로 처리하기 위해서 384×384 패치당 81개의 시각적 토큰으로 이미지를 변환합니다.

  • 사용자가 지정할 수 있는 해상도
    사용자는 성능과 메모리 사용량 간의 균형을 맞추기 위해서 이미지 품질을 조정할 수 있습니다.

SmolVLM 개발자들은 ‘학습 데이터’에 특별히 신경을 썼는데요. 문서의 이해 (25%), 그리고 이미지 캡셔닝 (18%)에 중점을 둔 The Cauldron과 Docmatix 데이터셋으로 훈련을 했고, 특별한 주의를 기울였습니다. 따라서 문서 이해(25%)와 이미지 캡셔닝(18%)에 중점을 두되 시각적 추론이나 차트 분석 같은 기술도 포함해서 The Cauldron과 Docmatix 데이터셋으로 훈련을 했습니다.

Image Credit: SmolVLM 모델 카드

우선, SmolVLM은 2B의 파라미터 사이즈로만 출시되었고, 이후 (2025년 1월 23일) 256M과 500M 두 가지 크기가 추가로 출시되었습니다.

Image Credit: Merve 트위터

이미지 모달리티를 염두에 두고 설계한 것이긴 하지만, SmolVLM가 워낙 ‘긴 컨텍스트’를 잘 처리하기 때문에 비디오 모달리티도 분석할 수 있습니다 - 비디오에서 여러 개의 프레임을 ‘샘플링’하는 방식으로(간단한 파이프라인에서는 최대 50개의 프레임), SmolVLM은 비디오 벤치마크에서도 꽤 경쟁력 있는 성능을 보여줍니다.

그렇지만, 진짜 제대로 된 비디오 추론 능력은 최근 2025년 2월 20일에 등장한 SmolVLM2가 보여줍니다. 이 모델은 우리가 휴대폰이나 노트북으로 TV를 보듯이 비디오를 ‘시청’하고 이해할 수 있는 모델입니다 - 즉, 비디오 클립에서 무슨 일이 일어나고 있는지 분석할 수 있습니다.

허깅페이스는 SmolVLM2를 세 가지 버전으로 출시했습니다:

  • 256M 모델: 비디오 모델이 얼마나 작아질 수 있는지 ‘한계를 시험’한다고 해야 할까요? 그 정도 작은, 실험적인 모델입니다.

  • 500M 모델: 2.2B 사이즈 모델의 비디오 이해 능력과 거의 맞먹는, 그렇지만 사이즈는 좀 작은 모델입니다.

  • 2.2B 모델: 복잡한 비디오 작업을 처리할 때 필요한 핵심 모델입니다 - 이미지에 어떤 텍스트가 있나 읽는다든가, 사진에 찍혀 있는 수학 문제를 푼다든가, 과학과 관련된 질문에 답변한다든가 하는 일에 뛰어난 성능을 보여줍니다.

SmolVLM2는 여러 가지 ‘멀티 모달 문제 해결’을 이전의 SmolVLM 제품군보다 잘 하는 모습을 보여줍니다.

Image Credit: SmolVLM2 블로그

그리고 다른 조직에서 개발한 많은 비디오 모델들보다 메모리도 훨씬 적게 사용하네요.

Image Credit: SmolVLM2 블로그

SmolVLM2 모델군은 Meta GenAI와 스탠포드의 Apollo 비디오 LLM을 훈련할 때 사용한 데이터셋을 혼합해서 훈련했는데, 허깅페이스의 표현에 따르면 ‘적당한 양의 텍스트 데이터, 그리고 다른 모달리티 중에는 비디오 중심으로 되어 있는 데이터를 약간 믹스’하는 방식으로 훈련을 진행했다고 합니다 - ‘적당히’, ‘약간’이라는 표현들 때문에 애매하긴 하지만, Meta GenAI나 Apollo 비디오 LLM의 훈련 데이터를 살펴볼 때, 대략적으로는 텍스트 데이터가 20~30%, 비디오 데이터가 전체 모달리티 중에서는 제일 많은 30~40% 정도가 아니었을까 추산해 봅니다.

자, 어쨌든, 이렇게 여러 가지의 소형 언어모델들 중에서, SmolLM2가 특히 ‘어떻게 경쟁력있는 소형 모델을 구축할 수 있는가’에 대한 인사이트를 주는 모델이라고 볼 수 있는데요. 조금 더 자세히 살펴볼까요?

SmolLM2: 훈련 데이터의 힘

대부분의 언어 모델은 웹에서 가져온 텍스트로 훈련을 시키지만, 성능이 뛰어난 최신 AI 모델들의 경우에는 수학, 프로그래밍, 복잡한 문제를 추론하고 해결하는 능력을 향상시키기 위해서 ‘지시사항을 잘 따르게’ 하기 위한 특수한 데이터들도 함께 포함해서 훈련을 시키죠.

이런 관점에서, SmolLM2 연구팀은 아래와 같은 방향으로 데이터셋을 구성하고 모델을 훈련했습니다:

  • 여러 가지 영역에서 균형잡힌 우수한 성능을 달성하기 위해서, 다양한 유형의 훈련 데이터 (웹 텍스트, 코드, 수학, 지시사항 - Instructions) 품질을 우선 평가했습니다.

  • 기존 데이터셋이 너무 작거나 품질이 만족스럽지 않아서, 새로운 고품질의 데이터셋 (수학 데이터셋인 FineMath, 코딩 데이터셋인 Stack-Edu, ‘Instruction’ 데이터셋 SmolTalk)을 만들었습니다.

  • SmolLM2가 효과적으로 학습을 할 수 있게끔, 데이터의 ‘조합’을 단계별로 조정하는 ‘다단계 훈련 과정’을 적용했습니다.

그럼, 위의 내용을 순서대로 한 번 살펴보겠습니다.

Image Credit: Loubna Ben Allal의 트위터

새로운 데이터셋으로 훈련하기 위한 최적의 조합

1. 영문 데이터

연구자들은 먼저 일반적인 웹 데이터로 SmolLM2를 훈련시킨 다음, 수학과 코딩 데이터셋을 사용해서 파인튜닝을 했습니다. 이 과정에서 두 가지의 인기 있는 고품질 웹 데이터셋을 중점적으로 활용했다고 합니다:

  • FineWeb-Edu
    교육 콘텐츠에 중점을 둔 데이터셋입니다. MMLU, ARC, OpenBookQA 같은 교육 기반의 테스트에서 더 나은 성능을 보여줬습니다.

  • DCLM
    온라인 토론 데이터와 관련한 인사이트 등을 포함해서, 더 다양하면서도 대화형의 텍스트가 들어있는 데이터셋입니다. 결과로 보자면, 이 데이터셋이 추론 및 상식 테스트 (HellaSwag, CommonSenseQA)에서 더 우수한 결과를 보여주고 다양한 대화가 가능하게 해 준다는 걸 보여줬습니다.

두 가지 데이터셋 모두 서로 강점이 달라서, 다양한 비율로 혼합하는 게 좋은 전략일 겁니다. 연구자들은 60% FineWeb-Edu + 40% DCLM 조합이 전반적으로 가장 좋은 결과를 만들어준다는 걸 발견했구요. 한다는 것을 발견했습니다. 이렇게 해서 SmolLM2 훈련에 사용할 총 5.1조 개의 고품질 영어 텍스트 토큰을 만들었습니다.

2. 수학 데이터: 새로운 FineMath 데이터셋 만들기

OpenWebMath(OWM)라든가 InfiMM-WebMath 같은 수학 데이터셋들이 있지만, SmolLM2 개발진들이 보기에는 썩 맘에 들지 않았나 봅니다. 그래서 아래의 포인트에 초점을 두고, 540억 토큰 규모의 FineMath라는 새로운 데이터셋을 구축했다고 합니다:

  • 단순한 공식이 아닌 단계별 수학 문제 해결을 가이드한다.

  • 중학교에서 고등학교까지 수준의 수학으로, 더 균형 잡힌 내용을 포함한다.

  • AI를 사용해서, 가장 좋은 수학 콘텐츠를 평가하고 선택하는 필터링을 적용한다.

FineMath는 기본적인 수학 문제에서 답변의 정확도를 두 배로 높이고, 고급의 수학 성능을 6배 향상시키는 모습을 보이는 등, 이전의 데이터셋보다 훨씬 더 나은 성능을 보여줬습니다. 결국, SmolLM2 개발진이 생각한 대로, 명확한 목표를 가지고 더 잘 구조화된 수학 데이터를 사용한다면, AI의 추론 능력도 더 나아진다는 걸 보여줬다고 할까요?

3. 코드 데이터: Stack-Edu

프로그래밍 코드로 모델을 훈련시키면 전반적인 추론 능력이 향상됩니다. SmolLM2의 코딩 능력을 업그레이드하기 위해서, 허깅 페이스에서는 StarCoder2Data의 필터링된 버전, Stack-Edu를 만들었는데요. 그 특징은 다음과 같습니다:

  • 교육용 코드 샘플

  • 잘 문서화된 프로그램들

  • 15가지의 주요 프로그래밍 언어를 커버

이 데이터셋을 구성하는 과정에서도, 연구자들은 AI를 사용해서 코드의 ‘교육적 품질’을 평가하고 가장 좋은 부분만 남겨서 아주 잘 정제된 1,250억 토큰의 데이터셋을 만들었습니다. Stack-Edu는 그 크기는 작은 데이터셋이지만 효율적이고, 대부분의 프로그래밍 언어에서 AI의 코딩 능력을 향상시켜 줍니다. Java 언어의 경우에는 약간 낮은 필터 - 즉 약간 저품질의 데이터가 포함되어 있는 상태 - 로 가장 좋은 성능을 보여주었는데, 이는 각각의 언어마다 조금씩 다른 훈련 전략이 필요할 수도 있다는 점을 시사합니다.

Image Credit: SmolLM2 논문

SmolLM2 모델의 훈련을 가장 잘 하기 위해서 이 모든 데이터셋을 어떻게 조합해야 할까요?

위에서, 데이터를 스마트하게 조합하는 것이 뛰어난 성능의 핵심이라고 말씀드렸었죠? 또 다른 중요한 점은, 더 오래 훈련을 하면 소형 모델이 비용을 낮추면서도 성능은 더 나아진다는 점입니다. 그래서, 허깅 페이스 팀은 다단계의 훈련 전략을 고안했습니다.

다단계 훈련 전략

SmolLM2-1.7B는 11조 규모의 토큰으로 훈련했는데, 여기서 ‘다단계의 훈련 방식’을 사용했습니다. 최상의 성능치를 얻기 위해서, 훈련을 진행해 가면서 데이터의 조합, 즉 ‘데이터 믹스’를 조정했구요. 이 과정에서, 연구자들은 네 가지의 핵심적인 원칙을 따랐다고 해요:

  1. 모델 성능이 어떻게 나타나는가 모니터링하면서, 약점을 수정한다는 관점에서 데이터셋의 믹스를 조정했습니다.

  2. 최고의 수학 학습 데이터 (FineMath) 그리고 코드 데이터 (Stack-Edu)는 최종 단계에서 사용하기 위해서 보존해서, 이 데이터셋의 모델 성능에 대한 영향력을 극대화했습니다.

  3. 데이터셋 전체를 한꺼번에 추가하는게 아니라, 특히 수학과 코딩 데이터를 중간 정도 크기로 나눠서 점진적으로 혼합해 가면서 훈련했습니다.

  4. 지나치게 많이 반복하지 않고, 4-5회의 훈련 라운드 정도로 한계치를 정했습니다.

자, 그럼 SmolLM2의 훈련에 적용된 4단계의 훈련 과정을 살펴보시죠:

Image Credit: SmolLM2 논문

1단계: 일반적인 지식 중심 (~ 6조 규모 토큰)

  • 이 단계에서는 ‘영어로 된 웹 데이터’ - 훈련 데이터의 90% 정도를 차지 - 에 중점을 두게 되는데, 이 중에 FineWeb-Edu의 교육 콘텐츠 60%와 DCLM의 일반 Q&A 및 추론 데이터 40% 정도를 포함시켰다고 합니다.

  • 이 단계에서 코딩 데이터는 훈련 데이터의 10% 정도 뿐이었습니다. 수학 데이터는 아직 포함하지 않았구요.

당연하게도, 이 단계에서 모델의 일반 지식에 대한 성능은 괜찮았지만, 수학과 코딩 능력은 그리 좋지 않았죠.

2단계: 코딩 및 수학 데이터 추가 (6조 ~ 8조 규모 토큰)

  • OpenWebMath(OWM)를 사용해서 수학 데이터 (5% 정도)를 집어넣었습니다. 코딩 데이터는 20% 수준으로 증가시켰구요.

  • 영어로 된 웹 데이터는, FineWeb-Edu 데이터셋과 DCLM 데이터셋의 비중은 비슷하게 유지하면서 전체적으로는 75% 정도로 유지했습니다.

2단계에서 SmolLM2의 코딩 능력은 향상되었지만, 수학 성능은 여전히 그리 만족스럽지 않았습니다.

3단계: 수학과 코딩 영역 성능의 추가 개선 (8조 ~ 10조 규모 토큰)

  • InfiMM-WebMath 데이터셋을 추가해서 수학 데이터셋의 양을 10% 증가시켰습니다.

  • 코드를 더 잘 학습하도록, StarCoderData를 드디어 Stack-Edu로 대체했습니다.

  • 모델이 코드에 대한 설명을 더 잘 이해하게끔 Jupyter Notebooks 데이터셋을 추가했습니다.

  • 영어 웹 데이터 믹스를 FineWeb-Edu 40%, DCLM 60%로 조정했습니다

이 단계를 거치고 나서 성능은 향상되었지만, 정화도가 일시적으로 하락하는 ‘Loss Spike (손실 스파이크)’가 있었습니다 - 이건 훈련 중에 Loss 값이 갑작스럽게, 그리고 일시적으로 증가하는 걸 의미합니다. 결국에는 모델이 성능을 회복하고 계속해서 개선되었다고 합니다.

4단계: 최종적인 파인튜닝과 마무리 (10조 ~ 11조 규모 토큰)

  • 이 단계에서, 연구자들은 학습률 (Learning Rate)을 점차 낮췄습니다 (이 과정을 ‘Decay’라고 합니다).

  • 가장 고품질의 수학 데이터인 FineMath4+, 그리고 InfiWebMath-3+를 추가했습니다. 이렇게 해서, 수학 데이터가 훈련 데이터의 14% 정도가 되었습니다.

  • 더 많은 프로그래밍 언어를 포함하도록 Stack-Edu를 확장했습니다.

  • DCLM 데이터셋의 비율을 더 높이면서 영어 웹 데이터의 총 비중은 58%를 유지했습니다.

이 단계에서, 일반적인 지식을 업그레이드하면서 동시에 수학과 코딩 성능이 가장 많이 개선되었습니다.

Image Credit: SmolLM2 논문

위에서 설명드린, 4단계의 ‘다단계 훈련’은 SmolLM2 모델들 중에서도 ‘가장 큰’, 1.7B 모델의 훈련에서 사용한 접근 방법입니다. 360M, 그리고 135M 버전은 컴퓨팅 파워 요구사항도 적고 용량도 적어서, 훈련 과정을 더 단순화했다고 합니다 - 다단계 훈련이 아니라 한 번의 훈련을 했지만, 대신 전체적으로 품질의 일관성이 높은, 고품질 데이터를 사용해서 훈련했습니다. 이 때 사용한 훈련 데이터 믹스는 아래와 같이 정제했구요:

  • 품질이 낮은 샘플을 제거하기 위해서 FineWeb-Edu의 분류기로 DCLM을 필터링했습니다.

  • 코딩을 위한 Stack-Edu, 수학적 추론을 위한 InfiMM-WebMath 그리고 FineMath, 그리고 구조화된 지식을 위한 Cosmopedia를 처음부터 포함시켰습니다.

SmolLM2-360M은 4조 개의 토큰으로, SmolLM2-135M은 2조 개의 토큰으로 훈련했습니다.

SmolLM2가 ‘더 긴 텍스트’를 잘 다루게 하자

위에서 이야기한 ‘4단계 훈련’이 뛰어난 성능의 비밀 전부는 물론 아닙니다. 다양한 복잡한 작업들을 처리하려면, 더 긴 컨텍스트를 효과적으로 처리해야 했죠. 이걸 위해서, 연구자들은 SmolLM2의 컨텍스트 길이를 2K에서 8K 단어로 증가시켰습니다 - Dolma 데이터셋의 일부 (20%), DCLM과 FineWeb-Edu 데이터셋의 교육 및 일반 웹 텍스트 일부 (각각 10%), 그리고 앞에서 설명한 4번째 단계의 데이터셋 믹스 (60%)를 조합한 데이터 믹스를 사용했다고 해요.

이렇게, 모든 훈련의 측면을 다 결합하고 나서야, SmolLM2-1.7B는 최첨단의, SOTA 성능을 달성할 수 있었습니다. 그런데, 이게 훈련의 마지막 단계는 아닙니다!

Image Credit: SmolLM2 논문

Instruction-Tuning과 Preference Learning

사후 훈련 (Post-Training), 그 의미는 이제 다들 아시죠? 사후 훈련은 모델이 더 추론을 잘 하게, 응답을 정확하게 할 뿐 아니라 ‘사용자의 지시’에 적절하게 잘 따르게끔 하는 훈련을 할 수 있는, 아주 중요한 단계죠.

SmolLM2 모델 개발 과정에서는 어떤 사후 훈련이 적용되었는지 볼까요?

SmolTalk 데이터셋으로 Instruction Tuning

SmolLM2-1.7B의 SFT (Supervised Fine-Tuning; 지도 파인튜닝)을 하기 위해서, 연구자들은 SmolLM2가 지시를 이해하고 따르는 능력을 향상시키기 위한 데이터셋, SmolTalk 데이터셋을 만들었습니다. 이 데이터셋은 MagPie-Ultra 데이터셋을 필터링해서 만들었다고 하는데, 아래와 같은 내용을 포함합니다:

  • 대화 데이터(MagPie-Ultra에서 추출)
    SmolLM2가 자연스러운 대화를 처리할 수 있도록 가르칩니다.

  • 작업별 특화 데이터
    복잡한 지시에 따르기(Smol-Constraint), 요약(Smol-Summarization), 텍스트 다시 쓰기(Smol-Rewrite) 같은 영역에서 SmolLM2가 더 좋은 성능을 보이게끔 도와줍니다.

  • 수학 데이터
    SmolLM2의 수학적 추론 능력을 향상시켜 줍니다.

  • 코드 데이터, 그리고 긴 컨텍스트 데이터 (LongAlign에서 추출)
    코딩 작업을 잘 하게끔, 그리고 긴 텍스트가 입력되었을 때 더 잘 처리하게 만들어줍니다.

  • PersonaHub, 이메일, 트윗 등 데이터셋에서 추출한 페르소나 기반 데이터
    SmolLM2이 다양한 어조라든가 스타일로 글을 쓸 수 있도록 가르쳐 줍니다.

SmolTalk는, 여러 개의 벤치마크에서 SmolLM2 모델이 전반적으로 성능이 뛰어날 뿐 아니라 더 명확하게, 더 구조화된, 더 유용한 응답을 만들어낼 수 있도록 해 줬다고 평가할 수 있습니다.

나머지 두 개의 모델인 SmolLM2-360M, SmolLM2-135M에 대해서 SFT를 할 때는, 함수 호출이라든가 하는 복잡한 작업은 제거하고 소형 모델의 상황에 맞는, 더 쉽게 처리할 수 있는 지시에 집중하는 SmolTalk의 단순화된 버전을 사용했습니다.

Preference Learning

SmolLM2 모델 훈련의 마지막 단계입니다.

여기서는 DPO (Direct Preference Optimization) 기법으로 SmolLM2-1.7B 모델이 더 좋은 품질의 응답을 선택할 수 있도록 가르치죠. 연구자들은 추론 능력, 그리고 지식을 향상시켜주는데 가장 효과적인 UltraFeedback 데이터셋을 사용했는데, 학습률 (Learning Rate)을 조정하면서 두 번의 라운드에 걸쳐서 SmolLM2를 훈련시켰습니다.

이렇게 모든 튜닝과 선호도 학습까지 마친 후에 우리 손에 주어진 모델이 바로, SmolLM2-1.7B의 최종 ‘Instruct’ 버전입니다.

360M 및 135M 버전에서는, 선호도 학습 역시 UltraFeedback을 사용해서 명확하고 유용한 응답을 유지하면서도 Instruction에 따르는 능력을 향상시켰습니다.

자, 지금까지 말씀드린 구체적인 훈련 전략, 그리고 아주 고민을 많이 하고 신중하게 만든 데이터셋을 사용해서, SmolLM2가 다양한 영역에서 작업을 잘 수행하는 다재다능한 AI 모델이 될 수 있었습니다.

그럼, 이 모델의 성능을 한 번 살펴볼까요?

SmolLM2의 성능

이 모델과 유사한 모델을 꼽자면, 아마 Qwen2.5-1.5B-Instruct라든가 Llama3.2-1B-Instruct 등이 있을 텐데요. 이런 모델들과 비교해서 SmolLM2-1.7B는 우수한 성능을 보여줍니다:

  • Qwen2.5-1.5B보다 Instruction을 더 잘 따릅니다.

  • 대화, 추론, 다시 쓰기 작업에서 아주 강력한 성능을 보여줍니다.

  • 수학(GSM8K, MATH), 지식 기반 테스트에서 경쟁 모델과 비슷한 수준의 능력을 보여줍니다.

Image Credit: SmolLM2 논문

그럼, SmolLM2가 훌륭한 소형 모델인 이유를 한 번 정리해 볼께요.

장점

  • 작은 크기에 강력한 성능
    위에서 봤듯이, SmolLM2-1.7B는 Qwen2.5-1.5B나 Llama3.2-1B 같은 다른 소형 모델들보다 성능이 뛰어난 부분도 있고, 수학, 코딩, 추론 및 ‘Instruction 따르기’에서는 비슷한 수준의 경쟁력을 보여줍니다.

  • 저렴한 연산 비용
    SmolLM2 모델군은 제한된 자원을 가진 디바이스에서 효율적으로 실행되고, 그러면서도 추론, 코딩 등의 작업에서 높은 정확도를 유지하게끔 설계되었습니다.

  • 신중하게 선별하고 만들어진 데이터셋
    주로 원시 (Raw) 웹 데이터에 의존해서 훈련한 모델들과 다르게, SmolLM2 모델은 고품질 소스를 잘 균형을 맞춰서 조합해서 훈련한 모델입니다.

  • 과적합 (Overfitting)되지 않은 효율적인 다단계 훈련 전략
    훈련 과정을 4단계로 나누고 각 단계별로 서로 다른 종류의 데이터와 그 데이터의 믹스를 최적화해서, 과적합이 되지 않은, 다재다능한 모델을 만들 수 있었습니다.

  • 컨텍스트 길이를 2K에서 8K 토큰까지 확장
    SmolLM2가 요약이라든가 심화된 읽기 등의 작업까지 처리할 수 있게 되었는데, 컨텍스트 길이를 확장했음에도 성능이 손실되지 않았습니다.

  • 모델, 데이터셋 및 훈련 코드 모두가 오픈 소스
    오픈 소스, 요즘 그 중요성이 더 강조되고 있죠? 누구나 SmolLM2에 사용된 데이터셋과 훈련 기법을 활용해서 자기만의 모델을 만들 수 있습니다.

  • SmolLM2-360M 및 SmolLM2-135M 버전의 유용성
    마찬가지로 강력한 성능을 유지하면서도 가용 자원이 적은 디바이스에서도 실행되는, 더 경량의 AI 애플리케이션을 만들 수 있는 모델들입니다.

한계점

크기를 생각한다면 아주 강력한 모델이지만, 역시 SmolLM2-1.7B에도 몇 가지 중요한 한계점이 있습니다:

  • SmolLM2가 모든 부분에서 최고의 성능을 보여주는 건 아닙니다. 수학이나 코딩 작업에서 일부의 다른 소형 모델들보다 조금 뒤처지는 모습을 보여주는 부분도 있고, Instruction을 따르는 부분도 절대적인 최고 성능은 아닌 만큼, 여전히 개선의 여지가 있어 보입니다.

  • 작은 모델이기 때문에 더 큰 모델만큼 많은 지식을 저장할 수 없어서, 종종 복잡한 추론에 어려움을 겪을 수 있습니다.

  • 입력값이 길 때, 그 안에서 특정한 정보를 검색하는 데 Qwen2.5-1.5B 같은 다른 모델들만큼 좋은 성능을 보여주지는 못합니다.

  • 비싼 훈련 비용: SmolLM2을 훈련하는데 여전히 상당한 자원이 필요합니다. 전체 훈련 과정을 1회 진행하는데 GPU 비용만 25만 달러 정도로 추산합니다.

  • SmolLM2는 더 좋은 답변을 선호하게끔 훈련을 했지만, 합성된 피드백 데이터에 의존하는 것이니만큼 미묘한 사람의 선호도에 대한 이해는 아직 발전의 여지가 많습니다.

맺으며

소형 언어 모델, SLM은 더 많은 사람이 더 많은 환경에서 ‘AI’라는 기술에 접근하고 사용해 볼 수 있게 해 주죠. 초거대 모델들과 비교했을 때, 소형 모델만의 강력한 성능과 경쟁력을 확보하는, 독특한 전략과 방법을 많은 연구자들이 고민하고 있습니다.

이번 AI 101 에피소드에서는 허깅 페이스의 Smol 모델 제품군 전체 - SmolLM, SmolLM2, SmolVLM, SmolVLM2를 포함해서 - 를 살짝 살펴보고, 특히 아주 조심스럽게 선별한 데이터셋, 그리고 아주 스마트하게 설계된 훈련 전략으로 만들어진 SmolLM2 모델을 좀 더 자세히 살펴봤습니다.

여러분도 한 번 나만의 소형 모델을 만들어보고 싶다는 생각이 드시나요?

읽어주셔서 감사합니다. 친구와 동료 분들에게도 뉴스레터 추천해 주세요!

Reply

or to participate.