基础功能
CLUSTER_CONFIG
设置集群配置文件路径,用于配置目标执行逻辑设备信息以生成HCCL任务,多卡分布式训练场景下使用。
若模型中包含通信算子(当前仅支持AllGather通信算子),该参数必填。
配置示例:
{ge::ir_option::CLUSTER_CONFIG, "/home/test/cluster_config.json"}
cluster_config.json配置示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | { "RankTable": { "status": "completed", "version": "1.2", "server_count": "2", "server_list": [ { "server_id": "node_0", "device": [ { "device_id": "0", "rank_id": "0" } ] }, { "server_id": "node_1", "device": [ { "device_id": "0", "rank_id": "1" } ] } ] }, "HcclCommConfig": { "hcclCommName": "global name" } } |
参数说明解释如下:
- RankTable:配置的核心,定义了参与计算的节点和rank信息。
- status:必选,rank table可用标识。
- completed:表示rank table可用。
- initializing:表示rank table不可用。
- version:必选,rank table模板版本信息,请配置为:1.2。
- server_count:可选,参与集合通信的AI Server个数。
- server_list:必选,参与集合通信的AI Server列表。
- server_id:必选,AI Server标识,字符串类型,长度小于等于64,请确保全局唯一。配置示例:node_0。
- device:必选,Device列表。
- device_id:必选,AI处理器的物理ID,即Device在AI Server上的序列号。
- rank_id:必选,rank唯一标识,请配置为整数,从0开始配置,且全局唯一,取值范围:[0, 总Device数量-1]。
- status:必选,rank table可用标识。
- HcclCommConfig:HCCL通信层的全局配置信息。
- hcclCommName:必选,全局通信组的名称或标识符。
产品支持情况:
- Atlas 350 加速卡:不支持
Atlas A3 训练系列产品 /Atlas A3 推理系列产品 :不支持Atlas A2 训练系列产品 /Atlas A2 推理系列产品 :不支持Atlas 200I/500 A2 推理产品 :不支持Atlas 推理系列产品 :不支持Atlas 训练系列产品 :不支持
DETERMINISTIC
是否开启确定性计算。
默认情况下,不开启确定性计算,算子在相同的硬件和输入下,多次执行的结果可能不同。这个差异的来源,一般是因为在算子实现中,存在异步的多线程执行,会导致浮点数累加的顺序变化。当开启确定性计算功能时,算子在相同的硬件和输入下,多次执行将产生相同的输出。
通常建议不开启确定性计算,因为确定性计算往往会导致算子执行变慢,进而影响性能。当发现模型多次执行结果不同,或者是进行精度调优时,可开启确定性计算,辅助模型调试、调优。
参数取值:
- 0:(默认值)不开启确定性计算。
- 1:开启确定性计算。
配置示例:
{ge::ir_option::DETERMINISTIC, "1"}
产品支持情况:
- Atlas 350 加速卡:支持
Atlas A3 训练系列产品 /Atlas A3 推理系列产品 :支持Atlas A2 训练系列产品 /Atlas A2 推理系列产品 :支持Atlas 200I/500 A2 推理产品 :不支持Atlas 推理系列产品 :支持Atlas 训练系列产品 :支持
ENABLE_SINGLE_STREAM
静态shape场景下,是否启用模型推理顺序单流串行执行。
其中,流(Stream)用于维护一些异步操作的执行顺序,确保按照应用程序中的代码调用顺序在Device上执行。
参数取值:
- true:表示启用,模型推理顺序单流串行执行。
- false:(默认值)表示关闭,模型推理时多流并行执行。
参数值约束:
模型中存在Cmo算子和如下控制类算子时,不能使用单Stream特性,只能使用默认值false。
- Merge
- Switch
- Enter
- RefEnter
配置示例:
{ge::ir_option::ENABLE_SINGLE_STREAM, "true"}
产品支持情况:
- Atlas 350 加速卡:支持
Atlas A3 训练系列产品 /Atlas A3 推理系列产品 :支持Atlas A2 训练系列产品 /Atlas A2 推理系列产品 :支持Atlas 200I/500 A2 推理产品 :不支持Atlas 推理系列产品 :支持Atlas 训练系列产品 :支持
HCCL_SUB_COMM_CONFIG
设置HCCL子通信域配置文件路径,用于配置HCCL子通信参数。多卡分布式训练场景下使用。
若模型中包含通信算子(当前仅支持AllGather通信算子),该参数必填。若模型算子包含子通信域参数,但在模型编译时未指定HCCL_SUB_COMM_CONFIG参数,系统将默认依据集群的实际业务配置执行。
配置示例:
{ge::ir_option::CLUSTER_CONFIG, "/home/test/cluster_config.json"}
{ge::ir_option::HCCL_SUB_COMM_CONFIG, "/home/test/sub_comm_config.json"}
sub_comm_config.json文件示例如下:
1 2 3 4 5 6 7 8 9 10 | { "GroupList": [ { "RankIds": [0,1], "HcclCommconfig": { "hcclCommName": "test_group" } } ] } |
其中:
- RankIds:rank唯一标识,请配置为整数,从0开始配置,且全局唯一,取值范围:[0, 总Device数量-1]。
建议rank_id按照Device物理连接顺序进行排序,即将物理连接上较近的Device编排在一起,否则可能会对性能造成影响。
例如,若device_ip按照物理连接从小到大设置,则rank_id也建议按照从小到大的顺序设置。
- hcclCommName:通信组命名,供程序调用和区分。
产品支持情况:
- Atlas 350 加速卡:不支持
Atlas A3 训练系列产品 /Atlas A3 推理系列产品 :不支持Atlas A2 训练系列产品 /Atlas A2 推理系列产品 :不支持Atlas 200I/500 A2 推理产品 :不支持Atlas 推理系列产品 :不支持Atlas 训练系列产品 :不支持
OPTION_HOST_ENV_OS
若模型编译环境的操作系统及其架构与模型运行环境不一致时,则需使用本参数设置模型运行环境的操作系统类型。如果不设置,则默认取模型编译环境的操作系统类型。
模型编译环境的操作系统及其架构与模型运行环境不一致时,需要与OPTION_HOST_ENV_CPU参数配合使用,通过OPTION_HOST_ENV_OS参数设置操作系统类型、通过OPTION_HOST_ENV_CPU参数设置操作系统架构。
参数取值:查看${INSTALL_DIR}/opp/built-in/op_graph/lib/下打包的算子so的OS类型。
参数默认值:查看${INSTALL_DIR}/opp/scene.info文件中的取值。
${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例,安装后文件默认存储路径为:/usr/local/Ascend/cann。
配置示例:
{ge::OPTION_HOST_ENV_OS, "linux"},
{ge::OPTION_HOST_ENV_CPU, "x86_64"}
产品支持情况:
全量芯片支持。
OPTION_HOST_ENV_CPU
若模型编译环境的操作系统及其架构与模型运行环境不一致时,则需使用本参数设置模型运行环境的操作系统架构。如果不设置,则默认取模型编译环境的操作系统架构。
如果模型编译环境的操作系统及其架构与模型运行环境不一致,需要与OPTION_HOST_ENV_OS参数配合使用,通过OPTION_HOST_ENV_OS参数设置操作系统类型、通过OPTION_HOST_ENV_CPU参数设置操作系统架构。
参数取值:查看${INSTALL_DIR}/opp/built-in/op_graph/lib/下打包的算子so的OS/CPU类型。
参数默认值:查看${INSTALL_DIR}/opp/scene.info文件中的取值。
${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例,安装后文件默认存储路径为:/usr/local/Ascend/cann。
配置示例:
{ge::OPTION_HOST_ENV_OS, "linux"},
{ge::OPTION_HOST_ENV_CPU, "x86_64"}
- 若转换后的离线模型包含操作系统类型、架构,例如:xxx_linux_x86_64.om,则说明该模型运行的环境只能是x86_64架构的linux操作系统。
- 若转换后的离线模型不包含操作系统类型、架构,例如:xxx.om,则说明CANN软件包所支持的操作系统,都支持该模型运行。
产品支持情况:
全量芯片支持。
SOC_VERSION
图编译时使用的AI处理器型号。
- 若当前环境存在AI处理器,该参数可选。
- 若当前环境不存在AI处理器,即开发环境,该参数必填。
参数取值:
<soc_version>查询方法为:
- 针对如下产品:在安装AI处理器的服务器执行npu-smi info命令进行查询,获取Name信息。实际配置值为AscendName,例如Name取值为xxxyy,实际配置值为Ascendxxxyy。
Atlas A2 训练系列产品 /Atlas A2 推理系列产品 Atlas 200I/500 A2 推理产品 Atlas 推理系列产品 Atlas 训练系列产品 - 针对
Atlas A3 训练系列产品 /Atlas A3 推理系列产品 ,在安装AI处理器的服务器执行npu-smi info -t board -i id -c chip_id命令进行查询,获取Chip Name和NPU Name信息,实际配置值为Chip Name_NPU Name。例如Chip Name取值为Ascendxxx,NPU Name取值为1234,实际配置值为Ascendxxx_1234。其中:- id:设备id,通过npu-smi info -l命令查出的NPU ID即为设备id。
- chip_id:芯片id,通过npu-smi info -m命令查出的Chip ID即为芯片id。
- 针对Atlas 350 加速卡,在安装AI处理器的服务器执行npu-smi info -t board -i id命令进行查询,获取Chip Name和NPU Name信息,实际配置值为Chip Name_NPU Name。例如Chip Name取值为Ascendxxx,NPU Name取值为1234,实际配置值为Ascendxxx_1234。
其中,id为设备id,通过npu-smi info -l命令查出的NPU ID即为设备id。
配置示例:
{ge::ir_option::SOC_VERSION, "<soc_version>"}
产品支持情况:
全量芯片支持。
VIRTUAL_TYPE
是否支持离线模型在昇腾虚拟化实例特性生成的虚拟设备上运行。
当前芯片算力比较大,云端用户或者小企业完全不需要使用这么大算力,昇腾虚拟化实例特性支持对芯片的算力进行切分,可满足用户根据自己的业务按需申请算力的诉求。
虚拟设备是指按照指定算力在芯片上申请的虚拟加速资源。
参数取值:
- 0:(默认值)离线模型不在昇腾虚拟化实例特性生成的虚拟设备上运行。
- 1:离线模型在不同算力的虚拟设备上运行。
配置示例:
{ge::ir_option::VIRTUAL_TYPE, "1"}
使用约束:
- 参数取值为1时,进行模型转换,则转换后离线模型参与计算的逻辑AI Core核数可能比实际aicore_num核数大,为aicore_num支持配置范围的最小公倍数:
- 参数取值为1时,转换后的模型,如果包括如下算子,会默认使用单核,该场景下,将会导致转换后的模型推理性能下降。
- DynamicRNN
- PadV2D
- SquareSumV2
- DynamicRNNV2
- DynamicRNNV3
- DynamicGRUV
产品支持情况:
全量芯片支持。