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

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 ; done1.3、检查网络健康情况
for i in {0..7}; do hccn_tool -i $i -net_health -g ; done1.4、查看侦测ip的配置是否正确
for i in {0..7}; do hccn_tool -i $i -netdetect -g ; done1.5、获取每张卡的ip地址
for i in {0..7};do hccn_tool -i $i -ip -g; done1.6、检测NPU底层TLS行为一致性,每台机器需要是一样的值,建议全0
for i in {0..7}; do hccn_tool -i $i -tls -g ; done | grep switch1.7、NPU底层tls校验行为置0操作 
for i in {0..7};do hccn_tool -i $i -tls -s enable 0;done1.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}'

相关文章:

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镜像&#xff…...

如何确保异步任务在 HTTP 返回后继续执行?context.WithoutCancel

文章目录 如何确保异步任务在 HTTP 返回后继续执行?问题分析如何确保异步任务在 HTTP 返回后继续执行?(1)使用独立的 context(2)手动传递父 ctx 中的值(3)使用 context.WithoutCance…...

SAP Activate Methodology in a Nutshell Phases of SAP Activate Methodology

SAP Activate Methodology in a Nutshell Phases of SAP Activate Methodology...

开源AI大模型、AI智能名片与S2B2C商城小程序源码:实体店引流的破局之道

摘要:本文聚焦实体店引流困境,提出基于"开源AI大模型AI智能名片S2B2C商城小程序源码"的技术整合方案。通过深度解析各技术核心机制与协同逻辑,结合明源云地产营销、杭州美甲店裂变等实际案例,论证其对流量精准获取、客户…...

JVM 02

今天是2025/03/23 19:07 day 10 总路线请移步主页Java大纲相关文章 今天进行JVM 3,4 个模块的归纳 首先是JVM的相关内容概括的思维导图 3. 类加载机制 加载过程 加载(Loading) 通过类全限定名获取类的二进制字节流(如从JAR包、网络、动态…...

C++ :顺序容器

一、顺序容器概述 顺序容器通过元素在容器中的线性存储顺序来维护数据&#xff0c;允许通过位置&#xff08;下标&#xff09;​访问元素。标准库提供6种核心顺序容器&#xff1a; 容器类型头文件底层结构特点vector<vector>动态数组快速随机访问&#xff0c;尾部高效增…...

身份证信息要素真伪认证-身份证二、三要素实名接口

在数字化时代&#xff0c;身份验证的准确性和安全性至关重要。身份证二、三要素实名接口作为一种高效且可靠的身份验证工具&#xff0c;正逐渐成为众多行业确保信息真实性、防范欺诈行为的关键手段。 身份证二、三要素实名接口主要验证身份证号码、姓名以及证件头像是否一致。通…...

pyecharts在jupyter notebook中不能够渲染图表问题。

在使用jupyter notebook中使用pyecharts绘制可视化图表的时候,发现图表不能渲染到页面中,生成的html是没问题的,本文主要解决在jupyter notebook中不能渲染这个问题。 1、原因分析 2、解决办法 如果是使用的虚拟环境,需要下你提前激活虚拟环境,再进行下列操作。 因为需要…...

【线程安全的单例模式和STL是否是线程安全/智能指针是否是线程安全】

文章目录 一、单例模式的特点二、饿汉模式实现单例三、懒汉模式实现单例四、STL线程安全吗&#xff1f;五、智能指针线程安全吗&#xff1f; 一、单例模式的特点 一个类&#xff0c;只应该实例化了一个对象&#xff0c;就是单例。 二、饿汉模式实现单例 举个饿汉模式的例子&…...

C++11 标准库 `find` 与 `find_if` 详解

一、std::find 函数 功能&#xff1a;在指定范围内查找特定值&#xff0c;返回第一个匹配元素的迭代器&#xff1b;若未找到&#xff0c;返回 end() 迭代器。 原型&#xff1a; template <class InputIt, class T> InputIt find(InputIt first, InputIt last, const T&…...

每日总结3.24

第十届蓝桥杯大赛软件赛省赛C/C 大学 B 组 183.完全二叉树的权值&#xff08;找规律&#xff0c;临界值&#xff09; #include <bits/stdc.h> using namespace std; int a[1000005]; int main() { int m;int d; cin>>m; int sum;int maxn0; for(int i1;i&…...

Redis分布式寻址算法

分布式寻址算法是分布式系统中用于确定数据应该存储在哪个节点的算法。这些算法对于实现高效的数据存取、负载均衡和系统扩展性至关重要。以下是几种常见的分布式寻址算法的解释&#xff1a; 1. Hash 算法 原理&#xff1a;通过哈希函数将数据的键&#xff08;Key&#xff09…...

kotlin init执行顺序

一 代码 kotlin: package test.fclass Test1 { }class TestInit(s: String, i: Int) {var name: String? nullvar age 0private var a :Int 1init {this.name sthis.age iprintln("init代码块: $name, $age")}}转成java // Test1.java package test.f;import…...

详解Spark executor

在 Apache Spark 中&#xff0c;Executor&#xff08;执行器&#xff09; 是运行在集群工作节点&#xff08;Worker Node&#xff09;上的进程&#xff0c;负责执行具体的计算任务并管理数据。它是 Spark 分布式计算的核心组件之一&#xff0c;直接决定了任务的并行度和资源利用…...

单片机 - RAM 与内存、ROM 与硬盘 之间的详细对比总结

RAM 与 内存 RAM&#xff08;Random Access Memory&#xff0c;随机存取存储器&#xff09; 和 内存 这两个术语通常是 同义词&#xff0c;即 内存 常常指的就是 RAM。 1. RAM&#xff08;内存&#xff09; 定义&#xff1a;RAM 是计算机中的 主存储器&#xff0c;用于临时存…...

NVIDIA V100显卡支持Tensor Core技术,而Granite-3.1-8B模型在适当的条件下可以利用Tensor Core来加速数据处理

NVIDIA V100显卡支持Tensor Core技术&#xff0c;而Granite-3.1-8B模型在适当的条件下可以利用Tensor Core来加速数据处理。 要利用Tensor Core加速&#xff0c;需要满足以下一些条件&#xff1a; 软件支持&#xff1a;所使用的深度学习框架&#xff08;如PyTorch、TensorFlo…...

《深度剖析:BERT与GPT——自然语言处理架构的璀璨双星》

在自然语言处理&#xff08;NLP&#xff09;的广袤星空中&#xff0c;BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;与GPT&#xff08;Generative Pretrained Transformer&#xff09;系列模型宛如两颗最为耀眼的星辰&#xff0c;引领…...

《AI大模型趣味实战 》第7集:多端适配 个人新闻头条 基于大模型和RSS聚合打造个人新闻电台(Flask WEB版) 1

AI大模型趣味实战 第7集&#xff1a;多端适配 个人新闻头条 基于大模型和RSS聚合打造个人新闻电台(Flask WEB版) 1 摘要 在信息爆炸的时代&#xff0c;如何高效获取和筛选感兴趣的新闻内容成为一个现实问题。本文将带领读者通过Python和Flask框架&#xff0c;结合大模型的强大…...

JS 算术运算符

JavaScript 算术运算符 一、基础运算符及行为特性 1. 四则运算 加法 + 数值相加:5 + 3 → 8字符串拼接(隐式类型转换):"5" + 3 → "53"混合类型优先级:1 + true → 2(true转1)减法 -、乘法 *、除法 / 纯数值运算:5 - "2" → 3(字符串转…...

基于Spring Boot的健身房管理系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

WSL Linux 子系统download

WSL各Linux 子系统下载 WSL Linux 最新下载 微软应用商店 | Microsoft StoreWSL Linux 历史版下载复制应用商店Linux地址到转换下载地址https://store.rg-adguard.net/ Version百度网盘离线下载OracleLinux提取...

Qt中通过QLabel实时显示图像

Qt中的QLabel控件用于显示文本或图像&#xff0c;不提供用户交互功能。以下测试代码用于从内置摄像头获取图像并实时显示&#xff1a; Widgets_Test.h&#xff1a; class Widgets_Test : public QMainWindow {Q_OBJECTpublic:Widgets_Test(QWidget *parent nullptr);~Widgets…...

Redis GEO 命令详解:轻松实现“附近的人“功能

目录 引言 Redis GEO命令概述 什么是GEO命令&#xff1f; 主要命令详解 命令应用示例 添加地点信息 查询两地距离 查询附近的城市 实现"查找附近的人"功能 功能需求与实现思路 基本需求 实现思路 命令实现方案 存储用户位置 查询附近的用户 Java代码实…...

基于springboot的校园资料分享平台(048)

摘要 随着信息互联网购物的飞速发展&#xff0c;国内放开了自媒体的政策&#xff0c;一般企业都开始开发属于自己内容分发平台的网站。本文介绍了校园资料分享平台的开发全过程。通过分析企业对于校园资料分享平台的需求&#xff0c;创建了一个计算机管理校园资料分享平台的方案…...

模板方法设计模式在事件处理中的应用

在软件设计中&#xff0c;设计模式提供了一种通用的解决方案来应对特定类型的问题。本文将介绍模板方法设计模式&#xff0c;并展示如何在事件处理场景中应用这一模式。我们将以 AbstractEventHandler 类为例&#xff0c;探讨其如何通过模板方法模式来实现灵活的事件处理机制。…...

CS2 demo manager 安装

CS2DM CS Demo Managerhttps://cs-demo-manager.com/PostgreSQL&#xff08;CS2DM需要17以上&#xff09; EDB: Open-Source, Enterprise Postgres Database Managementhttps://www.enterprisedb.com/downloads/postgres-postgresql-downloads 新CS2dm现在打开是这样的&…...

奇怪的异形选项卡样式、弧形边框选项卡

<template><div :class"$options.name"><div class"tab">默认选项卡</div><div class"tab" active>选中选项卡</div><el-divider /><el-tabs v-model"tabActiveName" tab-click"(t…...

elasticsearch 通用笔记

文章目录 一、前言二、内容说明1、目录简介2、本文例子前提内容 三、操作内容1、设置ES为服务2、查看健康度参数解析 3、索引相关查询3.1、查询指定索引内容3.1.1、匹配查询3.1.2、精确匹配&#xff08;不尝试分词&#xff09;3.1.3、范围查询3.1.4、id查询3.1.5、通配符及前缀…...

Java 24 学习

一、Java 24的核心新功能 1、语言特性增强 模式匹配与原始类型支持&#xff08;JEP 488&#xff09;&#xff1a;允许在instanceof和switch中使用原始类型&#xff0c;简化模式匹配代码&#xff0c;尤其适用于AI推理场景912。 灵活的构造函数体&#xff08;JEP 492&#xff…...

【前端 vue 或者麦克风,智能语音识别和播放功能】

前端 vue 或者麦克风&#xff0c;智能语音识别和播放功能 1. 终端安装 npm install recordrtc2.引入 import RecordRTC from recordrtc3.html&#xff08;根据自己业务更改&#xff09; <div class"Page"><el-form ref"mainFormRef" class&qu…...