SLM(Small Language Model)とは何かをLLMとの違いから解説。Phi-4、Gemma 3、Llama 3.2などの代表モデル、Ollamaでのローカル実行方法、ユースケース、選び方ガイドまで網羅的に紹介します。
使い方ガイド
公開: by ToolCraft Lab 約14分で読めます

Small Language Model(SLM)完全ガイド — 軽量AIモデルの選び方とローカル実行方法【2026年版】

SLM(Small Language Model)とは何かをLLMとの違いから解説。Phi-4、Gemma 3、Llama 3.2などの代表モデル、Ollamaでのローカル実行方法、ユースケース、選び方ガイドまで網羅的に紹介します。

#SLM#エッジAI#ローカルLLM

「GPT-4oクラスの巨大モデルは万能ですが、あなたのタスクに本当にそこまでの性能が必要ですか?」 Small Language Model(SLM)は、特定のタスクに絞れば大規模モデルに匹敵する性能を、はるかに少ないリソースで実現します。

本記事では、SLMの概念からLLMとの違い、代表的なモデル(Phi-4、Gemma 3、Llama 3.2等)の比較、Ollamaを使ったローカル実行方法、実用的なユースケース、そして用途に合った選び方ガイドまで、包括的に解説します。

SLMとは — Small Language Modelの定義

SLM(Small Language Model)は、パラメータ数が比較的少ない(おおむね100億パラメータ以下の)言語モデルの総称です。LLM(Large Language Model)が数百億〜数兆パラメータを持つのに対し、SLMは10億〜100億パラメータ程度に収まります。

LLMとSLMの比較

項目LLMSLM
パラメータ数数百億〜数兆10億〜100億
代表例GPT-4o, Claude Opus, Gemini UltraPhi-4, Gemma 3, Llama 3.2
必要メモリ40GB〜数百GB2GB〜16GB
実行環境クラウド(GPU必須)ノートPC、エッジデバイス
推論速度遅い(API経由)高速(ローカル実行可能)
コストAPI利用料が発生無料(ローカル実行)
プライバシーデータを外部送信ローカルで完結
汎用性非常に高いタスク特化で高い

なぜ今SLMが注目されているのか

SLMが急速に注目を集めている背景には、3つの要因があります。

  1. 技術の進化: 蒸留(Distillation)や量子化(Quantization)技術の向上により、小さなモデルでも高い性能を実現できるようになった
  2. エッジAIの需要: スマートフォン、IoTデバイス、組み込みシステムでAIを動かすニーズが急増
  3. プライバシー要件: 医療、金融、政府機関などデータを外部に出せない環境での活用

代表的なSLM

2026年現在、特に注目すべきSLMを紹介します。

Microsoft Phi-4

MicrosoftのPhiシリーズは、SLMの代表格です。

項目詳細
パラメータ数14B
開発元Microsoft Research
特徴合成データと厳選されたWebデータで訓練
得意分野推論、数学、コーディング
ライセンスMIT License
必要メモリ約8GB(量子化版)

Phi-4は、パラメータ数の割に数学的推論とコーディング能力が非常に高いのが特徴です。MITライセンスで商用利用も自由です。

# Ollamaでの実行
ollama run phi4

Google Gemma 3

Googleが開発したオープンウェイトモデルです。

項目詳細
パラメータ数1B / 4B / 12B / 27B
開発元Google DeepMind
特徴Geminiの技術を継承した小型モデル
得意分野テキスト生成、多言語対応、マルチモーダル
ライセンスGemma Terms of Use
必要メモリ1B: 約1GB / 4B: 約3GB / 12B: 約8GB

Gemma 3は、1Bから27Bまで幅広いサイズバリエーションがあり、デバイスのスペックに合わせて選択できます。マルチモーダル対応(画像+テキスト)も特徴です。

# Ollamaでの実行(4Bモデル)
ollama run gemma3:4b

Meta Llama 3.2

Metaが開発したLlamaシリーズの小型版です。

項目詳細
パラメータ数1B / 3B(テキスト)/ 11B / 90B(マルチモーダル)
開発元Meta
特徴エッジデバイス向けに最適化
得意分野テキスト生成、要約、分類
ライセンスLlama Community License
必要メモリ1B: 約1GB / 3B: 約2GB

Llama 3.2の1Bと3Bモデルは、スマートフォンでも動作するほど軽量です。テキスト処理の基本タスクであれば十分な性能を発揮します。

# Ollamaでの実行(3Bモデル)
ollama run llama3.2:3b

Qwen 2.5

Alibaba Cloudが開発した多言語対応モデルです。

項目詳細
パラメータ数0.5B / 1.5B / 3B / 7B / 14B / 32B
開発元Alibaba Cloud
特徴多言語(特にアジア言語)に強い
得意分野コーディング、数学、多言語テキスト
ライセンスApache 2.0(一部モデル)
必要メモリ0.5B: 約0.5GB / 7B: 約5GB

Qwen 2.5は、日本語を含むアジア言語の性能が他のSLMより高い傾向にあります。日本語タスクには有力な選択肢です。

# Ollamaでの実行(7Bモデル)
ollama run qwen2.5:7b

主要SLMの比較一覧

モデルパラメータ日本語コーディング推論ライセンス
Phi-414B★★★☆☆★★★★★★★★★★MIT
Gemma 3 12B12B★★★★☆★★★★☆★★★★☆Gemma ToU
Llama 3.2 3B3B★★☆☆☆★★★☆☆★★★☆☆Llama CL
Qwen 2.5 7B7B★★★★★★★★★☆★★★★☆Apache 2.0

Ollamaでローカル実行する方法

SLMをローカルで実行する最も簡単な方法がOllamaです。

Ollamaとは

Ollamaは、ローカルマシンで大規模言語モデルを簡単に実行するためのツールです。Dockerのような手軽さでモデルの取得・実行ができます。

インストール

# macOS(Homebrew)
brew install ollama

# Linux
curl -fsSL https://ollama.com/install.sh | sh

# Windowsはインストーラーをダウンロード
# https://ollama.com/download

基本的な使い方

# Ollamaサーバーの起動
ollama serve

# モデルのダウンロードと実行(初回は自動ダウンロード)
ollama run phi4

# 対話モード
>>> Pythonでクイックソートを実装してください

モデルの管理

# インストール済みモデルの一覧
ollama list

# モデルのダウンロード(実行せずに取得のみ)
ollama pull gemma3:4b

# モデルの削除
ollama rm phi4

# モデルの情報を表示
ollama show phi4

APIとしての利用

Ollamaにはローカルで動作するREST APIが組み込まれています。

# テキスト生成
curl http://localhost:11434/api/generate \
  -d '{
    "model": "phi4",
    "prompt": "Dockerとは何ですか?",
    "stream": false
  }'

PythonからOllamaを使う

import ollama

# 基本的なテキスト生成
response = ollama.chat(
    model="phi4",
    messages=[
        {"role": "system", "content": "日本語で簡潔に回答してください"},
        {"role": "user", "content": "マイクロサービスのメリットを3つ教えて"}
    ]
)

print(response["message"]["content"])

OpenAI互換API

OllamaはOpenAI互換のAPIエンドポイントを提供しているため、既存のOpenAIクライアントをそのまま使えます。

from openai import OpenAI

# OllamaのOpenAI互換エンドポイントに接続
client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="ollama"  # ダミーキー(Ollamaでは不要)
)

response = client.chat.completions.create(
    model="phi4",
    messages=[
        {"role": "system", "content": "簡潔に日本語で回答してください"},
        {"role": "user", "content": "RESTful APIの設計原則は?"}
    ]
)

print(response.choices[0].message.content)

この互換性により、OpenAI APIで動作する既存のコードを、ほぼ無修正でローカルのSLMに切り替えられます。

量子化モデルの選択

メモリに制限がある場合は、量子化されたモデルを使います。

# Q4量子化版(メモリ節約、やや精度低下)
ollama run phi4:q4_0

# Q8量子化版(精度重視)
ollama run phi4:q8_0
量子化レベルメモリ使用量精度速度
FP16(非量子化)最大最高遅い
Q8約50%高い速い
Q4約25%やや低下最速
Q2約12%大幅低下最速

一般的にはQ4が精度と速度のバランスが良く、最もおすすめです。

SLMのユースケース

1. ローカルコーディングアシスタント

API料金なしで、コーディング支援を受けられます。

import ollama

def code_assistant(question: str) -> str:
    """ローカルで動作するコーディングアシスタント"""
    response = ollama.chat(
        model="phi4",
        messages=[
            {
                "role": "system",
                "content": """あなたは経験豊富なプログラマーです。
質問にはコード例を交えて回答してください。
コードにはコメントを付けてください。"""
            },
            {"role": "user", "content": question}
        ]
    )
    return response["message"]["content"]

# 使用例
answer = code_assistant("PythonでCSVファイルを読み込んで集計する方法は?")
print(answer)

2. テキスト分類・感情分析

定型的な分類タスクはSLMでも十分な精度が出ます。

def classify_text(text: str, categories: list[str]) -> str:
    """テキストをカテゴリに分類する"""
    response = ollama.chat(
        model="gemma3:4b",
        messages=[
            {
                "role": "system",
                "content": f"""テキストを以下のカテゴリに分類してください。
カテゴリ: {', '.join(categories)}
JSON形式で回答: {{"category": "カテゴリ名", "confidence": 0.0-1.0}}"""
            },
            {"role": "user", "content": text}
        ],
        format="json"
    )
    return response["message"]["content"]

# 使用例
result = classify_text(
    "商品が壊れていたので交換してほしい",
    ["問い合わせ", "クレーム", "要望", "感想"]
)
print(result)
# {"category": "クレーム", "confidence": 0.92}

3. RAG(検索拡張生成)

ローカルSLMとベクトルDBを組み合わせた、プライベートRAGシステムを構築できます。RAGの仕組みや実装の詳細はRAG入門ガイドで解説しています。

import ollama
import chromadb

# ChromaDBでベクトルストアを作成
chroma_client = chromadb.Client()
collection = chroma_client.create_collection("documents")

# ドキュメントの追加
documents = [
    "Pythonのリスト内包表記は、[式 for 変数 in イテラブル] の形式で...",
    "デコレータは、関数を引数に取り関数を返す高階関数です...",
    "ジェネレータは、yield文を使って値を一つずつ生成する関数です...",
]

collection.add(
    documents=documents,
    ids=[f"doc-{i}" for i in range(len(documents))]
)

def rag_query(question: str) -> str:
    """RAGでローカルLLMに質問する"""
    # 関連ドキュメントの検索
    results = collection.query(query_texts=[question], n_results=2)
    context = "\n".join(results["documents"][0])

    # SLMで回答生成
    response = ollama.chat(
        model="qwen2.5:7b",
        messages=[
            {
                "role": "system",
                "content": f"""以下のコンテキストを参考に質問に回答してください。
コンテキストにない情報は「わかりません」と回答してください。

コンテキスト:
{context}"""
            },
            {"role": "user", "content": question}
        ]
    )
    return response["message"]["content"]

# 使用例
answer = rag_query("Pythonのデコレータとは何ですか?")
print(answer)

4. エッジデバイスでのリアルタイム処理

IoTデバイスやモバイルアプリでの活用も広がっています。

デバイス推奨モデルユースケース
Raspberry Pi 5Llama 3.2 1B (Q4)センサーデータの異常検知
スマートフォンGemma 3 1Bオフライン翻訳、テキスト要約
ノートPCPhi-4 (Q4)ローカルコーディング支援
デスクトップ(GPU)Qwen 2.5 14Bプライベートチャットボット

5. データプライバシーが必須の環境

医療、金融、法律分野では、データの外部送信が禁止されている場合があります。

オンプレミス環境でのSLM活用例:
- 医療: 診療記録の要約、所見のドラフト生成
- 金融: 取引レポートの自動生成、コンプライアンスチェック
- 法律: 契約書のレビュー補助、判例検索の要約

SLMの選び方ガイド

用途別おすすめモデル

用途おすすめモデル理由
日本語テキスト処理Qwen 2.5 7B日本語性能が高い
コーディングPhi-4コード生成能力が突出
軽量デバイスLlama 3.2 1B最小クラスで実用的
マルチモーダルGemma 3 12B画像+テキスト対応
汎用Qwen 2.5 14Bバランスが良い

ハードウェア要件の目安

モデルサイズ必要RAM(Q4量子化)推奨GPU推論速度目安
1B1〜2GB不要(CPU可)約50 tokens/s
3B2〜4GB不要(CPU可)約30 tokens/s
7B4〜6GBVRAM 6GB+ 推奨約20 tokens/s
14B8〜12GBVRAM 10GB+ 推奨約10 tokens/s

選定フローチャート

Q1: 日本語タスクがメインか?
├─ Yes → Qwen 2.5 シリーズ
└─ No → Q2へ

Q2: メモリの制約は?
├─ 4GB以下 → Llama 3.2 1B or 3B
├─ 4〜8GB → Gemma 3 4B or Qwen 2.5 7B
└─ 8GB以上 → Q3へ

Q3: 主な用途は?
├─ コーディング → Phi-4
├─ マルチモーダル → Gemma 3 12B
└─ 汎用 → Qwen 2.5 14B

SLMの今後の展望

トレンド1: モデルの小型化・高性能化

蒸留技術やアーキテクチャの改善により、小さなモデルでも以前の大きなモデル並みの性能を達成するペースが加速しています。2026年の3Bモデルは、2024年の70Bモデルに匹敵する精度を持つケースも出てきています。

トレンド2: オンデバイスAIの普及

AppleのApple Intelligence、GoogleのGemini Nanoなど、スマートフォンにSLMが標準搭載される流れが定着しました。今後はさらに多くのデバイスでAIがオフラインで動作するようになるでしょう。

トレンド3: 専門特化型SLM

汎用性よりも特定のタスクに特化したSLMが増加しています。

分野モデル例用途
コーディングCodeGemma、StarCoder2コード生成・補完
医療BioMistral医療テキスト処理
法律SaulLM法律文書の分析
数学DeepSeek-Math数学的推論

SLMとLLMの使い分け

SLMとLLMは競合するものではなく、用途に応じて使い分けるものです。

SLMを選ぶべきケース

  • データを外部に出せないプライバシー要件がある(Notion AI代替ツールのようなローカルAI活用も注目されています)
  • API料金を削減したい(特に大量処理)
  • ネットワーク接続がない環境で使いたい
  • レイテンシを最小限にしたい
  • 定型的なタスク(分類、抽出、要約)が中心

LLMを選ぶべきケース

  • 高度な推論や複雑な指示の理解が必要
  • 最高精度が求められる
  • マルチターンの複雑な会話が必要
  • GPUリソースをローカルに用意できない
  • 最新の情報(Web検索連携)が必要

ハイブリッドアプローチ

実際のプロダクションでは、SLMとLLMを組み合わせるのが効果的です。

def hybrid_processing(text: str, complexity: str) -> str:
    """タスクの複雑さに応じてモデルを切り替える"""
    if complexity == "simple":
        # 簡単なタスクはローカルSLMで処理(無料・高速)
        response = ollama.chat(
            model="qwen2.5:7b",
            messages=[{"role": "user", "content": text}]
        )
        return response["message"]["content"]
    else:
        # 複雑なタスクはクラウドLLMで処理(高精度)
        from openai import OpenAI
        client = OpenAI()
        response = client.chat.completions.create(
            model="gpt-4o",
            messages=[{"role": "user", "content": text}]
        )
        return response.choices[0].message.content

まとめ — SLMで「ちょうどいいAI」を手に入れよう

SLM(Small Language Model)は、すべてのタスクに巨大なLLMが必要というわけではないことを証明しています。

  • コスト: ローカル実行なら利用料は電気代だけ
  • プライバシー: データが外部に一切出ない
  • 速度: ネットワークレイテンシなしで即座に応答
  • 柔軟性: 用途に合わせてモデルを選択可能

まずはOllamaをインストールし、Phi-4やQwen 2.5を試してみてください。SLMをエージェントシステムに組み込む方法はAIエージェント開発入門で解説しています。「このタスクならSLMで十分だ」と気づく場面が、想像以上に多いはずです。LLMとSLMを適切に使い分けることで、コストと品質のバランスが取れたAI活用が実現できます。