options参数说明
本章节列出GEInitialize、Session构造函数、AddGraph接口传入的配置参数,分别在全局、session、graph生效。
 
    如下表格中仅列出当前版本支持的配置参数,如果表中未列出,表示该参数预留或适用于其他版本的昇腾AI处理器,用户无需关注。
基础功能
| 
          Options key  | 
        
          Options value  | 
        
          必选/可选  | 
        
          全局/session/graph级别生效  | 
       
|---|---|---|---|
| 
          ge.graphRunMode  | 
        
          图执行模式,取值: 
 配置示例: {"ge.graphRunMode", "0"}; | 
        
          可选  | 
        
          全局/session  | 
       
| 
          ge.exec.deviceId  | 
        
          GE实例运行时操作设备的逻辑ID。 
 N表示该台Server上的可用昇腾AI处理器个数。 配置示例: {"ge.exec.deviceId", "-1"}; | 
        
          可选  | 
        
          全局  | 
       
| 
          ge.session_device_id  | 
        
          当用户需要将不同的模型通过同一个脚本在不同的Device上执行,可以通过该参数指定Device的逻辑ID。 通常可以创建多个线程,每个线程是不同的Session,每个Session传不同的ge.session_device_id。 配置示例: {"ge.session_device_id", "0"}; | 
        
          可选  | 
        
          session  | 
       
| 
          ge.socVersion  | 
        
          指定编译优化模型的昇腾AI处理器型号。 
  | 
        
          可选  | 
        
          all  | 
       
| 
          ge.enableSingleStream  | 
        
          静态shape场景下,是否使能图运行顺序单流串行执行。 其中,流(Stream)用于维护一些异步操作的执行顺序,确保按照应用程序中的代码调用顺序在Device上执行。 参数取值: 
 使用约束: 模型中存在Cmo算子和如下控制类算子时,不能使用单Stream特性,只能使用默认值false。 
 配置示例: {"ge.enableSingleStream", "false"}; | 
        
          可选  | 
        
          graph  | 
       
| 
          ge.exec.rankTableFile  | 
        
          用于描述参与集合通信的集群信息,包括Server,Device,容器等的组织信息,填写ranktable文件路径,包含文件路径和文件名;  | 
        
          可选  | 
        
          all  | 
       
| 
          ge.exec.rankId  | 
        
          rank id,指进程在group中对应的rank标识序号。范围:0~(rank size-1)。对于用户自定义group,rank在本group内从0开始进行重排;对于hccl world group,rank id和world rank id相同。 
  | 
        
          可选  | 
        
          all  | 
       
| 
          ge.constLifecycle  | 
        
          用于训练和在线推理场景下配置常量节点的生命周期。 
 训练场景默认值为session;在线推理场景默认值为graph。  | 
        
          可选  | 
        
          all  | 
       
| 
          ge.deterministic  | 
        
          是否开启确定性计算。 默认情况下,不开启确定性计算,算子在相同的硬件和输入下,多次执行的结果可能不同。这个差异的来源,一般是因为在算子实现中,存在异步的多线程执行,会导致浮点数累加的顺序变化。当开启确定性计算功能时,算子在相同的硬件和输入下,多次执行将产生相同的输出。但启用确定性计算往往导致算子执行变慢。当发现模型多次执行结果不同,或者是进行精度调优时,可开启确定性计算,辅助模型调试、调优。 参数取值: 
 配置示例: {"ge.deterministic", "0"}; | 
        
          可选  | 
        
          全局  | 
       
| 
          ge.exec.frozenInputIndexes  | 
        
          设置地址不刷新的输入Tensor的索引。该参数仅限于LoadGraph调用。针对不同模型,输入Tensor索引内容不同: 
 配置示例: # 只传输入Tensor索引
{"ge.exec.frozenInputIndexes", "0;1;2"};
# 传递输入Tensor索引、数据在Device上的地址、数据长度
{"ge.exec.frozenInputIndexes", "0,88832131,4;1,888213294,4;2,193492421,2"};
         详细使用示例以及使用注意事项请参见带参数配置的图运行(单进程单卡)。 使用约束: 地址不刷新的输入Tensor,必须是静态shape,针对动态shape模型,该输入节点Tensor也必须是静态shape。  | 
        
          可选  | 
        
          graph  | 
       
| 
          ge.exec.hostInputIndexes  | 
        
          随路拷贝场景,设置placement为Host的输入Tensor索引,多个输入的Tensor索引使用英文分号分隔。 随路拷贝是指随着模型内算子地址刷新动作,将Host侧输入的Tensor内存一起拷贝到Device侧。 配置示例: {"ge.exec.hostInputIndexes", "0;1;2"};
         使用约束: 
  | 
        
          可选  | 
        
          graph  | 
       
内存管理
| 
          Options key  | 
        
          Options value  | 
        
          必选/可选  | 
        
          全局/session/graph级别生效  | 
       
|---|---|---|---|
| 
          ge.exec.disableReuseMemory  | 
        
          内存复用开关。 
 配置示例: {"ge.exec.disableReuseMemory", "0"}; | 
        
          可选  | 
        
          all  | 
       
| 
          ge.exec.atomicCleanPolicy  | 
        
          是否集中清理网络中所有memset算子(含有memset属性的算子都是memset算子)占用的内存。 参数取值: 
 配置示例: {"ge.exec.atomicCleanPolicy", "0"}; | 
        
          可选  | 
        
          session  | 
       
| 
          ge.externalWeight  | 
        
          同一个Session内同时加载多个模型时,如果多个模型间的权重能够复用,建议通过此配置项将网络中Const/Constant节点的权重外置,实现多个模型间的权重复用,以减少权重的内存占用。 参数取值: 
 落盘路径说明: 
 模型卸载时,会将tmp_weight_<pid>_<sessionid>目录删除。 配置示例: {"ge.externalWeight", "1"}; | 
        
          可选  | 
        
          session  | 
       
| 
          ge.exec.staticMemoryPolicy  | 
        
          网络运行时使用的内存分配方式。 参数取值: 
 
           说明: 
           
         
 配置示例: {"ge.exec.staticMemoryPolicy", "0"}; | 
        
          可选  | 
        
          全局/session  | 
       
| 
          ge.featureBaseRefreshable  | 
        
          配置feature内存地址是否可刷新。若用户需要自行管理feature内存并需要多次刷新该地址,则可将该参数配置为可刷新。 该参数仅限于静态shape图。 参数取值: 0:(默认值)feature内存地址不可刷新。 1:支持刷新模型的feature内存地址。 配置示例: {"ge.featureBaseRefreshable", "0"}; | 
        
          可选  | 
        
          all  | 
       
| 
          ge.exec.inputReuseMemIndexes  | 
        
          用于配置是否开启图的输入节点的内存复用功能,开启后,输入节点的内存可作为模型执行过程中所需要的中间内存再次使用,从而达到降低内存峰值的目的。 参数取值为输入节点的index;如果对多个输入节点都开启内存复用,多个index间使用英文逗号分隔。输入节点需要设置属性index,说明是第几个输入,index从0开始。 注意: 
 配置示例: {"ge.exec.inputReuseMemIndexes", "0,1,2"}; | 
        
          可选  | 
        
          graph  | 
       
| 
          ge.exec.outputReuseMemIndexes  | 
        
          用于配置是否开启整图输出的内存复用功能,开启后,整图输出的内存可作为模型执行过程中所需要的中间内存再次使用,从而达到降低内存峰值的目的。 如果开启,配置为整图输出的index;如果对多个输出都开启内存复用,多个index间使用英文逗号分隔。 注意: 
 配置示例: {"ge.exec.outputReuseMemIndexes", "0,1,2"}; | 
        
          可选  | 
        
          graph  | 
       
| 
          ge.exec.input_fusion_size  | 
        
          Host侧输入数据搬运到Device侧时,将用户离散多个输入数据合并拷贝的阈值,最小值为0,最大值为32MB(33554432字节),默认值为128KB(131072字节)。若: 
 例如用户有10个输入,有2个输入数据大小为100KB,2个输入数据大小为50KB,其余输入大于100KB,若设置: 
 该参数只在异步静态shape图执行时生效,即使用RunGraphAsync接口运行Graph。  | 
        
          可选  | 
        
          all  | 
       
| 
          ge.inputBatchCpy  | 
        
          Host侧输入数据搬运到Device侧时,是否开启批量内存拷贝功能。 该参数可以提升Host到Device的数据搬运性能,适用于需要频繁搬运数据且PCIE带宽使用率低的场景;开启该参数批量拷贝功能后,可以提升带宽利用率。 参数取值: 
 使用约束: 
 配置示例: {"ge.inputBatchCpy", "0"}; | 
        
          可选  | 
        
          all  | 
       
动态shape
算子编译与图编译
大模型分布式编译切分
功能调试
精度调优
精度比对
性能调优
| 
          Options key  | 
        
          Options value  | 
        
          必选/可选  | 
        
          全局/session/graph级别生效  | 
       
|---|---|---|---|
| 
          ge.exec.variable_acc  | 
        
          是否开启变量格式优化。 
 为了提高训练效率,在网络执行的变量初始化过程中,将变量转换成更适合在昇腾AI处理器上运行的数据格式。但在用户特殊要求场景下,可以选择关闭该功能开关。  | 
        
          可选  | 
        
          all  | 
       
| 
          ge.exec.op_precision_mode  | 
        
          设置指定算子内部处理时的精度模式,支持指定一个算子或多个算子。通过该参数传入自定义的精度模式配置文件op_precision.ini,可以为不同的算子设置不同的精度模式。 ini文件中按照算子类型、节点名称设置精度模式,每一行设置一个算子类型或节点名称的精度模式,按节点名称设置精度模式的优先级高于按算子类型。 配置文件中支持设置如下精度模式: 
 具体某个算子支持配置的精度/性能模式取值,可以通过CANN软件安装后文件存储路径的opp/built-in/op_impl/ai_core/tbe/impl_mode/all_ops_impl_mode.ini文件查看。 样例如下: [ByOpType] optype1=high_precision optype2=high_performance optype3=enable_hi_float_32_execution optype4=support_out_of_bound_index [ByNodeName] nodename1=high_precision nodename2=high_performance nodename3=enable_hi_float_32_execution nodename4=support_out_of_bound_index  | 
        
          可选  | 
        
          全局  | 
       
| 
          ge.optypelistForImplmode  | 
        
          列举算子optype的列表,该列表中的算子使用ge.opSelectImplmode参数指定的模式。 参数值约束: 
  | 
        
          可选  | 
        
          全局  | 
       
| 
          ge.tiling_schedule_optimize  | 
        
          Tiling下沉调度优化开关。 由于NPU中AI Core内部存储无法完全容纳算子输入输出的所有数据,需要每次搬运一部分输入数据进行计算然后搬出,再搬运下一部分输入数据进行计算,该过程称之为Tiling;根据算子的shape等信息来确定数据切分算法相关参数(比如每次搬运的块大小,以及总共循环多少次)的计算程序,称之为Tiling实现。由于Tiling实现中完成的均为标量计算,AI Core并不擅长,故一般在Host侧CPU上执行,但是满足下述条件Tiling实现会下沉到Device侧执行: 
 参数取值: 
 配置示例: {"ge.tiling_schedule_optimize", "0"};
         该参数仅在以下产品型号支持:  | 
        
          可选  | 
        
          全局/session  | 
       
| 
          ge.graphMaxParallelModelNum  | 
        
          图执行模式下,同一个图可以在同一个device上被多个模型并行加载执行;该参数用于控制允许并行加载的最大模型数目。 参数取值: 1~INT32_MAX,默认为8。 配置示例: {"ge.graphMaxParallelModelNum", "8"}; | 
        
          可选  | 
        
          all  | 
       
Profiling
AOE
| 
          Options key  | 
        
          Options value  | 
        
          必选/可选  | 
        
          全局/session/graph级别生效  | 
       
|---|---|---|---|
| 
          ge.mdl_bank_path  | 
        
          加载子图调优后自定义知识库的路径。 该参数需要与ge.bufferOptimize参数配合使用,仅在数据缓存优化开关打开的情况下生效,通过利用高速缓存暂存数据的方式,达到提升性能的目的。 参数值:模型调优后自定义知识库路径。 参数值格式:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)。 参数默认值:$HOME/Ascend/latest/data/aoe/custom/graph/<soc_version> 使用约束: 加载子图调优后自定义知识库路径优先级:ge.mdl_bank_path参数加载路径>TUNE_BANK_PATH环境变量设置路径>默认子图调优后自定义知识库路径。 
  | 
        
          可选  | 
        
          all  | 
       
| 
          ge.op_bank_path  | 
        
          算子调优后自定义知识库路径。 参数值格式:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)。 参数默认值:${HOME}/Ascend/latest/data/aoe/custom/op 使用约束: 加载算子调优后自定义知识库路径优先级:TUNE_BANK_PATH环境变量设置路径>ge.op_bank_path参数加载路径>默认算子调优后自定义知识库路径。 
  | 
        
          可选  | 
        
          all  | 
       
异常补救
| 
          Options key  | 
        
          Options value  | 
        
          必选/可选  | 
        
          全局/session/graph级别生效  | 
       
|---|---|---|---|
| 
          stream_sync_timeout  | 
        
          图执行时,Stream同步等待超时时间,超过配置时间时报同步失败。单位:ms 默认值-1,表示无等待时间,出现同步失败不报错。 配置示例: {"stream_sync_timeout", "-1"}; | 
        
          可选  | 
        
          全局/session  | 
       
| 
          event_sync_timeout  | 
        
          图执行时,event同步等待超时时间,超过配置时间时报同步失败。单位:ms 默认值-1,表示无等待时间,出现同步失败不报错。 配置示例: {"event_sync_timeout", "-1"}; | 
        
          可选  | 
        
          全局/session  | 
       
试验参数
| 
          Options key  | 
        
          Options value  | 
        
          必选/可选  | 
        
          全局/session/graph级别生效  | 
       
|---|---|---|---|
| 
          ge.jit_compile  | 
        
          当前版本暂不支持。  | 
        
          可选  | 
        
          全局/session  | 
       
| 
          ge.build_inner_model  | 
        
          当前版本暂不支持。  | 
        
          可选  | 
        
          NA  | 
       
| 
          ge.disableOptimizations  | 
        
          该参数为调试参数,当前不支持应用于商用产品中,后续版本会作为正式特性更新发布。 该参数仅适用于如下产品: 用于指定关闭的某一个或者多个编译优化pass。 当前仅支持关闭如下pass: "RemoveSameConstPass","ConstantFoldingPass","TransOpWithoutReshapeFusionPass" 注意: 
 配置示例: 
  | 
        
          可选  | 
        
          all  | 
       
| 
          ge.oo.level  | 
        
          调试功能扩展参数,当前不支持应用于商用产品中,后续版本会作为正式功能更新发布。 图编译多级优化选项,包括子图优化、整图优化、静态Shape模型下沉等。 静态Shape模型下沉:静态Shape模型在编译时即可确定所有算子的输入输出Shape,完成模型级内存编排、算子的Tiling计算等Host侧计算,在模型加载时整体下发到Device流上,但不立即执行,通过下发模型执行Task触发模型中所有Task的执行。 参数取值: 
 使用约束: 取值为O1时,会关闭所有图融合和UB融合PASS,只开启静态下沉的相关PASS,但是如下路径文件中的图融合PASS,由于关闭后会有功能问题,会默认开启: “${INSTALL_DIR}/x86_64-linux/lib64/plugin/opskernel/fusion_pass/config/fusion_config.json”文件中"ExceptionalPassOfO1Level"字段下的所有图融合PASS。 其中${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Ascend-cann-toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/ascend-toolkit/latest。 配置示例: {"ge.oo.level", "O3"}; | 
        
          可选  | 
        
          all  | 
       
| 
          ge.oo.constantFolding  | 
        
          调试功能扩展参数,当前不支持应用于商用产品中,后续版本会作为正式功能更新发布。 是否开启常量折叠优化。 常量折叠是将计算图中可以预先确定输出值的节点替换成常量,并对计算图进行一些结构简化的操作。 参数取值: 
 配置示例: {"ge.oo.constantFolding", "true"};
         使用约束: 如果同时配置了其他编译优化选项,比如ge.disableOptimizations,则ge.disableOptimizations优先级更高。  | 
        
          可选  | 
        
          all  | 
       
| 
          ge.oo.deadCodeElimination  | 
        
          调试功能扩展参数,当前不支持应用于商用产品中,后续版本会作为正式功能更新发布。 是否开启死边消除优化。 死边消除:switch死边消除,switch的pred输入(1号输入)为const节点时,根据const的值消除其中一条分支:const为true时,消除false分支;const为false时,消除true分支。 参数取值: 
 配置示例: {"ge.oo.deadCodeElimination", "true"}; | 
        
          可选  | 
        
          all  |