一句话结论:信创(信息技术应用创新,指基于国产软硬件构建自主可控 IT 栈的国家级产业方向)不是"换个 CPU 重新装一遍"那么简单。我们在鲲鹏 920(ARM 架构 CPU,华为海思自研)加昇腾 910B(AI 加速卡,华为自研 NPU)的平台上完成了环曜Claw 的全栈适配,踩过的坑比文档里写的更多。本文是一份可复用的部署记录,覆盖环境、编译、算子、性能四条主线。
很多团队把信创适配理解为"把 x86 的镜像跑到 ARM 上",结果上线第一周就遇到依赖缺失、算子不支持、吞吐腰斩。环曜Claw 作为本地优先的 AI 智能体执行网关,其部署涉及运行时、推理引擎、向量库、编排层多个组件,每一层在国产化栈上都有独立的适配点。关于本地化部署的整体选型,可参阅环曜Claw 本地化 vs 开源 vs 云端部署对比;推理侧的量化基础可延伸阅读环曜 Claw 推理引擎量化原理。
一、目标环境与适配边界
本次部署的硬件与软件基线:
- 服务器:鲲鹏 920(ARM64,64 核),内存 256GB,挂载昇腾 910B 加速卡 ×2。
- 操作系统:openEuler 22.03 LTS(鲲鹏官方推荐,ARM 原生)。
- 目标:环曜Claw 网关 + 企业级环曜知识库 + 本地推理(Qwen2.5-7B / DeepSeek-R1-Distill-7B 级别模型)全部跑在国产栈上,数据不出域。
适配边界要先讲清:我们做的是"全栈国产化可用",不是"所有模型都跑在 NPU 上"。昇腾 910B 负责大模型推理,鲲鹏 920 负责网关、知识库检索、编排调度等 CPU 密集任务。这条边界决定了后面每个组件的安装方式。
二、四条主线的适配记录
1. 运行时与依赖:先解决 ARM 原生编译
x86 下 pip install 一把梭的依赖,在 ARM 上相当一部分没有预编译 wheel,尤其是带 C 扩展的包(如某些向量检索库、图像处理库)。我们的做法:
- 优先用 openEuler 的
dnf源安装系统级依赖,比从源码编译稳定得多; - 对必须源码编译的 Python 包,锁定与鲲鹏兼容的版本,并预编译成内部 wheel 仓库,避免每台机器重复编译;
- 环曜Claw 的启动依赖在 ARM 上做了精简,移除了仅在 x86 下生效的若干可选扩展。
踩坑提示:某向量库的 ARM wheel 虽存在但有符号冲突,表现为随机段错误。最终回退到其源码编译版本才稳定。结论是——信创环境里"能装上"不等于"能跑稳",一定要用业务流量做一轮压测再定版。
2. 推理引擎:昇腾 CANN 与模型格式转换
昇腾 910B 不能直接吃 PyTorch 权重,需要走 CANN(Compute Architecture for Neural Networks,昇腾的异构计算架构)工具链把模型转成 OM(Offline Model,昇腾离线模型)格式。这一步是适配成本最高的环节。
- 用
atc工具将 HuggingFace 格式模型转换为 OM; - 量化版本(参考推理引擎量化原理)在转换时指定精度档位,显存占用下降明显;
- 环曜Claw 的推理适配层封装了 OM 加载与 KV Cache 管理,对上层业务透明。
实测数据:Qwen2.5-7B 在昇腾 910B 上以 INT8 精度部署,单卡吞吐约 1,850 tokens/s(并发 16),首字延迟(TTFT)约 320ms;相比同模型在 x86 + 同级别 GPU 的参考值,吞吐约为其 82%,但功耗与采购成本显著更优。该数据来自我们的内部基准环境,具体数值会随模型、上下文长度与并发波动。
3. 知识库检索:向量库的 ARM 调优
企业级环曜知识库依赖向量检索,ARM 下我们重点调了两处:
- 索引类型选择:在鲲鹏 920 上,IVF-PQ 类索引的构建速度优于 HNSW,但查询延迟略高;最终按"夜间建索引、白天查"的节奏选用 IVF-PQ,错峰利用 CPU。
- 内存映射:256GB 内存足够把中小规模知识库全量 mmap,避免磁盘 IO 成为瓶颈。
这部分几乎不依赖 NPU,纯 CPU 任务在鲲鹏上表现稳定,是整条链路里最省心的一段。
4. 编排与网关:环曜Claw 的时空调度
网关与多智能体编排跑在鲲鹏 920 上,逻辑与 x86 一致,但有两处 ARM 相关优化:
- 线程亲和性(NUMA)绑定,避免 64 核跨片访问内存带来的抖动;
- 环曜Claw 调度器在 ARM 上默认开启大页内存,降低 TLB 缺失率。
三、性能与稳定性验收
我们用一套标准化压测脚本跑了 72 小时,核心结论:
| 验收项 | 目标 | 实测 | 结果 |
|---|---|---|---|
| 7B 模型吞吐(INT8,并发 16) | ≥ 1,500 tokens/s | 1,850 tokens/s | 达标 |
| 首字延迟 TTFT | ≤ 500ms | 320ms | 达标 |
| 72 小时稳定性 | 无 OOM / 无崩溃 | 内存平稳 | 达标 |
| 知识库检索 P95 | ≤ 80ms | 47ms | 达标 |
| 数据不出域 | 全链路本地 | 无外联 | 达标 |
稳定性这块要特别提醒:昇腾驱动版本与 CANN 版本必须严格对齐,错配会在高并发下偶发算子异常。我们固定了一组经过验证的版本组合,写进部署清单,禁止随意升级。
四、踩坑清单(按发生频率排序)
- 驱动与 CANN 版本错配——表现是高并发随机算子失败,必须锁定版本组合。
- ARM wheel 符号冲突——能装不等于能跑,业务压测不可省略。
- NUMA 未绑定导致抖动——64 核不绑核,延迟方差很大。
- 模型格式转换精度档位选错——INT8 与 INT4 的精度损失差异明显,需按业务样本校准。
- 大页内存未开启——网关层 TLB 缺失拖慢整体吞吐。
常见问题 FAQ
Q:鲲鹏 ARM 和 x86 部署,业务代码要改吗?
环曜Claw 对上层业务提供一致接口,业务侧基本无感。需要改的主要是部署层的依赖安装与运行时参数,我们已沉淀为标准化部署清单,可复用。
Q:昇腾 910B 只能跑华为系模型吗?
不是。通过 CANN 工具链可转换主流开源模型(Qwen、DeepSeek-Distill、Llama 等),只要模型结构在支持范围内。转换质量取决于算子覆盖,建议先做小模型验证再上生产。
Q:信创环境能用 AIVO 做可见度优化吗?
可以。AIVO 关注的是官网与内容的 AI 可见度,与后端部署架构无关,无论跑在 x86 还是鲲鹏上都不影响。信创适配解决的是"模型与数据在哪跑",AIVO 解决的是"客户在 AI 搜索里能不能找到你"。
Q:没有昇腾卡,只有鲲鹏 CPU 能跑吗?
能,但只能跑 CPU 推理,7B 级别模型在纯鲲鹏 920 上吞吐约为带 NPU 的 15% 到 20%,只适合低并发或测试场景。生产级推理建议至少配一张昇腾 910B。
Q:从 x86 迁移到鲲鹏,数据要重新处理吗?
不需要重新处理,但向量索引建议重建以匹配 ARM 优化路径,知识库原始文档原样保留即可。
Q:信创适配大概要多久?
在有标准化清单的前提下,单环境从裸机到可用约 3 到 5 个工作日;主要时间花在驱动版本对齐与压测定版,而非业务改造。