昇腾社区首页
中文
注册

options参数说明

本章节列出GEInitialize、Session构造函数、AddGraph接口传入的配置参数,分别在全局、session、graph生效。

表1中仅列出当前版本支持的配置参数,如果表中未列出,表示该参数预留或适用于其他芯片版本,用户无需关注。

表1 options配置项

Options key

Options value

必选/可选

全局/session/graph级别生效

ge.graphRunMode

图执行模式,取值:

  • 0:在线推理场景下,请配置为0。
  • 1:训练场景下,请配置为1。

必选

all

ge.exec.deviceId

GE实例运行时操作的设备的逻辑ID,限制有限范围为0~N-1,N表示该台Server上的可用昇腾AI处理器个数;

必选

all

ge.exec.precision_mode

算子精度模式,配置要求为string类型。

  • allow_fp32_to_fp16:算子不支持float32类型时,直接选择float16。
  • force_fp16:算子既支持float16又支持float32数据类型时,强制选择float16。
  • force_fp32:算子既支持float16又支持float32数据类型时,强制选择float32。
  • must_keep_origin_dtype:保持原图精度。
  • allow_mix_precision:开启自动混合精度功能,针对全网中float32数据类型的算子,系统会按照内置优化策略自动将部分float32的算子降低精度到float16,从而在精度损失很小的情况下提升系统性能并减少内存使用。开启该功能开关后,用户可以同时使能Loss Scaling,从而补偿降低精度带来的精度损失。

必选

all

ge.exec.modify_mixlist

配置混合精度黑白灰名单,配置为路径以及文件名,文件为json格式。

allow_mix_precision混合精度模式下,针对全网中float32数据类型的算子,按照内置的优化策略,自动将部分float32的算子降低精度到float16,从而在精度损失很小的情况下提升系统性能并减少内存使用。用户可以在内置优化策略基础上进行调整,自行指定哪些算子允许降精度,哪些算子不允许降精度。

配置示例:
custom_op.parameter_map["modify_mixlist"].s = tf.compat.as_bytes("/home/test/ops_info.json")

ops_info.json中可以指定算子类型,多个算子使用英文逗号分隔,样例如下:

{
  "black-list": {                  // 黑名单
     "to-remove": [                // 黑名单算子转换为灰名单算子
     "Yolo"
     ],
     "to-add": [                   // 白名单或灰名单算子转换为黑名单算子
     "Matmul",
     "Cast"
     ]
  },
  "white-list": {                  // 白名单
     "to-remove": [                // 白名单算子转换为灰名单算子 
     "Conv2D"
     ],
     "to-add": [                   // 黑名单或灰名单算子转换为白名单算子
     "Bias"
     ]
  }
}

如何查询混合精度场景下算子的内置优化策略:内置优化策略在“OPP安装目录/opp/op_impl/built-in/ai_core/tbe/config/ascend910/aic-ascend910-ops-info.json”,例如:

"Conv2D":{
    "precision_reduce":{
        "flag":"true"
},
  • true:(白名单)允许将当前float32类型的算子,降低精度到float16。
  • false:(黑名单)不允许将当前float32类型的算子,降低精度到float16。
  • 不配置:(灰名单)当前算子的混合精度处理机制和前一个算子保持一致,即如果前一个算子支持降精度处理,当前算子也支持降精度;如果前一个算子不允许降精度,当前算子也不支持降精度。

可选

all

ge.socVersion

不带芯片运行的离线编译场景,用于指定编译模型的目标部署芯片型号。

可从“Ascend-cann-toolkit安装目录/ascend-toolkit/latest/data/platform_config”查看,".ini"文件的文件名即为对应的${soc_version}。如果用户根据上述方法仍旧无法确定具体使用的${soc_version},则:
  1. 单击如下手册中的链接并进入该手册,CANN Ascend-DMI工具用户指南
  2. 完成使用工具>使用前准备,然后进入使用工具>设备实时状态查询章节。
  3. 使用相关命令查看芯片的详细信息,例如使用ascend-dmi -i -dt命令查看芯片的详细信息,返回信息中“Chip Name”对应取值,去掉空格后,即为具体使用的${soc_version}

可选

all

ge.exec.profilingMode

是否开启Profiling功能。

  • 1:开启Profiling功能,从ge.exec.profilingOptions读取Profiling的采集选项。
  • 0:关闭Profiling功能,默认关闭。

可选

all

ge.exec.profilingOptions

Profiling配置选项。

  • output:Profiling采集结果文件保存路径。该参数指定的目录需要在启动训练的环境上(容器或Host侧)提前创建且确保安装时配置的运行用户具有读写权限,支持配置绝对路径或相对路径(相对执行命令行时的当前路径)。
    • 绝对路径配置以“/”开头,例如:/home/HwHiAiUser/output。
    • 相对路径配置直接以目录名开始,例如:output。
  • storage_limit:指定落盘目录允许存放的最大文件容量。当Profiling数据文件在磁盘中即将占满本参数设置的最大存储空间(剩余空间<=20MB)或剩余磁盘总空间即将被占满时(总空间剩余<=20MB),则将磁盘内最早的文件进行老化删除处理。

    单位为MB,取值范围为[200, 4294967295],默认未配置本参数。

    参数值配置格式为数值+单位,例如"storage-limit": "200MB"。

    未配置本参数时,不开启数据老化功能。

  • training_trace:采集迭代轨迹数据,即训练任务及AI软件栈的软件信息,实现对训练任务的性能分析,重点关注数据增强、前后向计算、梯度聚合更新等相关数据。取值on/off。如果将该参数配置为“on”和“off”之外的任意值,则按配置为“off”处理。
  • task_trace:采集任务轨迹数据,即昇腾AI处理器HWTS,分析任务开始、结束等信息。取值on/off。如果将该参数配置为“on”和“off”之外的任意值,则按配置为“off”处理。
  • hccl:控制hccl数据采集开关,可选on或off,默认为off。
  • aicpu:采集aicpu数据增强的Profiling数据。取值on/off。如果将该参数配置为“on”和“off”之外的任意值,则按配置为“off”处理。
  • fp_point:training_trace为on时需要配置。指定训练网络迭代轨迹正向算子的开始位置,用于记录前向计算开始时间戳。配置值为指定的正向第一个算子名字。用户可以在训练脚本中,通过tf.io.write_graph将graph保存成.pbtxt文件,并获取文件中的name名称填入;也可直接配置为空,由系统自动识别正向算子的开始位置,例如"fp_point":""。
  • bp_point:training_trace为on时需要配置。指定训练网络迭代轨迹反向算子的结束位置,记录后向计算结束时间戳,BP_POINT和FP_POINT可以计算出正反向时间。配置值为指定的反向最后一个算子名字。用户可以在训练脚本中,通过tf.io.write_graph将graph保存成.pbtxt文件,并获取文件中的name名称填入;也可直接配置为空,由系统自动识别反向算子的结束位置,例如"bp_point":""。
  • aic_metrics:AI Core的硬件信息,取值如下(单次采集仅支持配置单个参数项):

    ArithmeticUtilization:各种计算类指标占比统计

    PipeUtilization: 计算单元和搬运单元耗时占比,该项为默认值

    Memory:外部内存读写类指令占比

    MemoryL0:内部内存读写类指令占比

    ResourceConflictRatio:流水线队列类指令占比

  • msproftx:控制msproftx用户和上层框架程序输出性能数据的开关,可选on或off,默认值为off。

    Profiling开启msproftx功能之前,需要在程序内调用msproftx相关接口来开启程序的Profiling数据流的输出,详细操作请参见应用软件开发指南 (C&C++)手册“高级功能>Profiling性能数据采集”章节。

配置示例:

std::map<ge::Ascendstring, ge::Ascendstring> ge_options = {{"ge.exec.deviceId", "0"},
                                  {"ge.graphRunMode", "1"},
                                  {"ge.exec.profilingMode", "1"},
                                  {"ge.exec.profilingOptions", R"({"output":"/tmp/profiling","training_trace":"on","fp_point":"resnet_model/conv2d/Conv2Dresnet_model/batch_normalization/FusedBatchNormV3_Reduce","bp_point":"gradients/AddN_70"})"}};

可选

all

ge.autoTuneMode

用户可以控制TBE算子编译时,是否通过Auto Tune工具对算子进行调优,以便在昇腾AI处理器上寻找最好的性能配置。

  • GA(Genetic Algorithm):遗传算法,用于设置Cube算子的调优性能。
  • RL(Reinforcement Learning):强化学习,用于设置Vector算子的调优性能。

支持配置多种模式,多种模式放在双引号中,中间用英文逗号分隔,配置示例:"RL,GA";若未配置该参数,则自动关闭自动调优功能。

可选

all

ge.exec.enableDump

是否开启dump功能,默认关闭。

  • 1:开启dump功能,从dump_path读取dump文件保存路径,dump_path为None时会产生异常。
  • 0:关闭dump功能。

可选

全局/session

ge.exec.dumpPath

Dump文件保存路径。开启dump和溢出检测功能时,该参数必须配置。

该参数指定的目录需要在启动训练的环境上(容器或Host侧)提前创建且确保安装时配置的运行用户具有读写权限,支持配置绝对路径或相对路径(相对执行命令行时的当前路径)。

  • 绝对路径配置以“/”开头,例如:/home/HwHiAiUser/output。
  • 相对路径配置直接以目录名开始,例如:output。

可选

全局/session

ge.exec.dumpStep

指定采集哪些迭代的dump数据。默认值:None,表示所有迭代都会产生dump数据。

多个迭代用“|”分割,例如:0|5|10;也可以用"-"指定迭代范围,例如:0|3-5|10。

可选

全局/session

ge.exec.dumpMode

dump模式,用于指定dump算子输入还是输出数据。取值如下:

  • input:仅dump算子输入数据
  • output:仅dump算子输出数据,默认为output
  • all:dump算子输入和输出数据

可选

全局/session

ge.exec.enableDumpDebug

是否开启溢出检测功能,默认关闭。

  • 1:开启溢出检测功能,从ge.exec.dumpPath读取Dump文件保存路径,路径配置为None时会产生异常。
  • 0:关闭溢出检测功能。

可选

全局/session

ge.exec.dumpDebugMode

溢出检测模式,取值如下:

  • aicore_overflow:AI Core算子溢出检测,检测在算子输入数据正常的情况下,输出是否不正常的极大值(如float16下65500,38400,51200这些值)。一旦检测出这类问题,需要根据网络实际需求和算子逻辑来分析溢出原因并修改算子实现。
  • atomic_overflow:Atomic Add溢出检测,即除了AICore之外,还有其他涉及浮点计算的模块,比如SDMA,检测这些部分出现的溢出问题。
  • all:同时进行AI Core算子溢出检测和Atomic Add溢出检测。

可选

全局/session

ge.exec.disableReuseMemory

内存复用开关; 默认为0。

  • 1:关闭内存复用;
  • 0:开启内存复用。

可选

all

ge.graphMemoryMaxSize

网络静态内存和最大动态内存,可根据网络大小指定。单位:Byte,取值范围:[0, 256*1024*1024*1024]或[0, 274877906944]。当前受芯片硬件限制,graph_memory_max_size和variable_memory_max_size总和最大支持31G。如果不设置,默认为26GB。

可选

all

ge.variableMemoryMaxSize

变量内存,可根据网络大小指定。单位:Byte,取值范围:[0,256*1024*1024*1024]或[0, 274877906944]。当前受芯片硬件限制,graph_memory_max_size和variable_memory_max_size总和最大支持31G。如果不设置,默认为5GB。

可选

all

ge.exec.variable_acc

是否开启变量格式优化。

  • True:开启,默认开启。
  • False:关闭。

为了提高训练效率,在网络执行的变量初始化过程中,将变量转换成更适合在昇腾AI处理器上运行的数据格式。但在用户特殊要求场景下,可以选择关闭该功能开关。

可选

all

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相同。

  • world rank id,指进程在hccl world group中对应的rank标识序号,范围:0~(rank size-1)。
  • local rank id,指group内进程在其所在Server内的rank编号,范围:0~(local rank size-1)。

可选

all

ge.opDebugLevel

算子debug功能开关,取值:

  • 0:不开启算子debug功能,默认为0。
  • 1:开启算子debug功能,在当前执行路径下的kernel_meta文件夹中生成TBE指令映射文件(算子cce文件*.cce、python-cce映射文件*_loc.json、.o和.json文件),用于后续工具进行AICore Error问题定位。
  • 2:开启算子debug功能,在当前执行路径下的kernel_meta文件夹中生成TBE指令映射文件(算子cce文件*.cce、python-cce映射文件*_loc.json、.o和.json文件),并关闭编译优化开关(开启ccec编译器选项-O0-g),用于后续工具进行AICore Error问题定位,可定位到出错算子的代码行号。
  • 3:不开启算子debug功能,且在当前执行路径下的kernel_meta文件夹中保留.o和.json文件。
  • 4:不开启算子debug功能,在当前执行路径下的kernel_meta文件夹中保留.o(算子二进制文件)和.json文件(算子描述文件),生成TBE指令映射文件(算子cce文件*.cce)和UB融合计算描述文件({$kernel_name}_compute.json)。
    须知:

    训练执行时,建议配置为0或3。如果需要进行问题定位,再选择调试开关选项1和2,是因为加入了调试功能会导致网络性能下降。

可选

all

ge.op_compiler_cache_mode

用于配置算子编译磁盘缓存模式。

  • enable:表示启用算子编译缓存。启用后可以避免针对相同编译参数及算子参数的算子重复编译,从而提升编译速度。
  • disable:表示禁用算子编译缓存。默认为disable。
  • force:表示强制刷新缓存,即先删除已有缓存,再重新编译并加入缓存。当用户的python或者依赖库等发生变化时,需要指定为force用于清理已有的缓存。

使用说明:

  • 该参数和ge.op_compiler_cache_dir配合使用,且只有ge.opDebugLevel为0或3的情况下才能启用缓存功能。
  • 由于force选项会先删除已有缓存,所以不建议在程序并行编译时设置,否则可能会导致其他模型使用的缓存内容被清除而导致失败。
  • 建议模型最终发布时设置编译缓存选项为disable或者force。

可选

all

ge.op_compiler_cache_dir

用于配置算子编译磁盘缓存的目录。

路径支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、中文字符。

如果参数指定的路径存在且有效,则在指定的路径下自动创建子目录kernel_cache;如果指定的路径不存在但路径有效,则先自动创建目录,然后在该路径下自动创建子目录kernel_cache。

默认值:$HOME/atc_data

可选

all

ge.debugDir

用于配置保存算子编译生成的调试相关的过程文件的路径,包括算子.o/.json/.cce等文件。

默认生成在当前训练脚本执行路径下。

可选

all

ge.mdl_bank_path

加载模型调优后自定义知识库的路径。该参数需要与BUFFER_OPTIMIZE参数配合使用。

参数值:模型调优后自定义知识库路径。

参数值格式:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)。

参数默认值:${install_path}/compiler/data/fusion_strategy/custom$

如果默认路径下不存在自定义知识库,则会查找模型的内置知识库,该路径为:${install_path}/compiler/data/fusion_strategy/built-in

可选

all

ge.op_bank_path

加载Auto Tune调优后自定义知识库的路径。该参数不能与AUTO_TUNE_MODE参数同时使用。

参数值:Auto Tune调优后自定义知识库路径。

参数值格式:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)。

参数默认值:

  • GA调优后默认自定义知识库路径:${install_path}/fwkacllib/data/tiling/${soc_version}/custom/
  • RL调优后默认自定义知识库路径:${install_path}/fwkacllib/data/rl/${soc_version}/custom/

如果默认路径下不存在自定义知识库,则会查找Auto Tune的内置知识库。

如果模型转换前,通过TUNE_BANK_PATH环境变量指定了自定义知识库路径,模型转换时设置了OP_BANK_PATH参数,该场景下OP_BANK_PATH参数加载的自定义知识库路径不生效。以TUNE_BANK_PATH环境变量设置的自定义知识库路径为准。

可选

all

ge.exec.dynamicGraphExecuteMode

对于动态输入场景,需要通过该参数设置执行模式,取值为:dynamic_execute。

该模式下,前端框架调用AddGraph,获取ge.exec.dataInputsShapeRange中配置的shape范围进行图编译,编译时输入即为unknown,整图切分为一个unknown子图。

可选

graph

ge.exec.dataInputsShapeRange

动态输入的shape范围。例如全图有2个data输入,配置示例为:

std::map<ge::Ascendstring, ge::Ascendstring> ge_options = {{"ge.exec.deviceId", "0"},
      {"ge.graphRunMode", "1"},
      {"ge.exec.dynamicGraphExecuteMode", "dynamic_execute"},
      {"ge.exec.dataInputsShapeRange", "[128 ,3~5, 2~128, -1],[ 128 ,3~5, 2~128, -1]"}};
  • 设置格式为:"[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填入options字段内,例如:
    {"ge.exec.dataInputsShapeRange", "[3,3,4,10], [-1,3,2~1000,-1],[-1,-1,-1,-1]"}};

可选

graph

ge.exec.op_precision_mode

设置具体某个算子的精度模式,通过该参数传入自定义的精度模式配置文件op_precision.ini,可以为不同的算子设置不同的精度模式。

ini文件格式要求:

AvgPoolV2=high_precision
ReduceMeanD=high_performance

可选

全局

ge.opSelectImplmode

昇腾AI处理器部分内置算子有高精度和高性能实现方式,用户可以通过该参数配置模型编译时选择哪种算子。取值包括:

  • high_precision:表示算子选择高精度实现。高精度实现算子是指在fp16输入的情况下,通过泰勒展开/牛顿迭代等手段进一步提升算子的精度。
  • high_performance:表示算子选择高性能实现。高性能实现算子是指在fp16输入的情况下,不影响网络精度前提的最优性能实现。默认为high_performance。

可选

全局

ge.optypelistForImplmode

列举算子optype的列表,该列表中的算子使用ge.opSelectImplmode参数指定的模式,当前支持的算子为Pooling、SoftmaxV2、LRN、ROIAlign。

该参数需要与ge.opSelectImplmode参数配合使用,例如:

ge.opSelectImplmode配置为high_precision

ge.optypelistForImplmode配置为Pooling。

可选

全局

ge.shape_generalized_build_mode

当前版本暂不支持。

可选

graph

ge.exec.hcclExecuteTimeOut

集合通信超时时间,单位为s,默认值600s。

可选

session

ge.exec.opWaitTimeout

算子等待超时时间,单位为s,默认值120s。

可选

全局

ge.exec.opExecuteTimeout

算子执行超时时间,单位为s,默认值90s。

可选

全局