自从deepseek R1发布之后「详见《》」,deepseek便爆火
爆火以后便应了“人红是非多”那句话,不但遭受各种大规模攻击,即便后来挡住了大部分攻击,但海内外大量闯入deepseek官网一探究竟的网友也把他们的服务器压得不堪重负
导致一提问,要么频繁显示:服务器繁忙,请稍后再试;要么回答了 但无法联网,致使我朋友圈内一些不知情的朋友说:看把媒体给能的,各种瞎吹,但其实不过尔尔..
怎么办呢?
如此,本文来了,以下是本文的更新记录「本文不用付费、不用各种附加条件,直接看即可,且涵盖各种版本的部署、各种交互模式、各种额外功能比如联网、知识库——齐活」
2.3日下午,在我自己的iMac上本地部署了下R1 7B蒸馏版,详见下文的
2.1.1 Ollama下的终端命令行交互
2.1.2 Ollama下的open-webui交互:基于docker安装,且支持联网搜索
2.4日晚上,可能是自己早已习惯在博客中尽可能把所有细节一次性讲清楚
所以我自己又尝试了
2.1.3 基于Ollama + ChatBox部署deepseek-r1:7b
2.2.1 基于Ollama + Page Assist搭建本地知识库问答系统:且支持联网搜索
且同时让同事文弱尝试了通过vLLM推理deepseek-r1,也已更新在了下文的
2.3 通过vLLM推理deepseek-r1
2.5日早上,再度尝试了
2.2.2 基于Ollama + AnythingLLM搭建本地知识库问答
2.8日下午,在文中体现出不同电脑上的安装差别——分Mac版、Windows版、Linux
后两者分别来自同事朝阳、同事青睐的贡献
2.15上午,新增:3.1.3 单卡4090部署Deepseek-R1 671B Q4量化版
3.2日下午,补充「3.1.3 单卡或4卡4090部署Deepseek-R1 671B Q4量化版」的相关内容
第一部分 本地部署之前的准备工作:各个版本、推理框架、硬件资源 1.1 DeepSeek-R1的多个版本:加上2个原装671B的,总计8个参数版本在huggingface上总共有以下几种参数的deepseek R1
DeepSeek-R1 671B
DeepSeek-R1-Zero 671B
DeepSeek-R1-Distill-Llama-70B
DeepSeek-R1-Distill-Qwen-32B
DeepSeek-R1-Distill-Qwen-14B
DeepSeek-R1-Distill-Llama-8B
DeepSeek-R1-Distill-Qwen-7B
DeepSeek-R1-Distill-Qwen-1.5B
1.2 主流的大模型推理框架:分为PC端和Android端首先,看推理框架,目前主流的大模型推理框架主要有以下5种:
1.3 不同参数的模型所要求的硬件其次,看硬件要求,很显然,不同参数的模型所要求的硬件各不相同(修改自微信好友杨老师整理的表格)
模型参数最低GPU配置最低CPU配置建议内存建议硬盘空间A/H100(80G) x 16-18
某乎上便有篇文章:16张H100部署模型DeepSeek-R1
值得一提的是,A100/A800原生并不支持FP8运算,如果A800要执行FP8精度计算,需要在指令层面进行模拟(存在精度转换计算)
如下图所示(图源)
当然,如果用8-bit量化,则显存需求降至671B,需9-12张H100
Xeon 8核 192GB 2TB固态* 至于7B或8B的只需4G或以上显存即可,1.5B的则只需1G或以上显存
可以看到
因此提供的精度就是FP8(e4m3),占单个Byte空间
"quantization_config": { "activation_scheme": "dynamic" "fmt": "e4m3", "quant method": "fp8" "weight_block_size": [ 128, 128 ] }模型分片163个,模型的文件总计约为642G,如果以FP3精度加载到显存,模型参数就需要642GB空间
按PagedAttention论文预估的KV-Cache+和激化值估计至少要占到30%左石
在推理场景下,输出大多是长文本,那就更多了,而且具体模型还要实测,或用Nvidia Nisight+分析显存占用。估计常规部署都需要800GB以上,10张A800打底
而大部分消费者或开发者拥有的硬件资源是有限的,故关于网上大多数人所谓部署的R1都是其蒸馏Llama/Qwen后的8B/32B/70B版本,本质是微调后的Llama或Qwen模型
1.4 蒸馏版和满血版的两类部署最后,咱们下面有两种部署对象
一个是部署各种蒸馏版
也不要小看蒸馏版,虽然R1蒸馏llama/qwen的版本效果上不及R1 671B满血版,但还是挺能打的
详见下图,在与GPT-4o 0513、o1 mini、QwQ-32B preview PK的过程中,各个蒸馏版在六个榜单中的五个榜单 都拿到了第一
一个是部署R1 or R1-Zero 满血版
第二部分 通过Ollama/vLLM/MNN本地部署R1蒸馏版:支持联网及知识库问答(含PC端和手机端) 2.1 基于Ollama和各类插件构建智能对话:终端、open-webui、chatbox 2.1.1 Ollama下的终端命令行交互首先,671B的R1光模型本身就有688G:
所以,一般用户比较好跑的还是R1的蒸馏版
ollama目前支持部署多种模型,包括且不限于目前最流行的deepseek R1,也包括之前的llama 3.3等
我下午在我自己的iMac上本地部署了下R1 7B蒸馏版(同事朝阳则在Windows上试了下,同事青睐则在Linux上 试了下),还想办法支持了联网搜索,这一切确实比之前更平权了,速度可以的,效果的话 毕竟就7B嘛——和671B 满血版还是有很大差距的
我的iMac Retina 4K, 21.5-inch, 2017配置如下
处理器 3,4 GHz 四核Intel Core i5
图形卡 Radeon Pro 560 4 GB
内存16 GB 2400 MHZ DDR4
macOS Ventura 13.6.7
同事朝阳Windows的配置如下
CPU:Intel(R) Core(TM) i5-8300H
显卡:NVIDIA GeForce GTX 1050Ti 4G独显
内存:16G
具体怎么操作呢,进入Ollama页面
Download Ollama,我个人电脑因为是iMac,故选择macOS版本——180M大小
如果是Windows、或Linux,则分别对应选择
其中,如果是Windows
如同事朝阳所说,则Windows上下载后,先不要着急安装,因为会默认安装到C盘中,为避免占用C盘空间,可以先打开终端(cmd),通过OllamaSetup.exe /dir="E:\Program Files\Ollama”命令可以指定Ollama安装目录——这里由于Windows会默认安装到C盘,故和其他系统如Mac需特别注意下
且Ollama安装好之后,需先关闭,在配置并保存完环境变量后重新启动
接下来,指定大模型存储目录
1、打开“开始”菜单,搜索“环境变量”,点击“编辑系统环境变量”
在模型列表页面,下载deepseek R1模型:ollama.com/library/deepseek-r1,然后可以选择比如R1蒸馏qwen2 7B的蒸馏版
打开本地的命令提示符「我个人电脑是iMac,故在启动台的搜索框里:输入终端,即可打开」,输入以下命令后,回车键开始下载安装对应参数的模型: ollama pull deepseek-r1:7b 下载完成后,可以通过ollama list指令查看所有本地模型占用的存储空间 ollama list 想看具体某一个模型的参数。可以使用ollama show指令: ollama show <模型名称> 具体如下图所示
然后再运行以下命令,便可以和deepseek R1对话了 ollama run deepseek-r1:7b
比如可以提问它:为何deepseek影响力这么大——当然,我当时这个例子 举的并不好,因为它没联网(不过,下一节会增加联网搜索的功能),故它已有的预训练知识,回答不了这种时效性很强的问题,大家通过命令行交互的时候,可以问它数学题,毕竟其本质是个推理模型
当然,如果你希望有更好的交互方式,则可以考虑用ollama的标配前端open-webui
首先通过docker的官网下载docker
docker.p2hp.com
我直接用的Google账号注册
安装好后在右下角点击Terminal,打开控制台
输入以下命令——等待安装完成 docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main 然后在docker页面可以看到如下呈现
点击上面的链接::3000/auth,创建相关管理员账号之后
可能有同学疑问,这个7B没法联网,有点弱智啊,好问题
巧的是,在管理员面板上::3000/admin/settings,可以打开联网搜索滴,如果有相应搜索引擎的API,则自行设置,否则可以选择免费的duckduckgo
然后点击聊天界面的左下角 + 按钮,选择联网搜索
则一切大功告成
除了上面的open-webui之外,当然,也有人说,chatbox 是个很方便的图形界面,比open web-UI 好用
一不做二不休,那我们再试下这个chatbox
通过Ollama部署好deepseek-r1:7b之后,再通过chatbox官网下载对应的客户端:chatboxai
下载好chatbox之后,进行如下图所示的一系列设置「比如模型的提供方选择OLLAMA.API,且在下拉框处选择本地已经安装的模型deepseek-r1:7b」
接下来,便可以提问R1 7B拉
2.2 基于Ollama和Page Assist/AnythingLLM构建本地知识库问答系统 2.2.1 基于Ollama + Page Assist搭建本地知识库问答系统:且支持联网搜索也有人称,Page Assist 直接提供了一个类似Open WebUI的交互界面来运行本地的大模型,故我们再试下这个Page Assist
更何况在通过Ollama部署好deepseek-r1:7b之后,如果你想让DeepSeek R1不仅仅是一个问答机器人,而是一个具有专有知识的智能助手,那就需要搭建本地知识库了
实现也很简单——基于Page Assist即可
直接打开Chrome的插件市场,搜索并添加Page Assist插件
安装完插件后,点击插件图标,选择本地搭建的DeepSeek模型,进行配置,且支持联网搜索——背后还是基于免费的duckduckgo
且点击页面右上角的设置按钮,还可以进入RAG(RetrievalAugmented Generation)模式
上传你自己的知识库
此外,在Google浏览器下浏览任意网页时,可以随时调用R1,针对网页提问R1
除了通过page Assist搭建本地知识库外,还可以通过AnythingLLM
在其官网下载客户端:https://anythingllm.com/desktop
下载好了之后,选择模型
一切安装好了之后,点击界面左上角-工作区的上传按钮
本2.3节基本为我司大模型项目组的文弱编写
2.3.1 基于vLLM的命令行交互——R1-Distill-Llama-8B首先,新建一个conda环境: conda create -n vllm_test python=3.10
然后配置该conda环境: conda activate vllm_test pip install vllm
配置好以后,启动vllm推理服务: vllm serve path_to/DeepSeek-R1-Distill-Llama-8B --tensor-parallel-size 1 --max-model-len 32768 --enforce-eager --gpu_memory_utilization=0.98 --enable-chunked-prefill --port 6060 默认是8000端口,可以修改port里的参数来改变服务端口
vllm serve后面的模型路径改为本地下载好的模型的实际绝对路径
启动vllm服务后,便可以直接提问了,比如输入如下命令行: curl :6060/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "path_to/DeepSeek-R1-Distill-Llama-8B ", "messages": [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "题目:有五个人站成一排,每个人手中都拿着一顶帽子,帽子的颜色可以是红色、蓝色或绿色。每个人都能看到自己前面的人头上的帽子颜色,但看不见自己头上的帽子,且每个人只能看到前面人的帽子颜色,而无法看见自己的帽子和别人背后的帽子。每个人都可以听到别人说话的内容,但不能交换信息。规则:每个人都知道一共有三种颜色的帽子(红、蓝、绿),并且帽子是随机分配的,每种颜色可能有多个,但也可能没有。每个人会依次回答自己头上的帽子颜色,能正确猜出自己帽子颜色的人可以获得奖励。第一个人只能听到后面四个人的回答,无法知道任何自己的信息;第二个人只能听到后面三个人的回答,依此类推。第一个人可以先做一个声明,告知后面的人如何推理他们自己的帽子颜色。问题:如果所有人都能完美推理出自己头上的帽子颜色,问:第一个人应该如何开始,才能确保最多的人能够猜对自己帽子颜色?"} ], "max_tokens": 2000, "temperature": 0.7, "top_p": 0.9 }'
2.3.2 基于vllm + open WebUi 部署r1 7b同事文弱因为电脑显存有限,所以找了一个量化的7b模型,重在跑通流程「如他所说,open webui需要docker,所以autodl上不能用,但是我的电脑显存又比较小,我去魔搭社区找到了一个8bit的r1 7b弄的,最终在wsl2上启动的vllm服务,在Windows上启动的open webui」
对于wsl2的部分:
第一步:下载模型 git lfs install git clone https://www.modelscope.cn/okwinds/DeepSeek-R1-Distill-Qwen-7B-Int8-W8A16.git
第二步:搭建环境 conda create -n vllm_deploy python=3.10 conda activate vllm_deploy pip install vllm
第三步:用vllm启动推理服务 vllm serve /home/duke/playground/models/DeepSeek-R1-Distill-Qwen-7B-Int8-W8A16 --max-model-len 32768 --enforce-eager --gpu_memory_utilization=0.9 --enable-chunked-prefill
第四步:得到wsl2的实际ip地址 ip addr show eth0 | grep 'inet ' | awk '{print $2}' | cut -d/ -f1 172.18.xxx.xxx
对于Windows部分
第一步:下载docker桌面版
在docker官网()下载Windows的docker桌面版
第二步:运行(下载)open Webui docker docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
第三步:在本地浏览器输入 localhost:3000 进入open Webui界面
注册并登录之后
点击左下角的settings:
第四步:对话验证
新建一个对话框,这个时候就可以找到我们在wsl2中vllm部署的模型了
加载该模型即可开始对话
直接通过这个链接:mnn_llm_app_debug_0_1.apk,下载Android apk,安装之后,在应用内的模型列表最后一个,直接安装R1-1.5B-Qwen-MNN 即可
我另一个同事朝阳——我司七月大模型项目组负责人,也验证了下,没问题
本地部署R1 or R1-Zero 满血版又分为两种方式
一种是做了各种量化的,此乃属于追求满血版但资源还是有限不得不做的折中处理
一种是不做任何量化的,这种属于土豪路径,如果你是用的这个路线,请私我,原因很简单,我也想多一些土豪朋友
3.1 折中路径:无蒸馏但量化部署Deepseek-R1 671B满血版 3.1.1 本地CPU上运行 Deepseek-R1 Q8量化版的完整的硬件 + 软件设置huggingface 的一工程师Matthew Carrigan展示了在本地CPU上运行 Deepseek-R1 的完整的硬件 + 软件设置「他使用的是 670B 模型,无蒸馏,Q8 量化,实现全质量,总成本 6,000 美元——GPU版本得10万美元+」
核心硬件方面
主板:技嘉 MZ73-LM0 或 MZ73-LM1。有 2 个 EPYC 插槽,以获得 24 个 DDR5 RAM 通道
CPU:2x 任何 AMD EPYC 9004 或 9005 CPU
“LLM 一代的瓶颈在于内存带宽,因此您不需要高端产品。如果真的想降低成本,请购买 9115 甚至 9015”
RAM:24×32GB DDR5-RDIMM
因为需要 768GB(以适应模型)跨 24 个 RAM 通道(以获得足够快的带宽),故意味着 24 x 32GB DDR5-RDIMM 模块
关键组件方面
电源:该系统的功耗出奇地低!(<400W)
“但是,您需要大量的 CPU 电源线来为 2 个 EPYC CPU 供电。Corsair HX1000i 的功率足够了。”
机箱:具有用于安装完整服务器主板的螺丝安装座
散热器:适合AMD EPYC 有 SP5 插槽的就行
系统调优方面
最后,SSD:任何适合 R1 的 1TB 或更大的 SSD 都可以。“推荐 NVMe,只是因为启动模型时你必须将 700GB 复制到 RAM 中
软件部分:安装 Linux,进入 BIOS 并将 NUMA 组数设置为 0。这将确保模型的每一层都交错在所有 RAM 芯片上,从而使我们的吞吐量加倍。安装 Llama。下载 700G 的DeepSeek-R1-Q8_0 版本
软件部署
安装llama.cpp:git clone https://github.com/ggerganov/llama.cpp
下载模型权重:HuggingFace Q8_0目录全量700GB(⚠️确保存储空间)
一切完成后,设置以下代码: llama-cli -m ./DeepSeek-R1.Q8_0-00001-of-00015.gguf --temp 0.6 -no-cnv -c 16384 -p "<|User|>How many Rs are there in strawberry? <|Assistant|>"
这个版本没有 GPU,生成速度是每秒 6 到 8 个tokens,作者认为考虑到价格,这个非 GPU 硬件的方案可以接受。因为运行的是 Q8 量化的完整 670B 模型,因此质量应与 Deepseek API 无异
至于为什么不用GPU?
显存墙限制:保持Q8精度需700GB+显存,单张H100仅80GB → 需9张组集群 → 成本超10万美元
量化损耗困境:若降精度至FP16,8卡H100即可运行 → 但模型质量显著下降 ≈ 智商砍半
性价比暴击:本方案以1/20成本实现可用推理速度(对比GPU方案6-8tps vs 50-100tps)
3.1.2 GPU上跑无蒸馏但动态量化的Deepseek-R1 671B满血版Unsloth AI 在 HuggingFace 上提供了 “动态量化” 版本来大幅缩减模型的体积
所谓“动态量化” 的核心思路是:对模型的少数关键层进行高质量的 4-6bit 量化,而对大部分相对没那么关键的混合专家层(MoE)进行大刀阔斧的 1-2bit 量化
为什么可以做呢,原因在于他们观察到,DeepSeek 的前 3 层是全连接层,而非 MoE 层
作为回顾,MoE(专家混合)层使得能够在不增加模型计算量(FLOPs)的情况下增加参数数量,因为他们动态地将大多数条目掩码为 0,因此实际上跳过了对这些零值条目的矩阵乘法运算「更多请参阅此条推文:x.com/danielhanchen/status/1868748998783517093」
总之,通过这种方法,DeepSeek R1 全量模型可压缩至最小 131GB(1.58-bit 量化),极大降低了本地部署门槛,甚至能在单台 Mac Studio 上运行
Unsloth AI 提供了4 种动态量化模型(1.58 至 2.51 比特,文件体积为 131GB 至 212GB)
MoE BitsDisk SizeTypeQualityLinkDown_proj
1.58-bit 131GB IQ1_S Fair huggingface.co/unsloth/DeepSeek-R1-GGUF/tree/main/DeepSeek-R1-UD-IQ1_S 2.06/1.56bit
1.73-bit 158GB IQ1_M Good huggingface.co/unsloth/DeepSeek-R1-GGUF/tree/main/DeepSeek-R1-UD-IQ1_M 2.06bit
2.22-bit 183GB IQ2_XXS Better huggingface.co/unsloth/DeepSeek-R1-GGUF/tree/main/DeepSeek-R1-UD-IQ2_XXS 2.5/2.06bit
2.51-bit 212GB Q2_K_XL Best huggingface.co/unsloth/DeepSeek-R1-GGUF/tree/main/DeepSeek-R1-UD-Q2_K_XL 3.5/2.5bit
部署此类大模型的主要瓶颈是内存+显存容量,建议配置如下:
DeepSeek-R1-UD-IQ1_M:内存 + 显存 ≥ 200 GB
DeepSeek-R1-Q4_K_M:内存 + 显存 ≥ 500 GB
若硬件条件有限,可尝试体积更小的 1.58-bit 量化版(131GB),可运行于:
单台 Mac Studio
192GB 统一内存,参考案例可见 X 上的 @ggerganov,成本约 5600 美元
2×Nvidia H100 80GB
参考案例可见 X 上的 @hokazuya,成本约 4~5 美元 / 小时
且在这些硬件上的运行速度可达到 10+ token / 秒
// 待更
3.1.3 单卡或4卡4090部署Deepseek-R1 671B Q4量化版上面的方案都需要比较高的硬件成本或比较大的显存,那可能很多朋友问了,我只有一张4090,可否部署671B,哪怕量化版也行啊
嗯,好问题! 咱们就来基于清华大学ktranformers方案,通过单卡4090部署Deepseek-R1 671B Q2/Q4量化版
对于ktranformers方案,简单来说是“内存换显存”思路,可以极大降低deepseek r1模型的部署成本
「对个人用户来说,高内存显然要比高显存的成本要低的多。如果有想低成本个人或者小团队部署的话,可以尝试本节介绍的部署方案」
本次实验因没暂时没有在autodl上找到足够高内存的机器,固先测试了deepseek r1 Q2量化模型的部署,具体教程如下(如有合适配置,部署更高版本的r1基本思路也是一样的):
....
// 单卡4090部署R1 671B暂在「七月在线」首页的deepseek项目实战营中,本文待更
本文先分享一下4卡4090部署Deepseek-R1 671B Q4量化版,当然,之所以是用四卡,是为了增加系统内存,autodl上是一张4090对应120g内存,实际用ktransfomer部署至少需要387g内存
且cuda版本:12.1 (及以上),同事文弱那里是12.4,模型大小377G
首先,是环境配置
环境配置
新建环境 conda create --name ktransformers python=3.11
conda activate ktransformers 初次新建完可能需要先在控制台输入conda init再重启会话
下载依赖包 pip install torch packaging ninja cpufeature numpy 编译flash-attn包可能会花费大约1个小时的时间 MAX_JOBS=4 pip install flash-attn --no-build-isolation -i https://pypi.tuna.tsinghua.edu.cn/simple pip install --upgrade setuptools wheel cmake
下载ktransfomers的repo git clone https://github.com/kvcache-ai/ktransformers.git 编译项目(这里也需要比较久的时间): cd ktransformers git submodule init git submodule update export USE_NUMA=1 make dev_install 另外需要注意看下系统libstdc++.so.6文件中支持的GLIBCXX版本: strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX 如果没有GLIBCXX_3.4.32版本,则需要升级GCC 和 libstdc++等: sudo apt update sudo apt upgrade sudo apt install gcc g++
其次,是模型下载
这里只需要下载GGUF文件即可
具体仓库地址为:
https://www.modelscope.cn/models/unsloth/DeepSeek-R1-GGUF/files
且可以nohup启动下载任务,防止本地网络波动打断下载:
nohup download.py >download.log 2>&1 &最后,是模型运行
因网络原因,建议先启动hugging face镜像:
export HF_ENDPOINT=https://hf-mirror.com然后可以启动local_chat,在控制台进行与Q4模型的对话:
python ./ktransformers/local_chat.py --model_path deepseek-ai/DeepSeek-R1 --gguf_path /root/autodl-tmp/models/DeepSeek-R1-GGUF/DeepSeek-R1-Q4_K_M --cpu_infer 32 --max_new_tokens 10000参数说明:
--model_path 是对应huggingface上的仓库名称,运行以后实际不会下这个模型,只是会下载该仓库中关于config之类的几个几k的小文件
--gguf_path即为实际下载的模型的路径
--cpu_infer根据官方指导,设置为比物理核心数稍小一点就可以了。超过物理核心数性能也不会更高
启动以后可能会先卡住几十秒钟(不同配置可能情况会有不同),然后会出现加载模型的界面
等待加载结束以后(这一过程在本次实验中大概需要7~8分钟),即可开始对话
通过我们的一系列实验可知
用ktransformers部署deepseek r1 Q4模型,占用资源为:GPU 12g,内存51+672(cache)g,模型存储 377g
平均每秒token数为8点左右
回答很细致,有多处反思,实测要比o3-mini-high和claude3.7思考全面
尚不支持高并发
但是对个人用户来说,高内存显然要比高显存的成本要低的多
如果有想低成本个人或者小团队部署的话,可以尝试ktransfomers的部署方案
想既不蒸馏、且不量化部署R1满血版,其实过程跟上面差不多,但核心问题是对硬件的要求很高——正因为需要十几张H100,故涉及到对GPU集群的管理
配置项配置要求环境则最好
OS:Ubuntu 20.04/22.04 LTS
NCCL: 2.18.1+(支持多机通信)
此外,再安装一些基础的依赖
# 基础依赖 apt-get install -y build-essential cmake libopenmpi-dev # Python环境 conda create -n deepseek python=3.10 pip install torch==2.1.0+cu121 deepspeed==0.13.0 transformers==4.38.0 accelerate 3.2.1 分布式部署方案(基于DeepSpeed + 模型并行):以2台8卡A800为例从官方渠道获取DeepSeek-R1-671B完整权重
然后将模型转换为HuggingFace格式 python -m transformers.utils.convert_llama_checkpoint \
--input_dir /path/to/raw_ckpt \
--model_size 671B \
--output_dir /path/to/hf_format
配置DeepSpeed多机多卡策略
编写DeepSpeed配置文件 (ds_config.json): {
"train_batch_size": "auto",
"zero_optimization": {
"stage": 3,
"offload_optimizer": {
"device": "cpu",
"pin_memory": true
},
"overlap_comm": true,
"contiguous_gradients": true
},
"fp16": {
"enabled": true,
"loss_scale": 0,
"loss_scale_window": 1000,
"initial_scale_power": 16
},
"activation_checkpointing": {
"partition_activations": true,
"contiguous_memory_optimization": true
},
"flops_profiler": {
"enabled": true,
"profile_step": 1
}
} 以上涉及到的一些显存优化
启动脚本 # 主节点(IP:192.168.1.100)执行:
deepspeed --num_nodes=2 --num_gpus=8 --master_addr=192.168.1.100 --master_port=6000 \
run_inference.py \
--model_name /data/deepseek-r1-671b \
--use_deepspeed \
--deepspeed_config ds_config.json \
--tensor_parallel_degree 8 \ # 单机内8卡张量并行
--pipeline_parallel_degree 2 # 跨节点流水线并行 上面的倒数第三行 用的上文的ds_config.json
至于最后两行则属于是关键参数调优
——比如模型并行度调整:
根据模型结构(如MoE层数),调整tensor_parallel_degree和pipeline_parallel_degree组合
示例:对671B模型,建议 tensor_parallel=8(单机内) + pipeline_parallel=2(跨机)
关于流水线并行,详见此文《》的『第三部分 流水线并行Pipeline Parallelism(模型并行的另一种)』