🐳DeepSeek-V3-0324:如何本地运行
如何使用我们的动态量化在本地运行 DeepSeek-V3-0324,以恢复精度
请参阅 https://docs.unsloth.ai/basics/deepseek-r1-0528-how-to-run-locally (2025年5月28日更新)学习如何更快更高效地运行 DeepSeek!
DeepSeek 又有新动作!在 2024 年 12 月和 2025 年 1 月发布 V3、R1 Zero 和 R1 之后,DeepSeek 更新了 V3 的检查点/模型,并发布了三月更新!
根据 DeepSeek 的说法,MMLU-Pro 提升了 +5.3%,达到 81.2%。 GPQA 提升了 +9.3 个百分点。AIME 提升 +19.8%,LiveCodeBench 提升 +10.0%!他们提供了一张图表,展示了与之前的 V3 检查点以及像 GPT 4.5 和 Claude Sonnet 3.7 等其他模型的比较情况。 但是我们如何在本地运行一个 6710 亿参数的模型?
DeepSeek V3 的原始上传为 float8,占用 715GB。使用 Q4_K_M 可将文件大小减半至大约 404GB,而我们的动态 1.78bit 量化约为 151GB。 我们建议使用我们的 2.7bit 量化在大小和精度之间取得平衡!2.4bit 的也运作良好!
⚙️ 官方推荐设置
根据 DeepSeek,以下是推理的推荐设置:
温度为 0.3 (对于编程可能设为 0.0, 见此处)
Min_P 为 0.00(可选,但 0.01 效果很好,llama.cpp 的默认值是 0.1)
聊天模板:
<|User|>在 Python 中创建一个简单可玩的 Flappy Bird 游戏。将最终游戏放在一个 markdown 区块中。<|Assistant|>一个 BOS 标记为
<|begin▁of▁sentence|>会在分词时自动添加(请不要手动添加!)DeepSeek 提到还使用了一个 system 提示词 (可选)——它是中文:
该助手为DeepSeek Chat,由深度求索公司创造。\n今天是3月24日,星期一。其翻译为:该助手为 DeepSeek Chat,由 DeepSeek 创建。\n今天是 3 月 24 日,星期一。对于 KV 缓存量化,请使用 8bit,而不是 4bit——我们发现 4bit 明显更差。
📖 教程:如何在 llama.cpp 中运行 DeepSeek-V3
获取最新的
llama.cpp在 此处的 GitHub。您也可以按照下面的构建说明进行。若-DGGML_CUDA=ON更改为-DGGML_CUDA=OFF如果您没有 GPU 或仅想要在 CPU 上进行推理。 对于 Apple Mac / Metal 设备,设置-DGGML_CUDA=OFF然后照常继续 - Metal 支持默认启用。
注意 使用 -DGGML_CUDA=ON 在 GPU 上可能需要 5 分钟编译。仅 CPU 编译大约 1 分钟。你可能对 llama.cpp 的预编译二进制感兴趣。
通过以下方式下载模型(在安装
pip install huggingface_hub hf_transfer之后)。您可以选择UD-IQ1_S(动态 1.78bit 量化)或其他量化版本,例如Q4_K_M. 我建议使用我们的 2.7bit 动态量化UD-Q2_K_XL以在大小和准确性之间取得平衡。更多版本在: https://huggingface.co/unsloth/DeepSeek-V3-0324-GGUF
按照我们为 DeepSeek R1 提供的 1.58bit 动态量化描述,运行 Unsloth 的 Flappy Bird 测试。
编辑
--threads 32用于设置 CPU 线程数,--ctx-size 16384用于上下文长度,--n-gpu-layers 2用于指定将多少层卸载到 GPU。若 GPU 出现内存不足,请尝试调整它。若仅使用 CPU 推理,请移除此项。

像 DeepSeek-R1 一样,V3 有 61 层。例如在 24GB GPU 或 80GB GPU 上,你可以在向下取整后进行卸载(如果出现内存不足则再减少 1 层):
1.73bit
173GB
5
25
56
2.22bit
183GB
4
22
49
2.51bit
212GB
2
19
32
在 Mac / Apple 设备上运行
对于 Apple Metal 设备,请注意 --n-gpu-layers。如果发现机器内存不足,请减少该值。对于 128GB 统一内存的机器,你应能卸载大约 59 层左右。
🎱 七边形测试
我们还通过测试我们的动态量化,来自 r/Localllama 该测试要求模型创建一个基本物理引擎,以模拟球在移动的封闭七边形中旋转的情况。


非动态 2bit。失败 - 癫痫警告 又来了!

动态 2bit。实际上正确地解决了七边形难题!!

原始 float8
动态 2.7 bit 量化仅有 230GB,实际上成功解决了七边形难题!所有三个版本(包括完整 fp8)的完整输出如下:
🕵️ 额外发现与提示
通过经验测试我们发现使用较低的 KV 缓存量化(4bit)似乎会降低生成质量——需要更多测试,但我们建议使用
q8_0缓存量化。量化的目标是支持更长的上下文长度,因为 KV 缓存使用相当多的内存。我们发现
down_proj在此模型中对量化极为敏感。我们不得不重新做了一些动态量化,这些量化对down_proj使用 2 位,而现在我们为所有这些矩阵至少使用 3 位。使用
llama.cpp的 Flash Attention 后端确实能带来稍快的解码速度。编译时使用-DGGML_CUDA_FA_ALL_QUANTS=ON注意最好还将你的 CUDA 架构设置为在以下位置找到的值 https://developer.nvidia.com/cuda-gpus 以减少编译时间,然后通过以下方式设置它-DCMAKE_CUDA_ARCHITECTURES="80"使用一个
min_p=0.01可能就足够了。llama.cpp默认值为 0.1,这可能不是必要的。由于无论如何温度设置为 0.3,我们很可能不会抽样到低概率的标记,因此移除极不可能的标记是一个好主意。DeepSeek 建议对编码任务使用 0.0 的温度。
最后更新于
这有帮助吗?


