华为910B NPU大模型部署DeepSeek-R1-Distill-Qwen-32B实践

832 阅读4分钟
容器安装流程

容器安装流程

任务任务说明
安装硬件设备请参见《Atlas 800T A2 训练服务器 用户指南》的“安装与配置”章节,完成硬件的安装。
安装OS请参见OS安装指南完成对应OS的安装,OS需要连接网络和启动SSH远程登录服务。
下载软件包请参见下载软件,下载对应的软件包。
远程登录服务器请参见远程登录服务器,用户可远程登录服务器执行命令操作或上传文件。
在物理机上安装NPU驱动固件请参见安装NPU驱动固件,在物理机上安装NPU驱动固件之前,仔细确认操作系统和内核版本,选择正确的安装方式。
安装Docker请参见部署Docker,用户在当前服务器上部署Docker软件。
安装Ascend Docker请参见部署Ascend-Docker(容器引擎插件),安装Ascend Docker后,可开始获取或制作容器镜像来部署包含CANN和深度学习框架的容器。
部署容器请参见部署容器,用户通过获取或制作容器镜像来部署包含CANN和深度学习框架的容器。

软件下载(社区版)

软件类型软件包名称和下载链接
NPU驱动单击软件包链接,下载软件包“Ascend-hdk-xxx-npu-driver_24.1.rc1_linux-aarch64.run”。
NPU固件单击软件包链接,下载软件包“Ascend-hdk-xxx-npu-firmware_7.1.0.6.220.run”。
Toolkit(开发套件包)单击软件包链接,下载软件包“Ascend-cann-toolkit_8.0.RC1_linux-aarch64.run”。
TFPlugin(深度学习框架插件)单击软件包链接,下载软件包“Ascend-cann-tfplugin_8.0.RC1_linux-aarch64.run”。
kernels(二进制算子包)单击软件包链接,下载软件包“Ascend-cann-kernels-xxx_8.0.RC1_linux.run”。
Ascend-docker(容器引擎插件,容器部署场景下需下载)单击软件包链接,下载软件包“Ascend-docker-runtime_6.0.RC1_linux-aarch64.run”。
Ascend Deployer工具单击链接,选择“克隆/下载”,单击“下载ZIP”,下载Ascend Deployer工具软件包“ascend-deployer-6.0.RC2.zip”。

添加用户

groupadd HwHiAiUser

useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash

安装驱动与固件

chmod a+x Ascend-hdk-910b-npu-driver_24.1.rc1_linux-aarch64.run

chmod a+x Ascend-hdk-910b-npu-firmware_7.1.0.6.220.run

./Ascend-hdk-910b-npu-driver_24.1.rc1_linux-aarch64.run --full --install-for-all

./Ascend-hdk-910b-npu-firmware_7.1.0.6.220.run --full

reboot

npu-smi info

YUM源更换

#generic-repos is licensed under the Mulan PSL v2.
#You can use this software according to the terms and conditions of the Mulan PSL v2.
#You may obtain a copy of Mulan PSL v2 at:
#    http://license.coscl.org.cn/MulanPSL2
#THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
#IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
#PURPOSE.
#See the Mulan PSL v2 for more details.

[OS]
name=OS
baseurl=http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/OS/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/OS/$basearch/RPM-GPG-KEY-openEuler

[everything]
name=everything
baseurl=http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/everything/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/everything/$basearch/RPM-GPG-KEY-openEuler

[EPOL]
name=EPOL
baseurl=http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/EPOL/main/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/OS/$basearch/RPM-GPG-KEY-openEuler

[debuginfo]
name=debuginfo
baseurl=http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/debuginfo/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/debuginfo/$basearch/RPM-GPG-KEY-openEuler

[source]
name=source
baseurl=http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/source/
enabled=1
gpgcheck=1
gpgkey=http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/source/RPM-GPG-KEY-openEuler

[update]
name=update
baseurl=http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/update/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/OS/$basearch/RPM-GPG-KEY-openEuler

[update-source]
name=update-source
baseurl=http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/update/source/
enabled=1
gpgcheck=1
gpgkey=http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/source/RPM-GPG-KEY-openEuler

清理缓存并更新 YUM 源

yum clean all
yum makecache
安装Docker
  1. root用户登录服务器。

  2. 执行以下命令安装Docker。

    yum install -y docker
    
  3. 执行systemctl start docker命令启动Docker。

  4. 执行docker version命令查看Docker是否已启动,如显示以下信息表示Docker已安装并启动。

    Client:
     Version:           18.09.0
     EulerVersion:      18.09.0.100
     API version:       1.39
     Go version:        go1.13.3
     Git commit:        62eb848
     Built:             Mon Mar 23 21:36:30 2020
     OS/Arch:           linux/arm64
     Experimental:      false
     
    Server:
     Engine:
      Version:          18.09.0
      EulerVersion:     18.09.0.100
      API version:      1.39 (minimum version 1.12)
      Go version:       go1.13.3
      Git commit:       62eb848
      Built:            Mon Mar 23 21:35:51 2020
      OS/Arch:          linux/arm64
      Experimental:     false
    

部署Ascend-Docker(容器引擎插件)

  1. root用户登录服务器。

  2. 将软件包“Ascend-docker-runtime_6.0.RC1_linux-aarch64.run”上传到服务器任意目录(如“/home”)。

  3. 进入软件包所在目录,增加对软件包的可执行权限。

    chmod +x Ascend-docker-runtime_6.0.RC1_linux-aarch64.run
    
  4. 执行以下命令安装软件。

    ./Ascend-docker-runtime_6.0.RC1_linux-aarch64.run --install
    

    安装完成后,若显示类似如下信息,则说明软件安装成功:

    xxx install success
    
  5. 执行systemctl restart docker命令重启docker,使容器引擎插件在docker配置文件中添加的内容生效。

模型库

模型库-ModelZoo-昇腾社区

DeepSeek-R1-Distill-Qwen-32B

DeepSeek-R1-Distill-Qwen-32B-模型库-ModelZoo-昇腾社区

拉取镜像

申请镜像权限,拉取最新镜像

创建推理容器

具体使用多少张卡,视需求和模型大小而定

docker run -it -d --net=host --shm-size=1g \ --name deepseek32b \ --device=/dev/davinci_manager \ --device=/dev/hisi_hdc \ --device=/dev/devmm_svm \ --device=/dev/davinci0 \ --device=/dev/davinci1 \ --device=/dev/davinci2 \ --device=/dev/davinci3 \ --device=/dev/davinci4 \ --device=/dev/davinci5 \ --device=/dev/davinci6 \ --device=/dev/davinci7 \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \ -v /usr/local/sbin:/usr/local/sbin:ro \ -v /{这里填写你的宿主机的模型文件夹,最好再上一层,取父级路径}:/path-to-weights \ swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:2.0.T3.1-800I-A2-py311-openeuler24.03-lts bash

以下进入容器内进行操作

模型量化

Qwen系列模型量化为可选项,不量化也能继续部署。

修改推理服务配置

具体要求参考文档

vim /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json

启动推理

cd /usr/local/Ascend/mindie/latest/mindie-service/bin ./mindieservice_daemon