日期:2026-09-06
这家国企客户的需求很硬:大模型推理必须完全跑在内网,数据不出域,而且硬件得是国产 CPU 加国产 GPU 的组合。我们原本有一套在 x86 加主流显卡上调好的推理镜像,信心满满去现场,结果标准镜像根本装不上,驱动不匹配,几个核心算子直接报不支持。项目上线日期是死的,硬件是先到的,留给我们的适配窗口只有两周。当时团队里有人想走捷径,建议客户换硬件,被我否了,客户明确说信创是硬指标,换不了,这条线没有商量余地。那两周我们基本住在客户机房,白天跑验证,晚上改镜像,咖啡当水喝,谁都明白这关过不去项目就黄了。
我们改成分层交付:底层做信创硬件兼容性验证清单,逐项过驱动、内核版本、算子库;中间层定制推理一体机镜像,把不适配的算子替换成国产框架的等价实现,或回退到 CPU 实现保功能;上层用容器封装推理服务,资源按实例隔离,远程运维走内网堡垒机。交付时带一份适配报告,客户验收照着打勾。上线后远程运维只碰监控和日志,不动业务数据,所有操作留痕可追溯,满足内网审计要求。我们后来把这套交付物做成了标准化包,新项目直接复用,适配从重新踩坑变成填空打勾。
最麻烦的是算子兼容性。国产 GPU 的算子库和标准 CUDA 算子不是一一对应,有些我们常用的融合算子没有,推理直接崩。我们没有硬等厂商补算子,而是把模型里那几个算子拆开,用基础算子组合替代,精度掉了一点点但功能保住了,客户能接受。资源隔离是第二个坑,一体机是多模型共享,某个模型把显存吃满会影响别人,我们用容器加 cgroup 限制每实例的显存和算力配额,超了就排队不崩。驱动层面也有坑,内核小版本升级后驱动偶发失效,我们把验证过的驱动版本钉死在交付清单里,升级要走正式变更流程,不让人随意动。还有镜像体积这关,国产框架的依赖和 x86 差异大,我们做了分层镜像,基础层钉版本,业务层可热更,部署时间从小时级降到分钟级。上线回滚是第五个坑,信创环境升一次级动辄半天,我们给一体机做了快照加蓝绿,新镜像先在备用实例验,验过再切主,出问题秒回滚,客户终于敢让我们动生产了。
适配通过率(验证清单项)从首轮约七成提升到百分之百,核心推理吞吐在国产 GPU 上达到原 x86 方案的约六成,客户评估够用。交付周期从最初预估的一个多月压到实际十八天,其中适配占了十二天。上线半年运维工单量月度约十来个,主要是监控告警类的,没有因算子崩溃导致的业务中断。客户后来把这套交付清单当成了内部信创验收的参考模板,第二个项目直接复用,省了首轮踩坑。镜像分层后,单次部署耗时从约 50 分钟降到 8 分钟。客户侧验收周期也从两周压缩到三天,因为适配报告直接对应验收项,逐项打勾即可。硬件厂商后来也拿我们的清单当交付基准,省了他们反复被客户问同样的问题。
信创适配最大的坑是临上线才发现算子不支持,验证清单一定要在选型阶段就拉出来,和客户、硬件厂商三方对齐,别等货到了才测。我们这次吃了两周窗口的亏,但清单留下来了,下一个项目省了首轮踩坑。算子不支持时,拆开用基础算子替代比干等厂商补更实际,精度换功能是私有化场景下的常见权衡。驱动版本钉死这条看着不灵活,但现场稳定性比追新重要,尤其内网环境升一次级成本很高。镜像分层这招是交付后为了快返工想出来的,没想到后来成了标准动作,部署效率提升明显。交付分层的思路后来在另一家金融机构的私有云项目里也跑通了,适配报告成了标配。上线回滚这层是客户逼出来的,但后来每次变更都靠它兜底,信创环境里敢动生产全靠这一刀。
信创适配这件事,技术难但不是最难的,最难的是把不确定性提前暴露。我们这次撞了两周墙,换来一份能反复用的验证清单,算值。后来再遇到国产硬件,先翻清单对项,心态稳了不少。把不确定性前置,比什么都强。下次再遇到同类项目,这套清单就是我们的底气。
案例片段(已脱敏): 信创适配验证清单片段(示意): [通过] 国产 GPU 驱动版本 locked@v2.3.1,内核 4.19.x [通过] 注意力融合算子缺失 → 拆为 MatMul+Softmax 基础算子组合,精度偏差 < 0.5% [通过] 容器 cgroup 限制:实例 A 显存 16G 上限,实例 B 8G 上限 首轮验证 23 项中 7 项失败(均算子相关),次轮替换后 23/23 通过,交付周期 18 天,上线半年零中断,部署耗时 50min→8min,验收周期 14天→3天。