我这里有两份整理好各种场景的提示词,大家如有需求可以加我微信领取。
本文的作者是
李锡涵(
Xihan Li)
。他是
伦敦大学学院(UCL)计算机系博士研究生,谷歌开发者专家,主要研究方向为学习优化,在 NeurIPS、ICLR、AAMAS、CIKM 等会议发表过学术论文,Circuit Transformer 作者,图书《简明的 TensorFlow 2》(https://tf.wiki)作者。
过年这几天,
DeepSeek 算是彻底破圈了,火遍大江南北,火到人尽皆知。虽然网络版和 APP 版已经足够好用,但
把模型部署到本地,才能真正实现独家定制,让
DeepSeek
R1 的深度思考「以你为主,为你所用」。
关于本地部署,大多数人使用的是蒸馏后的8B/32B/70B版本,本质是微调后的Llama或Qwen模型,并不能完全发挥出DeepSeek R1的实力。
然而,完整的671B MoE模型也可以通过针对性的量化技术压缩体积,从而大幅降低本地部署门槛,乃至在消费级硬件(如单台Mac Studio)上运行。
那么,如何用 ollama 在本地部署 DeepSeek R1 671B(完整未蒸馏版本)模型呢?一篇在海外热度很高的简明教程即将揭晓。
本地部署后,让 DeepSeek R1 「数草莓」
模型选择
原版 DeepSeek R1 671B 全量模型的文件体积高达 720GB,对于绝大部分人而言,这都大得太离谱了。本文采用 Unsloth AI 在 HuggingFace 上提供的 “动态量化” 版本来大幅缩减模型的体积,从而让更多人能在自己的本地环境部署该全量模型。
“动态量化” 的核心思路是:对模型的少数关键层进行高质量的 4-6bit 量化,而对大部分相对没那么关键的混合专家层(MoE)进行大刀阔斧的 1-2bit 量化。通过这种方法,DeepSeek R1 全量模型可压缩至最小 131GB(1.58-bit 量化),极大降低了本地部署门槛,甚至能在单台 Mac Studio 上运行!
根据我自己的工作站配置,我选择了以下两个模型进行测试:
-
DeepSeek-R1-UD-IQ1_M(671B,1.73-bit 动态量化,158 GB,HuggingFace)
-
DeepSeek-R1-Q4_K_M(671B,4-bit 标准量化,404 GB,HuggingFace)
Unsloth AI 提供了
4 种动态量化模型
(1.58 至 2.51 比特,文件体积为 131GB 至 212GB),可根据自身硬件条件灵活选择。
建议阅读官方说明了解各版本差异。
-
Unsloth AI
官方说明:https://unsloth.ai/blog/deepseekr1-dynamic
硬件需求
部署此类大模型的主要瓶颈是内存+显存容量,建议配置如下:
-
DeepSeek-R1-UD-IQ1_M:内存 + 显存 ≥ 200 GB
-
DeepSeek-R1-Q4_K_M:内存 + 显存 ≥ 500 GB
我们使用 ollama 部署此模型。
ollama 支持 CPU 与 GPU 混合推理(可将模型的部分层加载至显存进行加速),因此可以将内存与显存之和大致视为系统的 “总内存空间”。
除了模型参数占用的内存+显存空间(158 GB 和 404GB)以外,实际运行时还需额外预留一些内存(显存)空间用于上下文缓存。预留的空间越大,支持的上下文窗口也越大。
-
-
四通道 DDR5 5600 内存(4×96 GB 内存)
-
ThreadRipper 7980X CPU(64 核)
在此配置下,短文本生成(约 500 个 token)的速度为:
-
DeepSeek-R1-UD-IQ1_M:7-8 token / 秒(纯 CPU 推理时为 4-5 token / 秒)
-
DeepSeek-R1-Q4_K_M:2-4 token / 秒
长文本生成时速度会降至 1-2 token / 秒。
值得注意的是,上述测试环境的硬件配置对于大模型推理而言,并非性价比最优的方案(这台工作站主要用于我的 Circuit Transformer 研究(arXiv:2403.13838),该研究在上周于 ICLR 会议接收。我和我的工作站都可以休息一下了,于是有了这篇文章)。
-
Mac Studio:配备大容量高带宽的统一内存(比如 X 上的 @awnihannun 使用了两台 192 GB 内存的 Mac Studio 运行 3-bit 量化的版本)
-
高内存带宽的服务器:比如 HuggingFace 上的 alain401 使用了配备了 24×16 GB DDR5 4800 内存的服务器)
-
云 GPU 服务器:配备 2 张或更多的 80GB 显存 GPU(如英伟达的 H100,租赁价格约 2 美元 / 小时 / 卡)
我这里有两份整理好各种场景的提示词,大家如有需求可以加我微信领取。
若硬件条件有限,可尝试体积更小的 1.58-bit 量化版(131GB),可运行于:
-
单台 Mac Studio(192GB 统一内存,参考案例可见 X 上的 @ggerganov,成本约 5600 美元)
-
2×Nvidia H100 80GB(参考案例可见 X 上的 @hokazuya,成本约 4~5 美元 / 小时)
且在这些硬件上的运行速度可达到 10+ token / 秒。
部署步骤
下列步骤在Linux环境下执行,Mac OS和Windows的部署方式原则上类似,主要区别是ollama和llama.cpp的安装版本和默认模型目录位置不同。
从 HuggingFace (https://huggingface.co/unsloth/DeepSeek-R1-GGUF)下载模型的 .gguf 文件(文件体积很大,建议使用下载工具,比如我用的是 XDM),并将下载的分片文件合并成一个(见注释 1)。
curl -fsSL https://ollama.com/install.sh | sh
3. 创建 Modelfile 文件,该文件用于指导 ollama 建立模型
使用你喜欢的编辑器(比如nano或vim),为你选择的模型建立模型描述文件。
文件 DeepSeekQ1_Modelfile(对应于 DeepSeek-R1-UD-IQ1_M)的内容如下:
FROM /home/snowkylin/DeepSeek-R1-UD-IQ1_M.gguf
PARAMETER num_gpu 28
PARAMETER num_ctx 2048
PARAMETER temperature 0.6
TEMPLATE "{{ .Prompt }}"
文件 DeepSeekQ4_Modelfile(对应于 DeepSeek-R1-Q4_K_M)的内容如下:
FROM /home/snowkylin/DeepSeek-R1-Q4_K_M.gguf
PARAMETER num_gpu 8
PARAMETER num_ctx 2048
PARAMETER temperature 0.6
TEMPLATE "{{ .Prompt }}"
你需要将第一行“FROM”后面的文件路径,改为你在第1步下载并合并的.gguf文件的实际路径。
可根据自身硬件情况调整 num_gpu(GPU 加载层数)和 num_ctx(上下文窗口大小),详情见步骤 6。
在第3步建立的模型描述文件所处目录下,执行以下命令:
ollama create DeepSeek-R1-UD-IQ1_M -f DeepSeekQ1_Modelfile
务必确保 ollama 的模型目录 /usr/share/ollama/.ollama/models 有足够大的空间(或修改模型目录的路径,见注释 2)。这个命令会在模型目录建立若干模型文件,体积与下载的.gguf 文件体积相当。