在AI芯片行业,硬件参数容易被看见,软件栈的成熟度却往往藏在交付之后。看个比赛的行业资讯栏目长期关注架构发布与生态合作,这一篇我们把镜头对准软件侧,记录一位软件栈负责人如何把编译器当成产品来做。

文中人物与团队均为化名与场景化叙述,用于呈现行业普遍存在的工程与协作逻辑,不涉及未公开的技术细节。

一、编译器不是工具,是用户每天要用的产品

结论先行:AI芯片的编译器如果只被当作内部工具,它就永远做不好;只有把它当成有用户、有版本、有体验指标的产品,才可能真正可用。

程知微在一家做数据中心推理加速的芯片公司带软件栈团队,她接手时,团队只有六个人,编译器是一个能跑通 demo 但经不起真实模型折腾的内部脚本集合。她做的第一件事不是加功能,而是给编译器建了一套用户反馈渠道。

她的判断很直接:编译器的用户是算法工程师,他们不关心你内部用了什么中间表示,他们只关心三件事——模型能不能一次编译通过、精度掉不掉、性能有没有达到预期。这三件事构成了她后来所有排期的优先级。

  • 一次通过率:把常见开源模型的编译失败案例做成回归集,每次发版必跑。
  • 精度对齐:建立逐层比对流程,量化前后差异必须可定位到具体算子。
  • 性能可预期:给出编译后的性能估算,避免用户上线后才发现差距。

看个比赛在梳理生态合作动态时发现,软件栈成熟度正在成为芯片公司对外发布的重要信息,这背后正是像程知微这样的团队在推动。

二、图编译器:在灵活与稳定之间找平衡

结论先行:图编译器的核心矛盾是算子融合带来的性能收益与调试难度之间的权衡,解法不是追求极致,而是提供可分级的选择。

程知微的团队在图编译器上踩过一个大坑。早期版本为了追求融合深度,把大量算子合并成一个大内核,性能确实好看,但一旦出错,用户根本不知道问题出在哪一层。有一次客户反馈精度异常,团队花了两周才定位到是某个融合模式下的边界处理有问题。

这件事之后,她推动做了两件事。一是把融合策略做成可配置的档位,默认档位保守,追求性能的用户可以手动放开。二是给每个融合决策打上可追溯的标记,编译日志里能看清每一步做了什么。

她说,编译器最怕的是黑箱感。用户愿意用你的芯片,前提是他能理解你的软件在干什么。看个比赛的读者如果用过不同厂商的推理工具链,大概能体会这种透明度的价值。

三、硬件团队与软件团队的日常摩擦

结论先行:硬件与软件团队的摩擦大多不是技术分歧,而是节奏错位——硬件按流片节点排期,软件按用户反馈排期,两者天然不同步。

程知微举了一个典型场景:硬件团队在架构定稿前需要软件团队确认算子支持范围,但软件团队此时还没有拿到稳定的仿真环境,只能凭经验估算。结果硬件流片回来,软件发现有几个高频算子的支持方式需要调整,只能靠微码绕行。

她的解法是建立一份共享的算子支持矩阵,硬件、编译器、算子库三方共同维护,每个季度对齐一次。矩阵里不仅写支持与否,还写支持程度和已知限制。这份文档后来成了跨团队沟通最频繁的入口。

  • 硬件侧:在架构评审时明确哪些算子走硬件加速、哪些走可编程单元。
  • 编译器侧:把算子支持矩阵作为融合决策的输入条件。
  • 算子库侧:为每个算子标注精度特征与典型性能区间。

看个比赛在报道制程与封装演进时常常强调协同,其实软件侧的协同同样关键,只是它不那么显眼。

四、把版本节奏当成产品节奏来管理

结论先行:软件栈的竞争力不仅取决于功能多少,更取决于版本节奏是否稳定可预期。

程知微接手团队后做的另一件事,是固定发版节奏,并把每次发版的内容提前公示。她说,算法工程师最怕的是工具链突然变化导致线上模型行为不一致,所以宁可发版慢一点,也要保证可预期。

团队现在保持固定的迭代周期,每次发版附带变更说明和回归结果。客户侧如果有紧急需求,走单独的热修复通道,但必须回填到下一个正式版本。这套机制运行下来,客户投诉明显下降。

回看这几年,程知微觉得软件栈的价值正在被重新认识。看个比赛会继续跟踪AI芯片产业链的公开动态,从架构到软件,从封装到生态,为读者呈现更完整的产业图景。