For the complete documentation index, see llms.txt. This page is also available as Markdown.

🐋DeepSeek-R1: ローカル実行方法

llama.cppを使ってDeepSeek-R1向けの1.58-bit Dynamic Quantsを実行する方法のガイド。

llama.cpp を使用する(推奨)

  1. を忘れないでください <|User|> および <|Assistant|> トークン! - あるいはチャットテンプレートフォーマッタを使用してください

  2. 最新の llama.cpp at: github.com/ggml-org/llama.cpp。以下のビルド手順に従うこともできます。 Apple Mac / Metal デバイスの場合、次を設定して -DGGML_CUDA=OFF その後は通常どおり続けてください - Metal サポートは既定で有効です。

apt-get update
apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y
git clone https://github.com/ggml-org/llama.cpp
cmake llama.cpp -B llama.cpp/build \\
    -DBUILD_SHARED_LIBS=ON -DGGML_CUDA=ON -DLLAMA_CURL=ON
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-quantize llama-cli llama-gguf-split
cp llama.cpp/build/bin/llama-* llama.cpp
  1. 使用するのが最善です --min-p 0.05 ごくまれなトークン予測を抑えるために - これは特に 1.58bit モデルでうまく機能することが分かりました。

  2. 次の方法でモデルをダウンロードします:

# pip install huggingface_hub hf_transfer
# import os # より高速なダウンロードのためのオプション
# os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"

from huggingface_hub import snapshot_download
snapshot_download(
  repo_id = "unsloth/DeepSeek-R1-GGUF",
  local_dir = "DeepSeek-R1-GGUF",
  allow_patterns = ["*UD-IQ1_S*"], # 1.58bit 用に量子化タイプ UD-IQ1_S を選択
)
  1. Q4_0 K 量子化キャッシュの例 注意: -no-cnv は自動会話モードを無効にします

出力例:

  1. GPU(たとえば RTX 4090)を24GB搭載しているなら、より高速に処理するために複数の層をGPUへオフロードできます。複数GPUがあるなら、さらに多くの層をオフロードできるはずです。

  1. ここにあるブログ記事で述べた Flappy Bird の例をテストするには: https://unsloth.ai/blog/deepseekr1-dynamic、1.58bit の動的量子化を使って、以下のように2番目の例を生成できます:

Cover

元の DeepSeek R1

Cover

1.58bit 動的量子化

使用したプロンプトは以下のとおりです:

この例で llama.cpp を呼び出すには、次のようにします:

  1. また、たとえば Ollama で使うために重みを結合したい場合は、このスクリプトを使用してください:

  1. DeepSeek R1 は61層あります。たとえば 24GB GPU または 80GB GPU なら、切り捨て後に次の量をオフロードできるはずです(メモリ不足になる場合は1減らしてください):

量子化
ファイルサイズ
24GB GPU
80GB GPU
2x80GB GPU

1.58bit

131GB

7

33

全層 61

1.73bit

158GB

5

26

57

2.22bit

183GB

4

22

49

2.51bit

212GB

2

19

32

Mac / Apple デバイスでの実行

Apple Metal デバイスでは --n-gpu-layers に注意してください。メモリ不足になる場合は値を下げてください。128GB のユニファイドメモリ搭載マシンなら、だいたい 59 層をオフロードできるはずです。

Ollama/Open WebUI で実行

Open WebUI は、R1 の実行方法について段階的なチュートリアルをこちらで公開しています: https://docs.openwebui.com/tutorials/integrations/llm-providers/deepseekr1-dynamic

GGUF で推論に Ollama を使いたい場合は、まず下のコードのように3つのGGUF分割ファイルを1つに結合する必要があります。その後、モデルをローカルで実行する必要があります。

DeepSeek チャットテンプレート

すべての蒸留版とメインの 671B R1 モデルは、同じチャットテンプレートを使用します:

<|begin▁of▁sentence|><|User|>1+1は何ですか?<|Assistant|>2です。<|end▁of▁sentence|><|User|>もっと説明して!<|Assistant|>

BOS は強制的に追加され、EOS は各やり取りを区切ります。推論時のBOSトークンの重複を避けるため、呼び出すのは tokenizer.encode(..., add_special_tokens = False) のみとしてください。チャットテンプレートがBOSトークンも自動で追加するためです。 llama.cpp / GGUF 推論では、自動追加されるのでBOSはスキップしてください。

<|User|>1+1は何ですか?<|Assistant|>

<think> と </think> トークンには専用のトークンが割り当てられています。Qwen と Llama の蒸留版では一部のトークンが再マップされており、たとえば Qwen には BOS トークンがなかったため、代わりに <|object_ref_start|> を使う必要がありました。 トークナイザーID対応表:

トークン
R1
Distill Qwen
Distill Llama

<think>

128798

151648

128013

</think>

128799

151649

128014

<|begin_of_sentence|>

0

151646

128000

<|end_of_sentence|>

1

151643

128001

<|User|>

128803

151644

128011

<|Assistant|>

128804

151645

128012

パディングトークン

2

151654

128004

モデル内の元トークン:

トークン
Qwen 2.5 32B Base
Llama 3.3 70B Instruct

<think>

<|box_start|>

<|reserved_special_token_5|>

</think>

<|box_end|>

<|reserved_special_token_6|>

<|begin▁of▁sentence|>

<|object_ref_start|>

<|begin_of_text|>

<|end▁of▁sentence|>

<|endoftext|>

<|end_of_text|>

<|User|>

<|im_start|>

<|reserved_special_token_3|>

<|Assistant|>

<|im_end|>

<|reserved_special_token_4|>

パディングトークン

<|vision_pad|>

<|finetune_right_pad_id|>

すべての蒸留版と元のR1版では、誤ってパディングトークンが <|end▁of▁sentence|> に割り当てられているようです。特に、これらの推論モデルの上にさらにファインチューニングしたい場合、これはあまり良い考えではありません。ほとんどのフレームワークが EOS トークンを -100 としてマスクするため、無限に終わらない生成が発生します。 私たちは、正しいパディングトークンで蒸留版と元のR1版のすべてを修正しました(Qwen は <|vision_pad|> を使用し、Llama は <|finetune_right_pad_id|> を使用し、R1 は <|▁pad▁|>、または独自に追加した <|PAD▁TOKEN|> を使用します。

GGUF R1 テーブル

MoE ビット数
タイプ
ディスクサイズ
精度
リンク
詳細

1.58bit

UD-IQ1_S

131GB

まずまず

MoE 全体で 1.56bit。 down_proj MoE の混合で 2.06/1.56bit

1.73bit

UD-IQ1_M

158GB

良い

MoE 全体で 1.56bit。 down_proj MoE では 2.06bit のまま

2.22bit

UD-IQ2_XXS

183GB

より良い

MoE 全体で 2.06bit。 down_proj MoE の混合で 2.5/2.06bit

2.51bit

UD-Q2_K_XL

212GB

最高

MoE 全体で 2.5bit。 down_proj MoE の混合で 3.5/2.5bit

最終更新

役に立ちましたか?