--op_compiler_cache_mode
功能说明
用于配置算子编译磁盘缓存模式。
关联参数
该参数需要与--op_compiler_cache_dir配合使用。
参数取值
参数值:
- enable:表示启用算子编译缓存。启用后可以避免针对相同编译参数及算子参数的算子重复编译,从而提升编译速度。
- force:启用算子编译缓存功能,区别于enable模式,force模式下会强制刷新缓存,即先删除已有缓存,再重新编译并加入缓存。比如当用户的python变更、依赖库变更、算子调优后知识库变更等,需要先指定为force用于先清理已有的缓存,后续再修改为enable模式,以避免每次编译时都强制刷新缓存。
- disable:表示禁用算子编译缓存。
参数默认值:disable
参数值约束:
- 由于force选项会先删除已有缓存,所以不建议在程序并行编译时设置,否则可能会导致其他模型使用的缓存内容被清除而导致失败。
- 建议模型最终发布时设置编译缓存选项为disable或者force。
- 如果算子调优后知识库变更,则需要通过设置为force来刷新缓存,否则无法应用新的调优知识库,从而导致调优应用执行失败。
- 调试开关打开的场景下,即--op_debug_level配置非0值或者--op_debug_config配置非空时,会忽略--op_compiler_cache_mode参数的配置,不启用算子编译缓存。主要基于以下两点考虑:
- 启用算子编译缓存功能(enable或force模式)后,相同编译参数的算子无需重复编译,编译过程日志无法完整记录。
- 受限于缓存空间大小,对调试场景的编译结果不做缓存。
推荐配置及收益
推荐配置为enable:启用后可以避免针对相同编译参数及算子参数的算子重复编译,从而提升编译速度。
示例
--op_compiler_cache_mode=enable --op_compiler_cache_dir=$HOME/atc_data/kernel_cache --op_debug_level=3
支持的芯片型号
昇腾310B AI处理器
依赖约束
启用算子编译缓存功能时,可以通过如下两种方式来设置缓存文件夹的磁盘空间大小:
- 通过配置文件op_cache.ini设置
ATC工具运行后,会在--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文件才会生效。
- 若多个使用者使用相同的用户登录ATC工具所在服务器,缓存路径相同,建议使用配置文件的方式进行设置,该场景下op_cache.ini文件会影响所有使用者。
- 通过环境变量设置
该场景下,可以通过环境变量ASCEND_MAX_OP_CACHE_SIZE来限制某个芯片下缓存文件夹的磁盘空间的大小,当编译缓存空间大小达到ASCEND_MAX_OP_CACHE_SIZE设置的取值,且需要删除旧的kernel文件时,可以通过环境变量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
通过环境变量配置,只对当前用户生效。
若同时配置了op_cache.ini文件和环境变量,则优先读取op_cache.ini文件中的配置项,若op_cache.ini文件和环境变量都未设置,则读取系统默认值:默认磁盘空间大小500M,默认保留缓存的空间50%。
父主题: 调试选项