从ResNet50样例出发手把手带你用Atlas 300I Pro推理卡跑通第一个AI应用当你第一次拿到Atlas 300I Pro推理卡时最迫切的需求可能就是快速验证它的性能。本文将带你跳过繁琐的环境配置直接从运行一个经典图像分类模型ResNet50开始体验昇腾AI推理的全流程。1. 准备工作获取样例代码与模型在开始之前确保你已经完成以下准备已安装Atlas 300I Pro驱动和CANN工具包开发环境能正常访问互联网拥有普通用户权限非root首先从昇腾社区获取样例代码cd ~ wget https://gitee.com/ascend/samples/repository/archive/master.zip unzip master.zip cd ascend-samples-master/cplusplus/level2_simple_inference/1_classification/resnet50_firstapp关键目录结构说明resnet50_firstapp/ ├── data/ # 存放测试图片 ├── model/ # 存放模型文件 ├── script/ # 预处理脚本 └── src/ # 源代码2. 模型转换从ONNX到昇腾专用格式Atlas推理卡不能直接使用原始模型需要先通过ATC工具转换为.om格式cd model wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50.onnx atc --modelresnet50.onnx --framework5 --outputresnet50 --input_shapeactual_input_1:1,3,224,224 --soc_versionAscend310参数解析参数说明示例值--model输入模型路径resnet50.onnx--framework原始框架类型5(ONNX)--output输出模型名称resnet50--input_shape输入张量形状actual_input_1:1,3,224,224--soc_version处理器版本Ascend310注意soc_version需根据实际使用的Atlas 300I Pro型号调整可通过npu-smi info命令查询3. 数据准备图像预处理技巧ResNet50模型对输入图像有特定要求RGB三通道224×224分辨率数值归一化到[0,1]我们提供的测试图片需要进行以下处理wget -P data/ https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog1_1024_683.jpg python3 script/transferPic.py data/dog1_1024_683.jpg预处理脚本主要完成调整图像尺寸颜色空间转换数据归一化保存为二进制格式4. 编译与运行完整推理流程4.1 环境变量配置编译前需设置必要的环境变量export APP_SOURCE_PATH$(pwd) export DDK_PATH$HOME/Ascend/ascend-toolkit/latest export NPU_HOST_LIB$DDK_PATH/x86_64-linux/devlib4.2 编译工程执行编译脚本chmod x sample_build.sh ./sample_build.sh常见问题处理缺少Pillow库pip3 install Pillow --user脚本格式问题sudo apt-get install dos2unix dos2unix sample_build.sh4.3 运行推理chmod x sample_run.sh ./sample_run.sh成功运行后你将看到类似输出top 1: index[162] value[0.954676] top 2: index[161] value[0.033442] top 3: index[166] value[0.006534] top 4: index[167] value[0.004561] top 5: index[163] value[0.000315]5. 结果分析与性能优化5.1 解读分类结果输出结果中的index对应ImageNet数据集类别index类别名称置信度162比格犬95.47%161巴吉度猎犬3.34%166步行猎犬0.65%5.2 性能优化建议提升推理效率的几种方法批量处理修改input_shape为actual_input_1:8,3,224,224处理8张图片量化压缩使用ATC的--quantize参数降低模型精度多卡并行通过AscendCL接口实现多卡负载均衡# 量化示例 atc --modelresnet50.onnx --framework5 --outputresnet50_int8 \ --input_shapeactual_input_1:1,3,224,224 --soc_versionAscend310 \ --quantizeINT8 --quantize_statistic_filecalibration.txt6. 进阶开发指南完成基础示例后你可以进一步探索自定义模型将PyTorch/TensorFlow模型转换为ONNX后部署多模型流水线通过AscendCL实现多个模型的串联推理性能分析使用msprof工具进行性能剖析实际项目中我们通常会封装更完善的推理服务。例如处理视频流时可以这样组织代码// 伪代码示例 while(video_stream.hasFrame()) { frame preprocess(video_stream.getFrame()); tensor convertToTensor(frame); output model.infer(tensor); results postprocess(output); display(results); }Atlas 300I Pro的典型性能指标模型输入尺寸吞吐量(FPS)延迟(ms)ResNet50224×22412008.3YOLOv3416×4164522.1BERT-base512 tokens8511.8遇到问题时建议先检查驱动版本与CANN版本是否匹配环境变量是否设置正确模型输入输出形状是否匹配内存是否充足可通过npu-smi查看
从ResNet50样例出发:手把手带你用Atlas 300I Pro推理卡跑通第一个AI应用
从ResNet50样例出发手把手带你用Atlas 300I Pro推理卡跑通第一个AI应用当你第一次拿到Atlas 300I Pro推理卡时最迫切的需求可能就是快速验证它的性能。本文将带你跳过繁琐的环境配置直接从运行一个经典图像分类模型ResNet50开始体验昇腾AI推理的全流程。1. 准备工作获取样例代码与模型在开始之前确保你已经完成以下准备已安装Atlas 300I Pro驱动和CANN工具包开发环境能正常访问互联网拥有普通用户权限非root首先从昇腾社区获取样例代码cd ~ wget https://gitee.com/ascend/samples/repository/archive/master.zip unzip master.zip cd ascend-samples-master/cplusplus/level2_simple_inference/1_classification/resnet50_firstapp关键目录结构说明resnet50_firstapp/ ├── data/ # 存放测试图片 ├── model/ # 存放模型文件 ├── script/ # 预处理脚本 └── src/ # 源代码2. 模型转换从ONNX到昇腾专用格式Atlas推理卡不能直接使用原始模型需要先通过ATC工具转换为.om格式cd model wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50.onnx atc --modelresnet50.onnx --framework5 --outputresnet50 --input_shapeactual_input_1:1,3,224,224 --soc_versionAscend310参数解析参数说明示例值--model输入模型路径resnet50.onnx--framework原始框架类型5(ONNX)--output输出模型名称resnet50--input_shape输入张量形状actual_input_1:1,3,224,224--soc_version处理器版本Ascend310注意soc_version需根据实际使用的Atlas 300I Pro型号调整可通过npu-smi info命令查询3. 数据准备图像预处理技巧ResNet50模型对输入图像有特定要求RGB三通道224×224分辨率数值归一化到[0,1]我们提供的测试图片需要进行以下处理wget -P data/ https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog1_1024_683.jpg python3 script/transferPic.py data/dog1_1024_683.jpg预处理脚本主要完成调整图像尺寸颜色空间转换数据归一化保存为二进制格式4. 编译与运行完整推理流程4.1 环境变量配置编译前需设置必要的环境变量export APP_SOURCE_PATH$(pwd) export DDK_PATH$HOME/Ascend/ascend-toolkit/latest export NPU_HOST_LIB$DDK_PATH/x86_64-linux/devlib4.2 编译工程执行编译脚本chmod x sample_build.sh ./sample_build.sh常见问题处理缺少Pillow库pip3 install Pillow --user脚本格式问题sudo apt-get install dos2unix dos2unix sample_build.sh4.3 运行推理chmod x sample_run.sh ./sample_run.sh成功运行后你将看到类似输出top 1: index[162] value[0.954676] top 2: index[161] value[0.033442] top 3: index[166] value[0.006534] top 4: index[167] value[0.004561] top 5: index[163] value[0.000315]5. 结果分析与性能优化5.1 解读分类结果输出结果中的index对应ImageNet数据集类别index类别名称置信度162比格犬95.47%161巴吉度猎犬3.34%166步行猎犬0.65%5.2 性能优化建议提升推理效率的几种方法批量处理修改input_shape为actual_input_1:8,3,224,224处理8张图片量化压缩使用ATC的--quantize参数降低模型精度多卡并行通过AscendCL接口实现多卡负载均衡# 量化示例 atc --modelresnet50.onnx --framework5 --outputresnet50_int8 \ --input_shapeactual_input_1:1,3,224,224 --soc_versionAscend310 \ --quantizeINT8 --quantize_statistic_filecalibration.txt6. 进阶开发指南完成基础示例后你可以进一步探索自定义模型将PyTorch/TensorFlow模型转换为ONNX后部署多模型流水线通过AscendCL实现多个模型的串联推理性能分析使用msprof工具进行性能剖析实际项目中我们通常会封装更完善的推理服务。例如处理视频流时可以这样组织代码// 伪代码示例 while(video_stream.hasFrame()) { frame preprocess(video_stream.getFrame()); tensor convertToTensor(frame); output model.infer(tensor); results postprocess(output); display(results); }Atlas 300I Pro的典型性能指标模型输入尺寸吞吐量(FPS)延迟(ms)ResNet50224×22412008.3YOLOv3416×4164522.1BERT-base512 tokens8511.8遇到问题时建议先检查驱动版本与CANN版本是否匹配环境变量是否设置正确模型输入输出形状是否匹配内存是否充足可通过npu-smi查看