拓冰建站拓冰建站
首页 / 资讯中心 / 正文

昇腾/GE算子编译与图编译

算子编译与图编译【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/gege.aicoreNum用于配置算子编译时使用的AI Core核数。参数取值整数1|整数2中间使用“|”分隔场景1针对如下产品整数1表示算子编译时使用的AI Core中的Cube Core核数整数2表示算子编译时使用的AI Core中的Vector Core核数整数1与整数2都需要大于0小于等于AI处理器包含的最大Cube Core和Vector Core数量Ascend 950PR/Ascend 950DTAtlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品场景2针对如下产品仅需配置整数1配置格式为整数1|配置整数2不会生效表示算子编译时使用的AI Core核数Atlas 推理系列产品Atlas 训练系列产品使用约束针对参数值中的场景1不同AI处理器包含的最大Cube Core与Vector Core的数量可从${INSTALL_DIR}/arch-linux/data/platform_config/xxx.ini文件查看如下所示说明AI处理器上存在24个Cube Core存在48个Vector Core。[SoCInfo] # 参数配置为默认值默认值即为最大值 ai_core_cnt24 cube_core_cnt24 vector_core_cnt48针对参数值中的场景2不同AI处理器包含的最大AI Core数量可从${INSTALL_DIR}/arch-linux/data/platform_config/xxx.ini文件查看如下所示说明AI处理器上存在10个AI Core。[SoCInfo] # AI Core默认值默认值即为最大值 ai_core_cnt10 vector_core_cnt8如果配置该参数的同时启用了算子编译缓存功能ge.op_compiler_cache_mode参数配置为“enable”或者“force”默认为“enable”此参数仅在首次编译时生效。若您想在非首次编译时生效该参数需要清理编译磁盘的缓存。其中${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例安装后文件默认存储路径为/usr/local/Ascend/cann。_arch_表示具体操作系统架构_xxx_请根据实际产品进行选择。配置示例场景1配置示例{ge.aicoreNum, 24|48};场景2配置示例{ge.aicoreNum, 10|}; 或 {ge.aicoreNum, 10};必选/可选可选生效级别全局/session了解AI Core、Cube Core、Vector Core的关系为便于理解AI Core、Cube Core、Vector Core的关系此处先明确Core的定义Core是指拥有独立Scalar计算单元的一个计算核通常Scalar计算单元承担了一个计算核的SIMD单指令多数据Single Instruction Multiple Data指令发射等功能所以我们也通常也把这个Scalar计算单元称为核内的调度单元。不同产品上的AI数据处理核心单元不同当前分为以下几类当AI数据处理核心单元是AI Core在AI Core内Cube和Vector共用一个Scalar调度单元.例如Atlas 训练系列产品在AI Core内Cube和Vector都有各自的Scalar调度单元因此又被称为Cube Core、Vector Core。这时一个Cube Core和一组Vector Core被定义为一个AI CoreAI Core数量通常是以多少个Cube Core为基准计算的。例如Atlas A2 训练系列产品/Atlas A2 推理系列产品。当AI数据处理核心单元是AI Core以及单独的Vector CoreAI Core和Vector Core都拥有独立的Scalar调度单元。例如Atlas 推理系列产品。ge.AllowMultiGraphParallelCompile用于控制同一个Session内多线程并行编译多张图的能力。如果配置为1会禁止变量转换格式参考ge.exec.variable_acc说明。参数取值0默认值同一个Session内一个线程编译多张图。1表示允许用户在一个Session内使用多个线程并发编译多张图。使用约束如果配置为1不能同时配置ge.exec.variable_acc为True否则会校验报错。如果配置为1资源类算子如果导致其他图重编译立即报错。配置示例{ge.AllowMultiGraphParallelCompile, 1};必选/可选可选生效级别全局/sessionge.graph_compiler_cache_dir图编译磁盘缓存目录和ge.graph_key配合使用ge.graph_compiler_cache_dir和ge.graph_key同时配置非空时图编译磁盘缓存功能生效。配置的缓存目录必须存在否则会导致编译失败。图发生变化后原来的缓存文件不可用用户需要手动删除缓存目录中的缓存文件或者修改ge.graph_key重新编译生成缓存文件。其他使用约束和具体的使用方法请参见图编译缓存。必选/可选可选生效级别sessionge.graph_key图唯一标识取值只包含大小写字母A-Za-z、数字0-9、下划线_、中划线-并且长度不超过128。必选/可选可选生效级别graphge.op_compiler_cache_mode用于配置算子编译磁盘缓存模式。参数取值enable默认值表示启用算子编译缓存。启用后可以避免针对相同编译参数及算子参数的算子重复编译从而提升编译速度。force启用算子编译缓存功能区别于enable模式force模式下会强制刷新缓存即先删除已有缓存再重新编译并加入缓存。比如当用户的python变更、依赖库变更、算子调优后知识库变更等需要先指定为force用于先清理已有的缓存后续再修改为enable模式以避免每次编译时都强制刷新缓存。disable表示禁用算子编译缓存算子重新编译。使用约束如果要自行指定算子编译磁盘缓存的路径则需要与ge.op_compiler_cache_dir配合使用。由于force选项会先删除已有缓存所以不建议在程序并行编译时设置否则可能会导致其他模型使用的缓存内容被清除而导致失败。建议模型最终发布时设置编译缓存选项为disable或者force。如果算子调优后知识库变更则需要先通过设置为force来清空缓存然后再设置为enable重新进行编译否则无法应用新的调优知识库从而导致调优应用执行失败。调试开关打开的场景下ge.opDebugLevel非0值会忽略ge.op_compiler_cache_mode参数的配置不启用算子编译缓存功能算子全部重新编译。op_debug_config配置非空时且未配置op_debug_list字段会忽略ge.op_compiler_cache_mode参数的配置不启用算子编译缓存功能算子全部重新编译。op_debug_config配置非空时且配置文件中配置了op_debug_list字段列表中的算子忽略ge.op_compiler_cache_mode参数的配置继续重新编译。列表外的算子如果ge.op_compiler_cache_mode参数配置为enable或force则启用缓存功能若配置为disable则不启用缓存功能仍旧重新编译。启用算子编译缓存功能时可以通过配置文件算子编译完成后会在ge.op_compiler_cache_dir参数指定路径下自动生成op_cache.ini文件、环境变量两种方式来设置缓存文件夹的磁盘空间大小通过配置文件op_cache.ini设置若op_cache.ini文件不存在则需要手动创建。打开该文件增加如下信息#配置文件格式必须包含自动生成的文件中默认包括如下信息手动创建时需要输入 [op_compiler_cache] #限制某个芯片下缓存文件夹的磁盘空间的大小默认值为500取值需为整数单位为MB max_op_cache_size500 #设置需要保留缓存的空间大小比例取值范围[1,100]默认值为50单位为百分比例如取值为80表示缓存空间不足时删除缓存文件保留80%缓存空间 remain_cache_size_ratio50上述文件中的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_SIZE500 # ASCEND_REMAIN_CACHE_SIZE_RATIO环境变量取值范围[1,100]默认值为50单位为百分比例如取值为80表示缓存空间不足时删除缓存文件保留80%缓存空间 export ASCEND_REMAIN_CACHE_SIZE_RATIO50通过环境变量配置只对当前用户生效。若需要关闭编译缓存老化功能可将环境变量“ASCEND_MAX_OP_CACHE_SIZE”设置为“-1”此时访问算子缓存时不会更新访问时间算子编译缓存不会老化磁盘空间使用默认大小500MB。若同时配置了op_cache.ini文件和环境变量则优先读取op_cache.ini文件中的配置项若op_cache.ini文件和环境变量都未设置则读取系统默认值默认磁盘空间大小500MB默认保留缓存空间的50%。配置示例{ge.op_compiler_cache_mode, enable};必选/可选可选生效级别全局/session/graphge.op_compiler_cache_dir用于配置算子编译磁盘缓存的目录。参数值格式路径支持大小写字母a-zA-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的详细说明请参见《环境变量参考》。必选/可选可选生效级别全局/session/graphge.optimizationSwitch算子编译时融合规则Pass的控制开关。该参数与ge.fusionSwitchFile的区别是ge.fusionSwitchFile仅能关闭图融合和UB融合的规则并且需要单独配置JSON文件而该参数适用于所有规则通过参数就能指定融合规则不需要再单独设置JSON文件。如果两个参数都配置且配置了同一个融合规则则以ge.optimizationSwitch参数配置的为准。参数取值Passname1:on;Passname2:off可以拼接多个key-value键值对key为Pass名称value为on表示开或off表示关不支持大小写模式匹配多组配置使用英文分号分隔。可配置的融合规则请参见融合规则列表。配置示例{ge.optimizationSwitch, Passname1:on;Passname2:off};必选/可选可选生效级别全局/session/graphge.topoSortingMode对算子进行图模式编译时可选择的不同的图遍历模式。主要面向在线推理场景。参数取值0BFSBreadth First Search广度优先遍历策略。1默认值DFSDepth First Search深度优先遍历策略。2RDFSReverse DFS反向深度优先遍历策略。3StableRDFS稳定拓扑序策略针对图里已有的算子不会改变其计算顺序针对图里新增的算子使用RDFS遍历策略。配置示例{ge.topoSortingMode, 1};必选/可选可选生效级别全局/session/graph【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门