Ascend310 EP模式下容器内进行推理测试
EP模式下容器内进行推理测试
本文的软硬件环境如下:
机器:x86台式机一台
OS: 5.4.0-26-generic Ubuntu20.04 LTS
推理卡:DLAP200-HP-2(凌华基于atlas200模块打造的两模块推理卡)
1. 推理卡固件和驱动安装
凌华的推理卡与华为的A300-3010推理卡的架构和实现方式一致,所以具体过程请参考华为官网的A300-3010推理卡的固件和驱动安装过程。安装成功后结果如下:
HwHiAiUser@ChengMing-3900:~$ npu-smi info
+--------------------------------------------------------------------------------------------------------+
| npu-smi 23.0.rc2 Version: 23.0.rc2 |
+-------------------------------+-----------------+------------------------------------------------------+
| NPU Name | Health | Power(W) Temp(C) Hugepages-Usage(page) |
| Chip Device | Bus-Id | AICore(%) Memory-Usage(MB) |
+===============================+=================+======================================================+
| 0 310 | OK | 12.8 48 0 / 969 |
| 0 0 | 0000:03:00.0 | 0 587 / 7759 |
+===============================+=================+======================================================+
| 1 310 | OK | 12.8 47 0 / 969 |
| 0 1 | 0000:04:00.0 | 0 573 / 7759 |
+===============================+=================+======================================================+
+-------------------------------+-----------------+------------------------------------------------------+
| NPU Chip | Process id | Process name | Process memory(MB) |
+===============================+=================+======================================================+
| No running processes found in NPU 0 |
+===============================+=================+======================================================+
| No running processes found in NPU 1 |
+===============================+=================+======================================================+
2. 安装docker
运行一下命令安装docker
HwHiAiUser@ChengMing-3900:~$ sudo apt install docker.io
HwHiAiUser@ChengMing-3900:~$ sudo groupadd docker
HwHiAiUser@ChengMing-3900:~$ sudo usermod -aG docker HwHiAiUser
3. 获取华为的推理镜像
通过https://www.hiascend.com/developer/ascendhub登陆到华为官方的镜像仓库。

选择推理镜像—>infer-modelzoo

根据自己npu-smi info显示的版本信息,选择对应的镜像版本,我的驱动版本是23.0.RC2,所以我选择23.0.RC2-mxvision,点击立即下载。要求输入你在华为的账号密码。

根据弹出的镜像下载步骤,来下载镜像。
HwHiAiUser@ChengMing-3900:~$ sudo docker login -u cn-south-1@H2W7IKXWB30I9YP30X8A swr.cn-south-1.myhuaweicloud.com
根据提示输入密码
HwHiAiUser@ChengMing-3900:~$ sudo docker pull swr.cn-south-1.myhuaweicloud.com/ascendhub/infer-modelzoo:23.0.RC2-mxvision-x86
镜像下载完成后,运行一下命令查看镜像。
HwHiAiUser@ChengMing-3900:~$ sudo docker images
[sudo] HwHiAiUser 的密码:
REPOSITORY TAG IMAGE ID CREATED SIZE
swr.cn-south-1.myhuaweicloud.com/ascendhub/infer-modelzoo 23.0.RC2-mxvision-x86 6a41f21ad7cc 10 months ago 6.28GB
4. 运行容器
根据镜像描述文件中的启动容器命令,编写一个运行脚本。
HwHiAiUser@ChengMing-3900:~$ vim run_docker.sh
输入以下内容:
docker run -it \
-u root \
--device=/dev/davinci0 \
--device=/dev/davinci1 \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /var/log/npu:/var/log/npu \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/slog:/usr/slog \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \
-v /usr/local/Ascend/driver/tools/:/usr/local/Ascend/driver/tools/ \
-v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/ \
-v /data:/data \
swr.cn-south-1.myhuaweicloud.com/ascendhub/infer-modelzoo:23.0.RC2-mxvision-x86 \
/bin/bash
给脚本赋予执行权限
HwHiAiUser@ChengMing-3900:~$ chmod +x ./run_docker.sh
启动容器
HwHiAiUser@ChengMing-3900:~$ ./run_docker.sh
在root用户下访问硬件设备
root@4a7c46a13bdf:/home/HwHiAiUser# npu-smi info
+--------------------------------------------------------------------------------------------------------+
| npu-smi 23.0.rc2 Version: 23.0.rc2 |
+-------------------------------+-----------------+------------------------------------------------------+
| NPU Name | Health | Power(W) Temp(C) Hugepages-Usage(page) |
| Chip Device | Bus-Id | AICore(%) Memory-Usage(MB) |
+===============================+=================+======================================================+
| 0 310 | OK | 12.8 48 0 / 969 |
| 0 0 | 0000:03:00.0 | 0 587 / 7759 |
+===============================+=================+======================================================+
| 1 310 | OK | 12.8 48 0 / 969 |
| 0 1 | 0000:04:00.0 | 0 573 / 7759 |
+===============================+=================+======================================================+
+-------------------------------+-----------------+------------------------------------------------------+
| NPU Chip | Process id | Process name | Process memory(MB) |
+===============================+=================+======================================================+
| No running processes found in NPU 0 |
+===============================+=================+======================================================+
| No running processes found in NPU 1 |
+===============================+=================+======================================================+
切换到HwHiAiUser用户下,再次访问设备,如果报以下错误,可能是由于容器中的HwHiAiUser用户的ID和宿主机中对应的用户ID不一致导致的,则需要修改用户的ID和组ID。
root@4a7c46a13bdf:/home/HwHiAiUser# su HwHiAiUser
HwHiAiUser@4a7c46a13bdf:~$ npu-smi info
DrvMngGetConsoleLogLevel failed. (g_conLogLevel=3)
dcmi module initialize failed. ret is -8005
退出容器,查看宿主机HwHiAiUser的用户ID, 组ID信息
HwHiAiUser@ChengMing-3900:~$ id HwHiAiUser
用户id=998(HwHiAiUser) 组id=1001(HwHiAiUser) 组=1001(HwHiAiUser),4(adm),27(sudo),134(docker)
再次启动容器
HwHiAiUser@ChengMing-3900:~$ sudo docker run ca7c521c074d
修改HwHiAiUser的用户ID和组ID,保持和宿主机中的一致。
root@ca7c521c074d:/home/HwHiAiUser# id HwHiAiUser #查看容器中的HwHiAiUser的用户ID和组ID
uid=1000(HwHiAiUser) gid=1000(HwHiAiUser) groups=1000(HwHiAiUser)
root@ca7c521c074d:/home/HwHiAiUser# usermod -u 998 HwHiAiUser #修改用户ID
root@ca7c521c074d:/home/HwHiAiUser# groupmod -g 1001 HwHiAiUser #修改组ID
再次切换到HwHiAiUser用户。
root@4a7c46a13bdf:/home/HwHiAiUser# su HwHiAiUser
再次在容器中运行npu-smi info查看能否正常访问硬件
HwHiAiUser@ca7c521c074d:~$ npu-smi info
+--------------------------------------------------------------------------------------------------------+
| npu-smi 23.0.rc2 Version: 23.0.rc2 |
+-------------------------------+-----------------+------------------------------------------------------+
| NPU Name | Health | Power(W) Temp(C) Hugepages-Usage(page) |
| Chip Device | Bus-Id | AICore(%) Memory-Usage(MB) |
+===============================+=================+======================================================+
| 0 310 | OK | 12.8 48 0 / 969 |
| 0 0 | 0000:03:00.0 | 0 587 / 7759 |
+===============================+=================+======================================================+
| 1 310 | OK | 12.8 48 0 / 969 |
| 0 1 | 0000:04:00.0 | 0 573 / 7759 |
+===============================+=================+======================================================+
+-------------------------------+-----------------+------------------------------------------------------+
| NPU Chip | Process id | Process name | Process memory(MB) |
+===============================+=================+======================================================+
| No running processes found in NPU 0 |
+===============================+=================+======================================================+
| No running processes found in NPU 1 |
+===============================+=================+======================================================+
5. 运行推理测试程序
切换到HwHiAiUser用户
root@ca7c521c074d:/home/HwHiAiUser# su HwHiAiUser
运行测试程序:
HwHiAiUser@ca7c521c074d:~$ bash test_model.sh
Begin to initialize Log.
The output directory of logs file doesn't exist.
Create directory to save logs information.
WARNING: Logging before InitGoogleLogging() is written to STDERR
I20240618 02:51:41.334579 59 FileUtils.cpp:330] The input file is empty
I20240618 02:51:41.334590 59 FileUtils.cpp:472] Check Other group permission: Current permission is 4, but required no greater than 0.
Save logs information to specified directory.
sdk run time: 6814
process img0: image_0051.jpg, infer result: {"MxpiClass":[{"classId":504,"className":" 504: 'coffee mug',","confidence":6.26953125},{"classId":968,"className":" 968: 'cup',","confidence":5.8203125},{"classId":901,"className":" 901: 'whiskey jug',","confidence":4.9453125},{"classId":725,"className":" 725: 'pitcher, ewer',","confidence":4.31640625},{"classId":505,"className":" 505: 'coffeepot',","confidence":4.16796875}]}
sdk run time: 6066
process img1: image_0019.jpg, infer result: {"MxpiClass":[{"classId":504,"className":" 504: 'coffee mug',","confidence":6.42578125},{"classId":968,"className":" 968: 'cup',","confidence":5.453125},{"classId":901,"className":" 901: 'whiskey jug',","confidence":4.79296875},{"classId":505,"className":" 505: 'coffeepot',","confidence":4.38671875},{"classId":550,"className":" 550: 'espresso maker',","confidence":4.015625}]}
sdk run time: 7644
如果终端打印出如下格式的推理结果,则证明推理执行成功
infer result: {"MxpiClass":[{"classId":504,"className":" 504: 'coffee mug',","confidence":6.26953125},{"classId":968,"className":" 968: 'cup',","confidence":5.8203125},{"classId":901,"className":" 901: 'whiskey jug',","confidence":4.9453125},{"classId":725,"className":" 725: 'pitcher, ewer',","confidence":4.31640625},{"classId":505,"className":" 505: 'coffeepot',","confidence":4.16796875}]}
相关文章:
Ascend310 EP模式下容器内进行推理测试
EP模式下容器内进行推理测试 本文的软硬件环境如下: 机器:x86台式机一台 OS: 5.4.0-26-generic Ubuntu20.04 LTS 推理卡:DLAP200-HP-2(凌华基于atlas200模块打造的两模块推理卡) 1. 推理卡固件和驱动安…...
(el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
Ⅰ、Element-plus 提供的Select选择器组件与想要目标情况的对比: 1、Element-plus 提供Select组件情况: 其一、Element-ui 自提供的Select代码情况为(示例的代码): // Element-plus 提供的组件代码: <template><div class"f…...
Java基础之Math与Array类与System
文章目录 一、Math.random()二、Arrays.binarySearch()三、asList()四、System tip:以下是正文部分 一、Math.random() a < num < b int num (int)(Math.random() * (b - a 1)) a二、…...
警告:Hydration attribute mismatch on Note: this mismatch is check-only.(水合不匹配)
vue3Nuxt3运行代码是提示如下警告 [Vue warn]: Hydration attribute mismatch on <ul id"sub_menu_5_$$_sub1-popup" class"ant-menu ant-menu-sub ant-menu-inline" data-menu-list"true" style"display:none;">…...
【机器学习】CART决策树算法的核心思想及其大数据时代银行贷款参考案例——机器认知外界的重要算法
目录 引言 概述 CART决策树的特点 核心思想 减少不确定性的指标 基尼系数(Gini Index) 分类错误率 熵 银行实例 背景 数据准备 模型构建 模型评估与优化 应用与结果 代码示例 ✈✈✈✈引言✈✈✈✈ CART算法既可以用于分类问题࿰…...
编程软件是由什么编程的
编程软件是由什么编程的 在数字化的世界里,编程软件作为构建数字生态的基石,其背后所蕴含的奥秘往往令人感到困惑。那么,这些编程软件究竟是由什么编程的呢?这背后隐藏着怎样的逻辑与技术?接下来,我们将从…...
如何查看自己本地ip
1.winR 2.cmd 3.ipconfig...
高考分数限制下,选好专业还是选好学校?
高考分数限制下,选好专业还是选好学校? 高考作为每年一度的盛大考试,不仅关乎学生们的未来,更承载了家庭的期望。2004年高考刚刚结束,许多考生和家长已经开始为填报志愿而焦虑。选好学校和专业,直接关系到…...
Django学习(2)项目实战
1、环境及简介 前端开发:HTML、CSS、JavaScript 后端开发:Java、PHP、Python、GO 数据库:MySQL、MSSQL、Oracle、Redis 安装Django pip install Django 或 下载.whl后 pip install D:\xxx.whl 创建Django项目 File--New Projec…...
pdf格式转成jpg图片,pdf格式如何转jpg
pdf转图片的方法,对于许多人来说可能是一个稍显陌生的操作。然而,在日常生活和工作中,我们有时确实需要将pdf文件转换为图片格式,以便于在特定的场合或平台上进行分享、展示或编辑。以下,我们将详细介绍一个pdf转成图片…...
Java的三个接口Comparable,Comparator,Cloneable(浅拷贝与深拷贝)
Comparable 当我们要进行对象的比较的时候,我们是不能直接用>、< 这些符号直接进行比较的。 由于这是引用类型变量也是自定义类型变量,直接进行比较的时候,我们是通过对象的地址进行比较的,我们可以使用、! 进行两个对象的…...
pytorch学习笔记7
getitem在进行索引取值的时候自动调用,也是一个魔法方法,就像列表索引取值那样,一个意思 import torchvision from torch.utils.data import DataLoaderdata_transformtorchvision.transforms.Compose([torchvision.transforms.ToTensor()] ) test_datatorchvision.datasets.C…...
LeetCode热题3.无重复的最长字串
前言: 经过前序的一系列数据结构和算法学习后,开始用leetCode热题练练手。 . - 力扣(LeetCode) 给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为…...
Python武器库开发-武器库篇之SQL注入扫描器(五十九)
Python武器库开发-武器库篇之SQL注入扫描器(五十九) SQL注入漏洞简介以及危害 SQL注入漏洞是一种常见的Web应用程序漏洞,攻击者可以利用该漏洞在应用程序的数据库中执行恶意的SQL查询或指令。这可能导致数据泄露、数据损坏、应用程序崩溃或未经授权的访问。 SQL注…...
图说设计模式:单例模式
更多C学习笔记,关注 wx公众号:cpp读书笔记 5. 单例模式 单例模式 模式动机模式定义模式结构时序图代码分析模式分析实例优点缺点适用环境模式应用模式扩展总结 5.1. 模式动机 对于系统中的某些类来说,只有一个实例很重要,例如…...
探索设计模式——单例模式详解
前言:设计模式的作用主要是为了——利用设计方式的重用来自动地提高代码的重新利用、提高代码的灵活性、节省时间, 提高开发效率、低耦合,封装特性显著, 接口预留有利于扩展。 设计模式的种类有很多种,本篇内容主要讲解…...
建筑垃圾/城市固废倾倒转移乱象:EasyCVR+AI智能视频监控方案助力城市环保监管
近日有新闻记者报道,中央生态环境保护督察组在上海、浙江、江西、湖北、湖南、重庆、云南7省市督察发现,一些地方建筑垃圾处置工作存在明显短板,乱堆乱倒问题时有发生,比如,江西湘东区在杨家田地块违规设置弃土场&…...
C的I/O操作
目录 引言 一、文件与目录操作 1. 打开与关闭文件 2. 文件读写操作 3. 文件定位与错误处理 二、字符流与字节流 1. 字符流处理 2. 字节流处理 三、序列化与反序列化 1. 序列化 2. 反序列化 四、新的I/O(NIO) 表格总结 文件与目录操作 字符…...
Android Audio实战——声道信息回调(五)
在前面的 AudioTrack 构造中,我们传入了音频的声道信息,这一节我们就来详细介绍一下声道的配置信息。 一、声道介绍 音频中的声道配置从单声道到双声道(立体声)、再到多声道系统(如5.1和7.1),代表了声音录制和回放技术的发展,旨在提供越来越丰富和沉浸式的听觉体验。 …...
ThreeJS给模型添加介绍文字(贴在模型上 不会一直面向我们)
使用到 FontLoader跟 TextGeometry 引包 import {TextGeometry} from "three/examples/jsm/geometries/TextGeometry"; import {FontLoader} from "three/examples/jsm/loaders/FontLoader";使用 // 创建字体加载器并加载字体 const fontLoader new Fo…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
Linux 下 DMA 内存映射浅析
序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...
jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章 摘要: 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言,受限于 C 语言本身的内存安全和并发安全问题,开发复杂模块极易引入难以…...
