【环境部署系列 05】Ascend 310P3(推理)Centos系统环境部署

一、推荐基础开发环境配置

软件/硬件说明推荐配置/版本获取方式
硬件ARM / X86Atlas 500 Pro / Atlas800-3000 / Atlas800-3010/
操作系统Centos / OpenEulerCentOS 7.6 / CentOS 8.2 / OpenEuler 20.03官网
Driver驱动Atlas 300V Pro / Atlas 300I Pro官网
CANN针对AI场景推出的异构计算架构,通过提供多层次的编程接口,支持用户快速构建基于昇腾平台的AI应用和业务。CANN x.x.x官网
MindX视频分析应用开发套件(SDK),提供极简易用、高性能的API和工具,助力昇腾AI处理器赋能IVA各应用场景。MindX x.x.x官网

二、安装昇腾驱动

1、获取驱动

驱动、CANN、MindX SDK需要通过官网获取,以下例子,昇腾设备为:Atlas 500 Pro / Atlas800-3000 / Atlas800-3010,服务器为centos 7.6版本

Atlas 300V Pro / Atlas 300I Pro卡获取安装包如下

Ascend HDK x.x.x 目录下获取以下两个文件
Ascend-hdk-310p-npu_x.x.x_linux-{arch}.run                 (驱动)
Ascend-hdk-310p-npu-firmware_x.x.x.run                     (固件)
Ascend-hdk-310p-mcu_x.x.x.zip                              (MCU)

CANN x.x.x 目录下获取以下文件
Ascend-cann-toolkit_x.x.x_linux-{arch}.run                 (开发套件)

MindX x.x.x 目录下获取以下文件
Ascend-mindxsdk-mxvision_x.x.x_linux-{arch}.run            (SDK)

2、环境搭建

具体环境搭建,可以参考:
https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/51RC1alpha005/softwareinstall/instg/atlasdeploy_03_0018.html

以root用户登录安装环境。

(1)检查root用户的umask值。
umask

如果umask不等于0022,请执行如下操作配置,在该文件的最后一行添加umask 0022后保存。

vi ~/.bashrc
source ~/.bashrc
(2)创建华为用户组HwHiAiUser 和 用户
groupadd HwHiAiUser
useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash

设置密码

passwd HwHiAiUser
(3)推理环境需要的OS依赖
yum install -y gcc gcc-c++ make cmake unzip zlib-devel libffi-devel openssl-devel pciutils net-tools sqlite-devel lapack-devel openblas-devel gcc-gfortran

安装完后检查OS依赖是否都安装上

gcc --version
g++ --version
make --version
cmake --version
rpm -qa |grep unzip
rpm -qa |grep zlib-devel
rpm -qa |grep libffi-devel
rpm -qa |grep openssl-devel
rpm -qa |grep pciutils
rpm -qa |grep net-tools
rpm -qa |grep sqlite-devel
rpm -qa |grep lapack-devel
rpm -qa |grep openblas-devel
rpm -qa |grep gcc-gfortran
(4)如果cmake安装完后不是3.15.2+版本,请手动更新cmake
wget https://cmake.org/files/v3.15/cmake-3.15.2.tar.gz --no-check-certificate

tar -zxvf cmake-3.15.2.tar.gz
cd cmake-3.15.2
./bootstrap --prefix=/usr
make
sudo make install
(5)安装Python3.9.0

否则请根据如下方式安装python3.9.0。

a. 准备Python-3.9.0.tgz包,可以使用wget下载python3.9.0源码包,可以下载到安装环境的任意目录,命令为:
wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
b. 进入下载后的目录,解压源码包,命令为:
tar -zxvf Python-3.9.0.tgz
c. 进入解压后的文件夹,执行配置、编译和安装命令:
cd Python-3.9.0
./configure --prefix=/usr/local/python3.9.0 --enable-loadable-sqlite-extensions --enable-shared
make
sudo make install

设置python3.9.0环境变量
vi .bashrc内增加以下环境变量

#用于设置python3.9.0库文件路径
export LD_LIBRARY_PATH=/usr/local/python3.9.0/lib:$LD_LIBRARY_PATH
#如果用户环境存在多个python3版本,则指定使用python3.9.0版本
export PATH=/usr/local/python3.9.0/bin:$PATH

为后续安装CANN软件包、运行CANN软件环境变量设置脚本时能够自动配置python3.9.0环境变量,用户需提前创建好文件“use_private_python.info”,操作参考如下:
root用户

vi /etc/use_private_python.info

在文件中添加以下内容:

python3_install_path=/usr/local/python3.9.0

安装完成之后,执行如下命令查看安装版本,如果返回相关版本信息,则说明安装成功。

python3 --version
pip3 --version
(6)Python第三方库安装

推理环境的Python第三方库要求
版本要求:numpy>=1.13.3、protobuf==3.11.3

安装前,建议执行命令pip3 install --upgrade pip进行升级,避免因pip版本过低导致安装失败。

pip3 install attrs
pip3 install numpy
pip3 install decorator
pip3 install sympy
pip3 install cffi
pip3 install pyyaml
pip3 install pathlib2
pip3 install psutil
pip3 install protobuf
pip3 install scipy
pip3 install requests

pip3.7安装超时,或者太慢的时候,可以使用国内pip源比如:
清华的源

pip3.7 install -i https://pypi.tuna.tsinghua.edu.cn/simple sympy

阿里的源

pip3.7 install -i http://mirrors.aliyun.com/pypi/simple scipy

华为的源

pip3.7 install -i http://mirrors.tools.huawei.com/pypi/simple scipy
(7)安装驱动

Atlas 300V Pro / Atlas 300I Pro卡安装驱动

./Ascend-hdk-310p-npu_x.x.x_linux-{arch}.run --full
./Ascend-hdk-310p-npu-firmware_x.x.x.run --full
(8)安装CANN异构计算平台
./Ascend-cann-toolkit_x.x.x_linux-{arch}.run --install
(9)安装完CANN异构计算平台后,需要配置环境变量

.bashrc文件添加以下环境变量

# 安装toolkit包时配置
. /usr/local/Ascend/ascend-toolkit/set_env.sh

用户也可以通过修改~/.bashrc文件方式设置永久环境变量,操作如下:
a) 以运行用户在任意目录下执行vi ~/.bashrc命令,打开.bashrc文件,在文件最后一行后面添加上述内容。
b) 执行:wq!命令保存文件并退出。
c) 执行source ~/.bashrc命令使其立即生效。

(10)安装完成后npu-smi info 显示安装成功
[root@localhost ~]#
[root@localhost ~]# npu-smi info
+---------------------------------------------------------------------------------+
| npu-smi x.x.x                Version: x.x.x                                     |
+---------------+--------------+--------------------------------------------------+
| NPU    Name   | Health       | Power(W)  Temp(C)          Hugepages-Usage(page) |
| Chip   Device | Bus-Id       | AICore(%) Memory-Usage(MB)                       |
+===============+==============+==================================================+
| 1      310P3  | OK           | 14.5      34               0   / 0               |
| 0      0      | 0000:3B:00.0 | 0         909  / 23054                           |
+===============+==============+==================================================+
(11)升级MCU
1)参照升级前准备准备安装包“{product name}-mcu_X.hpm”。
Atlas 300V Pro / Atlas 300I Pro卡,Ascend-hdk-310p-mcu_x.x.x.zip 解压后得到 Ascend-hdk-310p-mcu_x.x.x.hpm
2)在浏览器的地址栏中输入“https://iBMC管理网口IP地址”,可打开用户登录界面。
输入“用户名”和“密码”登录iBMC Web界面。
默认用户名:Administrator
默认密码:Admin@9000

3)单击“固件升级”。

4)选择升级文件,单击“开始升级”。

5)升级成功。

6)检查升级后的版本号。
a)在iBMC Web主界面导航栏中,选择“系统管理 > 系统信息”,单击“其他”。
b)在界面左侧选择“PCIe卡”,单击PCIe卡左方的,在打开的“扩展信息”区域查看“MCU固件版本”。

三、安装MindX SDK > mxVision

(1)MindX SDK需要通过官网获取。
(2)mxVision说明手册:

https://support.huaweicloud.com/mindxsdk201/index.html

(3)安装MindX SDK
./Ascend-mindxsdk-mxvision_x.x.x_linux-{arch}.run --install --install-path=/usr/local/sdk_home

–install-path为指定安装的路径

(4)安装成功后会提示如下信息
Installing collected packages:mindx
Successfully installed mindx-x.x.x
(5)安装成功后在对应目录下查看,能看到mxVision
[root@localhost sdk_home]#
[root@localhost sdk_home]# pwd
/usr/local/sdk_home
[root@localhost sdk_home]# ls
mxVision mxVision-x.x.x
[root@localhost sdk_home]#
[root@localhost sdk_home]#
(6)MindX SDK使用中需要用到OSD功能,安装后需要执行以下命令,生成om文件
bash /usr/local/sdk_home/mxVision/operators/opencvosd/generate_osd_om.sh

执行成功后,显示如下效果

[root@localhost ~]# bash /usr/local/sdk_home/mxVision/operators/opencvosd/generate_osd_om.sh
ASCEND_HOME is set to /usr/local/Ascend by user
Set ASCEND_VERSION to the default value:ascend-toolkit/latest
ATC start working now,please wait for a moment.
ATC run success, welcome to the next use.

The model has been successfully converted to om,please get it under /usr/local/sdk_home/mxVision/operators/opencvosd.
[root@localhost ~]# 
(9)安装完MindX SDK后,需要配置环境变量

.bashrc文件添加以下环境变量

# 安装mxVision时配置
. /usr/local/sdk_home/mxVision/set_env.sh

用户也可以通过修改~/.bashrc文件方式设置永久环境变量,操作如下:

a) 以运行用户在任意目录下执行vi ~/.bashrc命令,打开.bashrc文件,在文件最后一行后面添加上述内容。
b) 执行:wq!命令保存文件并退出。
c) 执行source ~/.bashrc命令使其立即生效。
### 部署大型模型于Ascend 310P #### 环境准备 为了确保能够在Ascend 310P处理器上顺利部署大型模型,环境配置至关重要。这包括但不限于安装必要的软件包以及设置运行时参数来优化性能表现。对于特定硬件的支持,通常需要依赖厂商提供的驱动程序和支持库[^1]。 #### 安装框架与工具链 针对Ascend系列芯片,华为提供了MindSpore作为主要的人工智能计算框架之一。通过该框架可以实现神经网络的设计、训练及推理过程。因此,在目标平台上执行如下命令以完成MindSpore及相关组件的安装: ```bash pip install mindspore-ascend==1.x.x ``` 这里`1.x.x`代表具体的版本号,请依据实际情况调整。此外还需要注意Python解释器版本兼容性问题。 #### 转换并加载预训练权重 当拥有已经在其他平台(如GPU)上预先训练好的模型文件时,则需将其转换成适用于当前架构的形式。假设原始模型保存为`.ckpt`格式,那么可以通过以下方式导入至MindSpore环境中: ```python import numpy as np from mindspore import Tensor, load_checkpoint, load_param_into_net param_dict = load_checkpoint("model.ckpt") # 加载checkpoint文件中的参数表 new_params = {} # 创建新的参数字典用于存储适配后的参数值 for key in param_dict.keys(): new_key = "net." + key # 假设原key前缀不符合要求则添加自定义前缀"net." new_tensor = Tensor(param_dict[key].asnumpy()) # 将Parameter对象转为Tensor类型 new_params[new_key] = new_tensor # 更新到新字典中 load_param_into_net(your_model_instance, new_params) # 将更新过的参数应用回网络实例 ``` 此段代码展示了如何读取外部checkpoints并将其中的内容映射给指定的对象结构。需要注意的是实际操作过程中可能涉及到更多细节处理,比如名称空间差异等。 #### 执行推理任务 一旦完成了上述准备工作之后就可以着手编写具体的应用逻辑了。下面给出一段简单的预测流程示意代码片段: ```python import time import os from PIL import Image from mindspore.dataset.vision.py_transforms import Decode, Resize, CenterCrop, ToTensor, Normalize from mindspore.train.serialization import load_checkpoint, load_param_into_net def preprocess(image_path): img = Image.open(image_path).convert('RGB') transforms_list = [ Decode(), Resize(256), CenterCrop(224), ToTensor(), Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ] transform = Compose(transforms_list) return transform(img) if __name__ == '__main__': model_ckpt = 'your_pretrained_model.ckpt' image_dir = './images/' result_file = open('./results.txt', 'w') net = YourModelClass() # 初始化网络结构体 param_dict = load_checkpoint(model_ckpt) # 导入已有的权值数据 load_param_into_net(net, param_dict) # 合并两者形成完整的可执行个体 start_time = time.time() for filename in os.listdir(image_dir): if not filename.lower().endswith(('png', 'jpg')): continue try: input_data = preprocess(os.path.join(image_dir, filename)) output = net(input_data.unsqueeze_(0)) # 进行一次正向传播运算得到分类得分矩阵 pred_label = int(output.argmax(dim=1)[0]) # 获取最高分对应的类别索引 line = f'{filename}: {pred_label}\n' # 构造输出记录字符串 print(line.strip()) result_file.write(line) except Exception as e: print(f"Error processing {filename}: ", str(e)) elapsed_time = time.time() - start_time avg_inference_speed = len([f for f in os.listdir(image_dir)]) / elapsed_time print(f'\nAverage inference speed: %.2f images/sec\n' % (avg_inference_speed,)) result_file.close() ``` 这段脚本实现了批量图像识别的功能,并统计平均推断速度。当然这只是非常基础的例子,真实场景下往往更加复杂多变,涉及更多的业务需求和技术挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值