下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

options参数说明

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

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

表1 options配置项

Options key

Options value

必选/可选

全局/session/graph级别生效

ge.graphRunMode

图执行模式,取值:

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

必选

全局/session

ge.exec.deviceId

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

必选

all

ge.inputShape

指定模型输入数据的shape。

例如:"input_name:n,c,h,w"。指定的节点必须放在双引号中;若模型有多个输入,则不同输入之间使用英文分号分隔,例如,"input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2"。input_name必须是转换前的网络模型中的节点名称。

  • 固定shape,例如某网络的输入shape信息,输入1input_0_0 [16,32,208,208],输入2:input_1_0 [16,64,208,208],则INPUT_SHAPE的配置信息为:
    {"ge.inputShape", "input_0_0:16,32,208,208;input_1_0:16,64,208,208"}
  • 若原始模型中输入数据的某个或某些维度值不固定,当前支持通过设置shape分档或设置shape范围两种方式转换模型:
    • 设置shape分档,包括设置BatchSize档位、设置分辨率档位、设置动态维度档位(最多4维)。

      设置INPUT_SHAPE参数时,将对应维度值设置为-1,同时配合使用DYNAMIC_BATCH_SIZE(设置BatchSize档位)或DYNAMIC_IMAGE_SIZE(设置分辨率档位)或DYNAMIC_DIMS(设置动态维度档位)参数。详细用法请参考DYNAMIC_BATCH_SIZE、DYNAMIC_IMAGE_SIZE、DYNAMIC_DIMS参数说明。

    • 设置shape范围。Atlas 200/300/500 推理产品Atlas 200/500 A2推理产品不支持设置shape范围

      设置INPUT_SHAPE参数时,可将对应维度的值设置为范围。

      • 支持按照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设置。

      如果用户不想指定维度的的范围或具体取值,则可以将其设置为-1,表示此维度可以使用>=1的任意取值。

说明:

上述场景下,ge.inputShape为可选设置。如果不设置,系统直接读取对应Data节点的shape信息,如果设置,以此处设置的为准,同时刷新对应Data节点的shape信息。

可选

session/graph

ge.dynamicDims

设置ND格式下动态维度的档位。适用于执行推理时,每次处理任意维度的场景。该参数需要与ge.inputShape配合使用。

参数通过"dim1,dim2,dim3;dim4,dim5,dim6;dim7,dim8,dim9"的形式设置,所有档位必须放在双引号中,每档中间使用英文分号分隔,每档中的dim值与ge.inputShape参数中的-1标识的参数依次对应,inputShape参数中有几个-1,则每档必须设置几个维度。

支持的档位数取值范围为:(1,100],每档最多支持任意指定4个维度,建议配置为3~4档。

使用示例:

  • 若模型只有一个输入:
    {"ge.inputShape", "data:1,-1,-1"}
    {"ge.dynamicDims", "1,2;3,4;5,6;7,8"}
    // graph运行时,支持的data算子的shape为1,1,2; 1,3,4; 1,5,6; 1,7,8
  • 若网络模型有多个输入:

    每档中的dim值与模型输入参数中的-1标识的参数依次对应,模型输入参数中有几个-1,则每档必须设置几个维度。例如网络模型有三个输入,分别为data(1,1,40,T),label(1,T),mask(T,T) , 其中T为动态可变。则配置示例为:

    {"ge.inputShape", "data:1,1,40,-1;label:1,-1;mask:-1,-1" }
    {"ge.dynamicDims", "20,20,1,1;40,40,2,2;80,60,4,4"}
    // graph运行时,支持的输入dims组合档数分别为:
    //第0档:data(1,1,40,20)+label(1,20)+mask(1,1)
    //第1档:data(1,1,40,40)+label(1,40)+mask(2,2)
    //第2档:data(1,1,40,80)+label(1,60)+mask(4,4)

可选

session/graph

ge.dynamicNodeType

用于指定动态输入的节点类型。

  • 0:dataset输入为动态输入。
  • 1:placeholder输入为动态输入。

当前不支持dataset和placeholder输入同时为动态输入。

可选

session/graph

ge.exec.precision_mode

算子精度模式,配置要求为string类型。不能与ge.exec.precision_mode_v2同时使用,建议使用ge.exec.precision_mode_v2参数。

  • force_fp32/cube_fp16in_fp32out
    配置为force_fp32或cube_fp16in_fp32out,效果等同,系统内部都会根据矩阵类算子或矢量类算子,来选择不同的处理方式。cube_fp16in_fp32out为新版本中新增的,对于矩阵计算类算子,该选项语义更清晰。
    • 对于矩阵计算类算子,系统内部会按算子实现的支持情况处理:
      1. 优先选择输入数据类型为float16且输出数据类型为float32;
      2. 如果1中的场景不支持,则选择输入数据类型为float32且输出数据类型为float32;
      3. 如果2中的场景不支持,则选择输入数据类型为float16且输出数据类型为float16;
      4. 如果3中的场景不支持,则报错。
    • 对于矢量计算类算子,表示网络模型中算子支持float16和float32时,强制选择float32,若原图精度为float16,也会强制转为float32。

      如果网络模型中存在部分算子,并且该算子实现不支持float32,比如某算子仅支持float16类型,则该参数不生效,仍然使用支持的float16;如果该算子不支持float32,且又配置了黑名单(precision_reduce = false),则会使用float32的AI CPU算子;如果AI CPU算子也不支持,则执行报错。

  • force_fp16:

    表示网络模型中算子支持float16和float32时,强制选择float16。

  • allow_fp32_to_fp16:
    • 对于矩阵类算子,使用float16。
    • 对于矢量类算子,优先保持原图精度,如果网络模型中算子支持float32,则保留原始精度float32,如果网络模型中算子不支持float32,则直接降低精度到float16。
  • must_keep_origin_dtype:

    表示保持原图精度。

    • 如果原图中某算子精度为float16,AI Core中该算子的实现不支持float16、仅支持float32,则系统内部会自动采用高精度float32。
    • 如果原图中某算子精度为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和float32数据类型来处理神经网络的过程。allow_mix_precision_fp16为新版本中新增的,语义更清晰,便于理解。

    针对网络模型中float32数据类型的算子,按照内置的优化策略,自动将部分float32的算子降低精度到float16,从而在精度损失很小的情况下提升系统性能并减少内存使用。

    若配置了该种模式,则可以在OPP软件包安装路径${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/<soc_version>/aic-<soc_version>-ops-info.json内置优化策略文件中查看“precision_reduce”参数的取值:

    • 若取值为true(白名单),则表示允许将当前float32类型的算子,降低精度到float16。
    • 若取值为false(黑名单),则不允许将当前float32类型的算子降低精度到float16,相应算子仍旧使用float32精度。
    • 若网络模型中算子没有配置该参数(灰名单),当前算子的混合精度处理机制和前一个算子保持一致,即如果前一个算子支持降精度处理,当前算子也支持降精度;如果前一个算子不允许降精度,当前算子也不支持降精度。
  • allow_mix_precision_bf16:Atlas A2训练系列产品场景支持此配置。

    表示使用混合精度bfloat16和float32数据类型来处理神经网络的过程。针对原始模型中float32数据类型的算子,按照内置的优化策略,自动将部分float32的算子降低精度到bfloat16,从而在精度损失很小的情况下提升系统性能并减少内存使用;如果算子不支持bfloat16和float32,则使用AI CPU算子进行计算;如果AI CPU算子也不支持,则执行报错。

    若配置了该种模式,则可以在OPP软件包安装路径${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/<soc_version>/aic-<soc_version>-ops-info.json内置优化策略文件中查看“precision_reduce”参数的取值:

    • 若取值为true(白名单),则表示允许将当前float32类型的算子,降低精度到bfloat16。
    • 若取值为false(黑名单),则不允许将当前float32类型的算子降低精度到bfloat16,相应算子仍旧使用float32精度。
    • 若网络模型中算子没有配置该参数(灰名单),当前算子的混合精度处理机制和前一个算子保持一致,即如果前一个算子支持降精度处理,当前算子也支持降精度;如果前一个算子不允许降精度,当前算子也不支持降精度。
  • allow_fp32_to_bf16:仅Atlas A2训练系列产品场景支持此配置。
    • 对于矩阵计算类算子,使用bfloat16。
    • 对于矢量计算类算子,优先保持原图精度,如果原始模型中算子支持float32,则保留原始精度float32;如果原始模型中算子不支持float32,则直接降低精度到bfloat16;如果算子不支持bfloat16和float32,则使用AI CPU算子进行计算;如果AI CPU算子也不支持,则执行报错。

参数默认值:

训练场景下,针对Atlas 训练系列产品,参数默认值为“allow_fp32_to_fp16”。

训练场景下,针对Atlas A2训练系列产品,参数默认值为“must_keep_origin_dtype”。

在线推理场景下,参数默认值为“force_fp16”。

可选

all

ge.exec.precision_mode_v2

算子精度模式,配置要求为string类型。不能与ge.exec.precision_mode同时使用,建议使用ge.exec.precision_mode_v2参数。

  • fp16

    算子支持float16和float32数据类型时,强制选择float16。

  • origin

    表示保持原图精度。

    • 如果原图中某算子精度为float16,AI Core中该算子的实现不支持float16、仅支持float32,则系统内部会自动采用高精度float32。
    • 如果原图中某算子精度为float32,AI Core中该算子的实现不支持float32类型、仅支持float16类型,则会使用float32的AI CPU算子;如果AI CPU算子也不支持,则执行报错。
  • cube_fp16in_fp32out
    算子既支持float32又支持float16数据类型时,系统内部根据算子类型不同,选择不同的处理方式。
    • 对于矩阵计算类算子,系统内部会按算子实现的支持情况处理:
      1. 优先选择输入数据类型为float16且输出数据类型为float32;
      2. 如果1中的场景不支持,则选择输入数据类型为float32且输出数据类型为float32;
      3. 如果2中的场景不支持,则选择输入数据类型为float16且输出数据类型为float16;
      4. 如果3中的场景不支持,则报错。
    • 对于矢量计算类算子,表示网络模型中算子支持float16和float32时,强制选择float32,若原图精度为float16,也会强制转为float32。

      如果网络模型中存在部分算子,并且该算子实现不支持float32,比如某算子仅支持float16类型,则该参数不生效,仍然使用支持的float16;如果该算子不支持float32,且又配置了黑名单(precision_reduce = false),则会使用float32的AI CPU算子;如果AI CPU算子也不支持,则执行报错。

  • mixed_float16

    表示使用混合精度float16和float32数据类型来处理神经网络。针对网络模型中float32数据类型的算子,按照内置的优化策略,自动将部分float32的算子降低精度到float16,从而在精度损失很小的情况下提升系统性能并减少内存使用。

    若配置了该种模式,则可以在OPP软件包安装路径${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/<soc_version>/aic-<soc_version>-ops-info.json内置优化策略文件中查看“precision_reduce”参数的取值:

    • 若取值为true(白名单),则表示允许将当前float32类型的算子,降低精度到float16。
    • 若取值为false(黑名单),则不允许将当前float32类型的算子降低精度到float16,相应算子仍旧使用float32精度。
    • 若网络模型中算子没有配置该参数(灰名单),当前算子的混合精度处理机制和前一个算子保持一致,即如果前一个算子支持降精度处理,当前算子也支持降精度;如果前一个算子不允许降精度,当前算子也不支持降精度。
  • mixed_bfloat16Atlas A2训练系列产品场景支持此配置

    表示使用混合精度bfloat16和float32数据类型来处理神经网络。针对网络模型中float32数据类型的算子,按照内置的优化策略,自动将部分float32的算子降低精度到bfloat16,从而在精度损失很小的情况下提升系统性能并减少内存使用;如果算子不支持bfloat16和float32,则使用AI CPU算子进行计算;如果AI CPU算子也不支持,则执行报错。

    若配置了该种模式,则可以在OPP软件包安装路径${INSTALL_DIR}/opp/built-in/op_impl/ai_core/tbe/config/<soc_version>/aic-<soc_version>-ops-info.json内置优化策略文件中查看“precision_reduce”参数的取值:

    • 若取值为true(白名单),则表示允许将当前float32类型的算子,降低精度到bfloat16。
    • 若取值为false(黑名单),则不允许将当前float32类型的算子降低精度到bfloat16,相应算子仍旧使用float32精度。
    • 若网络模型中算子没有配置该参数(灰名单),当前算子的混合精度处理机制和前一个算子保持一致,即如果前一个算子支持降精度处理,当前算子也支持降精度;如果前一个算子不允许降精度,当前算子也不支持降精度。

参数默认值:

训练场景下,针对Atlas 训练系列产品,该配置项无默认取值,以“precision_mode”参数的默认值为准,即allow_fp32_to_fp16”。

训练场景下,针对Atlas A2训练系列产品,参数默认值为“origin”。

在线推理场景下,参数默认值为“fp16”。

可选

all

ge.exec.modify_mixlist

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

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

配置示例:
{"ge.exec.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"
     ]
  }
}

上述配置文件样例中展示的算子仅作为参考,请基于实际硬件环境和具体的算子内置优化策略进行配置。混合精度场景下算子的内置优化策略可在“OPP安装目录/opp/built-in/op_impl/ai_core/tbe/config/soc_version/aic-soc_version-ops-info.json”文件中查询,例如:

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

可选

all

ge.socVersion

指定编译优化模型的昇腾AI处理器版本号。

如果无法确定具体的<soc_version>,则在安装昇腾AI处理器的服务器执行npu-smi info命令进行查询,在查询到的“Name”前增加Ascend信息,例如“Name”对应取值为xxxyy,实际配置的<soc_version>值为Ascendxxxyy

可选

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。
    • 该参数优先级高于ASCEND_WORK_PATH。
  • storage_limit:指定落盘目录允许存放的最大文件容量。当Profiling数据文件在磁盘中即将占满本参数设置的最大存储空间(剩余空间<=20MB)或剩余磁盘总空间即将被占满时(总空间剩余<=20MB),则将磁盘内最早的文件进行老化删除处理。

    取值范围为[200, 4294967295],单位为MB,例如--storage-limit=200MB,默认未配置本参数。

    未配置本参数时,默认取值为Profiling数据文件存放目录所在磁盘可用空间的90%。

  • training_trace:采集迭代轨迹数据开关,即训练任务及AI软件栈的软件信息,实现对训练任务的性能分析,重点关注前后向计算和梯度聚合更新等相关数据。当采集正向和反向算子数据时该参数必须配置为on。
  • task_trace、task_time:控制采集算子下发耗时和算子执行耗时的开关。涉及在task_time、op_summary、op_statistic等文件中输出相关耗时数据。配置值:
    • on:开启,默认值,和配置为l1的效果一样。
    • off:关闭。
    • l0:采集算子下发耗时、算子执行耗时数据。与l1相比,由于不采集算子基本信息数据,采集时性能开销较小,可更精准统计相关耗时数据。
    • l1:采集算子下发耗时、算子执行耗时数据以及算子基本信息数据,提供更全面的性能分析数据。

    当训练profiling mode开启即采集训练Profiling数据时,配置task_trace为on的同时training_trace也必须配置为on。

  • hccl:控制hccl数据采集开关,可选on或off,默认为off。
  • aicpu:采集AICPU算子的详细信息,如:算子执行时间、数据拷贝时间等。取值on/off,默认为off。如果将该参数配置为“on”和“off”之外的任意值,则按配置为“off”处理。
  • fp_point:指定训练网络迭代轨迹正向算子的开始位置,用于记录前向计算开始时间戳。配置值为指定的正向第一个算子名字。用户可以在训练脚本中,通过tf.io.write_graph将graph保存成.pbtxt文件,并获取文件中的name名称填入;也可直接配置为空,由系统自动识别正向算子的开始位置,例如"fp_point":""。
  • bp_point:指定训练网络迭代轨迹反向算子的结束位置,记录后向计算结束时间戳,BP_POINT和FP_POINT可以计算出正反向时间。配置值为指定的反向最后一个算子名字。用户可以在训练脚本中,通过tf.io.write_graph将graph保存成.pbtxt文件,并获取文件中的name名称填入;也可直接配置为空,由系统自动识别反向算子的结束位置,例如"bp_point":""。
  • aic_metrics:AI Core和AI Vector Core的硬件信息,取值如下:
    • ArithmeticUtilization:各种计算类指标占比统计。
    • PipeUtilization: 计算单元和搬运单元耗时占比,该项为默认值。
    • Memory:外部内存读写类指令占比。
    • MemoryL0:内部内存读写类指令占比。
    • MemoryUB:内部内存读写指令占比。
    • ResourceConflictRatio:流水线队列类指令占比。
    • L2Cache:读写L2 Cache命中次数和缺失后重新分配次数,仅Atlas A2 训练系列产品支持该采集项。

    Atlas 训练系列产品:支持AI Core采集。

    Atlas A2 训练系列产品:支持AI Core和AI Vector Core采集。

    说明:
    支持自定义需要采集的寄存器,例如:"aic_metrics":"Custom:0x49,0x8,0x15,0x1b,0x64,0x10"。
    • Custom字段表示自定义类型,配置为具体的寄存器值,取值范围为[0x1, 0x6E]。
    • 配置的寄存器数最多不能超过8个,寄存器通过“,”区分开。
    • 寄存器的值支持十六进制或十进制。
  • l2:控制L2 Cache采样数据的开关,可选on或off,默认为off。
  • msproftx:控制msproftx用户和上层框架程序输出性能数据的开关,可选on或off,默认值为off。

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

  • runtime_api:控制runtime api性能数据采集开关,可选on或off,默认为off。可采集runtime-api性能数据,包括Host与Device之间、Device间的同步异步内存复制时延等。
  • sys_hardware_mem_freq:DDR、HBM带宽采集频率、LLC的读写带宽数据采集频率以及acc_pmu数据和SOC传输带宽信息采集频率,取值范围为[1,100],单位hz。
    • Atlas 推理系列产品(Ascend 310P处理器):支持采集DDR、LLC。
    • Atlas 训练系列产品:支持采集DDR、HBM、LLC。
    • Atlas A2 训练系列产品:支持采集HBM、LLC、acc_pmu数据、SoC传输带宽信息。
  • llc_profiling:LLC Profiling采集事件,可以设置为:
    • Atlas 推理系列产品(Ascend 310P处理器),可选read(读事件,三级缓存读速率)或write(写事件,三级缓存写速率),默认为read。
    • Atlas 训练系列产品,可选read(读事件,三级缓存读速率)或write(写事件,三级缓存写速率),默认为read。
    • Atlas A2 训练系列产品,可选read(读事件,三级缓存读速率)或write(写事件,三级缓存写速率),默认为read。
  • sys_io_sampling_freq:NIC、ROCE采集频率。取值范围为[1,100],单位hz。
    • Atlas 推理系列产品(Ascend 310P处理器):不支持该参数。
    • Atlas 训练系列产品:支持采集NIC和和ROCE。
    • Atlas A2 训练系列产品:支持采集NIC和ROCE。
  • sys_interconnection_freq:集合通信带宽数据(HCCS)、PCIe数据采集频率以及片间传输带宽信息采集频率。取值范围为[1,50],单位hz。
    • Atlas 推理系列产品(Ascend 310P处理器):支持采集PCIe数据。
    • Atlas 训练系列产品:支持采集HCCS、PCIe数据。
    • Atlas A2 训练系列产品:支持采集HCCS、PCIe数据、片间传输带宽信息。
  • dvpp_freq:DVPP采集频率。取值范围为[1,100],单位hz。
  • instr_profiling_freq:AI Core和AI Vector的带宽和延时采集频率。取值范围[300,30000],单位cycle。仅Atlas A2 训练系列产品支持该参数。
    说明:

    instr_profiling_freq与training_trace、task_trace、hccl、aicpu、fp_point、bp_point、aic_metrics、l2、task_time、runtime_api互斥,无法同时执行。

  • host_sys:Host侧性能数据采集开关。取值包括cpu和mem,可选其中的一项或多项,选多项时用英文逗号隔开,例如"host_sys": "cpu,mem"。
  • host_sys_usage:采集Host侧系统及所有进程的CPU和内存数据。取值包括cpu和mem,可选其中的一项或多项,选多项时用英文逗号隔开。
  • host_sys_usage_freq:配置Host侧系统和所有进程CPU、内存数据的采集频率。取值范围为[1,50],默认值50,单位hz。

配置示例:

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.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.dumpData

指定算子dump内容类型,取值:

  • tensor: dump算子数据,默认为tensor。
  • stats: dump算子统计数据,保存结果为csv格式。一般情况下dump算子数据量大,用户可以尝试dump算子统计数据。

可选

全局

ge.exec.dumpLayer

指定需要dump的算子。

取值为算子名,多个算子名之间使用空格分隔,例如:“layer1 layer2 layer3”

可选

全局/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功能,在当前执行路径不生成算子编译目录kernel_meta。默认为0。
  • 1:开启算子debug功能,在当前执行路径生成kernel_meta文件夹,并在该文件夹下生成.o(算子二进制文件)、.json文件(算子描述文件)以及TBE指令映射文件(算子cce文件*.cce和python-cce映射文件*_loc.json),用于后续分析AICore Error问题。
  • 2:开启算子debug功能,在当前执行路径生成kernel_meta文件夹,并在该文件夹下生成.o(算子二进制文件)、.json文件(算子描述文件)以及TBE指令映射文件(算子cce文件*.cce和python-cce映射文件*_loc.json),用于后续分析AICore Error问题,同时设置为2,还会关闭编译优化开关、开启ccec调试功能(ccec编译器选项设置为-O0-g)。
  • 3:不开启算子debug功能,在当前执行路径生成kernel_meta文件夹,并在该文件夹中生成.o(算子二进制文件)和.json文件(算子描述文件),分析算子问题时可参考。
  • 4:不开启算子debug功能,在当前执行路径生成kernel_meta文件夹,并在该文件夹下生成.o(算子二进制文件)和.json文件(算子描述文件)以及TBE指令映射文件(算子cce文件*.cce)和UB融合计算描述文件({$kernel_name}_compute.json),可在分析算子问题时进行问题复现、精度比对时使用。
须知:
  • 若ge.opDebugLevel配置为0,同时又配置了ge.exec.opDebugConfig参数,该场景下在当前执行路径仍旧会生成算子编译目录kernel_meta。
  • 训练执行时,建议配置为0或3。如果需要进行问题定位,再选择调试开关选项1和2,是因为加入了调试功能会导致网络性能下降。
  • 配置为2,即开启ccec编译选项的场景下,会增大算子Kernel(*.o文件)的大小。动态shape场景下,由于算子编译时会遍历可能存在的所有场景,最终可能会导致由于算子Kernel文件过大而无法进行编译的情况,此种场景下,建议不要配置为2。

    由于算子kernel文件过大而无法编译的日志显示如下:

    message:link error ld.lld: error: InputSection too large for range extension thunk ./kernel_meta_xxxxx.o:(xxxx)

可选

all

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);
              }
          }
      }

      实际执行过程中,如果确实内存越界,会抛出“EZ9999”错误码。

  • dump_bin:算子编译时,在当前执行路径算子编译生成的kernel_meta文件夹中保留.o(算子二进制文件)和.json文件(算子描述文件)。
  • dump_cce:算子编译时,在当前执行路径算子编译生成的kernel_meta文件夹中保留算子cce文件*.cce,以及.o(算子二进制文件)和.json文件(算子描述文件)。
  • dump_loc:算子编译时,在当前执行路径算子编译生成的kernel_meta文件夹中保留python-cce映射文件*_loc.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....

配置示例:/root/test0.cfg,其中,test0.cfg文件信息为:

op_debug_config = ccec_O0,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)

可选

全局

ge.op_compiler_cache_mode

用于配置算子编译磁盘缓存模式。默认值为enable。

  • enable:启用算子编译缓存功能。启用后,算子编译信息缓存至磁盘,相同编译参数的算子无需重复编译,直接使用缓存内容,从而提升编译速度。
  • force:启用算子编译缓存功能,区别于enable模式,force模式下会强制刷新缓存,即先删除已有缓存,再重新编译并加入缓存。比如当用户的python或者依赖库等发生变化时,需要指定为force用于清理已有的缓存。
    说明:

    配置为force模式完成编译后,建议后续编译修改为enable模式,以避免每次编译时都强制刷新缓存。

  • disable:禁用算子编译缓存功能。

使用说明:

  • 该参数和ge.op_compiler_cache_dir配合使用。
  • 启用算子编译缓存功能时,可以通过如下两种方式来设置缓存文件夹的磁盘空间大小:
    • 通过配置文件op_cache.ini设置

      算子编译完成后,会在OP_COMPILER_CACHE_DIR参数指定路径下自动生成op_cache.ini文件,用户可以通过该配置文件进行缓存磁盘空间大小的配置;若op_cache.ini文件不存在,则需要手动创建。打开该文件,增加如下信息:

      #配置文件格式,必须包含,自动生成的文件中默认包括如下信息,手动创建时,需要输入
      [op_compiler_cache]
      #限制某个芯片下缓存文件夹的磁盘空间的大小,单位为MB
      ascend_max_op_cache_size=500
      #设置需要保留缓存的空间大小比例,取值范围:[1,100],单位为百分比;例如80表示缓存空间不足时,删除缓存,保留80%
      ascend_remain_cache_size_ratio=80    
      • 上述文件中的ascend_max_op_cache_size和ascend_remain_cache_size_ratio参数取值都有效时,op_cache.ini文件才会生效。
      • 若多个使用者使用相同的缓存路径,建议使用配置文件的方式进行设置,该场景下op_cache.ini文件会影响所有使用者。
    • 通过环境变量设置

      通过环境变量ASCEND_MAX_OP_CACHE_SIZE来限制某个芯片下缓存文件夹的磁盘空间的大小,当编译缓存空间大小达到ASCEND_MAX_OP_CACHE_SIZE设置的取值,且需要删除旧的kernel文件时,通过环境变量ASCEND_REMAIN_CACHE_SIZE_RATIO设置需要保留缓存的空间大小比例。环境变量说明请参见环境变量参考

    若同时配置了op_cache.ini文件和环境变量,则优先读取op_cache.ini文件中的配置项,若op_cache.ini文件和环境变量都未设置,则读取系统默认值:默认磁盘空间大小500M,默认保留缓存的空间50%。

  • 由于force选项会先删除已有缓存,所以不建议在程序并行编译时设置,否则可能会导致其他模型使用的缓存内容被清除而导致失败。
  • 建议模型最终发布时设置编译缓存选项为disable或者force。
  • 如果算子调优后知识库变更,则需要先通过设置为force来清空缓存,然后再设置为enable重新进行编译,否则无法应用新的调优知识库,从而导致调优应用执行失败。
  • 注意,调试开关打开的场景下,即ge.opDebugLevel非0值或者ge.exec.opDebugConfig配置非空时,会忽略算子编译磁盘缓存模式的配置,不启用算子编译缓存。主要基于以下两点考虑:
    • 启用算子编译缓存功能(enable或force模式)后,相同编译参数的算子无需重复编译,编译过程日志无法完整记录。
    • 受限于缓存空间大小,对调试场景的编译结果不做缓存。

可选

all

ge.op_compiler_cache_dir

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

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

默认值:$HOME/atc_data

  • 如果参数指定的路径存在且有效,则在指定的路径下自动创建子目录kernel_cache;如果指定的路径不存在但路径有效,则先自动创建目录,然后在该路径下自动创建子目录kernel_cache。
  • 用户请不要在默认缓存目录下存放其他自有内容,自有内容在软件包安装或升级时会同默认缓存目录一并被删除。
  • 通过该参数指定的非默认缓存目录无法删除(软件包安装或升级时不会被删除)。
  • 算子编译磁盘缓存路径,除ge.op_compiler_cache_dir参数设置的方式外,还可以配置环境变量ASCEND_CACHE_PATH,几种方式优先级为:配置参数“ge.op_compiler_cache_dir”>环境变量ASCEND_CACHE_PATH>默认存储路径。关于环境变量ASCEND_CACHE_PATH的详细说明请参见《环境变量参考》

可选

all

ge.debugDir

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

使用约束:

  • 如果要自行指定算子编译的过程文件存放路径,需ge.debugDir参数与ge.opDebugLevel参数配合使用,且当ge.opDebugLevel取值为0时,不能使用ge.debugDir参数。
  • 算子编译生成的调试文件存储路径,除ge.debugDir参参数设置的方式外,还可以配置环境变量ASCEND_WORK_PATH,几种方式优先级为:配置参数“ge.debugDir参”>环境变量ASCEND_WORK_PATH >默认存储路径。关于环境变量ASCEND_WORK_PATH的详细说明请参见《环境变量参考》

可选

all

ge.mdl_bank_path

加载模型调优后自定义知识库的路径。

该参数需要与BUFFER_OPTIMIZE参数配合使用,仅在数据缓存优化开关打开的情况下生效,通过利用高速缓存暂存数据的方式,达到提升性能的目的。

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

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

参数默认值:$HOME/Ascend/latest/data/aoe/custom/graph/<soc_version>

使用约束:

加载子图调优后自定义知识库路径优先级:ge.mdl_bank_path参数加载路径>TUNE_BANK_PATH环境变量设置路径>默认子图调优后自定义知识库路径。

  1. 如果模型编译前,通过TUNE_BANK_PATH环境变量指定了子图调优自定义知识库路径,模型编译时又通过ge.mdl_bank_path参数加载了自定义知识库路径,该场景下以ge.mdl_bank_path参数加载的路径为准,TUNE_BANK_PATH环境变量设置的路径不生效。
  2. ge.mdl_bank_path参数和环境变量指定路径都不生效或无可用自定义知识库,则使用默认自定义知识库路径。
  3. 如果上述路径下都无可用的自定义知识库,则会查找子图调优内置知识库,该路径为:${INSTALL_DIR}/compiler/data/fusion_strategy/built-in

可选

all

ge.op_bank_path

算子调优后自定义知识库路径。

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

参数默认值:${HOME}/Ascend/latest/data/aoe/custom/op

使用约束:

加载算子调优后自定义知识库路径优先级:TUNE_BANK_PATH环境变量设置路径>OP_BANK_PATH参数加载路径>默认算子调优后自定义知识库路径。

  1. 如果模型转换前,通过TUNE_BANK_PATH环境变量指定了算子调优自定义知识库路径,模型编译时又通过OP_BANK_PATH参数加载了自定义知识库路径,该场景下以TUNE_BANK_PATH环境变量设置的路径为准,OP_BANK_PATH参数加载的路径不生效。
  2. OP_BANK_PATH参数和环境变量指定路径都不生效前提下,使用默认自定义知识库路径。
  3. 如果上述路径下都无可用的自定义知识库,则会查找算子调优内置知识库。

可选

all

ge.exec.dynamicGraphExecuteMode

该参数已本废弃,请勿使用。

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

可选

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]"}};

说明:

若没有指定节点名,则节点默认按照index顺序存储,存储示例如下:

xxx_0,xxx_1,xxx_2,……

其中下划线后为节点在网络脚本中的定义顺序索引,节点会按照此索引的字母顺序进行排布,所以当节点的个数大于10时,则排序为“xxx_0 -> xxx_10 -> xxx_2 -> xxx_3”,网络脚本中定义索引为10的节点排在了索引为2的节点前面,导致定义的shape range与实际输入的节点不匹配。

为避免此问题,当节点的输入个数大于10时,建议在网络脚本中指定节点的名称,则节点会以指定的名称进行命名,实现shape range与节点名称的关联。

可选

graph

ge.exec.op_precision_mode

设置指定算子内部处理时的精度模式,支持指定一个算子或多个算子。通过该参数传入自定义的精度模式配置文件op_precision.ini,可以为不同的算子设置不同的精度模式。

ini文件中按照算子类型、节点名称设置精度模式,每一行设置一个算子类型或节点名称的精度模式,按节点名称设置精度模式的优先级高于按算子类型。

配置文件中支持设置如下精度模式:

  • high_precision:表示高精度。
  • high_performance:表示高性能。
  • support_out_of_bound_index:表示对gather、scatter和segment类算子的indices输入进行越界校验, 校验会降低算子的执行性能。

具体某个算子支持配置的精度/性能模式取值,可以通过CANN软件安装后文件存储路径的opp/built-in/op_impl/ai_core/tbe/impl_mode/all_ops_impl_mode.ini文件查看。

样例如下:

[ByOpType]
optype1=high_precision
optype2=high_performance
optype3=support_out_of_bound_index

[ByNodeName]
nodename1=high_precision
nodename2=high_performance
nodename3=support_out_of_bound_index

可选

全局

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.customizeDtypes

通过该参数自定义模型编译时算子的计算精度,模型中其他算子以PRECISION_MODE指定的精度模式进行编译。该参数需要配置为配置文件路径及文件名,例如:/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
说明:
  • 算子具体支持的计算精度可以从算子信息库中查看,默认存储路径为CANN软件安装后文件存储路径的:opp/op_impl/custom/ai_core/tbe/config/${soc_version}/aic-${soc_version}-ops-info.json。
  • 通过该参数指定的优先级高,因此可能会导致精度/性能的下降,如果指定的dtype不支持,会导致编译失败。

产品支持情况

Atlas 200/300/500 推理产品,支持该参数。

Atlas 训练系列产品,支持该参数。

Atlas 推理系列产品(Ascend 310P处理器),支持该参数。

Atlas 200/500 A2推理产品,支持该参数。

Atlas A2训练系列产品,支持该参数。

可选

session

ge.exec.atomicCleanPolicy

是否集中清理网络中所有atomic算子占用的内存,取值包括:

  • 0:集中清理,默认为0。
  • 1:单独清理,对网络每一个atomic算子进行单独清零。当网络中内存超限时,可尝试此种清理方式,但可能会导致一定的性能损耗。

可选

session

ge.jit_compile

当前版本暂不支持。

可选

全局/session

ge.build_inner_model

当前版本暂不支持。

可选

NA

ge.externalWeight

若网络中的weight占用内存较大,且模型加载环境内存受限时,建议通过此配置项将网络中Const/Constant节点的权重外置,防止由于内存不足导致模型编译加载出错。取值包括:

  • 0:权重不外置,直接保存在om模型文件中。默认为0。
  • 1:权重外置,将网络中所有Const/Constant节点的权重文件落盘,并将其类型转换为FileConstant,权重文件以算子名称命名。

落盘路径说明:

  • 若环境中未配置环境变量ASCEND_WORK_PATH,则权重文件落盘至当前执行目录“tmp_weight_<pid>_<sessionid>”下。
  • 若环境中配置环境变量ASCEND_WORK_PATH,则权重文件会落盘至${ASCEND_WORK_PATH}_<pid>_<sessionid>目录下,关于ASCEND_WORK_PATH的详细说明,可参见环境变量参考

说明:当网络中weight占用内存较大且对模型大小有限制时,建议将此配置项设置为“1”。配置示例:

{"ge.externalWeight", "1"};

可选

session

stream_sync_timeout

图执行时,stream同步等待超时时间,超过配置时间时报同步失败。单位:ms

默认值-1,表示无等待时间,出现同步失败不报错。

可选

全局/session

event_sync_timeout

图执行时,event同步等待超时时间,超过配置时间时报同步失败。单位:ms

默认值-1,表示无等待时间,出现同步失败不报错。

可选

全局/session

ge.exec.staticMemoryPolicy

网络运行是否使用内存静态分配方式。

  • 0:动态分配内存,即按照实际大小动态分配。默认值是0。
  • 2:动态扩展内存,训练与在线推理场景下,可以通过此取值实现同一session中多张图之间的内存复用,即以最大图所需内存进行分配。例如,假设当前执行图所需内存超过前一张图的内存时,直接释放前一张图的内存,按照当前图所需内存重新分配。

为兼容历史版本配置,配置为“1”的场景下,系统会按照“2”动态扩展内存的方式进行处理。

配置示例:

{"ge.exec.staticMemoryPolicy", "1"};

可选

全局

ge.graph_compiler_cache_dir

图编译磁盘缓存目录,和ge.graph_key配合使用,ge.graph_compiler_cache_dir和ge.graph_key同时配置非空时图编译磁盘缓存功能生效。

配置的缓存目录必须存在,否则会导致编译失败。

图发生变化后,原来的缓存文件不可用,用户需要手动删除缓存目录中的缓存文件或者修改ge.graph_key,重新编译生成缓存文件。

其他使用约束和具体的使用方法请参见图编译缓存

可选

session

ge.graph_key

图唯一标识,建议取值只包含大小写字母(A-Z,a-z)、数字(0-9)、下划线(_)、中划线(-)并且长度不超过128。

可选

graph

ge.featureBaseRefreshable

配置feature内存地址是否可刷新。若用户需要自行管理feature内存并需要多次刷新该地址,则可将该参数配置为可刷新。

取值:

0:feature内存地址不可刷新,默认值为0。

1:支持刷新模型的feature内存地址。

可选

all

ge.constLifecycle

用于在线训练场景下配置常量节点的生命周期。

session:按照session级别存储常量节点,该取值为默认值。

graph:按照graph级别存储常量节点,后续用户可调用SetGraphConstMemoryBase接口按图级别对const内存自行管理。

可选

all

ge.exec.inputReuseMemIndexes

用于配置是否开启图的输入节点的内存复用功能,开启后,输入节点的内存可作为模型执行过程中所需要的中间内存再次使用,从而达到降低内存峰值的目的。

参数取值为输入节点的index;如果对多个输入节点都开启内存复用,多个index间使用逗号分隔。输入节点需要设置属性index,说明是第几个输入,index从0开始。

注意:

  • 该参数需要与ge.featureBaseRefreshable配合使用。只有在开启模型feature内存地址刷新功能(ge.featureBaseRefreshable配置为1)的情况下,才能开启内存复用功能。
  • 若所配置的输入index大于等于“输入个数”的值,属于非法index,该index配置不生效。
  • 若开启了输入节点的内存复用功能,输入节点内存中的数据会被改写,图执行后,不可以继续使用输入节点内存中的内容。

配置示例:

{"ge.exec.inputReuseMemIndexes", "0,1,2"};

可选

graph

ge.exec.outputReuseMemIndexes

用于配置是否开启整图输出的内存复用功能,开启后,整图输出的内存可作为模型执行过程中所需要的中间内存再次使用,从而达到降低内存峰值的目的。

如果开启,配置为整图输出的index;如果对多个输出都开启内存复用,多个index间使用逗号分隔。

注意:

  • 输出的index,按照整图输出的顺序标识,index从0开始。
  • 若所配置的输出index大于等于“输出个数”的值,属于非法index,该index配置不生效。

配置示例:

{"ge.exec.outputReuseMemIndexes", "0,1,2"};

可选

graph

ge.disableOptimizations

该参数为调试参数,当前不支持应用于商用产品中,后续版本会作为正式特性更新发布。仅适用于Atlas A2训练系列产品

用于指定关闭的某一个或者多个编译优化pass。

当前仅支持关闭如下pass:

"RemoveSameConstPass","ConstantFoldingPass"

注意:

  1. 多个pass之间使用英文逗号分隔。
  2. 若用户指定关闭了其他pass,graph编译时不会处理,只会打印warning级别的日志。
  3. 若指定关闭了ConstantFoldingPass,graph编译或运行时可能会失败。

配置示例:

  • 关闭单个pass
    std::map <AscendString, AscendString> session_options = {
    {"ge.disableOptimizations", "RemoveSameConstPass"}
    };
  • 关闭多个pass
    std::map <AscendString, AscendString> session_options = {
    {"ge.disableOptimizations", "RemoveSameConstPass, ConstantFoldingPass"}
    };

可选

全局/session/graph

ge.enableGraphParallel

是否对原始大模型进行算法切分,设置为1表示开启算法切分,具体切分策略从参数ge.graphParallelOptionPath所指向的配置文件中读取。

设置成其他值或者空代表不开启算法切分,默认为空。

配置示例:

{"ge.enableGraphParallel", "1"};

可选

graph

ge.graphParallelOptionPath

对原始大模型进行切分时,算法切分策略配置文件所在路径,仅在ge.enableGraphParallel=1时配置生效。

配置示例:

{"ge.graphParallelOptionPath", "./parallel.json"};

配置文件必须为json格式,示例如下:

  • 半自动切分
    {
        "graph_parallel_option": {
            "auto": false,
            "tensor_parallel_option": {
                "tensor_parallel_size": 2
            }
        }
    }
  • 全自动切分
    {
        "graph_parallel_option": {
            "auto": true
        }
    }

参数解释如下:

  • auto:配置为true表示全自动切分,配置为false表示半自动切分。
  • tensor_parallel_option:配置该option表示使能TP切分。

    TP切分:Tensor Parallel也称为算子内并行(Intra-Op Parallel),将计算图中各个Operators的Tensor沿一个或多个轴(batch/Non-batch)进行切分,切分后的partition分发给各个Device分别计算。

  • tensor_parallel_size:表示TP切分的份数,即需要配置的device芯片数量。

可选

graph

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词