生成算子
安装Index SDK后,需要依照本章节的指导,设置算子相关的环境变量,并生成算法所需要的算子。
操作步骤
- 进入安装目录“mxIndex-{version}”,目录及文件名称参见如表1。
cd mxIndex-{version}
表1 Index SDK目录及文件名介绍 目录或文件名称
说明
device
包含IndexIL算法的动态库和头文件。
filelist.txt
软件包文件列表。
host
检索动态库,进行特征检索时,请链接此文件夹下的动态库。
include
API头文件。
lib
检索动态库,链接到“host/lib”。
modelpath
算子om文件存放目录。编译好算子之后,需要将om文件放置于此文件夹。
ops
包含“custom_opp_<arch>.run”脚本,用于检索算法算子安装。
script
包含卸载脚本“uninstall.sh”,用于卸载Index SDK安装包。
tools
包含用于算子生成python脚本。
version.info
包含版本相关信息。
- 进入“ops”目录,编译算子前需要设置“ASCEND_HOME”、“ASCEND_VERSION”和“ASCEND_OPP_PATH”环境变量,默认分别为~/Ascend、~/ascend-toolkit/latest和~/Ascend/ascend-toolkit/latest/opp。
export ASCEND_HOME=~/Ascend export ASCEND_VERSION=~/ascend-toolkit/latest export ASCEND_OPP_PATH=~/Ascend/ascend-toolkit/latest/opp
- “ASCEND_HOME”表示CANN-toolkit软件安装后文件存储路径。
- “ASCEND_VERSION”表示当前使用的Ascend版本,如果ATC工具安装路径是“/usr/local/Ascend/ascend-toolkit/latest”则无需设置“ASCEND_HOME”和“ASCEND_VERSION”。
- “ASCEND_OPP_PATH”表示算子库根目录,用户需要该目录的写权限。
“MAX_COMPILE_CORE_NUMBER”环境变量用于指定图编译时可用的CPU核数,在算子运行时使用,当前默认为“1”,用户无需设置。
- 根据实际系统架构执行对应脚本。
- Arm架构:
./custom_opp_aarch64.run
- x86_64架构:
./custom_opp_x86_64.run
执行脚本命令时,支持同时输入可选参数,如表2所示。输入不在列表中的参数可能正常安装或者报错。
- Arm架构:
- 进入“tools”目录,生成所需算子。生成算子之前,需要先确认已经安装CANN的相关依赖。
- 只生成使用的算法所需要的算子:先参考算法介绍章节,确认算法所需要生成的算子后,再参考自定义算子介绍章节,生成对应的算子。
- 批量生成所有算法的算子,方法如表3所示。
表3 批量生成算子 用法
python3 run_generate_model.py -m <mode> -t <npu_type> -p <pipeline> -pool <pool_size>
参数名称
<mode>:算法模式,<mode>支持ALL以及Flat,SQ8,IVFSQ8,INT8中的一种或多种,多种之间用逗号隔开,如:python3 run_generate_model.py -m Flat,IVFSQ8。默认全选,可以直接执行python3 run_generate_model.py。
<npu_type>:npu_type表示芯片名称,可在安装昇腾AI处理器的服务器执行npu-smi info命令进行查询,将查询到的“Name”最后一位数字删除,即是npu_type的取值。当前<npu_type>支持Atlas 200/300/500 推理产品、Atlas 推理系列产品以及Atlas 800I A2推理产品,默认为“310”。其中Atlas 800I A2推理产品只支持生成Flat算子。
<pipeline>:是否使用多线程并行流水生成算子模型,默认为“true”。设置为“true”时,使用默认的“pool_size”的值为“32”。
<pool_size>:批量生成算子多进程调度的进程池大小。
--help | -h:查询帮助信息。
说明
- 执行此命令,用户可以得到多组算子模型文件。执行命令前,用户需要更改当前目录下的“para_table.xml”文件,将所需的参数填入表中。
- 1 ≤ pool_size ≤ 32
- 准备算子模型文件。
- 可以将算子模型文件目录配置为环境变量“MX_INDEX_MODELPATH”(环境变量支持以~开头的路径、相对路径和绝对路径,路径中不能包含软链接;使用该变量时将统一转化为绝对路径并限制在“/home”或“/root”路径下)。
mv op_models/* $PWD/../modelpath export MX_INDEX_MODELPATH=`realpath $PWD/../modelpath`
- 如未使用环境变量进行配置,需将算子模型文件移动到当前目录的“modelpath”目录下。
算子生成后,请妥善保管相关om文件并确保文件不被篡改。
- 可以将算子模型文件目录配置为环境变量“MX_INDEX_MODELPATH”(环境变量支持以~开头的路径、相对路径和绝对路径,路径中不能包含软链接;使用该变量时将统一转化为绝对路径并限制在“/home”或“/root”路径下)。