2026 年の SLM: 小規模言語モデルとベンチマークの概要
2023 年において、「AI モデル」はほとんど常に GPT-4 または Claude を意味していました。 2026年には、この風景と 根本的に異なります: Phi-4-mini (38 億パラメータ) は Mixtral 8x7B (46B) を上回ります 数的推論ベンチマークでは、1 億 3,500 万のパラメーター SmolLM2 が実行されます。 Raspberry Pi 4、および Gemma 3n E4B の LMArena Elo は 1300 を超え、多くの製品よりも高い 1年前の70Bモデル。小型言語モデルの時代が到来し、それがもたらす影響 AI アプリケーションを開発する人にとっては具体的です。
何を学ぶか
- 2026 年の主要 SLM のマップ: Phi-4-mini、Gemma 3n、Qwen 3、SmolLM2、DeepSeek
- ベンチマークの解釈方法: MMLU、HumanEval、MATH、GPQA
- コーディング、推論、チャット、分類タスクにどのモデルを選択するか
- 各モデルのローカル推論に必要なハードウェア
- ユースケースでカスタム ベンチマークを実行する方法
2026 年の「小規模」言語モデルを定義するもの
「小さい」という定義は時代とともに変化してきました。 2024 年、「小規模」とは 7B 未満を意味する パラメータ。 2026 年には、1B モデルが 2 年前の 13B と競合するようになり、 実践は変わりました。SLM は 10B パラメーターの下で実行できるモデルであると考えられます。 積極的な量子化を行わない民生用ハードウェア上で。
| モデル | パラメータ | クリエイター | ライセンス | VRAM (fp16) |
|---|---|---|---|---|
| SmolLM2 | 135M~1.7B | ハグ顔 | アパッチ2.0 | 0.3~3.5GB |
| ファイ4ミニ | 3.8B | マイクロソフト | マサチューセッツ工科大学 | 7.6GB |
| ジェマ 3n E4B | 4B 有効 | グーグル | ジェマの利用規約 | 8GB |
| クウェン 3 (1.7B) | 1.7B | アリババ | アパッチ2.0 | 3.4GB |
| クウェン3(7B) | 7B | アリババ | アパッチ2.0 | 14GB |
| ディープシーク-R1 (7B) | 7B蒸留 | ディープシーク | マサチューセッツ工科大学 | 14GB |
| ミストラル 7B v0.3 | 7B | ミストラルAI | アパッチ2.0 | 14GB |
| ラマ 3.2 (3B) | 3B | 半分 | ラマ 3.2 | 6GB |
ベンチマーク: ベンチマークを正しく解釈する方法
学術的なベンチマークは役に立ちますが、解釈には注意が必要です。優れたモデル MMLU に関する知識 (一般知識) は、クリーンな Python コードを生成するには不十分である可能性があります。 ここでは、主なベンチマークと実際の測定値を示します。
主要な学術ベンチマーク
# Confronto benchmark principali (valori approssimativi, Febbraio 2026)
benchmarks = {
"Phi-4-mini (3.8B)": {
"MMLU": 72.8, # Conoscenza generale, 57 soggetti
"HumanEval": 62.3, # Completamento codice Python
"MATH": 70.5, # Ragionamento matematico (AMC/AIME)
"GPQA Diamond": 36.2, # PhD-level science questions
"MT-Bench": 7.8, # Conversazione multi-turno (1-10)
},
"Gemma 3n E4B": {
"MMLU": 74.1,
"HumanEval": 58.7,
"MATH": 65.3,
"GPQA Diamond": 34.8,
"MT-Bench": 8.1,
"LMArena Elo": 1312, # Confronto umano (stile chess ELO)
},
"Qwen 3 7B": {
"MMLU": 78.3,
"HumanEval": 72.1,
"MATH": 78.9,
"GPQA Diamond": 41.2,
"MT-Bench": 8.4,
},
"DeepSeek-R1 7B distilled": {
"MMLU": 75.2,
"HumanEval": 68.4,
"MATH": 82.3, # Eccelle nel ragionamento matematico
"GPQA Diamond": 38.7,
"MT-Bench": 8.0,
},
# Per confronto: modelli piu grandi
"Mixtral 8x7B (46B)": {
"MMLU": 71.4, # Phi-4-mini (3.8B) lo supera!
"HumanEval": 60.1,
"MATH": 66.8,
},
}
# NOTA IMPORTANTE: i benchmark non misurano tutto
# - Hallucination rate (frequenza di invenzioni plausibili)
# - Instruction following su task complessi
# - Context handling su documenti lunghi
# - Velocita di inferenza su hardware specifico
# - Consumo energetico
ユースケースのベンチマークを構築する方法
from lm_eval.api.model import LM
from lm_eval import evaluator
import json
def benchmark_slm_for_custom_task(
model_name: str,
task_examples: list[dict],
metric_fn: callable
) -> dict:
"""
Benchmark di un SLM su un task personalizzato.
task_examples: lista di {"input": str, "expected": str}
metric_fn: funzione che restituisce float 0-1 (accuracy, F1, etc.)
"""
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto"
)
results = []
total_time = 0
for example in task_examples:
import time
start = time.time()
inputs = tokenizer(example["input"], return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=256,
temperature=0.1, # bassa temperatura per task deterministici
do_sample=False
)
elapsed = time.time() - start
generated = tokenizer.decode(
outputs[0][inputs.input_ids.shape[1]:],
skip_special_tokens=True
)
score = metric_fn(generated, example["expected"])
results.append({
"input": example["input"][:50],
"expected": example["expected"],
"generated": generated,
"score": score,
"latency_ms": elapsed * 1000
})
total_time += elapsed
avg_score = sum(r["score"] for r in results) / len(results)
avg_latency = sum(r["latency_ms"] for r in results) / len(results)
return {
"model": model_name,
"task_score": round(avg_score, 4),
"avg_latency_ms": round(avg_latency, 1),
"total_examples": len(results),
"hardware": torch.cuda.get_device_name(0) if torch.cuda.is_available() else "CPU",
"detail": results
}
# Esempio di uso per classificazione del sentiment in italiano
sentiment_examples = [
{"input": "Classifica il sentiment: 'Il prodotto e eccellente!' -> ", "expected": "positivo"},
{"input": "Classifica il sentiment: 'Esperienza terribile, non lo raccomando' -> ", "expected": "negativo"},
# ... 100 esempi dal proprio dataset reale ...
]
def exact_match(generated: str, expected: str) -> float:
return 1.0 if expected.lower() in generated.lower() else 0.0
# Eseguire il benchmark su piu modelli
for model in ["microsoft/phi-4-mini", "Qwen/Qwen3-7B", "google/gemma-3n-e4b"]:
result = benchmark_slm_for_custom_task(model, sentiment_examples, exact_match)
print(f"{model}: score={result['task_score']}, latency={result['avg_latency_ms']}ms")
ハードウェア要件: SLM の実行に必要なもの
SLM の主な利点の 1 つは、コンシューマ ハードウェア上で実行できることです。ここに実践的なガイドがあります。
| ハードウェア | VRAM / RAM | 対応機種(fp16) | トークン/秒 (概算) |
|---|---|---|---|
| MacBook M3 Pro (18GB) | 18GB統一 | ファイ-4-ミニ、ジェマ 3n、ラマ 3.2 3B | 25~40トーク/秒 |
| MacBook M4 Max (48GB) | 48GB統一 | 全7B、ラマ3 8B | 60~80トーク/秒 |
| RTX4060(8GB) | 8GB VRAM | ファイ-4-ミニ q4、SmolLM2 1.7B | 35-55トーク/秒 |
| RTX4070(12GB) | 12GB VRAM | Phi-4-mini fp16、Qwen 3 7B q4 | 50~70トーク/秒 |
| RTX4090(24GB) | 24GB VRAM | すべて 7B fp16、ラマ 3 8B | 100~130トーク/秒 |
| A100サーバー(80GB) | 80GB VRAM | 40Bまでのモデル | 200~400トーク/秒 |
# Verificare se un modello entra nella VRAM disponibile
def check_model_fits_vram(
model_name: str,
quantization: str = "fp16",
safety_margin: float = 0.85
) -> dict:
"""
Stima il VRAM necessario e verifica la compatibilita.
quantization: 'fp32', 'fp16', 'int8', 'int4' (gguf q4)
"""
import torch
# Stima parametri del modello
param_counts = {
"microsoft/phi-4-mini": 3.8e9,
"google/gemma-3n-E4B": 4.0e9,
"Qwen/Qwen3-7B": 7.6e9,
"deepseek-ai/DeepSeek-R1-Distill-Qwen-7B": 7.6e9,
"meta-llama/Llama-3.2-3B": 3.2e9,
"HuggingFaceTB/SmolLM2-1.7B": 1.7e9,
}
bytes_per_param = {
"fp32": 4, "fp16": 2, "bf16": 2, "int8": 1, "int4": 0.5
}
params = param_counts.get(model_name, 0)
if params == 0:
return {"error": f"Model {model_name} not in database"}
model_vram_gb = (params * bytes_per_param.get(quantization, 2)) / 1e9
overhead_gb = 1.5 # KV cache + activations
total_vram_gb = model_vram_gb + overhead_gb
available_vram = 0
if torch.cuda.is_available():
available_vram = torch.cuda.get_device_properties(0).total_memory / 1e9
elif hasattr(torch.backends, 'mps') and torch.backends.mps.is_available():
# Apple Silicon: usare la memoria di sistema disponibile
import psutil
available_vram = psutil.virtual_memory().available / 1e9 * 0.7
fits = total_vram_gb <= available_vram * safety_margin
return {
"model": model_name,
"quantization": quantization,
"model_vram_gb": round(model_vram_gb, 2),
"total_with_overhead_gb": round(total_vram_gb, 2),
"available_gb": round(available_vram, 2),
"fits": fits,
"recommendation": "OK" if fits else
f"Insufficiente: prova int4 o un modello piu piccolo"
}
# Test
for model in ["microsoft/phi-4-mini", "Qwen/Qwen3-7B"]:
for quant in ["fp16", "int8", "int4"]:
result = check_model_fits_vram(model, quant)
status = "OK" if result["fits"] else "NO"
print(f"[{status}] {model} ({quant}): {result['total_with_overhead_gb']:.1f}GB needed")
ユースケースに応じてどの SLM を選択するか
モデルの選択は主にタスクによって異なります。これに基づいた実践的なガイドは次のとおりです 2026 年のベンチマークとコミュニティ テスト。
ユースケースの推奨事項
- コーディング (Python、TypeScript、SQL): Qwen 3 7B または DeepSeek-R1 7B — 7B としてはクラス最高
- 数学的/論理的推論: DeepSeek-R1 7B を蒸留 — ベースに比べて大幅な改善
- チャットと一般的なアシスタント: Phi-4-mini または Gemma 3n — 最高の品質/サイズ比
- 単純な分類とNLU: SmolLM2 1.7B — 多くのタスクですでにしきい値を超えています
- モバイルオンデバイス: Gemma 3n E4B (NPU に最適化) または SmolLM2 135M
- イタリアンラグ: Phi-4-mini (多言語対応) または Mistral 7B v0.3
結論
2026 年は小規模言語モデルの時代を決定的に証明しました: 3 ~ 7B モデル 適切なアーキテクチャと適切なトレーニング データは、2 年以上前のモデルを 10 倍上回る 前に。選択はもはや「LLM 対 SLM」ではなく、「どのハードウェア上のどのタスクに対してどの SLM を行うか」です。
シリーズの次の記事では、Phi-4-mini と Gemma 3n を詳細に比較します: 2 つの選択肢 2026 年のエッジ展開にとって最も興味深いものであり、コーディングに関するベンチマークを並べて表示します。 イタリア語と英語での推論と会話のタスク。
シリーズ: 小規模言語モデル
- 第1条(本): 2026 年の SLM - 概要とベンチマーク
- 記事 2: Phi-4-mini と Gemma 3n - 詳細な比較
- 記事 3: LoRA と QLoRA による微調整
- 第 4 条: エッジの量子化 - GGUF、ONNX、INT4
- 記事 5: Ollama - 5 分でローカルで SLM







