当前位置: 首页 > news >正文

Atlas 800I A2 双机直连部署DeepSeek-R1-w8a8

一、环境信息

1.1、硬件信息

Atlas 800I A2 * 2

1.2、环境信息

操作系统:openEuler 22.03 LTS
NPU驱动:Ascend-hdk-910b-npu-driver 24.1.0 linux-aarch64.run
NPU固件:Ascend-hdk-910b-npu-firware 7.5.0.3.220.run
MindIE镜像:2.0.T3-800I-A2-py311-openeuler24.03-lts

1.3、组网信息

  • 一台服务器的NPU-0口对应另一个服务器的NPU-0,然后剩下的依次使用光纤连接;
  • NPU侧IP最好在同一个网段里。

二、安装驱动固件

2.1、创建运行用户和所属组

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

2.2、安装驱动(根据提示选择是否重启)

./Ascend-hdk-910b-npu-driver_24.1.0_linux-aarch64.run --full --install-for-all

2.3、安装固件(根据提示选择是否重启)

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

三、配置参数面(NPU)网络

3.1、配置IP和掩码

# 配置master节点上NPU的IP和掩码
hccn_tool -i 0 -ip -s address 修改成自己规划的IP netmask 255.255.255.0 
hccn_tool -i 1 -ip -s address 修改成自己规划的IP netmask 255.255.255.0 
hccn_tool -i 2 -ip -s address 修改成自己规划的IP netmask 255.255.255.0 
hccn_tool -i 3 -ip -s address 修改成自己规划的IP netmask 255.255.255.0 
hccn_tool -i 4 -ip -s address 修改成自己规划的IP netmask 255.255.255.0 
hccn_tool -i 5 -ip -s address 修改成自己规划的IP netmask 255.255.255.0 
hccn_tool -i 6 -ip -s address 修改成自己规划的IP netmask 255.255.255.0 
hccn_tool -i 7 -ip -s address 修改成自己规划的IP netmask 255.255.255.0

# 配置node节点上的NPU的IP和掩码
hccn_tool -i 0 -ip -s address 修改成自己规划的IP netmask 255.255.255.0 
hccn_tool -i 1 -ip -s address 修改成自己规划的IP netmask 255.255.255.0 
hccn_tool -i 2 -ip -s address 修改成自己规划的IP netmask 255.255.255.0 
hccn_tool -i 3 -ip -s address 修改成自己规划的IP netmask 255.255.255.0 
hccn_tool -i 4 -ip -s address 修改成自己规划的IP netmask 255.255.255.0 
hccn_tool -i 5 -ip -s address 修改成自己规划的IP netmask 255.255.255.0 
hccn_tool -i 6 -ip -s address 修改成自己规划的IP netmask 255.255.255.0 
hccn_tool -i 7 -ip -s address 修改成自己规划的IP netmask 255.255.255.0

3.2、配置检测IP

检测IP配置成对端NPU口的IP,比如说机器1的IP是: 192.168.10.11,机器2的IP是:192.168.10.19。那机器1的检测IP就是:192.168.10.19,机器2的检测IP就是:192.168.10.11。

# 配置master节点上NPU的侦测IP
hccn_tool -i 0 -netdetect -s address 修改成自己规划的IP
hccn_tool -i 1 -netdetect -s address 修改成自己规划的IP
hccn_tool -i 2 -netdetect -s address 修改成自己规划的IP
hccn_tool -i 3 -netdetect -s address 修改成自己规划的IP
hccn_tool -i 4 -netdetect -s address 修改成自己规划的IP
hccn_tool -i 5 -netdetect -s address 修改成自己规划的IP
hccn_tool -i 6 -netdetect -s address 修改成自己规划的IP
hccn_tool -i 7 -netdetect -s address 修改成自己规划的IP

# 配置master节点上NPU的侦测IP
hccn_tool -i 0 -netdetect -s address 修改成自己规划的IP
hccn_tool -i 1 -netdetect -s address 修改成自己规划的IP
hccn_tool -i 2 -netdetect -s address 修改成自己规划的IP
hccn_tool -i 3 -netdetect -s address 修改成自己规划的IP
hccn_tool -i 4 -netdetect -s address 修改成自己规划的IP
hccn_tool -i 5 -netdetect -s address 修改成自己规划的IP
hccn_tool -i 6 -netdetect -s address 修改成自己规划的IP
hccn_tool -i 7 -netdetect -s address 修改成自己规划的IP

3.3、关闭TLS

for i in {0..7}; do hccn_tool -i $i -tls -s enable 0 ; done

3.4、检测配置是否正确

1.1、检查物理链接
for i in {0..7}; do hccn_tool -i $i -lldp -g | grep Ifname; done 

1.2、检查链接情况
for i in {0..7}; do hccn_tool -i $i -link -g ; done

1.3、检查网络健康情况
for i in {0..7}; do hccn_tool -i $i -net_health -g ; done

1.4、查看侦测ip的配置是否正确
for i in {0..7}; do hccn_tool -i $i -netdetect -g ; done

1.5、获取每张卡的ip地址
for i in {0..7};do hccn_tool -i $i -ip -g; done

1.6、检测NPU底层TLS行为一致性,每台机器需要是一样的值,建议全0
for i in {0..7}; do hccn_tool -i $i -tls -g ; done | grep switch

1.7、NPU底层tls校验行为置0操作 
for i in {0..7};do hccn_tool -i $i -tls -s enable 0;done

1.8、检测机器间NPU互联情况
hccn_tool -i NPU节点 -ping -g address 另一台机器NPU的IP

四、编辑rank_table_file.json文件

{
   "server_count": "2",
   "server_list": [
      {
         "device": [
            {
               "device_id": "0",
               "device_ip": "参数面IP-修改成自己规划的IP",
               "rank_id": "0"
            },
            {
               "device_id": "1",
               "device_ip": "参数面IP-修改成自己规划的IP",
               "rank_id": "1"
            },
			   {
               "device_id": "2",
               "device_ip": "参数面IP-修改成自己规划的IP",
               "rank_id": "2"
            },
			   {
               "device_id": "3",
               "device_ip": "参数面IP-修改成自己规划的IP",
               "rank_id": "3"
            },
			   {
               "device_id": "4",
               "device_ip": "参数面IP-修改成自己规划的IP",
               "rank_id": "4"
            },
			   {
               "device_id": "5",
               "device_ip": "参数面IP-修改成自己规划的IP",
               "rank_id": "5"
            },
			   {
               "device_id": "6",
               "device_ip": "参数面IP-修改成自己规划的IP",
               "rank_id": "6"
            },
			   {
               "device_id": "7",
               "device_ip": "参数面IP-修改成自己规划的IP",
               "rank_id": "7"
            }
         ],
         "server_id": "master-业务IP",
         "container_ip": "master-业务IP"
      },
      {
         "device": [
            {
               "device_id": "0",
               "device_ip": "参数面IP-修改成自己规划的IP",
               "rank_id": "8"
            },
            {
               "device_id": "1",
               "device_ip": "参数面IP-修改成自己规划的IP",
               "rank_id": "9"
            },
			   {
               "device_id": "2",
               "device_ip": "参数面IP-修改成自己规划的IP",
               "rank_id": "10"
            },
			   {
               "device_id": "3",
               "device_ip": "参数面IP-修改成自己规划的IP",
               "rank_id": "11"
            },
			   {
               "device_id": "4",
               "device_ip": "参数面IP-修改成自己规划的IP",
               "rank_id": "12"
            },
			   {
               "device_id": "5",
               "device_ip": "参数面IP-修改成自己规划的IP",
               "rank_id": "13"
            },
			{
               "device_id": "6",
               "device_ip": "参数面IP-修改成自己规划的IP",
               "rank_id": "14"
            },
			   {
               "device_id": "7",
               "device_ip": "参数面IP-修改成自己规划的IP",
               "rank_id": "15"
            }
         ],
         "server_id": "node-业务IP",
         "container_ip": "node-业务IP"
      }
   ],
   "status": "completed",
   "version": "1.0"
}

五、启动容器

docker run -itd --privileged  --name=容器名称 --net=host \
   --shm-size 500g \
   --device=/dev/davinci0 \
   --device=/dev/davinci1 \
   --device=/dev/davinci2 \
   --device=/dev/davinci3 \
   --device=/dev/davinci4 \
   --device=/dev/davinci5 \
   --device=/dev/davinci6 \
   --device=/dev/davinci7 \
   --device=/dev/davinci_manager \
   --device=/dev/hisi_hdc \
   --device /dev/devmm_svm \
   -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
   -v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \
   -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
   -v /usr/local/sbin:/usr/local/sbin \
   -v /etc/hccn.conf:/etc/hccn.conf \
   -v 物理机权重路径:容器权重路径 \
   容器镜像名称或ID \
   bash

六、设置容器环境变量

vim ~/.bashrc

# 添加如下配置:
source /usr/local/Ascend/ascend-toolkit/set_env.sh
source /usr/local/Ascend/nnal/atb/set_env.sh
source /usr/local/Ascend/atb-models/set_env.sh
source /usr/local/Ascend/mindie/set_env.sh
export ATB_LLM_HCCL_ENABLE=1
export ATB_LLM_COMM_BACKEND="hccl"
export HCCL_CONNECT_TIMEOUT=7200
export WORLD_SIZE=32
export HCCL_EXEC_TIMEOUT=0
export RANKTABLEFILE=/opt/rank_table_file.json
export MIES_CONTAINER_IP= {容器ip地址}
export MINDIE_LOG_STDOUT = 1
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
export ATB_WORKSPACE_MEM_ALLOC_ALG_TYPE=3
export ATB_WORKSPACE_MEM_ALLOC_GLOBAL=1
export OMP_NUM_THREADS=10
export NPU_MEMORY_FRACTION=0.96
export HCCL_DETERMINISTIC=false
export ATB_LLM_BENCHMARK_ENABLE=1
unset HCCL_OP_EXPANSION_MODE
export HCCL_EXEC_TIMEOUT=0
export TASK_QUEUE_ENABLE=2
export CPU_AFFINITY_CONF=1
export MINDIE_CHECK_INPUTFILES_PERMISSIONS=0
unset HCCL_RDMA_PCIE_DIRECT_POST_NOSTRICT
export MINDIE_LOG_TO_STDOUT="benchmark:1; client:1"

七、拉起服务

# 修改MindIE配置文件
cd /usr/local/Ascend/mindie/latest/mindie-service/
vim conf/config.json

# 修改如下配置:
"ipAddress" : "改成主节点IP"
 "managementIpAddress" : "改成主节点IP"
"httpsEnabled" : false
"multiNodesInferEnabled" : true
"interCommTLSEnabled" : false
"interNodeTLSEnabled" : false
"npudeviceIds" : [[0,1,2,3,4,5,6,7]]
"modelName" : "模型名称"
"modelWeightPath" : "权重路径"
"worldSize":8

# 配置文件权限
chmod -R 640 {rank_table_file.json路径}
chmod -R 750 {/path-to-weights}

# 拉起服务
nohup ./bin/mindieservice_daemon > output.log 2>&1 &

# 停止服务
ps -ef | grep mindieservice
pkill -9 mindieservice

八、测试

curl http://IP:1025/v1/chat/completions -d '{
    "model": "改为mindie配置文件中设置的名称",
    "messages": [{"role": "user", "content": "请告诉我关于人工智能的一些信息。"}],
    "stream": true
  }'

相关文章:

  • SAP Activate Methodology in a Nutshell Phases of SAP Activate Methodology
  • 位运算题目:最大单词长度乘积
  • Netty源码—客户端接入流程
  • Linux应用:select、poll
  • 算法每日一练 (18)
  • 23种设计模式-创建型模式-原型
  • 4、操作系统结构和发展史
  • 深入理解8086指令集与反汇编技术
  • Pythonload JSON文件需要手动关闭吗?
  • 钞票准备好了吗?鸿蒙电脑 5 月见
  • linux去掉绝对路径前面部分和最后的/符号
  • CSS语言的服务器管理
  • JVM 03
  • 【专业测评】STONE 80A-L 电调:轻量化革命下的工业级动力心脏 ——112g 机身承载 80A 持续输出,重新定义无人机动力系统标杆
  • 秒杀业务优化之从分布式锁到基于消息队列的异步秒杀
  • JavaScript中匿名函数与箭头函数之间的区别与联系
  • Android Compose 框架的状态与 ViewModel 的协同(collectAsState)深入剖析(二十一)
  • 2023年TEVC SCI1区TOP:基于粒子群算法的紧凑神经结构搜索图像分类
  • 《论语别裁》第02章 为政(04) 刘备上了曹操的当
  • AF3 Rigid类make_transform_from_reference方法解读
  • 河北:开展领导干部任性用权等形式主义官僚主义问题专项整治
  • 历史新高!上海机场一季度营收增至31.72亿元,净利润增34%
  • 龚正会见委内瑞拉副总统罗德里格斯
  • 见证上海援藏30年成果,萨迦非遗珍品展来沪
  • 格力电器去年净利增长一成:消费电器营收下滑4%,一季度净利增长26%
  • 广州一季度GDP为7532.51亿元,同比增长3%