昇腾产品系列及试用

       

目录

训练和推理

训练服务器与推理服务器

Atlas 800T A2训练服务器

Atlas 800I A2推理服务器

Atlas 800 推理服务器(型号:3000)

综合比较

推理卡与训练卡

推理卡

训练卡

综合比较

软件模块

用例运行

cann的用例

mindx的用例

personcount示例

环境变量设置

模型转换

修改后处理的编译选项

编译后处理库

运行

效果图

总结


  海思由于分大小,即上海和深圳两个海思。个人理解对应的产品,分别为安防的3559等,以及算力的昇腾。这对于刚开始接触海思产品的人会产生困惑。本文记录海思昇腾的部分产品及试用说明。

训练和推理

训练服务器与推理服务器

Atlas 800T A2训练服务器

Atlas 800T A2训练服务器具有更高算力密度、极致能效比与高速网络带宽等特点。该服务器广泛应用于深度学习模型开发和训练,适用于智慧城市、智慧金融、教育科研、运营商等需要大算力的行业领域。

Atlas 800I A2推理服务器

Atlas 800I A2 推理服务器采用8模组高效推理方式,提供强劲 AI 推理能力,在算力、内存带宽和互联能力方面具有优势,可广泛应用于生成式大模型推理,例如智能客服、文案生成、知识沉淀等内容生成类场景,支持NPU互联,提升大模型推理效率

Atlas 800 推理服务器
(型号:3000)

Atlas 800 推理服务器 (型号:3000)最大可支持8个Atlas 300I/V Pro,提供强大的实时推理能力和视频分析能力,广泛应用于中心侧AI推理场景。

1)大模型训练对计算架构的一致性,和节点间的高速互联,要求相对较高。

2)大容量内存:在训练过程中,需要存储大量的数据和模型参数。随着模型规模的不断增大和数据集的复杂性增加,训练服务器需要具备足够大的内存来容纳这些数据
3)高速存储:快速的存储设备可以减少数据读取和写入的时间,提高训练效率。

而大模型推理,(通过优化)可以做到一台机器干很多件事情。

综合比较

型号cpu内存存储外部网络内部网络pcie扩展场景
800T432个DDR4 16-64Gsata nvme

8*200GE

RDMA

3个深度学习模型开发和训练
800I432个DDR4 16-64Gsata nvme

8*200GE

RDMA

NPU全互联3个生成式大模型推理
800232个DDR4 sata 9个,1120T算力时推理能力和视频分析能力

  问题

 1) NPU如何全互联?带宽392GB/s是 如何得来的?全互联后作为一个NPU节点?

   全互联后,RDMA网口可以直接访问到NPU的内存?

 

  结论:  

  1)通过上表可以得到,生成式的模型推理,对互联性以及存储的容量、速度与训练服务器有同样的要求。

   2) 实时推理与视频分析依靠单独服务器,该服务器提供了上述三者中最强的算力。

推理卡与训练卡

推理卡

训练卡

  很奇怪,昇腾官网已经没有训练卡 300T的资料,而全在华为主网站上,

 

框图来源: 前面板 - 概述 - Atlas 300T 训练卡 用户指南(型号 9000)14 - 华为

Atlas 300T Pro 训练卡 技术白皮书 (型号 9000) - 华为企业业务

综合比较

算力外部接口尺寸功耗内存速率
推理卡300i pro

140 TOPS INT8

70 TFLOPS FP16

72w4266Mbps
训练卡300T pro280 TFLOPS FP16100G300Wddr4 2400Mbps

1)训练卡比推理卡多了RDMA网卡,即外面的数据可以直接到NPU。

2)算力单卡算力强。

3) 训练卡内存不行。

4)功耗算力比差不多

软件模块

目前:

1) 驱动及固件

2) cann,包括图像采集接口,预处理接口,内存拷贝等,以及ATC的转换工具。

3) mindx。包括mindxvision的开发接口,mindx-toolbox算力、PCIE带宽测试等工具。

用例运行

cann的用例

samples: CANN Samples

官方参考示例如上。目前主要采集图像部分。 

mindx的用例

mindxsdk-referenceapps: MindX SDK Reference Apps

如下网址可以看到昇腾能做什么 

昇腾AI应用案例-昇腾社区j

personcount示例

contrib/PersonCount · Ascend/mindxsdk-referenceapps - 码云 - 开源中国

环境变量设置

export MX_SDK_HOME=/home/HwHiAiUser/mxVision-6.0.RC3/

source  /usr/local/Ascend/ascend-toolkit/set_env.sh
source /home/HwHiAiUser/mxVision/set_env.sh

模型转换
atc --input_shape="blob1:8,3,800,1408" --weight=model/count_person.caffe.caffemodel --input_format=NCHW --output=model/count_person_8.caffe --soc_version=Ascend310P3 --insert_op_conf=model/insert_op.cfg --framework=0 --model=model/count_person.caffe.prototxt
修改后处理的编译选项

 不修改此参数,会报如下错误:

error: expected primary-expression before '>' token

LogMessageFatal(file, line, std::make_uniquestd::string(names));

error: 'make_unique' is not a member of 'std'

LogMessageFatal(file, line, std::make_uniquestd::string(names));

cat Plugin1/CMakeLists.txt

默认的-std=c++11,修改为如下的-std=c++14

include_directories(${PROJECT_SOURCE_DIR}/opensource/include/glib-2.0)
include_directories(${PROJECT_SOURCE_DIR}/opensource/lib/glib-2.0/include)

link_directories(${PROJECT_SOURCE_DIR}/opensource/lib/)
link_directories(${PROJECT_SOURCE_DIR}/lib)

add_compile_options(-std=c++14 -fPIC -fstack-protector-all -pie -Wno-deprecated-declarations)
add_compile_options("-DPLUGIN_NAME=${PLUGIN_NAME}")
编译后处理库

bash build.sh

-- Build files have been written to: /home/HwHiAiUser/PersonCount/Plugin1/build
[ 50%] Building CXX object CMakeFiles/countpersonpostprocess.dir/CountPersonPostProcessor.cpp.o
[100%] Linking CXX shared library libcountpersonpostprocess.so
[100%] Built target countpersonpostprocess
运行
 ./run.sh
Begin to initialize Log.
The output directory of logs file exist.
WARNING: Logging before InitGoogleLogging() is written to STDERR
I20190903 10:02:50.367968 281465208715200 FileUtils.cpp:339] The input file is empty
I20190903 10:02:50.368009 281465208715200 FileUtils.cpp:495] Check Other group permission: Current permission is 4, but required no greater than 0.
Save logs information to specified directory.

(gst-plugin-scanner:1191): GStreamer-WARNING **: 10:02:50.420: Failed to load plugin '/home/HwHiAiUser/mxVision/opensource/lib/gstreamer-1.0/libgstinsertbin.so': libgstinsertbin-1.0.so.0: cannot open shared object file: No such file or directory

(gst-plugin-scanner:1191): GStreamer-WARNING **: 10:02:50.939: Failed to load plugin '/home/HwHiAiUser/mxVision/opensource/lib/gstreamer-1.0/libgstinsertbin.so': libgstinsertbin-1.0.so.0: cannot open shared object file: No such file or directory





total image number: 316
time cost 50.494364976882935 s
MAE: 21.838607594936708         MSE: 39.39852371455149
效果图

后续例程:

https://gitee.com/ascend/mindxsdk-referenceapps/tree/master/contrib/AutoSpeechRecognition

https://gitee.com/ascend/mindxsdk-referenceapps/tree/master/contrib/FireDetection

总结

      通过案例了解昇腾系列的硬件及应用场景。比如昇腾提供的支撑库里面已经有姿态识别的部分,就不需要自己再做一遍。

     进一步了解ATC的转换参数,以及对应模型之间的关系。例如tesorflow,caffe和yolovX ,resnet50等之间的关系及应用场景。

     随着产品的深入开发及优化,并非mindx这种高层封装可以解决的,这种高层封装虽然简化了编程。

    后续:

    1) 多NPU的应用。 例如这种 【昇腾】从单机单卡到单机多卡训练-CSDN博客

    2) 算子部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

proware

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值