ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

昇腾950与大模型落地:从算力采购到NPU部署的工程实践指南

昇腾950与大模型落地:从算力采购到NPU部署的工程实践指南 最近看到一条行业消息范式智能拟出资超 10 亿元采购华为昇腾 950 芯片用于大模型落地。这类大额算力采购如果放到前两年可能更多被视为“硬件新闻”但在今天它背后其实是一连串工程问题大模型究竟需要什么算力采购的芯片会用在训练还是推理部署环境怎么搭模型怎么跑起来成本怎么控制代码层面怎么适配这篇文章不打算只做新闻复述而是结合 AI 芯片与大模型部署的实际开发视角拆解“昇腾 950 / 大模型落地”这条线路上会遇到的工程问题。无论你是做算法、做后端还是负责平台运维只要你需要把大模型真正跑在非 NVIDIA 的国产加速卡上下面这些内容都能作为一份入门参考。1. 算力采购背后的产业变化大模型进入“落地驱动”阶段1.1 超十亿级芯片采购意味着什么先看消息本身范式智能拟出资超 10 亿元采购华为昇腾 950 芯片用途是大模型落地。这里的关键词不是“拟出资 10 亿”而是“用于大模型落地”。过去很长一段时间大模型公司的采购重心是训练算力目标是尽快把超大模型训练出来。但当模型能力基本稳定商业产品开始面对真实用户时算力需求会明显分成两条线训练集群偏高性能计算需要高带宽、低时延稳定跑数天甚至数周。推理集群偏高吞吐、低延迟、高并发直接决定线上服务的成本和体验。超十亿级别的芯片采购不太可能只为了做实验跑 benchmark更可能是在规划长期推理集群或训推一体集群。从系统设计的角度看这也反映出一个趋势大模型竞争的重点正在从“谁能训练出来”转向“谁能把运行成本压下去、把服务稳定性做上来”。1.2 大模型落地对算力芯片提出的新要求传统软件采购看的是 CPU 核数、内存大小传统 GPU 采购看的是显存、算力、互联带宽。大模型落地阶段的芯片选型还要额外看几项能力需求维度具体表现典型瓶颈显存/HBM 容量能否单卡放下更大模型或更长上下文显存不足导致无法加载模型推理性能每 token 生成延迟、并发吞吐算力不足导致首 token 延迟过高互联带宽多卡并行推理、张量并行通信效率带宽不足导致多卡加速比不理想软件生态PyTorch、vLLM、MindIE 等框架能否直接支持没有适配层则要手写算子成本模型单位 token 成本、卡间通信开销闲置与碎片化严重这些要求放在昇腾 950 这类国产加速芯片上会更加突出。因为“芯片本身性能够不够”只是第一步更现实的挑战是“模型能不能顺利迁移到该芯片上跑以及跑起来之后能不能稳定扛住线上流量。”1.3 为什么大模型落地必须认真考虑国产芯片从工程视角看大模型应用开发不应该绑定某一种硬件。过去很多团队习惯于默认“必须有 NVIDIA GPU”连代码里的cuda、devicecuda都写得很死。一旦换成国产加速卡才发现硬件抽象层没有做好。国产 AI 芯片生态已经有长足发展昇腾是其中相当重要的一支。其背后的异构计算架构提供的并不是“另起炉灶”而是尽量兼容主流 AI 开发方式。对于开发者来说学习昇腾不是要抛弃 PyTorch 习惯而是要学会在已有模型基础上做迁移、适配和调优。2. 昇腾 950 在芯片体系中的定位与技术认知2.1 昇腾芯片的产品序列华为昇腾系列是面向 AI 加速场景的处理器命名上通常用数字标识代际或定位。昇腾 950 可以理解为昇腾 AI 芯片产品序列中定位较高的一代产品主要用于数据中心场景下的 AI 训练与推理。由于官方尚未放出完整的参数白皮书或该型号对应的公开开发文档本文不建议把这些型号参数当成固定结论来引用。真正从事开发时你需要关心的其实是以下几点采用什么样的内存体系是否能满足大模型显存需求。MindSpore、PyTorch、MindIE 等框架层支持是否到位。与同系列老型号相比算子库、通信库是否更多、更成熟。官方调试工具链是否完整比如 profiling、dump、算子比对工具。多卡互联方案是什么是否适合大规模张量并行推理。说白了昇腾 950 这个名字在未来一段时间可能会频繁出现在新闻里但落到代码层面开发者通常接触的不是芯片本身而是围绕芯片的软件栈。2.2 昇腾芯片的异构计算架构昇腾 NPU 的软件栈核心是异构计算架构常见叫法是 CANN。它向上支撑 AI 框架向下屏蔽 NPU 硬件细节。初次接触昇腾很容易被一堆名词绕晕CANN、AscendCL、ge、GraphEngine、算子、OM 模型、MindIE……从实用的角度看可以简化理解为芯片加速能力非常依赖底层算子实现。模型要先经过适配或转换才能在 NPU 上高效运行。直接使用 PyTorch 原生并不够通常需要安装昇腾对应的 PyTorch 适配包。高并发推理场景下官方推理加速引擎会比纯 Python 方式更稳、更省显存。这也解释了为什么“采购昇腾 950”只是第一步后续的工程投入一点都不会少。2.3 对“昇腾 950 大模型”的正确认识很多读者看到“采购昇腾 950 芯片用于大模型落地”下意识会觉得买了芯片跑大模型不就可以了但真实工程中采购大额芯片之后往往要经历这样一个链条芯片到位后先做硬件验收和压力测试。再从开源模型仓库下载模型权重。然后是权重格式转换、量化、编译。接着做算子兼容性验证处理不支持的算子。再部署推理服务配置并发策略。最后接入业务接口做监控、日志、告警、灰度发布。这是一条完整的落地链路硬件采购只是其中一环。3. 从训练到推理大模型算力需求的关键差异3.1 训练与推理在资源消耗上完全不同“范式智能拟采购昇腾 950 用于大模型落地”我更倾向于认为这部分主要面向推理或训推一体场景。因为大模型训练阶段往往需要长时间维护任务而推理阶段则是 7×24 小时对外服务。推理和训练的资源需求差异非常明显训练过程需要保存梯度、优化器状态显存占用远高于纯模型推理。推理过程更注重“批量处理效率”和“单 token 生成速度”。训练可以容忍秒级甚至分钟的步间延迟推理必须在百毫秒级别内完成首 token 响应。训练任务通常跑满整个集群推理任务则要处理波峰波谷具备弹性收缩能力。所以在设计推理集群时我们需要考虑的不只是芯片数量还包括请求调度策略、缓存策略和批处理大小。3.2 推理场景中芯片能力的主要衡量维度当模型部署到昇腾 NPU 上后性能数据不能只看芯片标称算力还要看实际推理引擎是否把能力发挥出来。常见观测指标包括首 token 延迟用户发出请求后到收到第一个 token 的时间。每 token 解码延迟生成后续 token 的间隔时间。吞吐量单位时间内完成的请求数或生成的 token 数。显存占用模型权重、KV Cache、推理上下文各占多少。功耗与散热多卡机柜是否能保持稳定运行。推理优化通常是一个反复实验的过程不是修改一个参数就能一步到位。3.3 KV Cache 是推理集群不能回避的话题大模型文本生成是逐 token 输出的每生成一个新 token都需要读取前面所有历史 token 的 Key、Value 向量。KV Cache 的作用就是缓存这些中间结果避免重复计算。这块显存会随请求数和上下文长度增加而快速增长。部署昇腾大模型推理集群时主要观察的点是请求越多KV Cache 占用越多。上下文越长KV Cache 占用越多。如果不做 PagedAttention 这类动态显存管理显存碎片会非常明显。不同模型层的 KV Cache 是否均匀也影响到多卡推理负载均衡。这也是为什么主流推理框架都致力于优化 KV Cache 和显存命中率。昇腾生态下的 MindIE 以及适配层同样重视这类问题。4. 昇腾环境搭建与模型部署的快速上手路径4.1 环境准备先确认驱动、固件和 CANN 软件包在拿到昇腾服务器或板卡之后第一步别急着跑模型先把底层环境确认清楚。昇腾 NPU 的驱动、固件、CANN toolkit 之间有严格的版本匹配关系任意一个不匹配都可能出现“设备看不到”“算子运行失败”“内存申请失败”等奇怪问题。按照常规流程你需要确认下面几个信息# 1. 检查操作系统与内核版本 uname -m cat /etc/os-release # 2. 查看昇腾 NPU 设备是否被系统识别 npu-smi infonpu-smi info的作用类似 NVIDIA 的nvidia-smi会显示当前有几张 NPU 卡、芯片型号、温度、功耗、显存使用情况。如果这里都看不到设备就说明驱动或固件没有装好不要去调上层模型。没有安装 CANN 时通常会遇到类似错误/usr/local/Ascend/ascend-toolkit/set_env.sh: No such file or directory这是因为 CANN toolkit 没有安装到默认路径或者环境变量没有 source。你需要先完成 CANN toolkit 的安装再设置环境变量。常见做法是加入 shell 配置source /usr/local/Ascend/ascend-toolkit/set_env.sh如果软件包安装在其他目录请把路径替换成实际安装路径。4.2 PyTorch 模型迁移到 NPU 的最小示例如果只是把一个已经训练好的 PyTorch 模型迁移到昇腾 NPU 上推理最直接的方式是在 Python 中导入昇腾的 PyTorch 适配包然后用类似 CUDA 的方式把模型从 CPU 放到 NPU。下面是一段关键的验证代码# 文件路径check_npu.py import torch try: import torch_npu print(torch_npu imported successfully) except ImportError as e: print(torch_npu not found:, e) raise SystemExit(1) # 查看 NPU 设备数量 device_count torch.npu.device_count() print(NPU device count:, device_count) if device_count 0: # 获取第一张卡名称 device_name torch.npu.get_device_name(0) print(NPU device name:, device_name) # 在 NPU 上创建一张随机 Tensor x torch.randn(4, 4, devicenpu:0) y torch.randn(4, 4, devicenpu:0) z x y print(Matmul result shape:, z.shape) else: print(No NPU device found. Please check driver or torch_npu installation.)代码执行后如果你能看到以下类似输出说明环境基本没问题torch_npu imported successfully NPU device count: 1 NPU device name: xxxx Matmul result shape: torch.Size([4, 4])需要注意torch_npu的版本必须和你的 PyTorch 版本、Python 版本、CANN 版本一一对应。安装时不要单纯执行pip install torch_npu然后不管最好的方式是参考昇腾社区提供的版本配套表进行安装。4.3 模型转换与 OM 模型的概念在很多昇腾部署方案中模型最终会转换成 OM 格式由昇腾推理引擎直接加载。相比直接使用 Python 框架加载 PyTorch 权重OM 模型执行效率通常更高部署形态也更接近生产环境。一个常见的模型转换命令思路如下atc --modelmodel.onnx \ --framework5 \ --outputmodel_om \ --soc_version实际芯片型号 \ --input_formatND这里的几个参数含义是--model输入模型路径这里以 ONNX 为例。--framework输入模型的框架格式不同数字代表不同来源。--output输出的模型名称。--soc_version芯片型号不同的昇腾芯片对应的字符串不同。--input_format输入数据格式。这段示例中的实际芯片型号只是占位符。不同版本的 ATC 工具对芯片型号的枚举方式并不完全一样建议在使用前先查看当前 ATC 工具支持的芯片列表或者用npu-smi info显示的型号去对照官方文档。不要照搬新闻里的“昇腾 950”字样去填参数因为软件工具链里的型号编码和宣传名称往往是两套体系。4.4 大模型推理时如何加载权重使用开源大模型在昇腾 NPU 上推理时理论上可以按下面的路径操作下载开源模型权重。将模型加载到 PyTorch 中。通过torch_npu完成设备映射。把模型切换为推理模式。传入输入 token 得到输出 token。代码核心逻辑如下import torch import torch_npu from transformers import AutoTokenizer, AutoModelForCausalLM model_path /data/models/your-local-model # 加载分词器与模型 tokenizer AutoTokenizer.from_pretrained(model_path) model AutoModelForCausalLM.from_pretrained( model_path, torch_dtypetorch.float16, device_mapauto, ) # 将模型放到 NPU model.to(npu:0) model.eval() prompt 请用一句话介绍昇腾 AI 芯片 inputs tokenizer(prompt, return_tensorspt) inputs {k: v.to(npu:0) for k, v in inputs.items()} with torch.no_grad(): output_ids model.generate( **inputs, max_new_tokens128, do_sampleTrue, temperature0.7, ) answer tokenizer.decode(output_ids[0], skip_special_tokensTrue) print(answer)上面这段代码是“最小可跑通”的思路不是完整的高并发生产方案。如果你部署的是 7B、13B、70B 甚至更大规模的模型单卡很可能放不下就需要考虑模型并行、张量并行、流水线并行或推理框架级别的切分策略。5. 多卡并行与并发控制策略5.1 多卡环境变量与设备调度在昇腾环境中ASCEND_RT_VISIBLE_DEVICES是一个非常重要的环境变量作用类似 CUDA 的CUDA_VISIBLE_DEVICES。通过它可以把某几张物理 NPU 卡暴露给当前进程。# 只使用编号为 0、1、2、3 的四张卡 export ASCEND_RT_VISIBLE_DEVICES0,1,2,3如果是 Docker 容器启动可以这样限制容器内可见的 NPU 设备。类似下面的命令思路docker run -it \ --device/dev/davinci0 \ --device/dev/davinci_manager \ --device/dev/hisi_hdc \ -v /usr/local/Ascend:/usr/local/Ascend \ ascend_npu_image \ bash需要注意物理设备路径在不同驱动版本中可能会变化。容器挂载设备不能照搬这一条必须先看宿主机上ls /dev/davinci*的输出。5.2 大模型并发推理的典型问题很多团队在小规模验证时只测单进程、单请求等上了生产才发现并发一高就内存溢出。问题多半出在几个地方每个请求都创建一份完整模型副本。未启用动态批处理请求无法共享权重复用。KV Cache 没有池化每个请求预分配最大显存。模型权重在多个进程间重复加载。优化方向也很明确优先使用专业的推理服务框架来管理并发而不是自己写多线程推理。5.3 什么时候需要多卡推理不是所有模型都要多卡部署。小模型可以使用单卡多实例方案提高硬件利用率大模型则可能需要多卡并行。多卡推理的核心收益是“能放下更大的模型”而不仅仅是“提高单请求速度”。真正要多卡并行时要重点观察加速比单卡推理延迟是 100ms双卡不是一定就能到 50ms。张量并行会引入通信开销卡间互联带宽不够反而更慢。并行切分后算力可能提升但显存效率不一定线性增长。需要结合业务请求大小、batch 大小不断压测。模型部署不是简单堆卡数上多卡前一定要做基准测试。6. 大模型落地中的模型量化与内存优化6.1 为什么大模型落地几乎离不开量化大模型参数量大直接使用 FP16 或 BF16 加载可能非常吃显存。比如一个 70B 模型仅权重就要占用上百 GB 显存。为了让它在有限显存内运行量化几乎成为必经之路。常见的做法包括将 FP16 权重转成 INT8。使用 AWQ 或 GPTQ 类方法做权重量化。推理时动态反量化。结合昇腾硬件特性使用支持 INT8 算子的部署方案。量化不只是简单地把浮点数转整数它可能会让输出质量下降、推理变慢或某些算子不被支持。因此部署后必须准备专门的评测集对量化前后效果做对比。6.2 显存占用拆解在一个典型的自回归大模型推理过程中显存大概分布在这些地方模型权重。优化器状态与梯度推理阶段一般没有。推理上下文。KV Cache。临时中间激活值。计算框架本身预留的显存池。如果发现显存溢出优先确认哪部分占用最大。在昇腾 NPU 上可以通过 NPU 的显存监控工具查看。内存异常增长时要重点排查是否发生了显存泄漏。6.3 常见报错与排查思路这里整理一份高频问题表格方便你快速对照问题现象常见原因解决思路启动时报No module named torch_npu未安装 PyTorch NPU 适配包根据 PyTorch 版本安装配套 torch_npuNPU 设备显示 0 张卡驱动未装、权限不足或容器未挂设备用npu-smi info检查设备驱动与容器挂载执行算子时报设备不支持算子未适配或模型未转成支持格式搜索替代算子或使用支持该算子的转换工具显存不足导致 OOM模型过大、KV Cache 没有优化启用量化、降低 batch、缩短上下文、使用推理框架推理速度很慢模型来回拷贝、未高效编图使用官方推理引擎或模型编译优化时快时慢不稳定请求争抢、没有控制 batch 大小配置合理的并发策略与排队机制多卡扩展没有加速通信开销过大或切分维度不合理检查卡间互联调整并行策略7. 生产级部署的最佳实践与建议7.1 版本管理要优先于参数调优昇腾开发中最麻烦的问题往往来自版本不协同。很多用户一遇到算子报错马上怀疑代码结果发现是 CANN、torch_npu、PyTorch 三方版本不一致。建议在项目初期就固化好版本清单并在团队内部把环境做成镜像或部署脚本。不要靠某个人手动装环境。7.2 模型适配要建立回归测试机制昇腾 NPU 与传统 GPU 在算子实现、内存管理、并发调度上存在差异不是所有 PyTorch 代码都能无感迁移。迁移之前建议先做一次模型算子扫描看看哪些算子可能不兼容。迁移完成后要建立多层验证用固定输入跑出模型输出和基准 GPU 结果做数值比对。准备一批典型 Prompt 做输出质量评测。用压测工具跑不同并发数记录延迟与吞吐量。做长稳测试观察内存是否持续增长。大模型落地不是“能输出一句话就算成功”而是要保证长期稳定。7.3 模型加载与推理服务解耦测试环境可以一次性把模型加载到 Python 进程里但生产环境建议将模型文件和推理进程解耦。模型文件单独管理服务进程只负责加载指定版本。这样做的优势是当模型需要更新时不需要重新编译整个业务系统当单机出现故障时也可以快速重新拉起服务。如果能配合灰度发布还能把新模型先切给一小部分用户观察效果。7.4 日志、监控与告警体系要提前设计大模型推理服务的监控同样重要建议至少关注以下指标请求量、排队数、超时数。平均首 token 延迟与生成延迟。NPU 利用率与显存占用。模型版本与权重哈希。失败请求的状态码分布。推理引擎内是否有算子执行异常。一旦发现异常要能通过日志反查到具体是哪个模型版本、哪批请求、哪类输入出了问题。7.5 从“买芯片”到“建能力”的工程思维回到范式智能拟出资超 10 亿元采购昇腾 950 芯片这条消息上我更愿意把它理解成一个长期工程预算的体现。大模型落地需要的产能绝不只是多少颗芯片而是一整套能够把芯片算力转化为稳定业务的服务系统。如果你所在团队也准备采购昇腾这类国产加速卡建议先问自己几个问题现有模型代码是否真的能在昇腾 NPU 上跑通单卡能支撑多大的模型和多高的并发是否需要多卡并行是否了解互联和调度方案推理框架是否已经适配昇腾团队内部有没有人熟悉昇腾工具链和排错方法是否已经准备好长期维护一套版本兼容矩阵这些问题比单纯关注“昇腾 950 算力强不强”更重要也更接近大模型落地时的真实工作。如果想快速验证可以从一台昇腾服务器、一个小规模开源模型开始先跑通环境再逐步增加参数量与并发量。硬件值得投入但真正决定落地效果的永远是围绕硬件建立的软件工程能力。
返回列表