使用昇腾芯片进行多卡训推时使用hccl_tools.py为npu分配ip报错问题解决办法

目录

  • 问题描述
  • 问题产生原因
  • 解决办法
  • 最终执行并验证
  • 参考网站
  • 命令扩展

问题描述

昇腾芯片(910b/310p等)进行多卡训练或者推理时需要先获取并配置每张npuip信息,因此需要执行类似下面问题:

python mindformers/tools/hccl_tools.py --device_num "[0,8)"

执行后报错:
请添加图片描述
注意:有的报错显示Command execute failed!
有的报错显示/bin/sh: hccn_tool: command not found
Failed to call hccn_tool, try to read /etc/hccn.conf instead

问题产生原因

  1. 宿主机无hccn_tool执行命令,可使用下述命令查询(无输出则没有该命令)
whereis hccn_tool

在这里插入图片描述

  1. /etc/hccn.conf文件为空,可使用下述命令查询(无输出则没有该命令)
vi /etc/hccn.conf
  1. 下面指令需要在宿主机执行,且要确保有权限执行hccn_tool
python mindformers/tools/hccl_tools.py --device_num "[0,8)"

解决办法

注:hccn_tool命令无法识别则需要安装必要的工具组件,不在本文考虑范围

/etc/hccn.conf文件为空时,按照下面方法手动生成/etc/hccn.conf文件:
以下是定义每个NPUIP地址的一般步骤:

  1. 确定NPU设备数量:首先,您需要知道您的系统中有多少个NPU设备,以及它们在系统中的索引号(通常是从0开始的整数)。

  2. 规划IP地址范围:您需要规划一个IP地址范围,专门用于NPU设备。这些IP地址应该是您网络中未被使用的,并且最好在一个单独的子网中。

  3. 分配IP地址:为每个NPU设备分配一个唯一的IP地址。通常,这些地址会按照NPU设备的索引号顺序分配。

  4. 设置子网掩码:为NPU设备设置适当的子网掩码。子网掩码定义了网络的大小和可用的IP地址范围。常见的子网掩码如255.255.255.0表示网络中可以有256个IP地址。

  5. 使用hccn_tool配置IP:使用hccn_tool命令为每个NPU设备设置IP地址和子网掩码。

例如(8卡npu配置如下),可以先ping一下每个ip是否有被使用,没有被使用则可以执行下面命令:

hccn_tool -i 0 -ip -s address 192.168.100.100 netmask 255.255.255.0
hccn_tool -i 1 -ip -s address 192.168.100.101 netmask 255.255.255.0
hccn_tool -i 2 -ip -s address 192.168.100.102 netmask 255.255.255.0
hccn_tool -i 3 -ip -s address 192.168.100.103 netmask 255.255.255.0
hccn_tool -i 4 -ip -s address 192.168.100.104 netmask 255.255.255.0
hccn_tool -i 5 -ip -s address 192.168.100.105 netmask 255.255.255.0
hccn_tool -i 6 -ip -s address 192.168.100.106 netmask 255.255.255.0
hccn_tool -i 7 -ip -s address 192.168.100.107 netmask 255.255.255.0

最终执行并验证

终端执行以下命令:

python mindformers/tools/hccl_tools.py --device_num "[0,8)"

显示下面命令则表示执行成功
在这里插入图片描述

参考网站

  • mindformers生成hccl.json文件的时候报错
  • 基于昇腾的大模型部署
  • kimi

命令扩展

hccn_tool -i 1 -ip -g  # 获取索引为1的NPU设备的IP配置信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/42908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[AI 大模型] Meta LLaMA-2

文章目录 [AI 大模型] Meta LLaMA-2简介模型架构发展新技术和优势示例 [AI 大模型] Meta LLaMA-2 简介 Meta LLaMA-2 是 Meta 推出的第二代开源大型语言模型(LLM),旨在为研究和商业应用提供强大的自然语言处理能力。 LLaMA-2 系列模型包括从…

Python实现串口通信(Python+Stm32)详解

Python实现串口通信(PythonStm32)详解 引言 在现代的嵌入式系统开发和自动化控制中,串口通信是一种非常常见的通信方式。Python作为一种易于学习且功能强大的编程语言,结合Stm32微控制器,能够实现高效、灵活的串口通…

Python29 Tensorflow的基本知识和使用

1. TensorFlow TensorFlow 是一个开源的机器学习框架,由 Google Brain 团队开发。它用于数据流图的计算,尤其擅长深度学习任务。在 TensorFlow 中,数据流图(Data Flow Graph)是其核心概念之一,它定义了计算…

Blackbox AI : 全新的人工智能编码助手 您的高效AI开发全能助手

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 提起AI 智能编码助手,相信到了如今大家都不陌生。其对我们开发的代码时的效率有显著的提升,可以说…

效果惊人!LivePortrait开源数字人技术,让静态照片生动起来

不得了了,快手已经不是众人所知的那个短视频娱乐平台了。 可灵AI视频的风口尚未过去,又推出了LivePortrait--开源的数字人项目。LivePortrait让你的照片动起来,合成逼真的动态人像视频,阿里通义EMO不再是唯一选择。 让图像动起来 LivePortrait 主要提供了对眼睛和嘴唇动作的…

Mattermost:一个强大的开源协作平台

Mattermost是一个强大的开源协作平台,基于云原生架构,为企业级用户提供安全、可扩展且自托管的消息传递解决方案。 一、平台特点 开源与定制性:Mattermost是一个开源项目,用户可以根据自身需求定制界面、添加功能或扩展其功能&am…

[大师C语言(第四十一篇)]C语言指针数组与数组指针技术详解

C语言中的指针和数组是两个核心概念,它们在许多高级编程任务中扮演着重要角色。本文将深入探讨C语言中的指针数组与数组指针,包括它们的基本概念、使用场景和技术细节。我们将通过详细的解释和实用的代码案例来展示如何有效地使用这些技术。 第一部分&a…

matlab 卷积和多项式乘法

目录 一、算法原理1、原理概述2、主要函数二、代码实现1、通过卷积计算多项式乘法2、向量卷积3、卷积的中心部分三、参考链接一、算法原理 1、原理概述 两个向量 u u u和 v v v的卷积,表示

大屏自适应容器组件 v-scale-screen

在vue中,v-scale-screen可用于大屏项目开发,实现屏幕自适应,可根据宽度自适应,高度自适应,和宽高等比例自适应,全屏自适应。 仓库地址:github国内地址:gitee 一、安装 npm instal…

qr 获取当前路径

qDebug() 函数在 Qt 应用程序中用于输出调试信息。这些信息通常被发送到标准输出(stdout)或标准错误(stderr),具体取决于你的应用程序是如何配置的。在大多数开发环境中,你可以通过以下方式查看 qDebug() 输…

React setState

老生常谈之setState 是同步的还是异步的? 设想setState是同步的,那也就是每次调用setState都要进行新旧虚拟DOM的对比,然后将差异化的dom更新到页面上,性能损耗很大 所以react把setState设置为了异步,当状态更新时不…

【Unity2D 2022:Audio】添加游戏音乐和音效

一、添加背景音乐 1. 创建空的游戏物体,名为BackgroundMusic 2. 为音频播放器添加音频源(Audio Source)组件 3. 将背景音乐音频赋值到AudioClip(红色) 4. 设置循环播放(蓝色) 二、添加草莓拾取…

springboot封装请求参数json的源码解析

源码位置: org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver#readWithMessageConverters(org.springframework.http.HttpInputMessage, org.springframework.core.MethodParameter, java.lang.reflect.Type…

解答 | http和https的区别,谁更好用

TTP(超文本传输协议)和HTTPS(安全超文本传输协议)的主要区别在于安全性和数据传输的方式。 一、区别 1、协议安全性: HTTP:使用明文形式传输数据,不提供数据加密功能,数据在传输过…

coze搭建工作流和Agent

coze搭建工作流和Agent Agent LLM 记忆感知规划使用工具 LLM是大语言模型,prompt提示词影响LLM的输出质量 描述需求——>背景——>解决思路,提示词文档。 当有明确的需求和实现需求的路径时,可以通过搭建工作流来完成标准化任务为…

函数声明与函数表达式的区别?

一、区别如下: 函数声明的方法定义的函数,函数名是必须的,函数表达式的函数名是可选的。函数声明的方法定义的函数,函数可以在函数声明之前调用,函数表达式的函数只能在声明之后调用。 函数声明的方法定义的函数并不是真正的声明,它们仅仅可以出现在全局中,或者嵌套在其他的函数…

Python爬虫原理以及3个小案例(源码)

一、爬虫原理 网络爬虫是一种用于自动获取网页内容的程序。它模拟用户浏览网页的过程,通过发送HTTP请求获取网页的源代码,并利用解析和提取技术来获取所需的数据。 1. HTTP请求与响应过程 爬虫向目标网站发送HTTP请求,请求包含URL、请求方…

Linux内核 -- DMA控制器之dmaengine框架的注册与使用流程

Linux Kernel dmaengine 框架 简介 Linux内核的dmaengine框架是一个用于管理DMA(Direct Memory Access)操作的通用框架。它抽象了不同DMA控制器的实现,使得上层代码可以方便地进行DMA传输。 初始化流程 1. 驱动注册 每个DMA控制器驱动都…

定义变量和声明变量、定义类和声明类

一、定义变量和声明变量 在编程中,定义变量和声明变量是两个相关但不同的概念,尤其是在静态类型的编程语言中。静态类型的编程语言比如Java 1、声明变量 (1)定义:声明变量是指告诉编译器变量的名字、类型和在某些情…

Mysql:时区问题

Mysql:时区问题 1、时区配置 Mysql默认使用系统的时区 mysql> show global variables like %time%zone%; -------------------------- | Variable_name | Value | -------------------------- | system_time_zone | | | time_zone | SYSTEM…