From 9d2b97a36bfa6fc217b8969fd6633cd2da50163b Mon Sep 17 00:00:00 2001 From: wubinfeng Date: Tue, 15 Apr 2025 20:53:28 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E7=BD=B2=E6=8C=87=E5=8D=97=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E9=80=82=E9=85=8D=E5=8D=95=E6=9C=BA=E9=83=A8=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.适配单机形态部署硬件要求 2.新增单机形态部署模型权重及注意事项 3.一键部署脚本适配单机形态 4.半自动化按需部署适配单机形态 5.FAQ新增后向兼容问题及解决方案 --- ...50\347\275\262\346\214\207\345\215\227.md" | 61 +++++++++++-------- 1 file changed, 34 insertions(+), 27 deletions(-) diff --git "a/doc/deepseek/DeepSeek-V3&R1\351\203\250\347\275\262\346\214\207\345\215\227.md" "b/doc/deepseek/DeepSeek-V3&R1\351\203\250\347\275\262\346\214\207\345\215\227.md" index 1726edc..dd60db3 100644 --- "a/doc/deepseek/DeepSeek-V3&R1\351\203\250\347\275\262\346\214\207\345\215\227.md" +++ "b/doc/deepseek/DeepSeek-V3&R1\351\203\250\347\275\262\346\214\207\345\215\227.md" @@ -1,8 +1,13 @@ # DeepSeek-V3&R1部署指南 ## 1. 硬件要求及组网 +本文以DeepSeek-R1为主进行介绍,DeepSeek-V3与R1的模型结构和参数量一致,部署方式与R1相同。 -部署DeepSeek-R1量化模型至少需要2台Atlas 800I A2(8\*64G)服务器。本文以DeepSeek-R1为主进行介绍,DeepSeek-V3与R1的模型结构和参数量一致,部署方式与R1相同。 +### 1.1 单机部署 +部署DeepSeek-R1量化模型(A16W4)需要1台Atlas 800I A2(8\*64G)服务器。 + +### 1.2 多机部署 +部署DeepSeek-R1量化模型(W8A8)至少需要2台Atlas 800I A2(8\*64G)服务器。 组网结构推荐使用npu直连模式,即两台服务器的**所有npu卡通过交换机连接,网络端口UP** @@ -12,14 +17,16 @@ | 序号 | 检查项 | 详细说明 | | ---- | ------------------------ | ------------------------------------------------------------ | -| 2.A | W8A8权重存储空间 | 下载W8A8权重时,需确保机器内/挂载盘中有大于700G的存储空间。 | -| 2.B | CPU侧内存 | 需确保CPU侧内存能够放下对应权重。
例:w8a8权重需要大约500G左右的内存,可通过free -h指令查看空闲cpu内存。
计算方式:free_mem >= (权重大小 / 机器数) * 1.3 (该计算方式待验证,但需要确保内存足够) | +| 2.A | 模型权重存储空间 | 下载A16W4/W8A8权重时,需确保机器内/挂载盘中有大于400G/700G的存储空间。 | +| 2.B | CPU侧内存 | 需确保CPU侧内存能够放下对应权重。
例:W8A8权重需要大约500G左右的内存,可通过free -h指令查看空闲cpu内存。
计算方式:free_mem >= (权重大小 / 机器数) * 1.3 (该计算方式待验证,但需要确保内存足够) | | 2.C | 根据权重大小选择推理卡数 | W8A8至少需要2台800I/T A2 64G。 | | 2.D | 权重正确性检查 | 请确保权重的正确性,对比权重/tokenizer等文件与源文件的MD5或SHA256值。 | -### 2.1 量化W8A8权重下载 +### 2.1 量化模型权重下载 + + A16W4:modelers.cn [IPADS/DeepSeek-R1-A16W4 \| 魔乐社区](https://modelers.cn/models/IPADS/DeepSeek-R1-A16W4) - modelers.cn [MindSpore-Lab/DeepSeek-R1-W8A8 \| 魔乐社区](https://modelers.cn/models/MindSpore-Lab/DeepSeek-R1-W8A8) + W8A8:modelers.cn [MindSpore-Lab/DeepSeek-R1-W8A8 \| 魔乐社区](https://modelers.cn/models/MindSpore-Lab/DeepSeek-R1-W8A8) @@ -90,11 +97,11 @@ sh mindspore-deepseek/workspace/roles/prepare/files/lib/ascend_prepare.sh | 4.B | 驱动固件检查 | 4.1 step2章节,运行一键部署前,请确保已经在所有宿主机上安装Ascend HDK driver & firemare。如未安装,参考3.1.2章节 | | 4.C | 组网联通检查 | 4.1 step2章节,运行一键部署前,请确保组网联通性,建议参考5.3章节检测网络 | -使用一键式部署脚本,可根据配置,一键部署双节点集群,并且拉起deepseek服务。 +使用一键式部署脚本,可根据配置,一键部署单节点/双节点集群,并且拉起deepseek服务。 ### 4.1 部署脚本使用 -一键式部署脚本推荐在**单独控制节点**执行,控制节点需要可以使用ssh访问各个推理节点 +一键式部署脚本推荐在**单独控制节点**执行,控制节点需要可以使用ssh访问各个推理节点,**注意:单机部署需要根据注释调整Step2中配置文件** **Step1:下载oedeploy工具(下载到控制节点)** @@ -124,7 +131,7 @@ all: ansible_user: root # 必须用root启动或者有权限 ansible_password: "密码" # 主节点密码 - workers: + workers: #单机部署,无需workers节点,请注释或删去workers内容 hosts: worker1: ansible_host: 1.2.3.5 # 从节点ip @@ -133,28 +140,28 @@ all: ansible_password: "密码" # 从节点密码 vars: -# 容器镜像 -# 如果本地docker上已加载镜像,改成docker image的image_name和image_tag -image_name: hub.oepkgs.net/oedeploy/openeuler/aarch64/deepseek_hyperinfer + # 容器镜像 + # 如果本地docker上已加载镜像,改成docker image的image_name和image_tag + image_name: hub.oepkgs.net/oedeploy/openeuler/aarch64/deepseek_hyperinfer image_tag: openeuler22.03-py3.11 # 将要拉起的推理容器的名称 container_name: openeuler_ds # 启动之后的docker name,不能和已有镜像重名 # 模型路径 -model_path: /workspace/deepseekv3 #根据实际模型文件及权重路径修改(2.2.1章节放权重的路径) + model_path: /workspace/deepseekv3 #根据实际模型文件及权重路径修改(2.2.1章节放权重的路径) # ray 开放的端口 ray_port: 6379 # 脚本从这里读端口 - # 节点个数 + # 节点个数,如单机部署,请修改为1 node_num: 2 # 拉起服务前是否停止其他容器 is_stop_other_container: 0 # 0:不停止其他容器;1:停止其他容器 # 推理服务端口 -llm_port: 8000 # 需确保该端口空闲 -# ray集群使用的网卡 -ray_device: enp67s0f0np0 # ifconfig查找ip对应网卡的网卡名 -# 模型权重类型 -model_type: safetensors -# 跳过 ssh 校验(如需禁用此功能,请注释以下配置项) -ansible_ssh_common_args: '-o StrictHostKeyChecking=no' + llm_port: 8000 # 需确保该端口空闲 + # ray集群使用的网卡 + ray_device: enp67s0f0np0 # ifconfig查找ip对应网卡的网卡名 + # 模型权重类型 + model_type: safetensors + # 跳过 ssh 校验(如需禁用此功能,请注释以下配置项) + ansible_ssh_common_args: '-o StrictHostKeyChecking=no' ``` 启动master为主节点,worker为从节点,进行部署前,需要调整对应节点的ip地址,用户名,以及密码。 @@ -209,7 +216,7 @@ cp example_config config.cfg 在启动容器前会检测环境,若环境上有同名容器(无论是运行态还是停止态),均会使用已存在的容器 -### 5.3 网络检查 +### 5.3 网络检查(单机部署可忽略本步骤) 可在各个节点调用网络检测脚本 @@ -323,7 +330,7 @@ npu-smi set -t reset -i $id -c $chip_id 该脚本运行时,会将环境变量写入/root/.bashrc,若该文件中已有openeuler_deepseek_env_config字段,则视为环境变量已存在,会跳过环境变量设置流程。 -### 5.5 ray集群启动 +### 5.5 ray集群启动(单机部署可忽略本步骤) 该步骤在容器内执行,需在所有节点执行 @@ -408,6 +415,8 @@ Oedp兼容性bug,原因为环境上安装了多个py,互相干扰,建议 请确保各个节点根目录有足够空间 +### 7.4 模型推理时显示CUDA Paged Attrntion kernel only supports block sizes up to 32. +MindSpore向后兼容性约束,早期限制block size为32大小,25年3月30号后已去除该限制。建议使用tag时间点在250330后的容器镜像。 ## 附录 @@ -435,18 +444,16 @@ Oedp兼容性bug,原因为环境上安装了多个py,互相干扰,建议 . ├── config.yaml ├── main.yaml +├── README.md └── workspace ├── install.yml └── roles - ├── post - │ └── tasks - │ └── main.yml ├── prepare │ ├── files │ │ ├── lib │ │ │ ├── ascend_prepare.sh - │ │ │ ├── even-iso.py │ │ │ ├── example_config + │ │ │ ├── fine-grained-bind-cann.py │ │ │ ├── net_check.sh │ │ │ ├── npu_net_config_simple.sh │ │ │ ├── ray_start.sh @@ -468,6 +475,6 @@ Oedp兼容性bug,原因为环境上安装了多个py,互相干扰,建议 └── ray-worker └── tasks └── main.yml -16 directories, 19 files +14 directories, 19 files ``` -- Gitee