下载
中文
注册

生成算子

安装Index SDK后,需要依照本章节的指导,设置算子相关的环境变量,并生成算法所需要的算子。

操作步骤

  1. 进入安装目录“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

    包含版本相关信息。

  2. 进入“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”,用户无需设置。

  3. 根据实际系统架构执行对应脚本。
    • Arm架构:
      ./custom_opp_aarch64.run
    • x86_64架构:
      ./custom_opp_x86_64.run

    执行脚本命令时,支持同时输入可选参数,如表2所示。输入不在列表中的参数可能正常安装或者报错。

    表2 custom_opp_{arch}.run 参数说明

    参数名称

    说明

    -h |--help

    显示帮助信息。

    --info

    打印安装包的信息。

    --list

    打印安装包的文件列表。

    --check

    检测压缩包完整性。

    --confirm

    运行嵌入式脚本前询问是否进行。

    -q |--quiet

    不打印解压过程中的非错误信息。

    --noexec

    不执行嵌入的安装脚本。

    --target

    指定解压路径。如果指定解压路径,卸载软件后,该路径文件需要手动删除。

    --noprogress

    不打印解压进度。

    --nodiskspace

    不检测磁盘剩余空间。

  4. 进入“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

      算子生成说明表格中的约束说明,代表业务中经常涉及的参数组合,使用其他参数运行异常请参见CANN ATC工具使用指南

  5. 准备算子模型文件。
    • 可以将算子模型文件目录配置为环境变量“MX_INDEX_MODELPATH”(环境变量支持以~开头的路径、相对路径和绝对路径,路径中不能包含软链接;使用该变量时将统一转化为绝对路径并限制在“/home”“/root”路径下)。
      mv op_models/* $PWD/../modelpath
      export MX_INDEX_MODELPATH=`realpath $PWD/../modelpath`
    • 如未使用环境变量进行配置,需将算子模型文件移动到当前目录的“modelpath”目录下。

    算子生成后,请妥善保管相关om文件并确保文件不被篡改。

    生成算子时如果出现报错:Failed to import Python module,请参照生成算子时提示报错:Failed to import Python module解决。