1 ポイント 投稿者 GN⁺ 2025-07-09 | 1件のコメント | WhatsAppで共有
  • SmolLM3モデルは、3Bパラメータ規模で効率性と性能の両立を目指すオープンソースLLM
  • 英語、フランス語、スペイン語、ドイツ語、イタリア語、ポルトガル語の6言語をサポートし、最大128kコンテキスト長まで拡張対応
  • dual mode(reasoning/non-reasoning)/think/no_think フラグを使って推論モードを切り替え可能
  • Pretraining、mid-training、post-trainingの多様な学習段階と、公開されたデータセットおよびエンジニアリング・ブループリントをすべて提供
  • 性能面では Llama-3.2-3BQwen2.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) : Web(85%, 12%多言語)、コード(12%)、数学(3%)
  • 第2段階 (8T→10T) : Web(75%, 12%多言語)、コード(15%)、数学(10%) - より高品質なコードと数学データを追加
  • 第3段階 (10T→11.1T) : Web(63%, 12%多言語)、コード(24%)、数学(13%) - 高品質コード、数学のアップサンプリング、instruction/推論データを導入

各段階のデータ混合比は、多数のablation実験を通じて最適化されている。

事前学習後には、long-contextとreasoning性能を強化するための 中間(mid-)トレーニング を追加で適用。

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の希少ドメイン補完のため Qwen3-32B を用いたreasoning syntheticデータを生成
  • Best-fit decreasing packingなどでメモリ効率と効率性を最大化
  • 全データと学習スクリプトを公開予定

Anchored Preference Optimization(APO)

  • SFT後、Tulu3 preference (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のlong-context性能を回復しつつ、全体性能を維持
  • 最適チェックポイントで最終モデルをリリース

評価

ベースモデル

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、論文リンクを参照

1件のコメント

 
GN⁺ 2025-07-09
Hacker Newsの意見
  • SOTA級の性能の大半を3Bサイズで達成しており、完全公開に加えてコードや再現レシピまで一式公開した、まれなモデルの仲間に堂々と加わった印象。自前で訓練するには約100万ドル相当のGPU時間が必要そう(4000 GPU/24日換算)で、共有されているドキュメントの豊富さも印象的。業界への前向きで堅実な貢献だという評価
    • 実際にはH100を384台で24日回せばよいので、コストは100万ドルの半分にもならない
    • 朝にPhi-4-miniのベンチマークと10分ほどクロスチェックしたが、ベンチマークからこのモデルが抜けているのは不思議だったし、全体的に常に後れを取っているように見えた。参考までに、自分はLLMクライアントを開発中で、ローカルとクラウドの格差を最小化するのが重要な目標(llama.cppを活用)。今のところ、Microsoft以外でローカルAIを継続して本気で見ている会社はほとんどない。普段はこういう話は控えているが、HFが本当に素晴らしい存在である一方で、スーパースターに触れず他モデルの優秀さだけを強調するのは、この分野で長く続いてきたローカル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も使ってみたが、こちらははるかに速く起動し、アプリにアセットとして同梱できる。ある程度ノウハウがあれば実用になる。ただし小型モデルはパラメータの限界で性能に制約がある。さらにAndroidでは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を自前で適用したのではなく、大規模データセット上の推論トレースだけでファインチューニングしたという点
    • 実際にはAnchored Preference Optimizationのようなオフライン手法を使っている。Open R1プロジェクトでも見られたように、小型モデルにマルチタスクRLを適用するのはかなり簡単ではない。オフライン手法はデータセットのキュレーション/生成が鍵なので、反復速度がずっと速い。自分たちが扱うモデルスケールには適したやり方だ
  • 素晴らしい仕事。antonさんと関係者に敬意を表したい。50〜100Mパラメータ規模のモデルも今後ぜひ続けてほしい。Solve by LLMのテストケースのように、CPU上で素早く終わるモデルにも十分な意味があると思う