文档
注册

模型推理

功能介绍

使用mxVision模型推理功能通过给定输入和指定模型,进行推理获得输出结果,支持om格式的模型推理,可使用ATC工具构建的动态Batch、动态分辨率和分档动态维度模型进行推理。

接口调用流程

使用模型推理前,用户需准备好输入数据以及需要加载的模型,根据模型路径或者内存方式初始化Model类,通过调用Model类的Infer接口获取模型推理结果。输入数据必须和模型输入数据类型以及格式一致,如果用户自行申请输出数据内存,则输出数据类型和格式需和模型输出保持一致,模型输入输出信息可以通过Model类的相关接口进行查询。

模型推理调用流程参考如下:

图1 模型推理接口调用流程

关键接口说明如下:

  1. 调用MxInit()接口进行全局初始化。
  2. 模型初始化。

    用户需根据实际业务情况确认模型加载方式,选择从文件加载模型从内存加载模型。如果从内存加载,需要先将模型文件读取到内存,可通过以下两种方式传入。

    • 从文件加载模型,可选择直接向Model接口传入模型路径,进行初始化。
    • 通过结构体ModelLoadOptV2中的“loadType”字段指定加载方式后,再传入Model接口,其中加载方式在模型方面区分从文件加载模型,还是从内存加载模型,在内存方面区分是由系统内部管理,还是由用户管理,具体可参见ModelLoadOptV2
  3. 选择模型推理方式进行模型推理,请根据实际业务选择同步推理方式或异步推理方式。
    1. 同步推理。

      需确认如何获取输出数据,选择通过Infer接口内构造输出数据或自行构造并接收模型推理输出数据。

    2. 异步推理(当前仅支持Atlas 推理系列产品(Ascend 310P AI处理器)。
      1. 创建Stream,具体请参见异步调用
      2. 用户需要自行构造并接收输出数据,传入已创建的Stream。
  4. 调用MxDeInit()接口对初始化的全局资源进行去初始化。

示例代码

以下为功能特性关键步骤的代码示例,不可以直接拷贝编译运行,仅供参考。

// 初始化
MxBase::MxInit();
{
    // 输入二进制数据, 需用户自行准备
    std::string filePath = "./test.bin";   
    // 读取输入数据到内存                                          
    void* dataPtr = ReadTensor(filePath);        
    // 输入数据类型,和模型输入数据类型一致                             
    auto dataType = MxBase::TensorDType::INT32;     
    // 构造输入shape,和模型输入shape一致                 
    std::vector<uint32_t> shape = {1, 128};       
    // 构造tensor                            
    MxBase::Tensor tensor(dataPtr, shape, dataType, 0);   
    // 构造模型输入           
    std::vector<MxBase::Tensor> inputs{tensor};
    // 模型路径,需用户自行指定                           
    std::string modelPath = "./test.om";    
    // 根据模型路径加载模型                                     
    MxBase::Model model(modelPath);           
    // 执行模型推理, outputs即为推理结果                                
    std::vector<MxBase::Tensor> outputs = model.Infer(inputs);  
}
//去初始化
MxBase::MxDeInit();
根据结构体ModelLoadOptV2方式初始化示例参考如下:
MxBase::ModelLoadOptV2 mdlLoadOpt;
mdlLoadOpt.loadType = ModelLoadOptV2::LOAD_MODEL_FROM_FILE;  // 指定模型加载方式
mdlLoadOpt.modelPath = modelPath;
MxBase::Model model(mdlLoadOpt);

使用MindIR模型进行推理

使用MindIR模型进行推理前,需要用户自行安装MindSpore Lite软件包,并设置环境变量,具体步骤如下。

请关注MindSpore开源社区的漏洞,并及时修复。

  1. 下载MindSpore Lite软件包。
  2. 将下载好的tar包传到运行mxVision业务所在的环境上。
  3. 执行以下命令解压tar包。
    tar -xzvf mindspore-lite-2.0.0-linux-{arch}.tar.gz
  4. 设置环境变量。

    Arm服务器:

    export LD_LIBRARY_PATH={path}/runtime/lib:${LD_LIBRARY_PATH}
    export LD_LIBRARY_PATH={path}/tools/converter/lib:${LD_LIBRARY_PATH}

    x86_64服务器:

    export LD_LIBRARY_PATH={path}/runtime/lib:${LD_LIBRARY_PATH}
    export LD_LIBRARY_PATH={path}/tools/converter/lib:${LD_LIBRARY_PATH}
    export LD_LIBRARY_PATH={path}/runtime/third_party/dnnl:${LD_LIBRARY_PATH}

    其中,{path}为MindSpore Lite软件包解压后的路径,请根据实际情况修改。

  5. 确认环境变量设置结果。
    ll {path}/runtime/lib
    ll {path}/tools/converter/lib

    若返回目录列表,则表示环境变量设置成功。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词