CANN模型加载指南 模型加载【免费下载链接】docs该仓库用于维护cann公共文档项目地址: https://gitcode.com/cann/docs本节描述的是整网模型加载的接口调用流程。接口调用流程当前存在两套模型加载的acl接口用户可根据编程习惯、使用场景选择对应的模型加载接口如图1所示针对不同的加载方式从文件加载、从内存加载等只需设置接口中的配置参数适用各种加载方式但涉及多个接口配合使用分别用于创建配置对象、设置对象中的属性值、加载模型。如图2所示根据不同的加载方式从文件加载、从内存加载等选择不同的接口操作相对简单但需要记住各种方式的加载接口。图 1模型加载流程通过接口中的配置参数区分加载方式![](https://raw.gitcode.com/cann/docs/raw/a173bdbfa81bbfd36d1c4da672d78301fb678d36/docs/app-dev/zh/figures/模型加载流程通过接口中的配置参数区分加载方式.png 模型加载流程通过接口中的配置参数区分加载方式?utm_sourcegitcode_repo_files)图 2模型加载流程通过不同接口区分加载方式![](https://raw.gitcode.com/cann/docs/raw/a173bdbfa81bbfd36d1c4da672d78301fb678d36/docs/app-dev/zh/figures/模型加载流程通过不同接口区分加载方式.png 模型加载流程通过不同接口区分加载方式?utm_sourcegitcode_repo_files)关键接口的说明如下在模型加载前需要先构建出适配AI处理器的离线模型*.om文件构建方式请参见模型编译。当由用户管理内存时为确保内存不浪费在申请工作内存、权值内存前需要调用aclmdlQuerySize接口查询模型运行时所需工作内存、权值内存的大小。如果模型输入数据的Shape不确定则不能调用aclmdlQuerySize接口查询内存大小在加载模型时就无法由用户管理内存因此需选择由系统管理内存的模型加载接口例如aclmdlLoadFromFile。若在构建模型时调用构图接口自行构建自己的网络且没有生成om离线模型文件、只是将模型数据存放在内存中则无法通过aclmdlQuerySize接口查询内存大小。关于构图接口的详细说明请参见《图开发》。支持以下方式加载模型模型加载成功后返回标识模型的模型ID使用aclmdlSetConfigOpt接口、aclmdlLoadWithConfig接口时是通过配置对象中的属性来区分在加载模型时是从文件加载还是从内存加载以及内存是由系统内部管理还是由用户管理。使用以下接口时是从使用的接口上区分从文件加载还是从内存加载以及内存是由系统内部管理还是由用户管理。aclmdlLoadFromFile从文件加载离线模型数据由系统内部管理内存。aclmdlLoadFromMem从内存加载离线模型数据由系统内部管理模型运行的内存。aclmdlLoadFromFileWithMem从文件加载离线模型数据由用户自行管理模型运行的内存包括工作内存和权值内存工作内存用于模型执行过程中的临时数据权值内存用于存放权值数据。aclmdlLoadFromMemWithMem从内存加载离线模型数据由用户自行管理模型运行的内存包括工作内存和权值内存。示例代码此处以从文件加载模型、由用户自行管理内存为例。模型加载成功会返回标识模型的ID在模型执行时需要使用该ID。以下是关键步骤的代码示例不能直接拷贝编译运行仅供参考。调用接口后需增加异常处理的分支并记录报错日志、提示日志此处不一一列举。您可以单击resnet50_imagenet_classification获取样例。// 1. 初始化变量。 // 此处的..表示相对路径相对可执行文件所在的目录 // 例如编译出来的可执行文件存放在out目录下此处的..就表示out目录的上一级目录 const char* omModelPath ../model/resnet50.om; // ...... // 2. 根据模型文件获取模型执行时所需的权值内存大小、工作内存大小。 aclError ret aclmdlQuerySize(omModelPath, modelMemSize_, modelWeightSize_); // 3. 根据工作内存大小申请Device上模型执行的工作内存。 ret aclrtMalloc(modelMemPtr_, modelMemSize_, ACL_MEM_MALLOC_HUGE_FIRST); // 4. 根据权值内存的大小申请Device上模型执行的权值内存。 ret aclrtMalloc(modelWeightPtr_, modelWeightSize_, ACL_MEM_MALLOC_HUGE_FIRST); // 5. 加载离线模型文件由用户自行管理模型运行的内存(包括权值内存、工作内存)。 // 模型加载成功返回标识模型的ID。 ret aclmdlLoadFromFileWithMem(omModelPath, modelId_, modelMemPtr_, modelMemSize_, modelWeightPtr_, modelWeightSize_); // ......【免费下载链接】docs该仓库用于维护cann公共文档项目地址: https://gitcode.com/cann/docs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考