Projects/TensorFlow MUSA Extension
Framework Backend · Heterogeneous Computing

TensorFlow MUSA Extension:从框架语义到 Device Kernel 的真实工程链路。

参与国产 GPU 上的 TensorFlow 设备扩展插件开发,工作覆盖算子注册、muDNN 接入、图融合、HostMemory 语义、长跑稳定性、热点算子优化与 Kernel Timing。它让我第一次完整处理“上层框架为什么会让底层执行出错或变慢”。

RoleOperator & Compiler Optimization Intern
Period2026.02 — 2026.05
StackTensorFlow · C++ · MUSA · muDNN
EvidencePublic PR + Benchmarks
01 / Overview

一个设备插件,需要同时理解框架、运行时、图优化和 Kernel。

TensorFlow Graphop semantics
MUSA Pluginregistration / placement
Graph Optimizerfusion / rewrite
muDNN / Kerneldevice compute
Benchmarkcorrectness / latency

TensorFlow MUSA Extension 通过设备插件把自定义算子、Kernel 与图优化能力接入 TensorFlow。实际问题常常不在单个 Kernel 本身,而是在 placement、Host/Device 输入语义、Fusion Pattern、测试覆盖和调试可见性之间。

02 / Case Study A

GELU Fusion:从“支持算子”走到“整网真正融合”。

工作不只是增加一个 muDNN GELU 调用,而是补齐图融合链路和 benchmark,定位大图场景下部分 GELU 未命中 Fusion Pattern 的原因,并验证真实 shape。

11 / 11整网 GELU 全部完成融合GRAPH LEVEL
+36.6%真实 shape testcase 性能提升ANONYMIZED SHAPE
muDNN后端实现接入DEVICE PATH
  1. 确认 TensorFlow 原始子图的算子组合、属性和 dtype 是否满足 Fusion Pattern。
  2. 检查图优化 Pass 的匹配顺序与边界条件,避免只在微型单测中成功。
  3. 使用真实 shape 建立 correctness + latency benchmark,验证融合后的实际收益。
03 / Case Study B

长跑 OOM / 随机崩溃:根因是 HostMemory 语义,而不是显存“不够”。

整网推理长跑出现 OOM 和随机退出。通过逐层缩小范围,发现 shape tensor 在 StridedSlice<int32> / Pack<int32> 等链路中错误进入 device path,导致生命周期与访问路径异常。

Symptom:
  long-run inference → OOM / random crash

Root cause:
  shape tensor with host semantics
  incorrectly placed on device path

Fix direction:
  rebuild HostMemory configuration
  align scalar / shape inputs with TensorFlow op semantics
  add use_locking=True validation for gradient ops
≈30%修复前 500 轮成功率BEFORE
100%修复后 1000 轮验证AFTER
40K / 400K / 800K进一步长跑验证轮次STABILITY
公开贡献状态说明

相关问题曾通过公开 PR #144 记录并合入,后续上游又进行了 revert。因此本页把它作为问题定位与实现贡献的公开证据,而不表述为当前主分支仍生效的改动。

查看 PR #144 记录 ↗
04 / Case Study C

Kernel Timing:让定位不再依赖笨重的离线分析流程。

设计并实现 Kernel Timing 宏与环境变量控制机制,使开发者可以通过轻量插桩快速看到 Kernel 粗粒度耗时占比,结合日志和测试脚本形成调试闭环。

PR #57已合入公开主仓库MERGED
≈50%脱敏定位效率改善WORKFLOW
12 commits迭代与合入过程PUBLIC HISTORY
查看已合入 PR #57 ↗
05 / Hot Path

Logical_Or scalar broadcast 热点优化

通过识别 scalar broadcast 的特定路径,减少通用实现带来的额外开销,同时补齐 Logical_And 相关测试,保证优化不破坏算子语义。

21.2 μs优化前平均耗时BASELINE
10.7 μs优化后平均耗时OPTIMIZED
8187.48 → 8284.65脱敏整网吞吐变化E2E

同时参与 AddV2 热点路径、ResourceApplyAdam / ApplyGradientDescent 等训练算子的语义与结果对齐。这些工作共同强化了一个认识:微型算子 latency 只有映射到调用频次和整网占比后,才有真实优化价值。

06 / Contribution

我在这个项目中形成的能力

  • 能够从 TensorFlow op 定义、Kernel 注册和 HostMemory 配置追踪完整执行路径。
  • 能够区分算子支持、图融合和整网收益,建立真实 shape benchmark。
  • 能够通过日志、长跑、二分与测试补齐定位稳定性问题,而不是把 OOM 简单归因于显存容量。
  • 能够把调试需求产品化为可复用工具,并通过公开 PR 完成协作、迭代和合入。
  • 理解国产 GPU 生态适配中的核心挑战:语义兼容、运行时差异、工具链成熟度与性能验证。
07 / Next

可以进一步公开沉淀的内容

  1. 整理一条从 TensorFlow Graph 到 MUSA Device Kernel 的完整调用链图。
  2. 用 Roofline / memory traffic 重新分析 Logical_Or 与 AddV2 热点,区分 launch-bound 与 bandwidth-bound。
  3. 对比 CUDA 与 MUSA 上相同算子的调试、性能与语义适配方法,形成可迁移经验。