Small Language Model(SLM)完全ガイド — 軽量AIモデルの選び方とローカル実行方法【2026年版】
SLM(Small Language Model)とは何かをLLMとの違いから解説。Phi-4、Gemma 3、Llama 3.2などの代表モデル、Ollamaでのローカル実行方法、ユースケース、選び方ガイドまで網羅的に紹介します。
「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の比較
| 項目 | LLM | SLM |
|---|---|---|
| パラメータ数 | 数百億〜数兆 | 10億〜100億 |
| 代表例 | GPT-4o, Claude Opus, Gemini Ultra | Phi-4, Gemma 3, Llama 3.2 |
| 必要メモリ | 40GB〜数百GB | 2GB〜16GB |
| 実行環境 | クラウド(GPU必須) | ノートPC、エッジデバイス |
| 推論速度 | 遅い(API経由) | 高速(ローカル実行可能) |
| コスト | API利用料が発生 | 無料(ローカル実行) |
| プライバシー | データを外部送信 | ローカルで完結 |
| 汎用性 | 非常に高い | タスク特化で高い |
なぜ今SLMが注目されているのか
SLMが急速に注目を集めている背景には、3つの要因があります。
- 技術の進化: 蒸留(Distillation)や量子化(Quantization)技術の向上により、小さなモデルでも高い性能を実現できるようになった
- エッジAIの需要: スマートフォン、IoTデバイス、組み込みシステムでAIを動かすニーズが急増
- プライバシー要件: 医療、金融、政府機関などデータを外部に出せない環境での活用
代表的な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-4 | 14B | ★★★☆☆ | ★★★★★ | ★★★★★ | MIT |
| Gemma 3 12B | 12B | ★★★★☆ | ★★★★☆ | ★★★★☆ | Gemma ToU |
| Llama 3.2 3B | 3B | ★★☆☆☆ | ★★★☆☆ | ★★★☆☆ | Llama CL |
| Qwen 2.5 7B | 7B | ★★★★★ | ★★★★☆ | ★★★★☆ | 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 5 | Llama 3.2 1B (Q4) | センサーデータの異常検知 |
| スマートフォン | Gemma 3 1B | オフライン翻訳、テキスト要約 |
| ノートPC | Phi-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 | 推論速度目安 |
|---|---|---|---|
| 1B | 1〜2GB | 不要(CPU可) | 約50 tokens/s |
| 3B | 2〜4GB | 不要(CPU可) | 約30 tokens/s |
| 7B | 4〜6GB | VRAM 6GB+ 推奨 | 約20 tokens/s |
| 14B | 8〜12GB | VRAM 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活用が実現できます。