---
title: aclgrphBuildModel支持的配置参数
description: "| 参数 | 说明 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendgraphapi/atlasgeapi_07_0143.html
sourcePath: /source/zh/canncommercial/900/API/ascendgraphapi/atlasgeapi_07_0143.html
indexId: c9198d9f66b1ec4fe49abd5690c181693519ab0d370bb0b229db6a813faf5c9d72
---
# aclgrphBuildModel支持的配置参数

#### 基础功能

| 参数 | 说明 |
| --- | --- |
| INPUT\_FORMAT | 输入数据格式。 参数取值： 支持NCHW、NHWC、ND、NCDHW、NDHWC格式。 配置示例： {ge::ir\_option::INPUT\_FORMAT, "NHWC"} 如果同时开启AIPP，在进行推理业务时，输入图片数据要求为NHWC排布。该场景下INPUT\_FORMAT参数指定的数据格式不生效。 说明： 该参数仅针对动态batch\_size、动态分辨率和动态维度场景。 上述场景下，INPUT\_FORMAT必须设置并且和所有Data算子的format保持一致，否则会导致模型编译失败。 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| OP\_NAME\_MAP | 扩展算子（非标准算子）映射配置文件路径和文件名，不同的网络中某扩展算子的功能不同，可以指定该扩展算子到具体网络中实际运行的扩展算子的映射。 Caffe网络中具有相同类型名但计算功能不同的层，比如DetectionOutput层，需要使用算子映射指明为FSRDetectionOutput、SSDDetectionOutput等检测算子类型，否则生成离线模型会执行失败。 该参数仅适用与Caffe框架。 路径和文件名：支持大小写字母（a\-z，A\-Z）、数字（0\-9）、下划线（\_）、中划线（\-）、句点（.）、中文字符。 配置示例： {ge::ir\_option::OP\_NAME\_MAP, "/home/test/opname\_map.cfg"} 其中，扩展算子映射配置文件内容示例如下： DetectionOutput:SSDDetectionOutput 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：不支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：不支持 Atlas 350 加速卡：不支持 |
| INSERT\_OP\_FILE | 输入预处理算子的配置文件路径，例如Aipp算子。参数详细使用请参见专题>AIPP(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/graphdevg/atlasag\_25\_0048.html)。 若配置了该参数，则不能对同一个输入节点同时使用INPUT\_FP16\_NODES参数。 配置文件路径：支持大小写字母、数字，下划线；文件名部分：支持大小写字母、数字，下划线和点(.) 配置示例： {ge::ir\_option::INSERT\_OP\_FILE, "/home/test/aipp.cfg"} 配置文件的内容示例如下： aipp\_op { aipp\_mode:static input\_format:YUV420SP\_U8 csc\_switch:true var\_reci\_chn\_0:0.00392157 var\_reci\_chn\_1:0.00392157 var\_reci\_chn\_2:0.00392157 } 说明： 配置文件详细说明，请参考《ATC离线模型编译工具(https://www.hiascend.com/document/detail/zh/canncommercial/900/devaids/atctool/atlasatc\_16\_0001.html)》。 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：不支持 |
| OUTPUT\_TYPE | 网络输出数据类型。 参数取值： FP32：推荐分类网络、检测网络使用。 FP16：推荐分类网络、检测网络使用。通常用于一个网络输出作为另一个网络输入场景。 UINT8：图像超分辨率网络，推荐使用，推理性能更好。 INT8 UINT16 INT16 UINT32 INT32 UINT64 INT64 DOUBLE HIF8：仅Atlas 350 加速卡支持该类型。 FP8E5M2：仅Atlas 350 加速卡支持该类型。 FP8E4M3FN：仅Atlas 350 加速卡支持该类型。 模型编译后，在对应的\*.om模型文件中，上述数据类型分别呈现方式如下： DT\_FLOAT DT\_FLOAT16 DT\_UINT8 DT\_INT8 DT\_UINT16 DT\_INT16 DT\_UINT32 DT\_INT32 DT\_UINT64 DT\_INT64 DT\_DOUBLE DT\_HIFLOAT8 DT\_FLOAT8\_E5M2 DT\_FLOAT8\_E4M3FN 配置示例： {ge::ir\_option::OUTPUT\_TYPE, "FP32"} 参数值约束： 若不指定具体数据类型，则以原始网络模型最后一层输出的算子数据类型为准。 若指定了类型，则以该参数指定的类型为准。 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| INPUT\_FP16\_NODES | 指定输入数据类型为FP16的输入节点名称。 例如："node\_name1;node\_name2"，指定的节点必须放在双引号中，节点中间使用英文分号分隔。若配置了该参数，则不能对同一个输入节点同时使用INSERT\_OP\_FILE参数。 配置示例： {ge::ir\_option::INPUT\_FP16\_NODES, "node\_name1;node\_name2"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |


#### 内存管理

| 参数 | 说明 |
| --- | --- |
| EXEC\_DISABLE\_REUSED\_MEMORY | 内存复用开关。 内存复用是指按照生命周期和内存大小，把不冲突的内存重复使用，来降低网络内存占用。 参数取值： 0：（默认值）开启内存复用。 1：关闭内存复用。如果网络模型较大，关闭内存复用开关，会造成后续推理时Device侧内存不复用，从而导致内存不足。 配置示例： {ge::ir\_option::EXEC\_DISABLE\_REUSED\_MEMORY, "0"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| EXTERNAL\_WEIGHT | 生成om模型文件时，是否将原始网络中的Const/Constant节点的权重外置，同时将节点类型转换为FileConstant类型。 离线场景，如果模型权重较大且环境对om离线模型大小有限制，建议开启外置权重将权重单独保存，来减小om大小。 参数取值： 0：（默认值）权重不外置，直接保存在om离线模型文件中。 1：权重外置但不归一，将网络中所有Const/Constant节点的权重文件落盘，并将节点类型转换为FileConstant类型；权重文件保存在与om文件同层级的weight目录下，不同节点权重保存到不同的文件中，以weight\_<hash值>命名。 2：权重外置且归一，将网络中所有Const/Constant节点的权重文件落盘，并将节点类型转换为FileConstant类型；权重文件保存在与om文件同层级的weight目录下，所有权重保存到同一个文件中，以“原始图根图名称\_weight\_combined”命名。 配置示例： {ge::ir\_option::EXTERNAL\_WEIGHT, "1"} 使用约束： 权重外置场景，在开发推理应用、加载模型时： 使用aclgrphSaveModel接口保存om模型： 若使用aclmdlLoadFromFile接口加载模型，需将权重文件保存在与om文件同层级的weight目录下。 若使用aclmdlSetConfigOpt和aclmdlLoadWithConfig接口加载模型，对权重外置目录没有要求，后续加载模型时，通过aclmdlLoadWithConfig接口指定权重外置目录。 权重更新场景，使用aclgrphBundleSaveModel接口保存om模型： 只能使用aclmdlBundleLoadFromFile接口加载模型，并且需将权重文件保存在与om文件同层级的weight目录下。 接口详细说明请参见“模型加载和卸载”。 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |


#### 动态shape

| 参数 | 说明 |
| --- | --- |
| INPUT\_SHAPE | 模型输入的shape信息。 参数取值： 模型为固定shape，INPUT\_SHAPE参数为可选配置 若模型为单个输入，则shape信息为"input\_name:n,c,h,w"。 若模型有多个输入，则shape信息为"input\_name1:n1,c1,h1,w1;input\_name2:n2,c2,h2,w2"；不同输入之间使用英文分号分隔，input\_name必须是转换前的网络模型中的节点名称。 模型为非固定shape，INPUT\_SHAPE参数必须配置 若原始模型中输入数据的某个或某些维度值不固定，当前支持通过设置shape分档或设置shape范围两种方式转换模型。 设置shape分档（静态shape），包括设置batch\_size档位、设置分辨率档位、设置动态维度档位。Atlas 350 加速卡不支持动态分档特性。 设置INPUT\_SHAPE参数时，将对应维度值设置为\-1，同时配合使用DYNAMIC\_BATCH\_SIZE（设置batch\_size档位）或DYNAMIC\_IMAGE\_SIZE（设置分辨率档位）或DYNAMIC\_DIMS（设置动态维度档位）参数。详细用法请参考DYNAMIC\_BATCH\_SIZE、DYNAMIC\_IMAGE\_SIZE、DYNAMIC\_DIMS参数说明。 设置shape范围（动态shape）。 Atlas 200I/500 A2 推理产品 不支持设置shape范围。 设置INPUT\_SHAPE参数时，可将对应维度的值设置为范围，例如1~10，设置的range值范围必须有效。 支持按照name设置："input\_name1:n1,c1,h1,w1;input\_name2:n2,c2,h2,w2"，例如："input\_name1:8~20,3,5,\-1;input\_name2:5,3~9,10,\-1"。指定的节点必须放在双引号中，节点中间使用英文分号分隔。input\_name必须是转换前的网络模型中的节点名称。如果用户知道data节点的name，推荐按照name设置。 支持按照index设置："n1,c1,h1,w1;n2,c2,h2,w2"，例如："8~20,3,5,\-1;5,3~9,10,\-1"。可以不指定节点名，节点按照索引顺序排列，节点中间使用英文分号分隔。按照index设置shape范围时，data节点需要设置属性index，说明是第几个输入，index从0开始。 如果用户不想指定维度的范围或具体取值，则可以将其设置为\-1，表示此维度可以使用>=0的任意取值，该场景下取值上限为int64数据类型表达范围，但受限于host和device侧物理内存的大小，用户可以通过增大内存来支持。 模型shape为标量 非动态分档场景： shape为标量的输入，可选配置，例如模型有两个输入，input\_name1为标量，即shape为"[]"形式，input\_name2输入shape为[n2,c2,h2,w2]，则shape信息为"input\_name1:;input\_name2:n2,c2,h2,w2"，不同输入之间使用英文分号分隔，input\_name必须是转换前的网络模型中的节点名称；标量的输入如果配置，则配置为空。 动态分档场景： 如果模型输入中既有标量shape，又有支持动态分档的shape，则标量输入不能忽略，必须配置。例如模型有三个输入，分别为A:[\-1,c1,h1,w1]、B:[]、C:[n2,c2,h2,w2]，则shape信息为"A:\-1,c1,h1,w1;B:;C:n2,c2,h2,w2"，标量输入B必须配置。 配置示例： 固定shape，例如某网络的输入shape信息，输入1：input\_0\_0 [16,32,208,208]，输入2：input\_1\_0 [16,64,208,208]，则INPUT\_SHAPE的配置信息为： {ge::ir\_option::INPUT\_SHAPE, "input\_0\_0:16,32,208,208;input\_1\_0:16,64,208,208"} 非固定shape，静态shape： 设置batch\_size档位的示例，请参见DYNAMIC\_BATCH\_SIZE。 设置分辨率档位的示例，请参见DYNAMIC\_IMAGE\_SIZE。 设置指定维度档位的示例，请参见DYNAMIC\_DIMS。 非固定shape，动态shape，设置shape范围的示例： {ge::ir\_option::INPUT\_SHAPE, "input\_0\_0:1~10,32,208,208;input\_1\_0:16,64,100~208,100~208"} 详细使用示例以及使用注意事项请参见专题>动态输入shape范围(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/graphdevg/atlasag\_25\_0054.html)。 shape为标量 非动态分档场景 shape为标量的输入，可选配置。例如模型有两个输入，input\_name1为标量，input\_name2输入shape为[16,32,208,208]，配置示例为： {ge::ir\_option::INPUT\_SHAPE, "input\_name1:;input\_name2:16,32,208,208"} 上述示例中的input\_name1为可选配置。 动态分档场景 shape为标量的输入，必须配置。例如模型有三个输入，shape信息分别为A:[\-1,32,208,208]、B:[]、C:[16,64,208,208]，则配置示例为（A为动态分档输入，此处以设置batch\_size档位为例）： {ge::ir\_option::INPUT\_SHAPE, "A:\-1,32,208,208;B:;C:16,64,208,208"}, {ge::ir\_option::DYNAMIC\_BATCH\_SIZE, "1,2,4"} 说明： 如果模型转换时通过该参数设置了shape的范围： 使用应用工程进行模型推理时，需要在模型执行接口之前，调用aclmdlSetDatasetTensorDesc接口，用于设置真实的输入Tensor描述信息（输入shape范围）；模型执行之后，调用aclmdlGetDatasetTensorDesc接口获取模型动态输出的Tensor描述信息；再进一步调用aclTensorDesc下的操作接口获取输出Tensor数据占用的内存大小、Tensor的Format信息、Tensor的维度信息等。 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| DYNAMIC\_BATCH\_SIZE | 设置动态batch档位参数，适用于执行推理时，每次处理图片数量不固定的场景。 该参数需要与INPUT\_SHAPE配合使用，不能与DYNAMIC\_IMAGE\_SIZE、DYNAMIC\_DIMS同时使用；且只支持N在shape首位的场景，即shape的第一位设置为"\-1"。如果N在非首位场景下，请使用DYNAMIC\_DIMS参数进行设置。 参数取值：档位数，例如"1,2,4,8"。 参数值格式：指定的参数必须放在双引号中，档位之间使用英文逗号分隔。 参数值约束： 针对如下产品，档位数约束为：档位数取值范围为(1,100]，即必须设置至少2个档位，最多支持100档配置；每个档位数值建议限制为：[1~2048]。 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas 200I/500 A2 推理产品 Atlas 推理系列产品 Atlas 训练系列产品 针对Atlas 350 加速卡，档位数约束为：档位数取值范围为(1, 256]，即必须设置至少2个档位，最多支持256档配置；每个档位数值建议限制为：[1~2048]。 配置示例： INPUT\_SHAPE中的“\-1”表示设置动态batch。 {ge::ir\_option::INPUT\_FORMAT, "NHWC"}, {ge::ir\_option::INPUT\_SHAPE, "data:\-1,3,416,416"}, {ge::ir\_option::DYNAMIC\_BATCH\_SIZE, "1,2,4,8"} 详细使用示例以及使用注意事项请参见专题>动态BatchSize(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/graphdevg/atlasag\_25\_0049.html)。 产品支持情况： Atlas 350 加速卡：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 |
| DYNAMIC\_IMAGE\_SIZE | 设置输入图片的动态分辨率参数。适用于执行推理时，每次处理图片宽和高不固定的场景。 该参数需要与INPUT\_SHAPE配合使用，不能与DYNAMIC\_BATCH\_SIZE、DYNAMIC\_DIMS同时使用。 参数取值： "imagesize1\_height,imagesize1\_width;imagesize2\_height,imagesize2\_width"。 参数值格式：指定的参数必须放在双引号中，档位之间英文分号分隔，每档内参数使用英文逗号分隔。 参数值约束： 针对如下产品，档位数约束为：档位数取值范围为(1,100]，即必须设置至少2个档位，最多支持100档配置。 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas 200I/500 A2 推理产品 Atlas 推理系列产品 Atlas 训练系列产品 针对Atlas 350 加速卡，档位数约束为：档位数取值范围为(1, 256]，即必须设置至少2个档位，最多支持256档配置。 配置示例： INPUT\_SHAPE中的“\-1”表示设置动态分辨率。 {ge::ir\_option::INPUT\_FORMAT, "NCHW"}, {ge::ir\_option::INPUT\_SHAPE, "data:8,3,\-1,\-1"}, {ge::ir\_option::DYNAMIC\_IMAGE\_SIZE, "416,416;832,832"} 详细使用示例以及使用注意事项请参见专题>动态分辨率(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/graphdevg/atlasag\_25\_0050.html)。 产品支持情况： Atlas 350 加速卡：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 |
| DYNAMIC\_DIMS | 设置ND格式下动态维度的档位。适用于执行推理时，每次处理任意维度的场景。 该参数需要与INPUT\_SHAPE配合使用，不能与DYNAMIC\_BATCH\_SIZE、DYNAMIC\_IMAGE\_SIZE同时使用。 参数取值：通过"dim1,dim2,dim3;dim4,dim5,dim6;dim7,dim8,dim9"的形式设置。 参数值格式：所有档位必须放在双引号中，档位之间使用英文分号分隔，每档内参数使用英文逗号分隔；每档中的dim值与INPUT\_SHAPE参数中的\-1标识的参数依次对应，INPUT\_SHAPE参数中有几个\-1，则每档必须设置几个维度。 参数值约束： 针对如下产品，档位数约束为：档位数取值范围为(1,100]，即必须设置至少2个档位，最多支持100档配置，建议配置为3~4档。 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas 200I/500 A2 推理产品 Atlas 推理系列产品 Atlas 训练系列产品 针对Atlas 350 加速卡，档位数约束为：档位数取值范围为(1, 256]，即必须设置至少2个档位，最多支持256档配置，建议配置为3~4档。 配置示例： {ge::ir\_option::INPUT\_FORMAT, "ND"}, {ge::ir\_option::INPUT\_SHAPE, "data:1,\-1"}, {ge::ir\_option::DYNAMIC\_DIMS, "4;8;16;64"} // 模型编译时，支持的data算子的shape为1,4; 1,8; 1,16;1,64 {ge::ir\_option::INPUT\_FORMAT, "ND"}, {ge::ir\_option::INPUT\_SHAPE, "data:1,\-1,\-1"}, {ge::ir\_option::DYNAMIC\_DIMS, "1,2;3,4;5,6;7,8"} // 模型编译时，支持的data算子的shape为1,1,2; 1,3,4; 1,5,6; 1,7,8 详细使用示例以及使用注意事项请参见专题>动态维度(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/graphdevg/atlasag\_25\_0052.html)。 产品支持情况： Atlas 350 加速卡：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 |
| AC\_PARALLEL\_ENABLE | 动态shape图中，是否允许AI CPU算子和AI Core算子并行运行。 动态shape图中，开关开启时，系统自动识别图中可以和AI Core并发的AI CPU算子，不同引擎的算子下发到不同流上，实现多引擎间的并行，从而提升资源利用效率和动态shape执行性能。 参数取值： 1：允许AI CPU和AI Core算子间的并行运行。 0（默认）：AI CPU算子不会单独分流。 配置示例： {ge::ir\_option::AC\_PARALLEL\_ENABLE, "1"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 Atlas 200I/500 A2 推理产品 ：不支持 |


#### 算子编译与图编译

| 参数 | 说明 |
| --- | --- |
| EXCLUDE\_ENGINES | 设置图编译时不使用某个或某些加速引擎。多个以“\|”分隔。 NPU集成了多种硬件加速器（也叫加速引擎），比如AiCore/AiVec/AiCpu（按照优先级排列）等，在图编译阶段会按照优先级为算子选择合适的引擎，即当同一个算子被多种引擎支持时，会选择优先级高的那个。 EXCLUDE\_ENGINES提供了排除某个引擎的功能，比如在一次训练过程中，为避免数据预处理图和主训练图抢占AiCore，可以给数据预处理图配置不使用AiCore引擎。 参数取值： “AiCore”：AI Core硬件加速引擎 “AiVec”：Vector Core硬件加速引擎 “AiCpu”：AI CPU硬件加速引擎 配置示例： {ge::ir\_option::EXCLUDE\_ENGINES, "AiCore\|AiVec"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| OP\_COMPILER\_CACHE\_MODE | 用于配置算子编译磁盘缓存模式。 参数取值： enable：（默认值）表示启用算子编译缓存。启用后可以避免针对相同编译参数及算子参数的算子重复编译，从而提升编译速度。 force：启用算子编译缓存功能，区别于enable模式，force模式下会强制刷新缓存，即先删除已有缓存，再重新编译并加入缓存。比如当用户的python变更、依赖库变更、算子调优后知识库变更等，需要先指定为force用于先清理已有的缓存，后续再修改为enable模式，以避免每次编译时都强制刷新缓存。 disable：表示禁用算子编译缓存，算子重新编译。 配置示例： {ge::ir\_option::OP\_COMPILER\_CACHE\_MODE, "enable"} 使用说明： 如果要自行指定算子编译磁盘缓存的路径，则需要与OP\_COMPILER\_CACHE\_DIR配合使用。 启用算子编译缓存功能时，可以通过配置文件（算子编译完成后，会在OP\_COMPILER\_CACHE\_DIR参数指定路径下自动生成op\_cache.ini文件）、环境变量两种方式来设置缓存文件夹的磁盘空间大小： 通过配置文件op\_cache.ini设置 若op\_cache.ini文件不存在，则需要手动创建。打开该文件，增加如下信息： \#配置文件格式，必须包含，自动生成的文件中默认包括如下信息，手动创建时，需要输入 [op\_compiler\_cache] \#限制某个芯片下缓存文件夹的磁盘空间的大小，默认值为500，取值需为整数，单位为MB max\_op\_cache\_size=500 \#设置需要保留缓存的空间大小比例，取值范围：[1,100]，默认值为50，单位为百分比；例如取值为80表示缓存空间不足时，删除缓存文件，保留80%缓存空间 remain\_cache\_size\_ratio=50 上述文件中的max\_op\_cache\_size和remain\_cache\_size\_ratio参数取值都有效时，op\_cache.ini文件才会生效。 当编译缓存文件大小超过“max\_op\_cache\_size”的设置值，且超过半小时缓存文件未被访问时，缓存文件就会老化（算子编译时，不会因为编译缓存文件大小超过设置值而中断，所以当“max\_op\_cache\_size”设置过小时，会出现实际编译缓存文件大小超过此设置值的情况）。 若需要关闭编译缓存老化功能，可将“max\_op\_cache\_size”设置为“\-1”，此时访问算子缓存时不会更新访问时间，算子编译缓存不会老化，磁盘空间使用默认大小500MB。 若多个使用者使用相同的缓存路径，建议使用配置文件的方式进行设置，该场景下op\_cache.ini文件会影响所有使用者。 通过环境变量设置 该场景下，开发者可以通过环境变量ASCEND\_MAX\_OP\_CACHE\_SIZE来限制某个芯片下缓存文件夹的磁盘空间的大小，当编译缓存空间大小达到ASCEND\_MAX\_OP\_CACHE\_SIZE设置的取值，且超过半个小时缓存文件未被访问时，缓存文件就会老化。可通过环境变量ASCEND\_REMAIN\_CACHE\_SIZE\_RATIO设置需要保留缓存的空间大小比例。 配置示例如下： \# ASCEND\_MAX\_OP\_CACHE\_SIZE环境变量默认值为500，取值需为整数，单位为MB export ASCEND\_MAX\_OP\_CACHE\_SIZE=500 \# ASCEND\_REMAIN\_CACHE\_SIZE\_RATIO环境变量取值范围：[1,100]，默认值为50，单位为百分比；例如取值为80表示缓存空间不足时，删除缓存文件，保留80%缓存空间 export ASCEND\_REMAIN\_CACHE\_SIZE\_RATIO=50 通过环境变量配置，只对当前用户生效。 若需要关闭编译缓存老化功能，可将环境变量“ASCEND\_MAX\_OP\_CACHE\_SIZE”设置为“\-1”，此时访问算子缓存时不会更新访问时间，算子编译缓存不会老化，磁盘空间使用默认大小500MB。 若同时配置了op\_cache.ini文件和环境变量，则优先读取op\_cache.ini文件中的配置项，若op\_cache.ini文件和环境变量都未设置，则读取系统默认值：默认磁盘空间大小500MB，默认保留缓存空间的50%。 由于force选项会先删除已有缓存，所以不建议在程序并行编译时设置，否则可能会导致其他模型因使用的缓存内容被清除而编译失败。 建议模型最终发布时设置编译缓存选项为disable或者force。 如果算子调优后知识库变更，则需要通过设置为force来刷新缓存，否则无法应用新的调优知识库，从而导致调优应用执行失败。 调试开关打开的场景： OP\_DEBUG\_LEVEL配置非0值：会忽略OP\_COMPILER\_CACHE\_MODE参数的配置，不启用算子编译缓存功能，算子全部重新编译。 OP\_DEBUG\_CONFIG配置非空，且未配置OP\_DEBUG\_LIST字段，会忽略OP\_COMPILER\_CACHE\_MODE参数的配置，不启用算子编译缓存功能，算子全部重新编译。 OP\_DEBUG\_CONFIG配置非空，且配置文件中配置了OP\_DEBUG\_LIST字段： 列表中的算子，忽略OP\_COMPILER\_CACHE\_MODE参数的配置继续重新编译。 列表外的算子，如果OP\_COMPILER\_CACHE\_MODE参数配置为enable或force，则启用缓存功能；若配置为disable，则不启用缓存功能，仍旧重新编译。 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| OP\_COMPILER\_CACHE\_DIR | 用于配置算子编译磁盘缓存的目录。 参数值格式：路径支持大小写字母（a\-z，A\-Z）、数字（0\-9）、下划线（\_）、中划线（\-）、句点（.）、中文字符。 默认值：$HOME/atc\_data 配置示例： {ge::ir\_option::OP\_COMPILER\_CACHE\_MODE, "enable"}, {ge::ir\_option::OP\_COMPILER\_CACHE\_DIR, "/home/test/data/atc\_data"} 使用约束： 如果要自行指定算子编译磁盘缓存的路径，则需要与OP\_COMPILER\_CACHE\_MODE配合使用。 如果参数指定的路径存在且有效，则在指定的路径下自动创建子目录kernel\_cache；如果指定的路径不存在但路径有效，则先自动创建目录，然后在该路径下自动创建子目录kernel\_cache。 用户请不要在默认缓存目录下存放其他自有内容，自有内容在软件包安装或升级时会同默认缓存目录一并被删除。 通过该参数指定的非默认缓存目录无法删除（软件包安装或升级时不会被删除）。 算子编译磁盘缓存路径，除OP\_COMPILER\_CACHE\_DIR参数设置的方式外，还可以配置环境变量ASCEND\_CACHE\_PATH(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0006.html)，几种方式优先级为：配置参数“OP\_COMPILER\_CACHE\_DIR”>环境变量ASCEND\_CACHE\_PATH>默认存储路径。 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| OPTIMIZATION\_SWITCH | 算子编译时，融合规则（Pass）的控制开关，该参数适用于所有融合规则。 参数取值："Passname1:on;Passname2:off"，可以拼接多个key\-value键值对，key为Pass名称，value为on（表示开）或off（表示关），不支持大小写模式匹配，多组配置使用英文分号分隔。可配置的融合规则请参见融合规则列表(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/graphdevg/atlasag\_25\_0078.html)。 配置示例： {ge::ir\_option::OPTIMIZATION\_SWITCH, "Passname1:on;Passname2:off"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |


#### 功能调试

| 参数 | 说明 |
| --- | --- |
| LOG\_LEVEL | 设置显示日志的级别。 参数取值： debug：输出debug/info/warning/error级别的调试日志信息。 info：输出info/warning/error级别的调试日志信息。 warning：输出warning/error级别的调试日志信息。 error：输出error级别的调试日志信息。 null：（默认值）不输出调试日志。 配置示例： {ge::ir\_option::LOG\_LEVEL, "debug"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| DEBUG\_DIR | 用于配置保存算子编译生成的调试相关的过程文件的路径，过程文件包括但不限于算子.o（算子二进制文件）、.json（算子描述文件）、.cce等文件。 默认生成在当前路径下。 使用约束： 如果要自行指定算子编译的过程文件存放路径，需DEBUG\_DIR参数与OP\_DEBUG\_LEVEL参数配合使用，且当OP\_DEBUG\_LEVEL取值为0时，不能使用DEBUG\_DIR参数。 算子编译生成的调试文件存储路径，除DEBUG\_DIR参数设置的方式外，还可以配置环境变量ASCEND\_WORK\_PATH(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0007.html)，几种方式优先级为：配置参数“DEBUG\_DIR”>环境变量ASCEND\_WORK\_PATH >默认存储路径。 配置示例： {ge::ir\_option::OP\_DEBUG\_LEVEL, "1"}, {ge::ir\_option::DEBUG\_DIR, "/home/test/module/out\_debug\_info"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| OP\_DEBUG\_LEVEL | 算子编译debug功能开关。 如果要自行指定算子编译的过程文件存放路径，则需要通过DEBUG\_DIR参数指定，OP\_DEBUG\_LEVEL取值为0时，使用DEBUG\_DIR参数不生效。 参数取值： 0：（默认值）不开启算子debug功能，在当前执行路径不生成算子编译目录kernel\_meta。 1：开启算子debug功能，在当前执行路径生成kernel\_meta文件夹，并在该文件夹下生成\*.o（算子二进制文件）、\*.json文件（算子描述文件）和TBE指令映射文件（算子cce文件\*.cce和python\-cce映射文件\*\_loc.json），用于后续分析AICore Error问题。 Atlas 350 加速卡不会生成TBE指令映射文件。 2：开启算子debug功能，在当前执行路径生成kernel\_meta文件夹，并在该文件夹下生成\*.o（算子二进制文件）、\*.json文件（算子描述文件）和TBE指令映射文件（算子cce文件\*.cce和python\-cce映射文件\*\_loc.json），用于后续分析AICore Error问题，同时设置为2，还会关闭编译优化开关、开启ccec调试功能（ccec编译器选项设置为\-O0\-g）。 Atlas 350 加速卡不会生成TBE指令映射文件。 3：不开启算子debug功能，在当前执行路径生成kernel\_meta文件夹，并在该文件夹中生成\*.o（算子二进制文件）和\*.json文件（算子描述文件），分析算子问题时可参考。 4：不开启算子debug功能，在当前执行路径生成kernel\_meta文件夹，并在该文件夹下生成\*.o（算子二进制文件）、\*.json文件（算子描述文件）、TBE指令映射文件（算子cce文件\*.cce）和UB融合计算描述文件（{$kernel\_name}\_compute.json），可在分析算子问题时进行问题复现、精度比对时使用。 Atlas 350 加速卡不会生成TBE指令映射文件和UB融合计算描述文件。 须知： 若OP\_DEBUG\_LEVEL配置为0，同时配置了OP\_DEBUG\_CONFIG参数，该场景下在当前执行路径会保留算子编译目录kernel\_meta。 若OP\_DEBUG\_LEVEL配置为0，同时设置了NPU\_COLLECT\_PATH(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0130.html)环境变量，则会始终保留编译目录kernel\_meta；若设置了ASCEND\_WORK\_PATH(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0007.html)环境变量，则保留在该环境变量指定路径下，若无ASCEND\_WORK\_PATH(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0007.html)环境变量，则保留在当前执行路径。 训练执行时，建议配置为0或3。如果需要进行问题定位，再选择调试开关选项1和2，是因为加入了调试功能会导致网络性能下降。 配置为2（即开启ccec编译选项）时，会导致算子Kernel（\*.o文件）大小增大。动态Shape场景下，由于算子编译时会遍历可能的Shape场景，因此可能会导致算子Kernel文件过大而无法进行编译，此种场景下，建议不要配置ccec编译选项。 由于算子Kernel文件过大而无法编译的报错日志示例如下： message:link error ld.lld: error: InputSection too large for range extension thunk ./kernel\_meta\_xxxxx.o debug功能开关打开场景下，若模型中含有如下通算融合算子，算子编译目录kernel\_meta中，不会生成下述算子的\*.o、\*.json、\*.cce文件。 MatMulAllReduce MatMulAllReduceAddRmsNorm AllGatherMatMul MatMulReduceScatter AlltoAllAllGatherBatchMatMul BatchMatMulReduceScatterAlltoAll 配置示例： {ge::ir\_option::OP\_DEBUG\_LEVEL, "1"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| OP\_DEBUG\_CONFIG | Global Memory内存检测功能开关。 参数取值： 取值为.cfg配置文件路径，配置文件内多个选项用英文逗号分隔： oom：算子执行过程中，检测Global Memory是否内存越界。 配置该选项，算子编译时，在当前执行路径算子编译生成的kernel\_meta文件夹中保留.o（算子二进制文件）和.json文件（算子描述文件）。 使用该选项后，在算子编译过程中会加入如下的检测逻辑，用户可以通过再使用dump\_cce参数，在生成的.cce文件中查看如下的代码。 inline \_\_aicore\_\_ void CheckInvalidAccessOfDDR(xxx) { if (access\_offset < 0 \|\| access\_offset + access\_extent > ddr\_size) { if (read\_or\_write == 1) { trap(0X5A5A0001); } else { trap(0X5A5A0002); } } } dump\_cce：算子编译时，在当前执行路径算子编译生成的kernel\_meta文件夹中保留算子cce文件\*.cce，以及.o（算子二进制文件）和.json文件（算子描述文件）。 dump\_loc：算子编译时，在当前执行路径算子编译生成的kernel\_meta文件夹中保留python\-cce映射文件\*\_loc.json，以及.o（算子二进制文件）和.json文件（算子描述文件）。 ccec\_O0：算子编译时，开启ccec编译器选项\-O0，配置该选项不会对调试信息执行优化操作，用于后续分析AI Core Error问题。 ccec\_g：算子编译时，开启ccec编译器选项\-g，配置该选项会对调试信息执行优化操作，用于后续分析AI Core Error问题。 check\_flag：算子执行时，检测算子内部流水线同步信号是否匹配。 配置该选项，算子编译时，在当前执行路径算子编译生成的kernel\_meta文件夹中保留.o（算子二进制文件）和.json文件（算子描述文件）。 使用该选项后，在算子编译过程中会加入如下的检测逻辑，用户可以通过再使用dump\_cce参数，在生成的.cce文件中查看如下的代码。 set\_flag(PIPE\_MTE3, PIPE\_MTE2, EVENT\_ID0); set\_flag(PIPE\_MTE3, PIPE\_MTE2, EVENT\_ID1); set\_flag(PIPE\_MTE3, PIPE\_MTE2, EVENT\_ID2); set\_flag(PIPE\_MTE3, PIPE\_MTE2, EVENT\_ID3); .... pipe\_barrier(PIPE\_MTE3); pipe\_barrier(PIPE\_MTE2); pipe\_barrier(PIPE\_M); pipe\_barrier(PIPE\_V); pipe\_barrier(PIPE\_MTE1); pipe\_barrier(PIPE\_ALL); wait\_flag(PIPE\_MTE3, PIPE\_MTE2, EVENT\_ID0); wait\_flag(PIPE\_MTE3, PIPE\_MTE2, EVENT\_ID1); wait\_flag(PIPE\_MTE3, PIPE\_MTE2, EVENT\_ID2); wait\_flag(PIPE\_MTE3, PIPE\_MTE2, EVENT\_ID3); ... 实际执行推理过程中，如果确实存在算子内部流水线同步信号不匹配，则最终会在有问题的算子处超时报错，并终止程序，报错信息示例为： Aicore kernel execute failed, ..., fault kernel\_name=算子名,... rtStreamSynchronizeWithTimeout execute failed.... 配置示例： {ge::ir\_option::OP\_DEBUG\_CONFIG, "/root/test0.cfg"} 其中，test0.cfg文件信息为： op\_debug\_config=ccec\_g,oom 使用约束： 算子编译时，如果用户不想编译所有AI Core算子，而是指定某些AI Core算子进行编译，则需要在上述test0.cfg配置文件中新增OP\_DEBUG\_LIST字段，算子编译时，只编译该列表指定的算子，并按照OP\_DEBUG\_CONFIG配置的选项进行编译。OP\_DEBUG\_LIST字段要求如下： 支持指定算子名称或者算子类型。 算子之间使用英文逗号分隔，若为算子类型，则以OpType::typeName格式进行配置，支持算子类型和算子名称混合配置。 要编译的算子，必须放在OP\_DEBUG\_CONFIG参数指定的配置文件中。 配置示例如下，test0.cfg文件中增加如下信息： op\_debug\_config=ccec\_g,oom op\_debug\_list=GatherV2,opType::ReduceSum 模型编译时，GatherV2,ReduceSum算子按照ccec\_g,oom选项进行编译。 说明： 开启ccec编译选项的场景下（即ccec\_O0、ccec\_g选项），会增大算子Kernel（\*.o文件）的大小。动态shape场景下，由于算子编译时会遍历可能存在的所有场景，最终可能会导致由于算子Kernel文件过大而无法进行编译的情况，此种场景下，建议不要开启ccec编译选项。 由于算子kernel文件过大而无法编译的日志显示如下： message:link error ld.lld: error: InputSection too large for range extension thunk ./kernel\_meta\_xxxxx.o:(xxxx) ccec编译器选项ccec\_O0和oom不能同时开启，可能会导致AICore Error报错，报错信息示例如下： ...there is an aivec error exception, core id is 49, error code = 0x4 ... 若配置NPU\_COLLECT\_PATH环境变量，不支持打开“检测Global Memory是否内存越界”的开关（OP\_DEBUG\_CONFIG指定的配置文件中配置oom），否则编译出来的模型文件或算子kernel包在使用时会报错。 配置编译选项oom、dump\_cce、dump\_loc时，若模型中含有如下通算融合算子，算子编译目录kernel\_meta中，不会生成下述算子的\*.o、\*.json、\*.cce文件。 MatMulAllReduce MatMulAllReduceAddRmsNorm AllGatherMatMul MatMulReduceScatter AlltoAllAllGatherBatchMatMul BatchMatMulReduceScatterAlltoAll 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| OPTION\_EXPORT\_COMPILE\_STAT | 配置图编译过程中是否生成算子融合信息（包括图融合和UB融合）的结果文件fusion\_result.json。 该文件用于记录图编译过程中使用的融合规则，文件中： session\_and\_graph\_id\_xx\_xx：表示融合结果所属线程和图编号。 graph\_fusion：表示图融合。 ub\_fusion：表示UB融合，Atlas 350 加速卡不支持UB融合，不会生成该信息。 match\_times：表示图编译过程中匹配到的融合规则次数。 effect\_times：表示实际生效的次数。 repository\_hit\_times：优化UB融合知识库命中的次数，Atlas 350 加速卡不支持UB融合，不会生成该信息。 参数取值： 0：不生成算子融合信息结果文件。 1：（默认值）程序运行正常退出时，生成算子融合信息结果文件。 2：图编译完成时，生成算子融合信息结果文件。即如果图编译已完成，后续程序提前中断，也会生成算子融合信息结果文件。 说明： 若未设置ASCEND\_WORK\_PATH(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0007.html)环境变量，结果文件默认生成在执行脚本的当前路径；若设置了ASCEND\_WORK\_PATH(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/envvar/envref\_07\_0007.html)环境变量，则保存路径为：$ASCEND\_WORK\_PATH/FE/${进程号}/fusion\_result.json。 通过FUSION\_SWITCH\_FILE参数关闭的融合规则，不会在fusion\_result.json文件中呈现。 配置示例： {ge::ir\_option::OPTION\_EXPORT\_COMPILE\_STAT, "1"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |


#### 精度调优

| 参数 | 说明 |
| --- | --- |
| PRECISION\_MODE | 设置算子的精度模式。同一张图中不能与PRECISION\_MODE\_V2同时使用，建议使用PRECISION\_MODE\_V2参数。 参数取值： force\_fp32/cube\_fp16in\_fp32out： 配置为force\_fp32或cube\_fp16in\_fp32out，效果等同，该选项用来表示AI Core中该算子既支持float32又支持float16数据类型时，系统内部都会根据算子类型不同，选择不同的处理方式。cube\_fp16in\_fp32out为新版本中新增的，对于矩阵计算类算子，该选项语义更清晰。 对于矩阵计算类算子，系统内部会按算子实现的支持情况处理： 优先选择输入数据类型为float16且输出数据类型为float32； 如果1中的场景不支持，则选择输入数据类型为float32且输出数据类型为float32； 如果2中的场景不支持，则选择输入数据类型为float16且输出数据类型为float16； 如果3中的场景不支持，则报错。 对于矢量计算类算子，表示原图中算子精度为float16或bfloat16，强制选择float32。 如果原图中存在部分算子，在AI Core中该算子的实现不支持float32，比如某算子仅支持float16类型，则该参数不生效，仍然使用支持的float16；如果在AI Core中该算子的实现不支持float32，且又配置了黑名单（precision\_reduce = false），则会使用float32的AI CPU算子；如果AI CPU算子也不支持，则执行报错。 force\_fp16（默认值）： 表示原图中算子精度为float16、bfloat16和float32时，强制选择float16。 allow\_fp32\_to\_fp16： 对于矩阵类算子： 如果原图中算子精度为float32，优先降低精度到float16，如果AI Core中算子不支持float16，则继续选择float32，如果AI Core中算子不支持float32，则使用AI CPU算子进行计算；如果AI CPU算子也不支持，则执行报错。 如果原图中算子精度为bfloat16，则优先使用原图精度bfloat16，如果AI Core中算子不支持bfloat16，则选择float32，如果AI Core中算子不支持float32，则直接降低精度到float16；如果AI Core中算子不支持float16，则使用AI CPU算子进行计算；如果AI CPU算子也不支持，则执行报错。 对于矢量类算子，优先保持原图精度： 如果原图中算子精度为float32，则优先使用原图精度float32，如果AI Core中算子不支持float32，则直接降低精度到float16；如果AI Core中算子不支持float16，则使用AI CPU算子进行计算；如果AI CPU算子也不支持，则执行报错。 如果原图中算子精度为bfloat16，则优先使用原图精度bfloat16，如果AI Core中算子不支持bfloat16，则选择float32，如果AI Core中算子不支持float32，则直接降低精度到float16；如果AI Core中算子不支持float16，则使用AI CPU算子进行计算；如果AI CPU算子也不支持，则执行报错。 must\_keep\_origin\_dtype： 保持原图精度。 如果原图中某算子精度为float16，AI Core中该算子的实现不支持float16、仅支持float32和bfloat16，则系统内部会自动采用高精度float32。 如果原图中某算子精度为float16，AI Core中该算子的实现不支持float16、仅支持bfloat16，则会使用float16的AI CPU算子；如果AI CPU算子也不支持，则执行报错。 如果原图中某算子精度为float32，AI Core中该算子的实现不支持float32类型、仅支持float16类型，则会使用float32的AI CPU算子；如果AI CPU算子也不支持，则执行报错。 allow\_mix\_precision/allow\_mix\_precision\_fp16： 配置为allow\_mix\_precision或allow\_mix\_precision\_fp16，效果等同，均表示使用混合精度float16、bfloat16和float32数据类型来处理神经网络的过程。allow\_mix\_precision\_fp16为新版本中新增的，语义更清晰，便于理解。 针对原始模型中float32和bfloat16数据类型的算子，按照内置的优化策略，自动将部分float32和bfloat16的算子降低精度到float16，从而在精度损失很小的情况下提升系统性能并减少内存使用。 若配置了该种模式，则可以在${INSTALL\_DIR}/opp/built\-in/op\_impl/ai\_core/tbe/config/xxx/aic\-xxx\-ops\-info\-\*.json内置优化策略文件中查看“precision\_reduce”参数的取值： 若取值为true（白名单），则表示允许将当前float32和bfloat16类型的算子，降低精度到float16。 若取值为false（黑名单），则不允许将当前float32和bfloat16类型的算子降低精度到float16，相应算子仍旧使用float32或bfloat16精度。 若网络模型中算子没有配置该参数（灰名单），当前算子的混合精度处理机制和前一个算子保持一致，即如果前一个算子支持降精度处理，当前算子也支持降精度；如果前一个算子不允许降精度，当前算子也不支持降精度。 allow\_mix\_precision\_bf16： 表示使用混合精度bfloat16和float32数据类型来处理神经网络的过程。针对原始模型中float32数据类型的算子，按照内置的优化策略，自动将部分float32的算子降低精度到bfloat16，从而在精度损失很小的情况下提升系统性能并减少内存使用；如果AI Core中算子不支持bfloat16和float32，则使用AI CPU算子进行计算；如果AI CPU算子也不支持，则执行报错。 若配置了该种模式，则可以在${INSTALL\_DIR}/opp/built\-in/op\_impl/ai\_core/tbe/config/xxx/aic\-xxx\-ops\-info\-\*.json内置优化策略文件中查看“precision\_reduce”参数的取值： 若取值为true（白名单），则表示允许将当前float32类型的算子，降低精度到bfloat16。 若取值为false（黑名单），则不允许将当前float32类型的算子降低精度到bfloat16，相应算子仍旧使用float32精度。 若网络模型中算子没有配置该参数（灰名单），当前算子的混合精度处理机制和前一个算子保持一致，即如果前一个算子支持降精度处理，当前算子也支持降精度；如果前一个算子不允许降精度，当前算子也不支持降精度。 allow\_fp32\_to\_bf16： 如果原图中算子精度为float32，则优先使用原图精度float32，如果AI Core中算子不支持float32，则降低精度到bfloat16；如果AI Core中算子不支持bfloat16，则使用AI CPU算子进行计算；如果AI CPU算子也不支持，则执行报错。 如果原图中算子精度为bfloat16，则优先使用原图精度bfloat16，如果AI Core中算子不支持bfloat16，则选择float32，如果AI Core中算子不支持float32，则使用AI CPU算子进行计算；如果AI CPU算子也不支持，则执行报错。 上述路径中的${INSTALL\_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例，安装后文件默认存储路径为：/usr/local/Ascend/cann。 参数值约束： bfloat16数据类型仅支持以下产品类型： Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas 200I/500 A2 推理产品 Atlas 350 加速卡 该参数默认为性能优先，后续推理时可能会导致精度溢出问题。如果推理时出现精度问题，可以参见“模型推理精度提升建议(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/acldevg/aclcppdevg\_000097.html)”进行定位。 如果用户聚焦精度问题，可以修改为其他取值，比如must\_keep\_origin\_dtype。 配置示例： {ge::ir\_option::PRECISION\_MODE, "force\_fp16"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| PRECISION\_MODE\_V2 | 设置算子的精度模式。同一张图中不能与PRECISION\_MODE同时使用，建议使用PRECISION\_MODE\_V2参数。 参数取值： fp16（默认值）： 表示原图中算子精度为float16、bfloat16或float32时，强制选择float16。 origin： 保持原图精度。 如果原图中某算子精度为float16，AI Core中该算子的实现不支持float16、仅支持float32和bfloat16，则系统内部会自动采用高精度float32。 如果原图中某算子精度为float16，AI Core中该算子的实现不支持float16、仅支持bfloat16，则会使用float16的AI CPU算子；如果AI CPU算子也不支持，则执行报错。 如果原图中某算子精度为float32，AI Core中该算子的实现不支持float32类型、仅支持float16类型，则会使用float32的AI CPU算子；如果AI CPU算子也不支持，则执行报错。 cube\_fp16in\_fp32out： AI Core中该算子既支持float32又支持float16数据类型时，系统内部根据算子类型不同，选择不同的处理方式。 对于矩阵计算类算子，系统内部会按算子实现的支持情况处理： 优先选择输入数据类型为float16且输出数据类型为float32； 如果1中的场景不支持，则选择输入数据类型为float32且输出数据类型为float32； 如果2中的场景不支持，则选择输入数据类型为float16且输出数据类型为float16； 如果3中的场景不支持，则报错。 对于矢量计算类算子，表示原图中算子精度为float16或bfloat16，强制选择float32。 如果原图中存在部分算子，在AI Core中该算子的实现不支持float32，比如某算子仅支持float16类型，则该参数不生效，仍然使用支持的float16；如果在AI Core中该算子的实现不支持float32，且又配置了黑名单（precision\_reduce = false），则会使用float32的AI CPU算子；如果AI CPU算子也不支持，则执行报错。 mixed\_float16： 表示使用混合精度float16、bfloat16和float32数据类型来处理神经网络。针对原图中float32和bfloat16数据类型的算子，按照内置的优化策略，自动将部分float32和bfloat16的算子降低精度到float16，从而在精度损失很小的情况下提升系统性能并减少内存使用。 若配置了该种模式，则可以在${INSTALL\_DIR}/opp/built\-in/op\_impl/ai\_core/tbe/config/xxx/aic\-xxx\-ops\-info\-\*.json内置优化策略文件中查看“precision\_reduce”参数的取值： 若取值为true（白名单），则表示允许将当前float32和bfloat16类型的算子，降低精度到float16。 若取值为false（黑名单），则不允许将当前float32和bfloat16类型的算子降低精度到float16，相应算子仍旧使用float32或bfloat16精度。 若网络模型中算子没有配置该参数（灰名单），当前算子的混合精度处理机制和前一个算子保持一致，即如果前一个算子支持降精度处理，当前算子也支持降精度；如果前一个算子不允许降精度，当前算子也不支持降精度。 mixed\_bfloat16： 表示使用混合精度bfloat16和float32数据类型来处理神经网络。针对原图中float32数据类型的算子，按照内置的优化策略，自动将部分float32的算子降低精度到bfloat16，从而在精度损失很小的情况下提升系统性能并减少内存使用；如果算子不支持bfloat16和float32，则使用AI CPU算子进行计算；如果AI CPU算子也不支持，则执行报错。 若配置了该种模式，则可以在${INSTALL\_DIR}/opp/built\-in/op\_impl/ai\_core/tbe/config/xxx/aic\-xxx\-ops\-info\-\*.json内置优化策略文件中查看“precision\_reduce”参数的取值： 若取值为true（白名单），则表示允许将当前float32类型的算子，降低精度到bfloat16。 若取值为false（黑名单），则不允许将当前float32类型的算子降低精度到bfloat16，相应算子仍旧使用float32精度。 若网络模型中算子没有配置该参数（灰名单），当前算子的混合精度处理机制和前一个算子保持一致，即如果前一个算子支持降精度处理，当前算子也支持降精度；如果前一个算子不允许降精度，当前算子也不支持降精度。 mixed\_hif8： 开启自动混合精度功能，表示混合使用hifloat8（此数据类型介绍可参见Link(https://arxiv.org/abs/2409.16626?context=cs.AR)）、float16、bfloat16和float32数据类型来处理神经网络。针对原图中float16、bfloat16和float32数据类型的算子，按照内置的优化策略，自动将部分float16、bfloat16和float32的算子降低精度到hifloat8，从而在精度损失很小的情况下提升系统性能并减少内存使用。当前版本不支持该选项。 若配置了该种模式，则可以在${INSTALL\_DIR}/opp/built\-in/op\_impl/ai\_core/tbe/config/xxx/aic\-xxx\-ops\-info\-\*.json内置优化策略文件中查看“precision\_reduce”参数的取值： 若取值为true（白名单），则表示允许将当前float16、bfloat16和float32类型的算子，降低精度到hifloat8。 若取值为false（黑名单），则不允许将当前float16、bfloat16和float32类型的算子降低精度到hifloat8，相应算子仍旧使用float16、bfloat16或float32精度。 若原图中算子没有配置该参数（灰名单），当前算子的混合精度处理机制和前一个算子保持一致，即如果前一个算子支持降精度处理，当前算子也支持降精度；如果前一个算子不允许降精度，当前算子也不支持降精度。 该选项仅支持以下产品类型： Atlas 350 加速卡 cube\_hif8： 表示若原图中的cube算子既支持hifloat8，又支持float16、bfloat16或float32数据类型时，强制选择hifloat8数据类型。当前版本不支持该选项。 该选项仅支持以下产品类型： Atlas 350 加速卡 上述路径中的${INSTALL\_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例，安装后文件默认存储路径为：/usr/local/Ascend/cann。 参数值约束： bfloat16数据类型仅支持以下产品类型： Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas 200I/500 A2 推理产品 Atlas 350 加速卡 该参数默认为性能优先，后续推理时可能会导致精度溢出问题。如果推理时出现精度问题，可以参见“模型推理精度提升建议(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/acldevg/aclcppdevg\_000097.html)”进行定位。 如果用户聚焦精度问题，可以修改为其他取值，比如origin。 配置示例： {ge::ir\_option::PRECISION\_MODE\_V2, "fp16"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| MODIFY\_MIXLIST | 混合精度场景下，通过此参数指定混合精度黑白灰名单的路径以及文件名，自行指定哪些算子允许降精度，哪些算子不允许降精度。配置为路径以及文件名，文件为JSON格式。黑白灰名单，可从“${INSTALL\_DIR}/opp/built\-in/op\_impl/ai\_core/tbe/config/xxx/aic\-xxx\-ops\-info\-\*.json”内置优化策略文件中查看“precision\_reduce”参数下的flag参数值（其中，${INSTALL\_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例，安装后文件默认存储路径为：/usr/local/Ascend/cann。xxx请根据实际产品进行选择。）： 若取值为true（白名单），表示混合精度模式下，允许降低精度。 若取值为false（黑名单），表示混合精度模式下，不允许降低精度。 不配置该参数（灰名单），表示混合精度模式下，当前算子的混合精度处理机制和前一个算子保持一致，即如果前一个算子支持降精度处理，当前算子也支持降精度；如果前一个算子不允许降精度，当前算子也不支持降精度。 开启混合精度方式： PRECISION\_MODE参数设置为allow\_mix\_precision、allow\_mix\_precision\_fp16、allow\_mix\_precision\_bf16。 PRECISION\_MODE\_V2参数设置为mixed\_float16、mixed\_bfloat16、mixed\_hif8，与PRECISION\_MODE参数不能同时配置，建议使用PRECISION\_MODE\_V2。 配置示例： {ge::ir\_option::MODIFY\_MIXLIST, "/home/test/ops\_info.json"} ops\_info.json中可以指定算子类型，多个算子使用英文逗号分隔，样例如下： { "black\-list": { // 黑名单 "to\-remove": [ // 黑名单算子转换为灰名单算子，配置该参数时，请确保被转换的算子已经存在于黑名单中 "Xlog1py" ], "to\-add": [ // 白名单或灰名单算子转换为黑名单算子 "Matmul", "Cast" ] }, "white\-list": { // 白名单 "to\-remove": [ // 白名单算子转换为灰名单算子，配置该参数时，请确保被转换的算子已经存在于白名单中 "Conv2D" ], "to\-add": [ // 黑名单或灰名单算子转换为白名单算子 "Bias" ] } } 上述配置文件样例中展示的算子仅作为参考，请基于实际硬件环境和具体的算子内置优化策略进行配置，黑白灰名单查询样例如下： "Conv2D":{ "precision\_reduce":{ "flag":"true" } }, true：白名单。false：黑名单。不配置：灰名单。 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| CUSTOMIZE\_DTYPES | 通过该参数自定义模型编译时算子的计算精度，模型中其他算子以PRECISION\_MODE或PRECISION\_MODE\_V2指定的精度模式进行编译。该参数需要配置为配置文件路径及文件名，例如：/home/test/customize\_dtypes.cfg。 参数值约束： 配置文件中列举需要自定义计算精度的算子名称或算子类型，每个算子单独一行，且算子类型必须为基于IR定义的算子的类型。 对于同一个算子，如果同时配置了算子名称和算子类型，编译时以算子名称为准。 指定某个算子的计算精度时，如果算子编译过程中该算子被融合掉，则该算子指定的计算精度不生效。 配置文件格式要求： \# 按照算子名称配置 Opname1::InputDtype:dtype1,dtype2,…OutputDtype:dtype1,… Opname2::InputDtype:dtype1,dtype2,…OutputDtype:dtype1,… \# 按照算子类型配置 OpType::TypeName1:InputDtype:dtype1,dtype2,…OutputDtype:dtype1,… OpType::TypeName2:InputDtype:dtype1,dtype2,…OutputDtype:dtype1,… 配置文件配置示例： \# 按照算子名称配置 resnet\_v1\_50/block1/unit\_3/bottleneck\_v1/Relu::InputDtype:float16,int8,OutputDtype:float16,int8 \# 按照算子类型配置 OpType::Relu:InputDtype:float16,int8,OutputDtype:float16,int8 说明： 算子具体支持的计算精度可以从算子信息库中查看，默认存储路径为：${INSTALL\_DIR}/opp/built\-in/op\_impl/ai\_core/tbe/config/xxx/aic\-xxx\-ops\-info\-\*.json。 ${INSTALL\_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例，安装后文件默认存储路径为：/usr/local/Ascend/cann。xxx请根据实际产品进行选择。 通过该参数指定的优先级高，因此可能会导致精度/性能的下降，如果指定的dtype不支持，会导致编译失败。 配置示例： {ge::ir\_option::CUSTOMIZE\_DTYPES, "/home/test/customize\_dtypes.cfg"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |


#### 精度比对

| 参数 | 说明 |
| --- | --- |
| QUANT\_DUMPABLE | 是否采集量化算子的dump数据。 参考《应用开发 (C&C++)(https://www.hiascend.com/document/detail/zh/canncommercial/900/programug/acldevg/aclcppdevg\_000006.html)》手册中的“模型推理精度提升建议(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/acldevg/aclcppdevg\_000097.html)”章节进行精度定位时，如果存在AMCT量化后的模型，该模型转成om离线模型时，图编译过程中可能优化量化算子的输入输出，从而影响量化算子dump数据的导出，例如：两个被量化的卷积计算，中间输出被优化为int8的量化后输出。 为此引入QUANT\_DUMPABLE参数，使能该参数后，量化算子的输入输出不做融合，并且会插入transdata算子，还原原始模型的格式，从而能采集到量化算子的dump数据。 参数取值： 0：（默认值）图编译过程中可能优化量化算子的输入输出，此时无法获取量化算子的dump数据。 1：开启此配置后，可确保能够采集量化算子的dump数据。 配置示例： {ge::ir\_option::QUANT\_DUMPABLE, "1"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |


#### 性能调优

| 参数 | 说明 |
| --- | --- |
| OP\_PRECISION\_MODE | 设置指定算子内部处理时的精度模式，支持指定一个算子或多个算子。通过该参数传入自定义的精度模式配置文件op\_precision.ini，可以为不同的算子设置不同的精度模式。 配置示例： {ge::ir\_option::OP\_PRECISION\_MODE, "op\_precision.ini"} 配置文件中支持设置如下精度模式： high\_precision：表示高精度。 high\_performance：表示高性能。 enable\_float\_32\_execution：算子内部处理时使用FP32数据类型功能，该场景下FP32数据类型不会自动转换为HF32数据类型；若使用HF32计算，精度损失超过预期时，可启用该配置，指定部分算子内部计算时使用FP32，保持精度。 该选项仅支持以下产品类型： Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 enable\_hi\_float\_32\_execution：算子内部处理时使用HF32数据类型功能，使能后，FP32数据类型自动转换为HF32数据类型；该配置可以降低数据所占空间大小，实现性能提升。当前版本暂不支持。 support\_out\_of\_bound\_index：表示对gather、scatter和segment类算子的indices输入进行越界校验，校验会降低算子的执行性能。 keep\_fp16：算子内部处理时使用FP16数据类型功能，该场景下FP16数据类型不会自动转换为FP32数据类型；若使用FP32计算时性能不满足预期，同时精度要求不高情况下，可以选择keep\_fp16模式，牺牲精度提升性能，不建议使用该低精度模式。 super\_performance：表示超高性能，和高性能相比，在算法计算公式上进行了优化。 具体某个算子支持配置的精度/性能模式取值，可以通过CANN软件安装后文件存储路径的opp/built\-in/op\_impl/ai\_core/tbe/impl\_mode/all\_ops\_impl\_mode.ini文件查看。 样例如下：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 使用约束： 该参数不能与OP\_SELECT\_IMPL\_MODE、OPTYPELIST\_FOR\_IMPLMODE参数同时使用，若三个参数同时配置，则只有OP\_PRECISION\_MODE参数指定的模式生效。 针对同一个算子，如果通过OP\_PRECISION\_MODE数配置了enable\_hi\_float\_32\_execution或enable\_float\_32\_execution，该场景下不建议再与ALLOW\_HF32参数同时使用，若同时使用，则优先级如下： op\_precision\_mode(ByNodeName，按节点名称设置精度模式) > allow\_hf32 > op\_precision\_mode(ByOpType，按算子类型设置精度模式) 该参数不建议配置，若使用高性能或者高精度模式，网络性能或者精度不是最优，则可以使用该参数，通过配置ini文件调整某个具体算子的精度模式。 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| TILING\_SCHEDULE\_OPTIMIZE | Tiling下沉调度优化开关。 由于NPU中AI Core内部存储无法完全容纳算子输入输出的所有数据，需要每次搬运一部分输入数据进行计算然后搬出，再搬运下一部分输入数据进行计算，该过程称之为Tiling；根据算子的shape等信息来确定数据切分算法相关参数（比如每次搬运的块大小，以及总共循环多少次）的计算程序，称之为Tiling实现。由于Tiling实现中完成的均为标量计算，AI Core并不擅长，故一般在Host侧CPU上执行，但是满足下述条件Tiling实现会下沉到Device侧执行： 模型为静态shape。 模型中的算子支持Tiling下沉，比如FusedInferAttentionScore、IncreFlashAttention等融合算子。 支持Tiling下沉的算子值有依赖，需要满足前一个算子的值有device的执行结果；如果依赖的值是Const，则不需要下沉执行Tiling，编译时会完成Tiling。 参数取值： 0：关闭Tiling下沉，默认为0。 1：使能Tiling下沉。 配置示例： {ge::ir\_option::TILING\_SCHEDULE\_OPTIMIZE, "1"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：不支持 Atlas 训练系列产品 ：不支持 Atlas 200I/500 A2 推理产品 ：不支持 |


#### AOE

| 参数 | 说明 |
| --- | --- |
| MDL\_BANK\_PATH | 加载子图调优后自定义知识库的路径。 该参数需要与aclgrphBuildInitialize支持的配置参数中的BUFFER\_OPTIMIZE参数配合使用，仅在数据缓存优化开关打开的情况下生效，通过利用高速缓存暂存数据的方式，达到提升性能的目的。 参数值：模型调优后自定义知识库路径。 参数值格式：支持大小写字母（a\-z，A\-Z）、数字（0\-9）、下划线（\_）、中划线（\-）、句点（.）。 参数默认值：$HOME/Ascend/latest/data/aoe/custom/graph/<soc\_version> 配置示例： {ge::ir\_option::MDL\_BANK\_PATH, "$HOME/custom\_module\_path"} 使用约束： 加载子图调优后自定义知识库路径优先级：MDL\_BANK\_PATH参数加载路径>TUNE\_BANK\_PATH环境变量设置路径>默认子图调优后自定义知识库路径。 如果模型编译前，通过TUNE\_BANK\_PATH环境变量指定了子图调优自定义知识库路径，模型编译时又通过MDL\_BANK\_PATH参数加载了自定义知识库路径，该场景下以MDL\_BANK\_PATH参数加载的路径为准，TUNE\_BANK\_PATH环境变量设置的路径不生效。 MDL\_BANK\_PATH参数和环境变量指定路径都不生效或无可用自定义知识库，则使用默认自定义知识库路径。 如果上述路径下都无可用的自定义知识库，则会查找子图调优内置知识库，该路径为：${INSTALL\_DIR}/<arch>\-linux/data/fusion\_strategy/built\-in，<arch>表示具体操作系统架构。 产品支持情况： Atlas 350 加速卡：不支持 Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 |
| OP\_BANK\_PATH | 算子调优后自定义知识库路径。 参数值格式：支持大小写字母（a\-z，A\-Z）、数字（0\-9）、下划线（\_）、中划线（\-）、句点（.）。 参数默认值：${HOME}/Ascend/latest/data/aoe/custom/op 配置示例： {ge::ir\_option::OP\_BANK\_PATH, "$HOME/custom\_tune\_path"} 使用约束： 加载算子调优后自定义知识库路径优先级：TUNE\_BANK\_PATH环境变量设置路径>OP\_BANK\_PATH参数加载路径>默认算子调优后自定义知识库路径。 如果模型转换前，通过TUNE\_BANK\_PATH环境变量指定了算子调优自定义知识库路径，模型编译时又通过OP\_BANK\_PATH参数加载了自定义知识库路径，该场景下以TUNE\_BANK\_PATH环境变量设置的路径为准，OP\_BANK\_PATH参数加载的路径不生效。 OP\_BANK\_PATH参数和环境变量指定路径都不生效前提下，使用默认自定义知识库路径。 如果上述路径下都无可用的自定义知识库，则会查找算子调优内置知识库。 产品支持情况： Atlas 350 加速卡：不支持 Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 |


#### 试验参数

| 参数 | 说明 |
| --- | --- |
| ALLOW\_HF32 | 该参数预留，当前版本暂不支持。 是否启用HF32自动代替float32数据类型的功能，当前版本该参数仅针对Conv类算子与Matmul类算子生效。 HF32是昇腾推出的专门用于算子内部计算的单精度浮点类型，与其他常用数据类型的比较如下图所示。可见，HF32与float32支持相同的数值范围，但尾数位精度（11位）却接近FP16（10位）。通过降低精度让HF32单精度数据类型代替原有的float32单精度数据类型，可大大降低数据所占空间大小，实现性能的提升。 参数取值： true：针对Conv类算子与Matmul类算子，使能FP32数据类型自动转换为HF32数据类型的功能。 具体哪些算子使能了该功能，请参见CANN软件安装后文件存储路径的opp/built\-in/op\_impl/ai\_core/tbe/impl\_mode/allow\_hf32\_matmul\_t\_conv\_t.ini，该文件不支持用户修改。 false：针对Conv类算子与Matmul类算子，不使能FP32数据类型自动转换为HF32数据类型的功能。 具体哪些算子未使能该功能，请参见CANN软件安装后文件存储路径的opp/built\-in/op\_impl/ai\_core/tbe/impl\_mode/allow\_hf32\_matmul\_f\_conv\_f.ini，该文件不支持用户修改。 参数默认值：针对Conv类算子，使能FP32转换为HF32；针对Matmul类算子，不使能FP32转换为HF32。 使用约束： 针对同一个算子，如果通过OP\_PRECISION\_MODE参数配置了enable\_hi\_float\_32\_execution或enable\_float\_32\_execution，该场景下不建议再与ALLOW\_HF32参数同时使用，若同时使用，则优先级如下： OP\_PRECISION\_MODE(ByNodeName，按节点名称设置精度模式) > ALLOW\_HF32 > OP\_PRECISION\_MODE(ByOpType，按算子类型设置精度模式)。 由于ALLOW\_HF32是使用HF32自动代替float32，要想该参数生效，必须保证被使能的算子输入或者输出类型为float32。由于PRECISION\_MODE\_V2参数默认值为fp16，原始网络模型中算子类型为float32时会被强制转为float16类型，该场景下使用ALLOW\_HF32参数不生效，建议修改PRECISION\_MODE\_V2参数值为origin（PRECISION\_MODE参数默认值为force\_fp16，建议修改为must\_keep\_origin\_dtype或者force\_fp32）。 配置示例： {ge::ir\_option::ALLOW\_HF32, "true"} 产品支持情况： Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 Atlas 推理系列产品 ：不支持 Atlas 训练系列产品 ：不支持 Atlas 200I/500 A2 推理产品 ：不支持 |
| BUILD\_INNER\_MODEL | 当前版本暂不支持。 |
| OO\_LEVEL | 调试功能扩展参数，当前不支持应用于商用产品中，后续版本会作为正式功能更新发布。 图编译多级优化选项，包括子图优化、整图优化、静态Shape模型下沉等。 静态Shape模型下沉：静态Shape模型在编译时即可确定所有算子的输入输出Shape，完成模型级内存编排、算子的Tiling计算等Host侧计算，在模型加载时整体下发到Device流上，但不立即执行，通过下发模型执行Task触发模型中所有Task的执行。 参数取值： O1：会关闭所有图融合和UB融合Pass，只做促成静态下沉的相关优化，如InferShape（进行输出Tensor的shape推导）、常量折叠、死边消除等。 Atlas 350 加速卡不支持UB融合，只关闭图融合Pass。 O3：（默认值）开启所有优化。 使用约束： 取值为O1时，会关闭所有图融合和UB融合PASS，只开启静态下沉的相关PASS，但是如下路径文件中的图融合PASS，由于关闭后会有功能问题，会默认开启： “${INSTALL\_DIR}/<arch>\-linux/lib64/plugin/opskernel/fusion\_pass/config/fusion\_config.json”文件中"ExceptionalPassOfO1Level"字段下的所有图融合PASS。 其中${INSTALL\_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例，安装后文件默认存储路径为：/usr/local/Ascend/cann。<arch>表示具体操作系统架构。 配置示例： {ge::ir\_option::OO\_LEVEL, "O3"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| OO\_CONSTANT\_FOLDING | 调试功能扩展参数，当前不支持应用于商用产品中，后续版本会作为正式功能更新发布。 是否开启常量折叠优化。 常量折叠是将计算图中可以预先确定输出值的节点替换成常量，并对计算图进行一些结构简化的操作。 参数取值： true：（默认值）开启。 false：关闭。 配置示例： {ge::ir\_option::OO\_CONSTANT\_FOLDING, "true"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |
| OO\_DEAD\_CODE\_ELIMINATION | 调试功能扩展参数，当前不支持应用于商用产品中，后续版本会作为正式功能更新发布。 是否开启死边消除优化。 死边消除：switch死边消除，switch的pred输入（1号输入）为const节点时，根据const的值消除其中一条分支：const为true时，消除false分支；const为false时，消除true分支。 参数取值： true：（默认值）开启。 false：关闭。 配置示例： {ge::ir\_option::OO\_DEAD\_CODE\_ELIMINATION, "true"} 产品支持情况： Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 Atlas 350 加速卡：支持 |


#### 后续版本废弃配置

| 参数 | 说明 |
| --- | --- |
| INPUT\_SHAPE\_RANGE | 该参数已废弃，请勿使用。若涉及指定模型输入数据的shape范围，请使用INPUT\_SHAPE参数。 指定模型输入数据的shape range。该功能不能与DYNAMIC\_BATCH\_SIZE、DYNAMIC\_IMAGE\_SIZE、DYNAMIC\_DIMS同时使用。 支持按照name设置："input\_name1:[n1,c1,h1,w1];input\_name2:[n2,c2,h2,w2]"，例如："input\_name1:[8~20,3,5,\-1];input\_name2:[5,3~9,10,\-1]"。指定的节点必须放在双引号中，节点中间使用英文分号分隔。input\_name必须是转换前的网络模型中的节点名称，shape range值必须放在[]中。如果用户知道data节点的name，推荐按照name设置INPUT\_SHAPE\_RANGE。 支持按照index设置："[n1,c1,h1,w1],[n2,c2,h2,w2]"，例如："[8~20,3,5,\-1],[5,3~9,10,\-1]"。可以不指定节点名，默认第一个中括号为第一个输入节点，节点中间使用英文逗号分隔。按照index设置INPUT\_SHAPE\_RANGE时，data节点需要设置属性index，说明是第几个输入，index从0开始。 动态维度有shape范围的用波浪号“~”表示，固定维度用固定数字表示，无限定范围的用\-1表示； 对于标量输入，也需要填入shape范围，表示方法为：[]； 对于多输入场景，例如有三个输入时，如果只有第二个第三个输入具有shape范围，第一个输入为固定输入时，仍需要将固定输入shape填入。 产品支持情况： Atlas 350 加速卡：不支持 Atlas 推理系列产品 ，支持。 Atlas 训练系列产品 ，支持。 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ，支持。 Atlas 200I/500 A2 推理产品 ，不支持。 |
| SHAPE\_GENERALIZED\_BUILD\_MODE | 图编译时Shape的编译方式。该参数在后续版本废弃、新开发功能请不要使用该参数。 shape\_generalized：模糊编译，是指对于支持动态Shape的算子，在编译时系统内部对可变维度做了泛化后再进行编译。 该参数使用场景为：用户想编译一次达到多次执行推理的目的时，可以使用模糊编译特性。 shape\_precise：精确编译，是指按照用户指定的维度信息、在编译时系统内部不做任何转义直接编译。 产品支持情况： Atlas 350 加速卡：不支持 Atlas 推理系列产品 ：支持 Atlas 训练系列产品 ：支持 Atlas 200I/500 A2 推理产品 ：支持 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ：支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ：支持 |
