服务器

版本:22.03 LTS SP4

AI4C使用手册

安装

  1. 使用root权限,安装rpmbuild、rpmdevtools,具体命令如下

    bash
    ##  安装rpmbuild
    yum install rpm-build
    ##  安装rpmdevtools
    yum install rpmdevtools
  2. 使用git clone https://gitee.com/src-openeuler/AI4C.git,从目标仓库拉取代码后,使用rpmdev-setuptree在主目录下生成rpmbuild文件夹,将拉取代码中的AI4C-v0.1.0-alpha.tar.gz和相关patch文件放入rpmbuild中的SOURCES文件夹中,将AI4C.spec放入rpmbuild中的SPECS目录下。

  3. 进入SPECS目录下,用户需先使用yum-builddep --spec AI4C.spec命令安装AI4C所需依赖。再使用rpmbuild -ba AI4C.SPEC,如果构建成功即可返回上一级文件夹,再进入RPM文件夹下,使用rpm -ivh <成功构建的rpm>(若系统因存有旧版本安装包而导致的文件冲突,可以在rpm -ivh <成功构建的rpm>命令中添加一行--force选项,强制安装新版本;或者通过rpm -Uvh <成功构建的rpm>命令更新安装包)。待安装完成后,相关动态库会安装在/usr/lib64下,模型会安装在/usr/lib64/AI4C目录下。

使用

  1. 开发者在使用前可以通过export LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATHexport INCLUDE_PATH=/usr/include:$INCLUDE_PATH配置相关环境变量
  2. 开发者需先构建自己的模型,再通过onnxruntime保存成一个ONNX模型,即可通过AI4C提供的API进行推理。

API接口

以下接口存在动态库libONNXRunner.so中,用于模型的推理配置阶段、推理运行阶段和模型推理结束后的资源清理阶段,需要用户实现在目标优化遍的适配层内。

  1. 参数为模型存放的路径,并创建session对本次推理进行初始化和配置

    cpp
    extern ONNXRunner* createONNXRunner(const char* model_path)
  2. 删除ONNXRunner对象

    cpp
    extern void deleteONNXRunner(ONNXRunner* instance)
  3. 参数为模型的输入,将输入传入模型进行推理得到相应结果

    cpp
    extern float runONNXModel(ONNXRunner* instance, std::vector<std::string> input_string, std::vector<int64_t> input_int64, std::vector<float> input_float)

demo -- 以“创建session对本次推理进行初始化和配置”为例

这里建议使用dlopen链接动态库,避免对目标应用构建时增加增加额外依赖。使用时开发者需根据实际需求增加异常处理机制。

cpp
//  挂载动态库
/*  dynamic_library_path 为动态库绝对路径,正常下载流程执行完成后,动态库将会在/usr/lib64下,这里可以直接使用动态库的名字作为输入*/
void *sample_dylib_handle = dlopen (dynamic_library_path, RTLD_LAZY | RTLD_GLOBAL);

//  获取动态库所需要调用的函数
/*  使用函数指针储存动态库需要使用的函数,不同的目标应用对于dlsym返回值的类型转换可能不一样,使用时需要以具体应用要求为标准  */
typedef void* (*sample_func)(const char *); //  参数和返回值以需要使用的函数为准

//  function_name为动态库中需要使用的函数名,这里以createONNXRunner为例
sample_func func = (sample_func) dlsym (smple_dylib_handle, "createONNXRunner");

//  使用所需函数,
func (model_path);

//  卸载动态库
dlclose (dynamic_library_path);