第40章 本地运行 DeepSeek-V3.1:Unsloth 1-bit GGUF 量化指南
你可以使用 Unsloth 的 1-bit Dynamic 2.0 GGUF 在你喜欢的推理框架上运行该模型。我们将 DeepSeek-V3.1 从 720GB 量化至 170GB,这款 671B 参数模型的体积缩小了 80%。我们还修复了 llama.cpp 支持的工具聊天模板。
推荐:阅读我们的 完整指南,了解如何在本地运行 DeepSeek-V3.1 的步骤。
为了在精度和体积之间取得最佳平衡,我们不会量化所有层,而是有选择地例如将 MoE 层量化到更低的比特位,而将 attention 及其他层保留在 4 或 6 bit。
在此查看我们的 DeepSeek-V3.1 GGUF🐋如何运行 DeepSeek-V3.1 DeepSeek 的 V3.1 更新引入了混合推理机制,将“思考”和“非思考”模式整合到一个模型中。完整的 671B 参数模型需要 715GB 的磁盘空间。量化后的动态 1-bit 版本仅需 170GB(体积减少 80%)。
根据 DeepSeek 的建议,V3.1 推理的推荐设置如下:
- 将 temperature 设为 0.6,以减少重复和无逻辑的情况。
- 将 top_p 设为 0.95(推荐值)
- 128K 上下文长度🦙 如何在 Ollama 中运行 V3.1: 如果你还没安装 Ollama,请先安装! apt-get update
apt-get install pciutils -y
curl -fsSL https://ollama.com/install.sh | sh 运行模型!注意,如果失败,你可以在另一个终端中调用 ollama serve!我们在 Hugging Face 上传文件中包含了所有的修复和推荐参数(如 temperature 等)!
(新)要在 Ollama 中运行完整的 R1-0528 模型,你可以使用我们的 TQ1_0(170GB 量化): OLLAMA_MODELS=unsloth ollama serve &
OLLAMA_MODELS=unsloth ollama run hf.co/unsloth/DeepSeek-V3.1-GGUF:TQ1_0 要运行其他更大的量化版本,你需要先像下面的代码那样将 GGUF 分割文件合并为一个文件。然后你将在本地运行该模型: ../llama.cpp/llama-gguf-split --merge \
DeepSeek-V3.1-GGUF/DeepSeek-V3.1-UD-Q2_K_XL/DeepSeek-V3.1-UD-Q2_K_XL-00001-of-00006.gguf \
merged_file.ggufOLLAMA_MODELS=unsloth ollama serve &
OLLAMA_MODELS=unsloth ollama run merged_file.gguf ✨ 如何在 llama.cpp 中运行 V3.1:获取 GitHub 上最新的 llama.cpp。你可以参考以下的构建说明。如果没有 GPU 或仅希望使用 CPU 进行推理,请将 -DGGML_CUDA=ON 改为 -DGGML_CUDA=OFF。apt-get updateapt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -ygit clone https://github.com/ggml-org/llama.cppcmake llama.cpp -B llama.cpp/build \ -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON -DLLAMA_CURL=ONcmake --build llama.cpp/build --config Release -j --clean-first --target llama-quantize llama-cli llama-gguf-splitcp llama.cpp/build/bin/llama-* llama.cpp
如果希望直接使用 llama.cpp 加载模型,可执行以下操作:(:Q2_K_XL) 指的是量化类型。你也可以通过 Hugging Face 下载(参考第 3 点)。这与 ollama run 类似。使用 export LLAMA_CACHE="folder" 可强制 llama.cpp 将缓存保存到特定位置。export LLAMA_CACHE="unsloth/DeepSeek-V3.1-GGUF"./llama.cpp/llama-cli \ -hf unsloth/DeepSeek-V3.1-GGUF:Q2_K_XL \ --cache-type-k q4_0 \ --threads -1 \ --n-gpu-layers 99 \ --prio 3 \ --temp 0.6 \ --top_p 0.95 \ --min_p 0.01 \ --ctx-size 16384 \ --seed 3407 \ -ot ".ffn_.*_exps.=CPU"
安装 pip install huggingface_hub hf_transfer 后,可通过以下方式下载模型。你可以选择 UD-Q2_K_XL(动态 2-bit 量化)或其他量化版本(如 Q4_K_M)。推荐我们的 2.7-bit 动态量化版本 UD-Q2_K_XL,以平衡模型大小和精度。# !pip install huggingface_hub hf_transferimport osos.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "0" # 有时会遇到速率限制,设为 0 可禁用from huggingface_hub import snapshot_downloadsnapshot_download( repo_id = "unsloth/DeepSeek-V3.1-GGUF", local_dir = "unsloth/DeepSeek-V3.1-GGUF", allow_patterns = ["*UD-Q2_K_XL*"], # 动态 1-bit (168GB)。使用 "*UD-Q2_K_XL*" 可获取动态 2-bit (251GB))
通过输入提示词来运行模型。
你可以编辑 --threads 32 来设置 CPU 线程数,编辑 --ctx-size 16384 来设置上下文长度,通过 --n-gpu-layers 2 设置 GPU 卸载的层数。如果 GPU 出现显存不足,请尝试调整此参数。如果是纯 CPU 推理,请移除该参数。./llama.cpp/llama-cli \ --model unsloth/DeepSeek-V3.1-GGUF/UD-Q2_K_XL/DeepSeek-V3.1-UD-Q2_K_XL-00001-of-00006.gguf \ --cache-type-k q4_0 \ --jinja \ --threads -1 \
--temp 0.6 \
--top_p 0.95 \
--min_p 0.01 \
--ctx-size 16384 \
--seed 3407 \
-ot ".ffn_.*_exps.=CPU"如果内存加显存不够用,可以下载 1bit 版本(170GB):from huggingface_hub import snapshot_download
snapshot_download(
repo_id = "unsloth/DeepSeek-V3.1-GGUF",
local_dir = "unsloth/DeepSeek-V3.1-GGUF",
allow_patterns = ["*UD-TQ1_0*"], # 动态 2bit 请用 "*UD-Q2_K_XL*"
)🦋聊天模板 bug 修复DeepSeek V3.1 的聊天模板在 llama.cpp 等引擎中无法正常工作,我们修复了其中的几个问题:
1. DeepSeek V3.1 是混合推理模型,可以通过修改聊天模板来开启推理功能。它的模板引入了 thinking = True,但其他模型用的是 enable_thinking = True。我们增加了一个选项,支持用 enable_thinking 作为关键字。
2. llama.cpp 通过 minja 渲染 jinja 时,不允许在 .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💕 感谢!感谢大家一直以来的支持。🙏
和往常一样,欢迎加入我们的 Reddit 页面和 Discord 服务器寻求帮助,或者来为我们捧场!也可以在 Twitter 上关注我们,并订阅我们的 newsletter。感谢阅读!Daniel & Michael Han 🦥
2025 年 8 月 21 日立即本地运行 DeepSeek-V3.1!免费开始使用加入我们的 Discord