一个设备插件,需要同时理解框架、运行时、图优化和 Kernel。
TensorFlow MUSA Extension 通过设备插件把自定义算子、Kernel 与图优化能力接入 TensorFlow。实际问题常常不在单个 Kernel 本身,而是在 placement、Host/Device 输入语义、Fusion Pattern、测试覆盖和调试可见性之间。
GELU Fusion:从“支持算子”走到“整网真正融合”。
工作不只是增加一个 muDNN GELU 调用,而是补齐图融合链路和 benchmark,定位大图场景下部分 GELU 未命中 Fusion Pattern 的原因,并验证真实 shape。
- 确认 TensorFlow 原始子图的算子组合、属性和 dtype 是否满足 Fusion Pattern。
- 检查图优化 Pass 的匹配顺序与边界条件,避免只在微型单测中成功。
- 使用真实 shape 建立 correctness + latency benchmark,验证融合后的实际收益。
长跑 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
相关问题曾通过公开 PR #144 记录并合入,后续上游又进行了 revert。因此本页把它作为问题定位与实现贡献的公开证据,而不表述为当前主分支仍生效的改动。
Kernel Timing:让定位不再依赖笨重的离线分析流程。
设计并实现 Kernel Timing 宏与环境变量控制机制,使开发者可以通过轻量插桩快速看到 Kernel 粗粒度耗时占比,结合日志和测试脚本形成调试闭环。
Logical_Or scalar broadcast 热点优化
通过识别 scalar broadcast 的特定路径,减少通用实现带来的额外开销,同时补齐 Logical_And 相关测试,保证优化不破坏算子语义。
同时参与 AddV2 热点路径、ResourceApplyAdam / ApplyGradientDescent 等训练算子的语义与结果对齐。这些工作共同强化了一个认识:微型算子 latency 只有映射到调用频次和整网占比后,才有真实优化价值。
我在这个项目中形成的能力
- 能够从 TensorFlow op 定义、Kernel 注册和 HostMemory 配置追踪完整执行路径。
- 能够区分算子支持、图融合和整网收益,建立真实 shape benchmark。
- 能够通过日志、长跑、二分与测试补齐定位稳定性问题,而不是把 OOM 简单归因于显存容量。
- 能够把调试需求产品化为可复用工具,并通过公开 PR 完成协作、迭代和合入。
- 理解国产 GPU 生态适配中的核心挑战:语义兼容、运行时差异、工具链成熟度与性能验证。
可以进一步公开沉淀的内容
- 整理一条从 TensorFlow Graph 到 MUSA Device Kernel 的完整调用链图。
- 用 Roofline / memory traffic 重新分析 Logical_Or 与 AddV2 热点,区分 launch-bound 与 bandwidth-bound。
- 对比 CUDA 与 MUSA 上相同算子的调试、性能与语义适配方法,形成可迁移经验。