🐋DeepSeek-V3.1: ローカルでの実行方法
DeepSeek-V3.1 と Terminus を自分のローカルデバイスで実行するためのガイド!
DeepSeek の V3.1 と Terminus のアップデートはハイブリッド推論(「思考」モードと「非思考」モードを1つのモデルに統合)を導入します。完全な671Bパラメータモデルは715GBのディスク容量を必要とします。量子化された動的2ビット版は245GBを使用します(サイズが-75%削減)。GGUF: DeepSeek-V3.1-GGUF
新着: DeepSeek-V3.1-Terminus リリース: DeepSeek-V3.1-Terminus-GGUF 2025年9月10日アップデート: より厳しいベンチマークを求められたので、Aider Polyglot の結果を紹介します!当社の動的3ビット DeepSeek V3.1 GGUF のスコアは 75.6%、多くのフルプレシジョンの最先端LLMを上回っています。 詳しく読む。
当社の DeepSeek-V3.1 GGUF には Unsloth が含まれます llama.cpp 対応バックエンド向けのチャットテンプレート修正 が含まれます。
すべてのアップロードはUnslothを使用しています Dynamic 2.0 SOTA の 5-shot MMLU と KL ダイバージェンス性能を実現しており、量子化された DeepSeek LLM を最小限の精度低下で実行およびファインチューニングできます。
チュートリアル ナビゲーション:
llama.cpp で実行するOllama/Open WebUI で実行する
⚙️ 推奨設定
1ビット動的量子化 TQ1_0(重要でない MoE レイヤーは1ビット、重要な MoE は2-4ビット、残りは6-8ビット)は170GBのディスク容量を使用します - これは 1x24GBカードと128GBのRAM で MoE オフロードを行えばうまく動作します - また Ollamaでネイティブに動作します!
必ず使用してください --jinja llama.cppの量子化には — これにより私たちの 固定チャットテンプレート が使用され、正しいテンプレートが有効になります!使用しないと誤った結果になる可能性があります --jinja
2ビットのクオンタイズは MoE レイヤーを RAM にオフロードすれば 1x24GB GPU に収まります。この設定と追加の128GB RAM があると、おおよそ5トークン/秒が期待できます。この2ビットを実行するには少なくとも226GBのRAMが推奨されます。最適なパフォーマンスのためには、5+ トークン/秒を得るには少なくとも226GBのユニファイドメモリ、または合計226GBのRAM+VRAMが必要です。生成速度を上げてより長いコンテキストに対応する方法については、 こちらをお読みください.
必須ではありませんが、最良のパフォーマンスを得るには、ダウンロードする量子化モデルのサイズと VRAM + RAM の合計が等しくなるようにしてください。そうでない場合でも、llama.cpp ではハードドライブ/SSD オフロードが機能しますが、推論は遅くなります。
🦋チャットテンプレートのバグ修正
llama.cpp や他のエンジンで正しく機能しなかったため、DeepSeek V3.1 のチャットテンプレートにいくつかの問題を修正しました:
DeepSeek V3.1 はハイブリッド推論モデルであり、チャットテンプレートを変更して推論(思考)を有効にできます。チャットテンプレートでは
thinking = Trueが導入されましたが、他のモデルではenable_thinking = Trueが使われています。そこで私たちはenable_thinkingを代わりのキーワードとして使えるオプションを追加しました。llama.cpp の jinja レンダラーは minja 経由で、追加引数の使用を
.split()コマンド内で許可していません。そのため.split(text, 1)は Python では動作しますが minja では動作しません。エラーを出さずに llama.cpp を正しく動かすためにこれを変更する必要がありました。 他のクオンタイズを使用すると次のエラーが発生します:terminate called after throwing an instance of 'std::runtime_error' what(): split method must have between 1 and 1 positional arguments and between 0 and 0 keyword arguments at row 3, column 1908すべてのクオンタイズでこれを修正しました!
🐳公式推奨設定
によると DeepSeek、これらが V3.1 推論の推奨設定です:
次の値を設定してください temperature 0.6 反復や一貫性の欠如を減らすためです。
次を設定してください top_p を 0.95 に (推奨)
128K のコンテキスト長 またはそれ以下
使用してください
--jinjallama.cppのバリアントには — 私たちは いくつかのチャットテンプレートの問題を修正しました!使用してください
enable_thinking = Trueを推論/思考モードで使うため。デフォルトでは非推論に設定されています。
🔢 チャットテンプレート/プロンプト形式
強制的に <think>\n を入れる必要はありませんが、入れても構いません!指定されたプレフィックスでは、DeepSeek V3.1 は非思考モードでクエリに対する応答を生成します。DeepSeek V3 とは異なり、追加のトークンを導入しています </think>.
BOS は強制的に追加され、EOS は各インタラクションを区切ります。推論時の BOS トークンの重複を避けるために、次だけを呼び出すべきです tokenizer.encode(..., add_special_tokens = False) チャットテンプレートが BOS トークンを自動的に追加するためです。llama.cpp / GGUF の推論では、BOS は自動的に追加されるため省略してください。
📔 非思考モード(使用する場合) thinking = Falseまたは enable_thinking = False (デフォルトです)
thinking = Falseまたは enable_thinking = False (デフォルトです)最初のターン
プレフィックス: <|begin▁of▁sentence|>{system prompt}<|User|>{query}<|Assistant|></think>
指定されたプレフィックスでは、DeepSeek V3.1 は非思考モードでクエリに対する応答を生成します。DeepSeek V3 と異なり、追加のトークンを導入しています </think>.
マルチターン
コンテキスト: <|begin▁of▁sentence|>{system prompt}<|User|>{query}<|Assistant|></think>{response}<|end▁of▁sentence|>...<|User|>{query}<|Assistant|></think>{response}<|end▁of▁sentence|>
プレフィックス: <|User|>{query}<|Assistant|></think>
コンテキストとプレフィックスを連結することで、クエリに対する正しいプロンプトが得られます。
📚 思考モード(使用する場合) thinking = Trueまたは enable_thinking = True (デフォルトです)
thinking = Trueまたは enable_thinking = True (デフォルトです)最初のターン
プレフィックス: <|begin▁of▁sentence|>{system prompt}<|User|>{query}<|Assistant|><think>
思考モードのプレフィックスは DeepSeek-R1 に似ています。
マルチターン
コンテキスト: <|begin▁of▁sentence|>{system prompt}<|User|>{query}<|Assistant|></think>{response}<|end▁of▁sentence|>...<|User|>{query}<|Assistant|></think>{response}<|end▁of▁sentence|>
プレフィックス: <|User|>{query}<|Assistant|><think>
マルチターンのテンプレートは非思考のマルチターンチャットテンプレートと同じです。つまり、最後のターンの思考トークンは削除されますが、 </think> はコンテキストの各ターンで保持されます。
🏹 ツール呼び出し
ツール呼び出しは非思考モードでサポートされています。フォーマットは:
<|begin▁of▁sentence|>{system prompt}{tool_description}<|User|>{query}<|Assistant|></think> ここで tool_description はシステムプロンプトの後の領域に配置します。
▶️DeepSeek-V3.1 チュートリアルを実行する:
🦙 Ollama/Open WebUI で実行する
Ollamaで実行する をインストールしてください ollama まだインストールしていない場合!モデルのより多くのバリアントを実行するには、.
curl -fsSL https://ollama.com/install.sh | sh モデルを実行してください!失敗した場合は別のターミナルでollama serve を呼び出すことができます!私たちはすべての修正と推奨パラメータ(temperatureなど)を params
(新)Ollama でフル R1-0528 モデルを実行するには、当社の TQ1_0(170GB)量子化版を使用できます:
OLLAMA_MODELS=unsloth ollama run hf.co/unsloth/GLM-4.7-GGUF:TQ1_0
Open WebUI も ステップバイステップチュートリアル を作成しており、R1 の実行方法の説明で、V3.1 では R1 の代わりに新しい V3.1 量子化版を置き換えるだけで済みます。
✨ llama.cppで実行する
最新の llama.cpp を GitHubで入手してください。以下のビルド手順にも従うことができます。を変更してください -DGGML_CUDA=ON に -DGGML_CUDA=OFF GPUを持っていない場合やCPUで推論したい場合は
もし直接 llama.cpp を使ってモデルを読み込みたい場合は、以下のようにできます:(:Q2_K_XL)は量子化タイプです。Hugging Face(ポイント3)経由でダウンロードすることもできます。これは ollama run に類似しています。 使用してください export LLAMA_CACHE="folder" llama.cpp を強制して
ぜひ試してみてください -ot ".ffn_.*_exps.=CPU" -ot ".ffn_.*_exps.=CPU"
もし少し多くのGPUメモリがあるなら、次を試してください -ot ".ffn_(up|down)_exps.=CPU" これは up と down の投影 MoE 層をオフロードします。
試してみてください -ot ".ffn_(up)_exps.=CPU" さらに多くのGPUメモリがある場合。これは up 投影の MoE 層のみをオフロードします。
もしさらに多くのGPUメモリがある場合。これはup投影のMoEレイヤーのみをオフロードします。 -ot ".ffn_.*_exps.=CPU" そして最後にすべてのレイヤーを次でオフロードします
正規表現をカスタマイズすることもできます。例えば -ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU" は gate、up、down の MoE 層をオフロードしますが、6層目以降に限定します。
モデルをダウンロードするには(をインストールした後) モデルをダウンロードするには( を選択できます。 をインストールした後)を使用してください。選択できるのはUD- Q4_K_M Q4_K_XL などの他の量子化版です。私たちは サイズと精度のバランスを取るために私たちの2.7ビット動的量子化を UD-Q2_K_XL.
--include "*UD-Q2_K_XL*" # 動的1ビットの場合は "*UD-TQ1_0*" を使用 次の --threads 32 はCPUスレッドの数、 --ctx-size 16384 はコンテキスト長、 --n-gpu-layers 2
合計の RAM と VRAM が十分でない場合は 1ビット版(170GB)を入手してください:
OLLAMA_MODELS=unsloth ollama run merged_file.gguf
✨ llama-serverとOpenAIのcompletionライブラリでデプロイする
--port 8001 \ その後、OpenAIのPythonライブラリを使用します( :
💽モデルのアップロード
当社のすべてのアップロード - imatrix ベースまたは動的でないものを含め、会話、コーディング、および言語タスクに最適化されたキャリブレーションデータセットを利用しています。
以下はフル DeepSeek-V3.1 モデルのアップロードです:
また、次もアップロードしました IQ4_NL と Q4_1 それぞれ ARM および Apple デバイス向けに特に高速に動作するクオンタイズです。
また、次の形式でもバージョンをアップロードしています: BF16 フォーマット、およびオリジナルの FP8(float8)フォーマット.
🏂 GLM 4.7で生成されたPythonコードを実行するためのツール呼び出し
より多くのVRAMがある場合、より多くのMoE層をオフロードするか、層全体をオフロードすることを試せます。
通常は、 -ot ".ffn_.*_exps.=CPU" はすべてのMoE層をCPUにオフロードします!これにより、非MoE層を1つのGPUに収めることができ、生成速度が向上します。GPU容量が多い場合は、より多くの層に合わせて正規表現をカスタマイズできます。
もし少し多くのGPUメモリがあるなら、次を試してください -ot ".ffn_(up|down)_exps.=CPU" これは up と down の投影 MoE 層をオフロードします。
試してみてください -ot ".ffn_(up)_exps.=CPU" さらに多くのGPUメモリがある場合。これは up 投影の MoE 層のみをオフロードします。
正規表現をカスタマイズすることもできます。例えば -ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU" は gate、up、down の MoE 層をオフロードしますが、6層目以降に限定します。
最新の llama.cpp リリース 高スループットモードも導入しています。使用するには llama-parallel。詳細は こちら。また、 KVキャッシュを4ビットに量子化することができます こちら
をご覧ください。さらに、
より長いコンテキストに対応するには、 KVキャッシュの量子化 を使用してKおよびVキャッシュをより低ビットに量子化できます。これによりRAM / VRAMのデータ移動が減少し、生成速度が向上することもあります。Kの量子化で許容されるオプション(デフォルトは f16)には以下が含まれます。
--cache-type-k f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1
多少精度が向上するので、 _1 バリアントを使用するべきですが、やや遅くなります。例えば q4_1, q5_1
Vキャッシュも量子化できますが、 Flash Attentionを使ってllama.cppをコンパイルする必要があります サポートを有効にするには -DGGML_CUDA_FA_ALL_QUANTS=ON、そして --flash-attn コンパイルする必要があります 次のように :
-DGGML_CUDA_FA_ALL_QUANTS=ONを指定し、そして使用してください、
最終更新
役に立ちましたか?

