- サイズは性能等級ではなく配置の制約です
- 小型: オンデバイスとエッジ
- 中型: GPU1枚
- 大型: サーバが必要な区分
- MoEはメモリ計算の規則が違います
- コンテキスト拡張は無料ではありません
- カードが要求する実行条件を無視しないでください
- 実行例
- 選ぶ順序
- 自分で試す
- シリーズ案内
- 参考資料
モデル情報は2026-08-12にHugging Faceのページで直接確認しました。モデルカードとライセンスは変わりうるので、使用前に原本を再確認してください。
サイズは性能等級ではなく配置の制約です
オープンモデルをサイズで分ける理由は、大きいモデルが良いモデルだからではありません。サイズが決めるのは、どこに載せられるか、1リクエストにどれだけ待てるか、何台立てる必要があるかです。同じ課題でも、遅延予算が300ミリ秒か3秒かで答えはまったく変わります。
そのためこの記事はどのモデルが優れているかの順位を付けません。各区分で実際に確認したカードの値を並べ、その値が配置の判断にどう効くかだけを押さえます。
小型: オンデバイスとエッジ
| リポジトリ | license | パラメータ | コンテキスト | カードの記載 |
|---|---|---|---|---|
HuggingFaceTB/SmolLM2-1.7B-Instruct | apache-2.0 | 1.7B | 明記なし | 主に英語を理解し生成すると記載 |
meta-llama/Llama-3.2-1B-Instruct | llama3.2 | 1B (1.23B) | 128k | モバイル作成支援とエージェント用途を意図された用途として記載 |
Qwen/Qwen3-4B | apache-2.0 | 4.0B (埋め込み除く3.6B) | 32,768 (YaRNで131,072) | 100以上の言語、思考モードの切り替え |
microsoft/Phi-4-mini-instruct | MIT | 3.8B | 128K | メモリ・計算制約環境と遅延に敏感なシナリオを用途として記載 |
この区分ではカードが自ら述べる限界を先に読むべきです。HuggingFaceTB/SmolLM2-1.7B-Instruct は決定的な情報源ではなく補助ツールとして使うよう述べ、生成物が事実に正しいとも論理的に一貫しているともバイアスから自由だとも限らないので重要な情報は検証するよう書いています。microsoft/Phi-4-mini-instruct は、モデルサイズのために保持できる事実知識が限られること、英語以外の言語で品質差があること、コード学習の大半がPythonであることを述べます。
meta-llama/Llama-3.2-1B-Instruct はファイルにアクセスする前に条件への同意と連絡先の共有が必要です。オンデバイス配布は通常CIで重みを焼き込みますが、このリポジトリはトークンのないパイプラインではそのまま失敗します。
中型: GPU1枚
| リポジトリ | license | パラメータ | コンテキスト | カードの記載 |
|---|---|---|---|---|
Qwen/Qwen3-8B | apache-2.0 | 8.2B (埋め込み除く6.95B) | 32,768 (YaRNで131,072) | 100以上の言語、思考モード |
meta-llama/Llama-3.1-8B-Instruct | llama3.1 | 8B | 128k | 英語・ドイツ語・フランス語・イタリア語・ポルトガル語・ヒンディー語・スペイン語・タイ語を記載 |
mistralai/Mistral-7B-Instruct-v0.3 | apache-2.0 | 7B | 明記なし | 調整機構がないと明記、関数呼び出しに対応 |
google/gemma-3-4b-it | gemma | 4B | 128K | 140以上の言語、画像とテキストの入力 |
この区分で最もよく外れる期待が言語対応です。meta-llama/Llama-3.1-8B-Instruct のカードが公式に列挙する言語に日本語と韓国語は含まれていません。Qwen/Qwen3-8B と google/gemma-3-4b-it はそれぞれ100以上、140以上の言語に対応すると記します。ただしこの文は対応の宣言であって品質の保証ではないので、自分のドメインの文で直接測る必要があります。
mistralai/Mistral-7B-Instruct-v0.3 は調整機構がまったくないとカードが明かします。社内ツールなら問題ありませんが、顧客接点に置くなら別途フィルタ層が要るという意味です。
大型: サーバが必要な区分
| リポジトリ | license | パラメータ | コンテキスト | カードの記載 |
|---|---|---|---|---|
openai/gpt-oss-20b | apache-2.0 | 21B (活性3.6B) | 明記なし | 16GBのメモリ内で動作、harmony形式が必須 |
mistralai/Mistral-Small-24B-Instruct-2501 | apache-2.0 | 24B | 32k | bf16/fp16で約55GBのGPU RAM、量子化すればRTX 4090 1枚か32GBのMacBook |
google/gemma-3-27b-it | gemma | 27B | 入力128K、出力8,192 | 条件に同意してからアクセス |
Qwen/Qwen3-32B | apache-2.0 | 32.8B (埋め込み除く31.2B) | 32,768 (YaRNで131,072) | vLLMとSGLangの起動コマンドを提示 |
mistralai/Mistral-Small-24B-Instruct-2501 のカードにある約55GBという数字は、この区分で最も実用的な情報です。24Bというパラメータ数だけを見てGPU1枚を思い浮かべ、実際にはbf16基準で80GB級1枚か24GB級を複数必要とすると配布直前に知る、という事態がよく起きるからです。
MoEはメモリ計算の規則が違います
openai/gpt-oss-20b は21Bパラメータで活性3.6Bと記します。紛らわしいのは、計算量は3.6Bのモデルのように振る舞う一方、重みは21B全部がメモリに載る必要があるという点です。カードが16GBのメモリ内で動くと付け加えているのはMXFP4量子化を前提にした数字です。
つまりMoEモデルでは、速度は活性パラメータから、メモリは全体のパラメータと量子化形式から別々に計算します。ひとつの数字にまとめると、どちらかで必ず外れます。
コンテキスト拡張は無料ではありません
Qwen3系のカードは拡張について珍しく率直です。Qwen/Qwen3-8B、Qwen/Qwen3-4B、Qwen/Qwen3-32B はいずれも既定32,768からYaRNで131,072まで伸ばせると記しつつ、オープンソースのフレームワークが実装する静的YaRNは入力長に関係なく倍率が固定されるため短いテキストの性能に影響しうると警告します。
実務的には、128Kが必要なリクエストと2Kで終わるリクエストが同じエンドポイントを使うべきではないという意味です。長文処理用の配備と一般対話用の配備を分ける方が、たいていは安く安定します。
カードが要求する実行条件を無視しないでください
特に3つが無視されがちです。
第一に、openai/gpt-oss-20b のカードは、このモデルがharmony応答形式で学習されており、その形式でのみ使うべきで、そうでなければ正しく動作しないと述べます。形式を合わせずに品質が悪いと結論するのは誤った判断です。
第二に、Qwen3系のカードは思考モードで貪欲デコーディングを使わないよう明記し、無限反復につながりうると警告します。Qwen/Qwen3-32B は思考モードの推奨値として温度0.6、TopP 0.95を記載しています。
第三に、ベースモデルと指示調整モデルの名前は一語しか違いません。思考モードの切り替えは enable_thinking 引数と /think、/no_think のソフトスイッチで制御すると Qwen/Qwen3-4B のカードが記しているので、この引数に対応しないランタイムでモードが変わらないのは不思議なことではありません。
実行例
# 例: 指示調整モデルをチャットテンプレートで呼び出します
from transformers import AutoModelForCausalLM, AutoTokenizer
repo = "Qwen/Qwen3-4B"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo, torch_dtype="auto", device_map="auto")
messages = [{"role": "user", "content": "議事録の3行要約を作ってください。"}]
prompt = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tok(prompt, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=256, temperature=0.6, top_p=0.95)
print(tok.decode(out[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))
サーバとして立てるときは、ランタイムがコンテキストとバッチを管理します。
# 例: OpenAI互換エンドポイントとして提供します
vllm serve Qwen/Qwen3-8B --max-model-len 32768
選ぶ順序
- 遅延予算と配置場所を先に確定します。そこからサイズ区分が決まります。
- 区分の中で、ライセンスとゲートの有無で候補を絞ります。
- 残った候補の言語対応の記載を確認し、自分のドメインの文で直接測ります。
- コンテキスト要求が既定値を超えるか確認し、超えるなら拡張方式と警告文を読みます。
- カードが要求する形式とサンプリング条件を守った状態でのみ品質を比較します。
自分で試す
- LLM GPUメモリ(VRAM)計算機 — パラメータとコンテキストを入れて、どの区分が自分のGPUに合うか見ます。
- LLM API コスト計算機 — 自己ホストとAPI呼び出しの費用構造を比べる基準線に使います。
- ブラウザAIラボ — 小型モデルの体感遅延を自分で確認します。
シリーズ案内
- 前の記事: Hugging Faceのモデルカードの読み方
- 次の記事: 埋め込みとリランカー、RAGで実際に重要なもの
参考資料
- 表のすべての値は2026-08-12に該当モデルのHugging Faceページから直接読みました。ページになかった項目は明記なしと書いています。
- カードのベンチマーク数値は配布者の自己申告であり独立した評価ではありません。この記事はモデル間のスコア比較表を作りません。
- ライセンス全文を自分で読み、商用利用は法務レビューを通してください。
현재 단락 (1/58)
モデル情報は2026-08-12にHugging Faceのページで直接確認しました。モデルカードとライセンスは変わりうるので、使用前に原本を再確認してください。