样例使用指导
功能描述
本样例是一个推荐网络的高性能推理示例,演示了如何利用GE API和ACL API实现推理流程,并通过多实例、批量H2D(Host-to-Device)内存拷贝 和AI Core控核技术来优化推荐网络的推理吞吐性能。
目录结构
├── src
│ ├──model_inference.cpp // 模型推理实现文件
│ ├──model_inference.h // 模型推理头文件
│ ├──recomand_random_input.cpp // 推理客户端,构造随机数据,调用模型推理
├── CMakeLists.txt // 编译脚本
环境要求
实现步骤
- 图构建:使用aclgrphParseTensorFlow解析模型文件,构建GE计算图。
- 图编译与加载:通过GE API(ge::Graph, ge::Session)进行图的编译(Compile)和加载(Load)。
- 数据准备与执行:根据模型输入结构构造随机数据,使用GE API进行推理。
- 性能优化:
- 多实例:通过多线程创建多个推理实例,提升系统并发处理能力。
- 控核:在创建ge::Session时,通过options参数指定单算子可使用的AI Core数量。
- 批量H2D:使用aclrtMemcpyBatch接口合并多次内存拷贝操作,减少开销。
构建验证
假设toolkit的安装目录为install_path, 例如/home/HwHiAiUser/Ascend/cann/
-
配置环境变量。
source ${install_path}/set_env.sh -
执行如下命令,创建data目录,并下载模型pb文件,放入data目录。
mkdir data -
执行如下命令,编译生成可执行文件
mkdir build && cd build cmake .. make执行后,在build目录下产生recomand_exec可执行文件
-
执行如下命令,测试推荐网络不开优化特性时的推理吞吐性能。
./recomand_exec -
测试开启4个多实例、开启批量H2D、控核时的网络推理性能,其中aiCoreNum参考GE图引擎接口 -> 数据类型 -> options参数说明按照实际硬件信息调整。
./recomand_exec --multiInstanceNum=4 --enableBatchH2D=true --aiCoreNum="16|16"
性能差异对比
在Ascend 910C平台测试不同配置下的吞吐量(TPS)与时延(ms)表现:
| 配置方案 | 吞吐 / 时延 |
|---|---|
| 单实例 | 745,55 TPS / 1.471ms |
| 单实例 + 批量H2D | 131,191 TPS / 0.792ms |
| 多实例(4) | 155,104 TPS / 2.089ms |
| 多实例(4)+ 控核(16|16) | 185,415 TPS / 1.797ms |
| 多实例(4)+ 控核(16|16)+ 批量H2D | 251,877 TPS / 1.285ms |