8 Star 10 Fork 4

OpenHarmony-SIG / dllite_micro

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README_zh.md 56.70 KB
一键复制 编辑 原始数据 按行查看 历史

接口说明

type_define.h

type_define.h中定义了DLLite-Micro组件中涉及的返回码,根据返回码的内容可以对照了解异常的内容。

表 1 type_define中定义的常量

常量名称

说明

常量值

ReturnCode

接口运行结果返回值

SUCCESS: 运行成功

UNKNOWN: 未知错误发生

INVALID_PARAM: 参数错误

INVALID_POINTER: 空指针

REGISTER_REPEATED: 重复注册

REGISTER_EXCEED_NUM_LIMIT: 特性注册次数超出限制

UNREGISTER_WITH_TASK: 任务未注销

DESTROY_WITH_TASK: 销毁模型推理实例时,仍有任务正在运行,无法释放资源

LOAD_EXCEED_NUM_LIMIT: 超出最大数量限制

LOAD_EXCEED_MEM_LIMIT: 超出内存限制

LOAD_REPEATED: 重复加载

LOAD_NOT_EXECUTED: 加载错误

UNLOAD_MODEL_NOT_EXIST: 所指定卸载的模型不存在

UNLOAD_MODEL_WITH_TASK: 卸载正在推理的模型

UNLOAD_REPEATED: 模型重复卸载

UNLOAD_HAS_EXECUTED: 已经执行模型卸载

INVOKE_NOT_EXISTED_MODEL: 推理的模型不存在

INVOKE_TENSOR_NOT_MATCH: 输入的Tensor不符合模型要求

UNSUPPORTED_API: 当前版本不支持的接口

SERVER_BINDER_NOT_INIT: 任务调度服务Binder未初始化(预留返回值,暂未使用)

EMPTY_RESOURCE: 资源空缺

INVALID_MODEL_FILE: 模型文件错误

FAILED_TO_GET_RESOURCE: 资源获取错误

model_config.h

表 2 model_config中定义的结构

结构体名称

说明

属性

IOTensor

IOTensor用于存储AI推理框架输入输出的数据。DLLite-Micro接收用户传入的数据,以IOTensor的类型透传给底层推理框架进行推理,推理结果同样以IOTensor类型进行输出。

string name: tensor名称

TensorType type: tensor类型

TensorLayout layout: tensor排布

std::vector<size_t> shape: tensor各维度大小

std::pair<void*, size_t> buffer: <数据,占用大小>

表 3 TensorType tensor数据类别枚举值

定义

含义

UINT8

0

8位无符号整型

INT8

1

8位有符号整型

INT16

2

16位有符号整型

UINT32

3

32位无符号整型

INT32

4

32位有符号整型

FLOAT

7

单精度浮点型

FLOAT16

8

半精度浮点型

INT64

9

64位有符号整型

UINT16

10

16位无符号整型

表 4 TensorLayout tensor排布枚举值

定义

含义

NONE

-1

无数据排布

NCHW

0

NCHW数据排布

NHWC

1

NHWC数据排布

HWKC

5

HWKC数据排布

HWCK

6

HWCK数据排布

KCHW

7

KCHW数据排布

CKHW

8

CKHW数据排布

KHWC

9

KHWC数据排布

CHWK

10

CHWK数据排布

NC4HW4

11

NC4HW4数据排布

NCHWC8

2

NCHWC8数据排布

ROW_MAJOR

3

行优先排布

LSTM_MTK

4

LSTM_MTK数据排布

表 5 InferFrameworkType 底层推理框架类型枚举值

定义

含义

INFER

-1

未指定基础推理框架

MINDSPORE

0

Mindspore推理框架

表 6 ModelConfig公有变量

变量名

变量解释

std::string modelName_

模型名称。

std::string modelPath_

模型结构文件路径。

std::string weightPath_

模型权重文件路径。weightSeparateFlag_为true时,需要单独提供模型权重文件;weightSeparateFlag_为false,此项为空。

bool weightSeparateFlag_

权重分离标识。在ARM32A架构平台,DLLite-Micro采用模型结构和权重分离的形式保存模型;在ARM32M架构平台,权重不分离存储。默认值为true。

表 7 ModelConfig类接口

接口名

接口说明

参数说明

ReturnCode CheckModelConfig() const

检查模型配置文件

返回值:

SUCCESS 模型配置文件检查成功

INVALID_PARAM 无效的推理模型参数

EMPTY_RESOURCE 模型配置文件为空

INVALID_MODEL_FILE 无效的模型配置文件

NA

feature_interpreter.h

表 8 feature_interpreter定义的结构体

结构体名称

说明

属性

VersionInfo

版本信息

string version: DLLite-Micro版本号

vector<string> frameworkInfos: 推理框架列表

FrameworkInfo

框架信息

string version: 推理框架版本号

string option: 预留字段,不使用时为空串

FeatureConfig

特性配置信息,featureName不可重复

string featureName: 特性名称(必选)

表 9 FeatureInterpreter类提供的接口

接口名

接口说明

参数说明

static ReturnCode GetVersion(VersionInfo& versionInfo)

获取版本信息

返回值:

SUCCESS 获取版本信息成功

VersionInfo& versionInfo: 版本信息

static std::vector<std::string>GetFeatureNameList()

获取所有已注册的特征实例命名的名称列表

返回值:特征实例命名名称列表,返回一个vector<std::string>对象,存储所有已注册的特征实例的命名名称;按注册顺序存储;Vector中的featureName不存在重复的名称。

NA

static std::shared_ptr<FeatureInterpreter>

GetFeatureInterpreterByFeatureName(const std::string &featureName)

根据传入的特征实例命名获取对应的特征实例。

返回值:featureInterpreter特征实例,使用方通过特征实例管理模型推理实例。

nullptr:

featureName不在特征实例 List中

const std::string &featureName: 要获取特征实例的特征命名名称

static ReturnCode GetFrameworkInfo(const std::string &frameworkName, FrameworkInfo& frameworkInfo)

获取框架信息

返回值

SUCCESS 获取框架信息成功

INVALID_PARAM 无效的框架信息参数

const std::string &frameworkName: 要查询的推理框架名称

FrameworkInfo& frameworkInfo: 查询到的推理框架信息

static std::shared_ptr<ModelInterpreter>

GetModelInterpreterByModelName(const std::string &modelName)

根据传入的模型推理实例命名获取对应的模型推理实例

返回值:modelInterpreter模型推理实例。

返回nullptr的情况:

modelName不在推理实例List中;

const std::string &modelName: 模型推理实例命名名称

static std::vector<std::string>GetModelNameList()

获取所有已创建的模型推理实例命名的名称列表

返回值:模型推理实例命名名称列表,返回一个vector<std::string>对象,存储所有已创建的模型推理实例的命名名称;按注册顺序存储;Vector中的modelName不存在重复的名称。

NA

static std::shared_ptr<FeatureInterpreter> RegisterFeature(const FeatureConfig& featureConfig)

向DLLite-Micro控制面注册特性信息,初始化配置,设置featureName(不可重复)。返回后续调用所使用的实例化管理类。featureInterpreter

返回值:featureInterpreter特征实例,使用方通过特征实例管理模型推理实例。

返回nullptr的情况:

  1. featureName长度超过上限(最大256)
  2. 注册数量达到上限(每个进程8个)
  3. featureName已被注册

const FeatureConfig& featurConfig: 应用配置信息,包括特性名称(featureName)

static ReturnCode UnregisterFeature(std::shared_ptr<FeatureInterpreter> &featureInterpreter)

向DLLite-Micro控制面板反注册特性信息,并释放相关资源。

返回值:

SUCCESS 反注册特性信息成功

UNKNOWN 特征实例数量为0

INVALID_POINTER 无效的featureInterpreter实例化

INVALID_PARAM 此特征实例不在特征实例list中

std::shared_ptr<FeatureInterpreter> &featureInterpreter: 注册时获得的应用推理管理类

std::shared_ptr<ModelInterpreter> CreateModelInterpreter(const ModelConfig &modelConfig)

获取模型的推理实例,同一个模型可以生成多个推理实例。

返回值:modelInterpreter 模型推理实例。如果为nullptr则创建失败,否则创建成功。通过返回的ModelInterpreter指针可以继续调用其load、invoke等方法,该实例所包含接口见后续接口。

返回nullptr的情况:

  1. modelName长度超过上限(最大256)
  2. modelName为空
  3. modelPath长度达到最大上限(最大256)
  4. weightPath长度达到最大上限(最大256)
  5. 模型大小超过300KB
  6. 模型为空文件
  7. 创建数量达到上限(每个特征实例16个)
  8. modelName已被创建使用

const ModelConfig &modelConfig: 模型配置信息

ReturnCode DestroyModelInterpreter (std::shared_ptr<ModelInterpreter>& modelInterpreter)

销毁所传入的推理实例,释放相应资源。

返回值:

SUCCESS 销毁模型推理实例成功

INVALID_PARAM 无效的推理模型实例

std::shared_ptr<ModelInterpreter>& modelInterpreter:待销毁的模型推理实例

model_interpreter.h

表 10 model_interpreter中定义的常量

常量名称

说明

常量值

IOFlag

IO标志枚举值

INPUT

OUTPUT

表 11 ModelInterpreter类接口

接口名

接口说明

参数说明

ReturnCode Load()

加载模型。轻量级框架是纯C化的模型,模型实际上是.so库;加载模型动态库,创建会话,获取模型输入输出Tensor信息。

返回值:

SUCCESS 加载模型成功

LOAD_REPEATED 模型已被加载

INVALID_POINTER 空指针

NA

ReturnCode Unload()

卸载模型,释放输入/输出推理内存资源

返回值:

SUCCESS 模型卸载成功

UNLOAD_REPEATED 模型已卸载

INVALID_POINTER 空指针

NA

ReturnCode CreateTensors(std::vector<IOTensor>& tensors, IOFlag flag)

创建Tensor并申请内存

返回值:

SUCCESS 创建Tensor并申请内存成功

LOAD_NOT_EXECUTED 模型未加载

INVALID_PARAM 无效的输入/输出标识

std::vector<IOTensor> &tensors: 待创建的tensor

IOFlag flag: 输入/输出标识

(此接口当前版本暂不支持,后续版本中完善功能。当前版本返回ReturnCode::UNSUPPORTED_API)

ReturnCode DestroyTensors(std::vector<IOTensor>& tensors)

释放创建的Tensors资源

返回值

SUCCESS 释放Tensors资源成功

LOAD_NOT_EXECUTED 模型未加载

std::vector<IOTensor> &tensors: 待释放的tensor

(此接口当前版本暂不支持,后续版本中完善功能。当前版本返回ReturnCode::UNSUPPORTED_API)

ReturnCode GetTensors(std::vector<IOTensor> &tensors, IOFlag flag) const

获取Tensor信息

返回值

SUCCESS 获取Tensor信息成功

INVALID_POINTER 空指针

INVALID_PARAM 无效的输入/输出标识

std::vector<IOTensor> &tensors: 待创建的tensor

IOFlag flag: 输入/输出标识

ReturnCode Invoke(std::vector<IOTensor> &inputs, std::vector<IOTensor> &outputs) const

对inputs中的输入数据进行推理,并将推理结果通过输出至outputs。

返回值

SUCCESS 推理成功

LOAD_NOT_EXECUTED 模型未加载

INVALID_POINTER 空指针

std::vector<IOTensor> &inputs: 输入tensor

std::vector<IOTensor> &outputs: 输出tensor

1
https://gitee.com/openharmony-sig/dllite_micro.git
git@gitee.com:openharmony-sig/dllite_micro.git
openharmony-sig
dllite_micro
dllite_micro
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891