新闻详情

新闻详情

首页 / 资讯中心 / 详情

XLA GPU 如何配置持久化 autotuning 缓存加速 Triton 内核编译?

发布时间:2026/9/9 22:04:18来源:尧图网络
XLA GPU 如何配置持久化 autotuning 缓存加速 Triton 内核编译?
XLA GPU 如何配置持久化 autotuning 缓存加速 Triton 内核编译【免费下载链接】tensorflowAn Open Source Machine Learning Framework for Everyone项目地址: https://gitcode.com/GitHub_Trending/te/tensorflow在 GPU 上用 XLA 编译模型时部分 GPU 内核由 OpenAI Triton 生成。Triton 能对特定 fusion 生成较快的内核但 XLA 需要为每一种 fusion 调优参数fusion 数量多时这个 autotuning 过程会显著拉长编译时间。XLA 的 Persisted autotuning 功能仅支持 GPU可以把这些调优结果持久化下来命中缓存的 fusion 直接复用结果未命中的 fusion 照常 autotune其余编译步骤不受影响。本文基于 third_party/xla/docs/persisted_autotuning.md 说明如何配置缓存、如何在测试中使用以及缓存何时会失效。前提该功能的适用范围仅适用于 GPU文档标题即为 Persisted autotuning (GPU only)。该功能默认关闭不传对应参数时缓存不生效。缓存中已有 fusion 的结果会被复用新 fusion 仍会正常 autotune因此缓存不会让首次遇到 fusion 的运行变快而是让后续遇到相同 fusion 的运行变快。推荐路径使用按 fusion 划分的缓存目录官方推荐的方式是通过参数指定一个缓存目录--xla_gpu_per_fusion_autotune_cache_diryour/directory其中your/directory替换为你实际使用的目录路径。启用后XLA 会在该目录中维护按 fusion 划分的 autotune 缓存每种不同的 fusion 对应一个文件。XLA 在需要时读取已有结果在结果确定后写入新结果。这种方式的两个好处同一个缓存目录可以被多次 XLA 运行甚至不同模型复用每遇到一个新 fusion 缓存就增长一份后续运行持续受益对多个 XLA 实例并发使用同一缓存目录提供了基本支持。启用前必须满足以下条件这些条件需要由使用方自行保证目录必须事先存在且可写——在运行 XLA 之前创建好目录并确认可写。缓存失效由用户处理——如果想从空缓存开始请提供一个空目录。XLA 版本检查由用户处理——如果想为不同版本的 XLA 使用独立缓存请使用不同的目录。关于缓存是否生效文档给出的行为描述是XLA 在需要时读取已有结果在新结果确定后写入。因此可以核对目录内容来确认缓存正在积累——运行后目录中应出现对应的 fusion 缓存文件且后续运行时已有 fusion 直接走缓存、其余 fusion 正常 autotune从而缩短后续编译时间。替代路径将整份 HLO 的调优结果写入单个文件除了目录方式autotuning 结果也可以从单个文件加载或导出--xla_gpu_dump_autotune_results_to --xla_gpu_load_autotune_results_from指定.txt或.textproto文件时缓存以 textproto 格式写入/读取其他扩展名则以二进制 protobuf 格式处理。注意限制目录方式与文件方式不保证能很好地组合使用。两种方式应二选一不要在同一次运行中混用。在 Bazel 测试中使用持久化 autotuning如果测试规模很大、尤其是测试环境性能有限时文档建议使用持久化 autotuning。需要注意缓存只有在与测试运行相同类型的 GPU上生成时才能正确工作若运行测试的 GPU 与缓存生成时的 GPU 不同缓存会被加载但不会被使用这一点也见于 tests/BUILD 中测试目标的注释。以一个固定使用某类 GPU 的测试为例流程分三步第 1 步从测试中导出 autotune 结果给测试命令追加以下参数TEST_UNDECLARED_OUTPUTS_DIR是 Bazel 测试的输出目录变量--test_envXLA_FLAGS--xla_gpu_dump_autotune_results_toTEST_UNDECLARED_OUTPUTS_DIR/autotune_cache.textproto --test_sharding_strategydisabled导出缓存时必须禁用 sharding--test_sharding_strategydisabled才能为所有测试正确得到单一 autotune 缓存。测试运行后autotune_cache.textproto会出现在测试的输出目录中。第 2 步把导出的缓存文件放入代码仓库供后续测试作为数据依赖使用。第 3 步把缓存加入测试目标的数据依赖并通过环境变量加载data [test_autotune_cache.textproto], env {XLA_FLAGS: --xla_gpu_load_autotune_results_from $(execpath test_autotune_cache.textproto)},与导出不同加载 autotune 结果的测试允许使用 sharding。上述流程在 third_party/xla/xla/backends/gpu/tests/BUILD 中有三个可直接参考的示例目标load_autotune_results_using_execpath_test通过$(execpath ...)加载缓存load_autotune_results_from_test_workspace_test通过TEST_WORKSPACE/前缀加载文档同时给出等价的手动命令行形式--test_envXLA_FLAGS--xla_gpu_load_autotune_results_fromTEST_WORKSPACE/my/package/autotune_results_test.textprotodump_autotune_results_to_test_outputs_test把缓存导出到TEST_UNDECLARED_OUTPUTS_DIR该目标设置了shard_count 1配合禁用的 sharding。示例中用到的数据文件是 test_autotune_cache.textproto。缓存何时失效以及如何再生成文档列出了三种缓存过期cache obsolescence的情形出现后需要重新生成 autotuning 缓存模型发生较多改动——缓存中可能不再包含全部 fusion测试会变慢此时应重新生成缓存开始使用新类型的 GPU 运行测试——缓存只对相同 GPU 类型有效XLA 编译器演进生成了不同的 fusion——缓存中的 fusion 集合可能不再匹配。对应的处理方式是按前面导出缓存的流程重新 dump 一份新缓存替换旧文件目录方式则按需要更换目录或清空后重建。限制与边界该功能仅限 GPU且默认关闭必须显式传入参数才生效。目录缓存要求目录预先存在且可写缓存失效与 XLA 版本区分都由使用方负责。目录方式与单文件 dump/load 方式不保证能良好组合选择其中一种即可。缓存不会让第一次遇到 fusion 的运行加速收益体现在后续运行中已有 fusion 走缓存新 fusion 正常 autotune。【免费下载链接】tensorflowAn Open Source Machine Learning Framework for Everyone项目地址: https://gitcode.com/GitHub_Trending/te/tensorflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

C语言复合字面量完全指南:C99语法、存储期与悬垂指针陷阱 2026/9/9 22:37:27

C语言复合字面量完全指南:C99语法、存储期与悬垂指针陷阱

说实话,我第一次在别人代码里见到 (struct point){ .x 10, .y 20 } 这种写法时,第一反应是“这玩意是什么?C语言什么时候能这样写了?”查了标准才发现,这是 C99 引入的复合字面量(compound literal&…

阅读更多 →
战地医疗AI系统测试实战:从环境模拟到失效安全设计的关键经验 2026/9/9 22:37:27

战地医疗AI系统测试实战:从环境模拟到失效安全设计的关键经验

炸现场里急救帐篷的灯光通常不够亮,而且总在晃。我盯着屏幕上那个分割模型的输出,血泊里一块弯折的金属碎片被识别成了“骨折断端”。这个错误如果发生在常规诊断场景,顶多是让医生多看一眼CT,问题不大;但如果发生在这…

阅读更多 →
代码覆盖率提升实战:从统计口径到门禁落地 2026/9/9 22:37:27

代码覆盖率提升实战:从统计口径到门禁落地

代码覆盖率这事,圈子里一直有个争论:有人觉得它是衡量测试质量的黄金指标,有人觉得它就是个自欺欺人的数字游戏。我做了这么多年开发和测试基建,两个极端都见过。有一种团队,覆盖率定在80%,大家天天为了补用…

阅读更多 →
No module named ‘utils‘报错别急着pip install,先查这三点 2026/9/9 22:37:27

No module named ‘utils‘报错别急着pip install,先查这三点

一看到 No module named utils,先别急着 pip install老实说,这大概是 Python 社区里被问得最多、又最容易被“误诊”的报错之一。报错文本只有一行:ModuleNotFoundError: No module named utils,但真正的问题往往不是“缺一个叫 u…

阅读更多 →
从最优控制到轨迹规划:倒立摆上翻与车辆路径规划实践 2026/9/9 22:37:27

从最优控制到轨迹规划:倒立摆上翻与车辆路径规划实践

最优控制、轨迹规划、倒立摆上翻控制、车辆运动学约束路径规划、离散点参数化——这些东西很多人是分开学的,但实际做项目时会发现它们全串在一条线上:规划层算出一条可执行路径,控制层负责把它跑出来,中间还夹着一堆离散点怎么变…

阅读更多 →
从冒泡到哈希:排序与查找算法实战全解析 2026/9/9 22:34:26

从冒泡到哈希:排序与查找算法实战全解析

排序和查找算法,是所有写代码的人绕不开的两座山。从大学期末考到社招技术面,从给Excel里的IP地址排个序到在上亿条日志里定位一条记录,背后翻来覆去就是这么几个经典套路。我从2013年开始正经写项目,到现在手写过冒泡排序、快速排…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞