Atlas 200I DK A2安装MindSpore Ascend版本
一、参考资料
mindspore快速安装
二、重要说明
经过博主多次尝试多个版本,Atlas 200I DK A2无法安装MindSpore Ascend版本。
也有其他博主测试,也未尝成功,例如:【MindSpore易点通·漫游世界】在Atlas 200I DK A2 (CANN6.2.RC2)上安装MindSpore Ascend版的踩坑记录
mindspore 1.5.2 报错无法运行(./tensor_add_sample: symbol lookup error: /home/HwHiAiUser/.local/lib/python3.9/site-packages/mindspore/lib/libmindspore.so: undefined symbol: _ZN2ge5Model8SetGraphERKNS_5GraphE)
mindspore 1.6.2 报错无法运行(./tensor_add_sample: symbol lookup error: /home/HwHiAiUser/.local/lib/python3.9/site-packages/mindspore/lib/libmindspore.so: undefined symbol: _ZN2ge5Model8SetGraphERKNS_5GraphE)
mindspore 1.7.1 报错无法运行 (./tensor_add_sample: error while loading shared libraries: libhccl.so: cannot open shared object file: No such file or directory)
mindspore 1.8.1 报错无法运行(./tensor_add_sample: error while loading shared libraries: libhccl.so: cannot open shared object file: No such file or directory)
mindspore 1.9.0 报错无法运行(./tensor_add_sample: symbol lookup error: /home/HwHiAiUser/.local/lib/python3.9/site-packages/mindspore/lib/libmindspore.so: undefined symbol: _ZN2ge5Model8SetGraphERKNS_5GraphE)
mindspore 1.10.1 报错无法运行(./tensor_add_sample: symbol lookup error: /home/HwHiAiUser/.local/lib/python3.9/site-packages/mindspore/lib/libmindspore.so: undefined symbol: _ZN2ge5Model8SetGraphERKNS_5GraphE)
mindspore 2.0.0 报错无法运行(Unsupported device target Ascend)
mindspore 2.1.0 报错无法运行(Unsupported device target Ascend)
三、准备工作
1. 测试环境
设备型号:Atlas 200I DK A2
Operating System + Version: Ubuntu 22.04 LTS
CPU Type: 4核TAISHANV200M处理器
AI CPU number: 0
control CPU number: 4
RAM: 4GB
miscroSD: 128GB
CANN Vertion: 7.0.RC1
HwHiAiUser@davinci-mini:~$ npu-smi info -t aicpu-config -i 0 -c 0Current AI CPU number : 0Current control CPU number : 4Number of AI CPUs set : 0Number of control CPUs set : 4
2. MindSpore与CANN版本对齐
通过 链接 查询MindSpore与Ascend配套软件包的版本配套关系。

3. 安装mindspore_ascend
详细过程,请参考:pip方式安装MindSpore Ascend 310版本
4. 验证是否安装成功
4.1 方法一
import mindspore as ms# ms.set_context(device_target='CPU')
# ms.set_context(device_target='GPU')
ms.set_context(device_target="Ascend")
ms.set_context(device_id=0)
mindspore.run_check()
如果输出以下结果,则说明mindspore_ascend安装成功。
MindSpore version: 版本号
The result of multiplication calculation is correct, MindSpore has been installed on platform [Ascend] successfully!
4.2 方法二
import numpy as np
import mindspore as ms
import mindspore.ops as opsms.set_context(device_target="Ascend")
x = ms.Tensor(np.ones([1,3,3,4]).astype(np.float32))
y = ms.Tensor(np.ones([1,3,3,4]).astype(np.float32))
print(ops.add(x, y))
如果输出以下结果,则说明mindspore_ascend安装成功。
[[[[2. 2. 2. 2.][2. 2. 2. 2.][2. 2. 2. 2.]][[2. 2. 2. 2.][2. 2. 2. 2.][2. 2. 2. 2.]][[2. 2. 2. 2.][2. 2. 2. 2.][2. 2. 2. 2.]]]]
4.3 方法三
ascend310_single_op_sample
这是一个[1, 2, 3, 4]与[2, 3, 4, 5]相加的简单样例,代码工程目录结构如下:
└─ascend310_single_op_sample├── CMakeLists.txt // 编译脚本├── README.md // 使用说明├── main.cc // 主函数└── tensor_add.mindir // MindIR模型文件
unzip ascend310_single_op_sample.zip
cd ascend310_single_op_sample# 编译
cmake . -DMINDSPORE_PATH=`pip show mindspore-ascend | grep Location | awk '{print $2"/mindspore"}' | xargs realpath`
make# 执行
./tensor_add_sample
如果输出以下结果,则说明mindspore_ascend安装成功。
3
5
7
9
四、测试代码
1. 示例一
用MindSpore搭建模型,并进行测试。
"""
MindSpore implementation of `MobileNetV1`.
Refer to MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications.
"""
import timefrom mindspore import nn, Tensor, ops
import mindspore.common.initializer as init
import mindspore as ms
from PIL import Image
from mindcv.data import create_transforms
import numpy as npdef depthwise_separable_conv(inp: int, oup: int, stride: int) -> nn.SequentialCell:return nn.SequentialCell(# dwnn.Conv2d(inp, inp, 3, stride, pad_mode="pad", padding=1, group=inp, has_bias=False),nn.BatchNorm2d(inp),nn.ReLU(),# pwnn.Conv2d(inp, oup, 1, 1, pad_mode="pad", padding=0, has_bias=False),nn.BatchNorm2d(oup),nn.ReLU(),)class MobileNetV1(nn.Cell):r"""MobileNetV1 model class, based on`"MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications" <https://arxiv.org/abs/1704.04861>`_Args:alpha: scale factor of model width. Default: 1.in_channels: number the channels of the input. Default: 3.num_classes: number of classification classes. Default: 1000."""def __init__(self,alpha: float = 1.,in_channels: int = 3,num_classes: int = 1000) -> None:super().__init__()input_channels = int(32 * alpha)# Setting of depth-wise separable conv# c: number of output channel# s: stride of depth-wise convblock_setting = [# c, s[64, 1],[128, 2],[128, 1],[256, 2],[256, 1],[512, 2],[512, 1],[512, 1],[512, 1],[512, 1],[512, 1],[1024, 2],[1024, 1],]features = [nn.Conv2d(in_channels, input_channels, 3, 2, pad_mode="pad", padding=1, has_bias=False),nn.BatchNorm2d(input_channels),nn.ReLU()]for c, s in block_setting:output_channel = int(c * alpha)features.append(depthwise_separable_conv(input_channels, output_channel, s))input_channels = output_channelself.features = nn.SequentialCell(features)# self.pool = GlobalAvgPooling()self.pool = nn.AdaptiveAvgPool2d(output_size=(1, 1))self.classifier = nn.Dense(input_channels, num_classes)self._initialize_weights()def _initialize_weights(self) -> None:"""Initialize weights for cells."""for _, cell in self.cells_and_names():if isinstance(cell, nn.Conv2d):cell.weight.set_data(init.initializer(init.XavierUniform(),cell.weight.shape,cell.weight.dtype))if isinstance(cell, nn.Dense):cell.weight.set_data(init.initializer(init.TruncatedNormal(),cell.weight.shape,cell.weight.dtype))def forward_features(self, x: Tensor) -> Tensor:x = self.features(x)return xdef forward_head(self, x: Tensor) -> Tensor:squeeze = ops.Squeeze(0)x = squeeze(x)x = self.pool(x)squeeze = ops.Squeeze(2)x = squeeze(x)x = x.transpose()x = self.classifier(x)return xdef construct(self, x: Tensor) -> Tensor:x = self.forward_features(x)x = self.forward_head(x)return xdef mobilenet_v1_100_224(pretrained: bool = False, num_classes: int = 1000, in_channels=3, **kwargs) -> MobileNetV1:"""Get MobileNetV1 model without width scaling.Refer to the base class `models.MobileNetV1` for more details."""model = MobileNetV1(alpha=1.0, in_channels=in_channels, num_classes=num_classes, **kwargs)return modelif __name__ == '__main__':# ms.set_context(device_target='GPU')# ms.set_context(device_target='CPU')ms.set_context(device_target="Ascend")ms.set_context(device_id=0)ms.set_seed(1)ms.set_context(mode=ms.PYNATIVE_MODE)img = Image.open("image.jpg").convert("RGB")# create transformtransform_list = create_transforms(dataset_name="imagenet",is_training=False,)transform_list.pop(0)for transform in transform_list:img = transform(img)img = np.expand_dims(img, axis=0)# create modelnetwork = mobilenet_v1_100_224()for i in range(100):# warmupnetwork(ms.Tensor(img))time_begin = time.time()for i in range(1000):# predictnetwork(ms.Tensor(img))time_total = (time.time() - time_begin) * 1000 / 1000print(f"total time is: {time_total}")# print(network)
2. 示例二
调用 mindcv库中的预训练模型进行测试。
"""MindSpore Inference Script
"""import numpy as np
from PIL import Imageimport mindspore as msfrom mindcv.data import create_transforms
from mindcv.models import create_model
import time# ms.set_context(device_target='CPU')
# ms.set_context(device_target='GPU')ms.set_context(device_target='Ascend')
ms.set_context(device_id=0)
ms.set_context(max_device_memory="3.5GB")def main():ms.set_seed(1)ms.set_context(mode=ms.PYNATIVE_MODE)img = Image.open("image.jpg").convert("RGB")# create transformtransform_list = create_transforms(dataset_name="imagenet",is_training=False,)transform_list.pop(0)for transform in transform_list:img = transform(img)img = np.expand_dims(img, axis=0)# create modelnetwork = create_model(model_name="mobilenet_v1_100", # mobilenet_v1_100_224pretrained=False,)network.set_train(False)for i in range(100):# warmupnetwork(ms.Tensor(img))time_begin = time.time()for i in range(1000):# predictnetwork(ms.Tensor(img))time_total = (time.time() - time_begin) * 1000 / 1000print(f"total time is: {time_total}")if __name__ == "__main__":main()
五、FAQ
Q:RuntimeError: Load op info form json config failed, version: Ascend310B4
[WARNING] ME(230369:255086392991776,MainProcess):2024-05-25-17:29:28.302.942 [mindspore/run_check/_check_version.py:375] MindSpore version 2.1.1 and "te" wheel package version 7.0 does not match. For details, refer to the installation guidelines: https://www.mindspore.cn/install
[WARNING] ME(230369:255086392991776,MainProcess):2024-05-25-17:29:28.305.619 [mindspore/run_check/_check_version.py:382] MindSpore version 2.1.1 and "hccl" wheel package version 7.0 does not match. For details, refer to the installation guidelines: https://www.mindspore.cn/install
[WARNING] ME(230369:255086392991776,MainProcess):2024-05-25-17:29:28.305.849 [mindspore/run_check/_check_version.py:396] Please pay attention to the above warning, countdown: 3
[WARNING] ME(230369:255086392991776,MainProcess):2024-05-25-17:29:29.307.139 [mindspore/run_check/_check_version.py:396] Please pay attention to the above warning, countdown: 2
[WARNING] ME(230369:255086392991776,MainProcess):2024-05-25-17:29:30.308.249 [mindspore/run_check/_check_version.py:396] Please pay attention to the above warning, countdown: 1
[ERROR] KERNEL(230369,e7ffaf56f120,python):2024-05-25-17:29:35.761.869 [mindspore/ccsrc/kernel/oplib/op_info_utils.cc:172] LoadOpInfoJson] Get op info json suffix path failed, soc_version: Ascend310B4
[ERROR] KERNEL(230369,e7ffaf56f120,python):2024-05-25-17:29:35.762.199 [mindspore/ccsrc/kernel/oplib/op_info_utils.cc:111] GenerateOpInfos] Load op info json failed, version: Ascend310B4
Traceback (most recent call last):File "/root/Downloads/mindspore_ascend_demo.py", line 8, in <module>print(ops.add(x, y))File "/usr/local/miniconda3/envs/mindspore22/lib/python3.9/site-packages/mindspore/common/_stub_tensor.py", line 49, in funreturn method(*arg, **kwargs)File "/usr/local/miniconda3/envs/mindspore22/lib/python3.9/site-packages/mindspore/common/tensor.py", line 486, in __str__return str(self.asnumpy())File "/usr/local/miniconda3/envs/mindspore22/lib/python3.9/site-packages/mindspore/common/tensor.py", line 924, in asnumpyreturn Tensor_.asnumpy(self)
RuntimeError: Load op info form json config failed, version: Ascend310B4----------------------------------------------------
- C++ Call Stack: (For framework developers)
----------------------------------------------------
mindspore/ccsrc/plugin/device/ascend/hal/device/ascend_kernel_runtime.cc:431 Init[ERROR] PIPELINE(230369,e7ffedd76020,python):2024-05-25-17:29:35.824.442 [mindspore/ccsrc/pipeline/jit/pipeline.cc:2311] ClearResAtexit] Check exception before process exit: Load op info form json config failed, version: Ascend310B4----------------------------------------------------
- C++ Call Stack: (For framework developers)
----------------------------------------------------
mindspore/ccsrc/plugin/device/ascend/hal/device/ascend_kernel_runtime.cc:431 Init
mindspore_ascend 2.1.1 测试失败。
Q:RuntimeError: The device address type is wrong: type name in address:CPU, type name in context:Ascend
RuntimeError: The device address type is wrong: type name in address:CPU, type name in context:Ascend----------------------------------------------------
- C++ Call Stack: (For framework developers)
----------------------------------------------------
mindspore/ccsrc/plugin/device/ascend/hal/hardware/ge_device_res_manager.cc:72 AllocateMemory
mindspore_ascend 2.2.0 测试失败。
相关文章:
Atlas 200I DK A2安装MindSpore Ascend版本
一、参考资料 mindspore快速安装 二、重要说明 经过博主多次尝试多个版本,Atlas 200I DK A2无法安装MindSpore Ascend版本。 也有其他博主测试,也未尝成功,例如:【MindSpore易点通漫游世界】在Atlas 200I DK A2 (CANN6.2.RC2)…...
Go 生成UUID唯一标识
什么是UUID 通用唯一识别码(英语:Universally Unique Identifier,简称UUID)是一种软件建构的标准,亦为自由软件基金会组织在分散式计算环境领域的一部份。 UUID的目的,是让分散式系统中的所有元素&#x…...
【知识蒸馏】deeplabv3 logit-based 知识蒸馏实战,对剪枝的模型进行蒸馏训练
本文将对【模型剪枝】基于DepGraph(依赖图)完成复杂模型的一键剪枝 文章中剪枝的模型进行蒸馏训练 一、逻辑蒸馏步骤 加载教师模型定义蒸馏loss计算蒸馏loss正常训练 二、代码 1、加载教师模型 教师模型使用未进行剪枝,并且已经训练好的原始模型。 teacher_mod…...
02.爬虫---HTTP基本原理
02.HTTP基本原理 1.URI 和 URL 的区别2.HTTP 和 HTTPS 的区别3.请求过程 1.URI 和 URL 的区别 URL(Uniform Resource Locator)即-统一资源定位符 URL是用来定位和访问互联网上资源的独特标识,它包括了资源的位置(如IP地址或域名&a…...
HTTP响应的基本概念
目录 HTTP响应中的一些信息 HTTPS HTTP响应中的一些信息 状态码:描述了这次HTTP请求是否成功,以及失败的原因。 1)200 ---OK 表示这次访问成功了。 2)404 ---Not Found 表示客户端请求的资源在服务器这边不存在。 3&a…...
链栈的存储
单向链表在栈中的存储 typedef struct StackNode {SElemType data;struct StackNode* next; }StackNode, *LinkStack; LinkStack S; //链栈初始化 void InitStack(LinkStack& S) {S NULL;return OK; } //判断链栈是否为空 Status StackEmpty(LinkStack S) {if (S NU…...
常见网络协议及端口号
https://www.cnblogs.com/Snail-yellow/p/17722411.html 常见的网络协议-腾讯云开发者社区-腾讯云 常见的网络协议知识整理_五种常用的网络协议-CSDN博客 端口 协议 常见的网络协议_计算机网络协议有哪些csdn-CSDN博客 协议 常见的网络协议知…...
几张自己绘制的UML图
全部来源于公司项目,使用建模工具 Enterprise Architect。自己做的其余文档(含绘图),因保密协议不便于公开。...
[读论文]精读Self-Attentive Sequential Recommendation
论文链接:https://arxiv.org/abs/1808.09781 其他解读文章:https://mp.weixin.qq.com/s/cRQi3FBi9OMdO7imK2Y4Ew 摘要 顺序动态是许多现代推荐系统的一个关键特征,这些系统试图根据用户最近执行的操作来捕获用户活动的“上下文”。为了捕捉…...
HTML静态网页成品作业(HTML+CSS)——动漫海绵宝宝介绍网页(5个页面)
🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有5个页面。 二、作品演示 三、代…...
开放式耳机2024超值推荐!教你如何选择蓝牙耳机!
开放式耳机的便利性让它在我们的日常生活中变得越来越重要。它让我们摆脱了传统耳机的限制,享受到了更多的自由。不过,市面上的开放式耳机种类繁多,挑选一款既实用又实惠的产品确实需要一些小窍门。作为一位对开放式耳机颇有研究的用户&#…...
程序员搞副业的障碍有那些?
利用信息差是最常见的商业模式 在这个世界上,没有什么是所有人都知道的,信息差总是存在的。 无论是经验、技巧、知识,甚至是常识,都可能是信息差的源泉,而存在信息差的地方就意味着有赚钱的商机。 面对用户需求的金…...
windows7的ie11降级到ie8
重点是要在程序管理窗口中“查看已安装的更新”打开当前系统中已安装更新列表,找到两个IE11的更新(见下图“卸载文件“)并卸载掉,这样windows功能中的ie11才会变成ie8. 打开控制面板 进入面板,点击程序,进…...
楼房vr安全逃生模拟体验让你在虚拟环境中亲身体验火灾的紧迫与危险
消防VR安全逃生体验系统是深圳VR公司华锐视点引入了前沿的VR虚拟现实、web3d开发和多媒体交互技术,为用户打造了一个逼真的火灾现场应急逃生模拟演练环境。 相比传统的消防逃生模拟演练,消防VR安全逃生体验系统包含知识讲解和模拟实训演练,体…...
rust 学习--所有权
所有权是rust的核心功能。 Rust 是通过所有权来管理内存回收的 栈(Stack) 栈是后进先出的 栈中存储的数据在编译时是固定内存大小的数据 数据移除栈叫出栈,数据存入栈叫入栈 入栈要比在堆上分配内存块,入栈时分配器无需为存储…...
关于Git 的基本概念和使用方式
Git是一个分布式版本控制系统,用于跟踪和管理代码的改动。它具有以下基本概念和使用方式: 1. 仓库(Repository):Git使用仓库来存储代码和相关的历史记录。仓库可以是本地的,也可以是远程的。本地仓库保存在…...
《计算机网络微课堂》1-6 计算机体系结构
常见的计算机网络体系结构 从本节课开始,我们要用 4 次课的时间来介绍有关计算机网络体系结构的知识,具体包含以下内容: 一,常见的计算机网络体系结构二,计算机网络体系结构分层的必要性三,计算机网络体系…...
大模型的灵魂解读:Anthropic AI的Claude3 Sonnet可解释性研究
大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调重新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技…...
大模型框架:vLLM
目录 一、vLLM 介绍 二、安装 vLLM 2.1 使用 GPU 进行安装 2.2 使用CPU进行安装 2.3 相关配置 三、使用 vLLM 3.1 离线推理 3.2 适配OpenAI-API的API服务 一、vLLM 介绍 vLLM是伯克利大学LMSYS组织开源的大语言模型高速推理框架。它利用了全新的注意力算法「PagedAtten…...
SQL 使用心得【持续更新】
COUNT(字段) 不会统计 NULL 值,但是COUNT(*)会只要有子查询,就需要给子查询定义别名!where 后面的条件表达式中不能存在聚合函数,但是 Having 可以聚合函数基本上都是需要配合 group…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
