AI4C使用手册
安装
使用root权限,安装rpmbuild、rpmdevtools,具体命令如下
## 安装rpmbuild yum install rpm-build ## 安装rpmdevtools yum install rpmdevtools
使用
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目录下。进入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
目录下。
使用
- 开发者在使用前可以通过
export LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH
和export INCLUDE_PATH=/usr/include:$INCLUDE_PATH
配置相关环境变量 - 开发者需先构建自己的模型,再通过onnxruntime保存成一个ONNX模型,即可通过AI4C提供的API进行推理。
API接口
以下接口存在动态库libONNXRunner.so
中,用于模型的推理配置阶段、推理运行阶段和模型推理结束后的资源清理阶段,需要用户实现在目标优化遍的适配层内。
参数为模型存放的路径,并创建session对本次推理进行初始化和配置
extern ONNXRunner* createONNXRunner(const char* model_path)
删除ONNXRunner对象
extern void deleteONNXRunner(ONNXRunner* instance)
参数为模型的输入,将输入传入模型进行推理得到相应结果
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
链接动态库,避免对目标应用构建时增加增加额外依赖。使用时开发者需根据实际需求增加异常处理机制。
// 挂载动态库
/* 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);