小模型在昇腾NPU上的推理部署:【小模型算力切分实践案例】
​作者​昇腾实战派​知识地图​https://blog.csdn.net/Lumos_Lovegood/article/details/161601003背景概述随着小模型在特定任务上展现出接近甚至超越大模型的推理能力“专而精”的小模型在资源受限场景下优势明显。与此同时华为Ascend系列算力卡进入市场后用户对算力资源隔离与整体利用率提升的需求日益迫切。通过资源虚拟化技术将物理NPU切分为多个vNPU挂载到容器中可实现统一资源分配与回收满足多用户频繁申请/释放资源的操作需求。本文以静态虚拟化方式在昇腾推理服务器裸机上提供小模型RECCE的切分案例及理论指导。1 解决方案1.1 方案介绍当前划分vNPU主要有静态虚拟化和动态虚拟化两种方式。本文以静态虚拟化为主采用Docker部署方式。静态虚拟化通过npu-smi工具手动创建多个vNPU支持物理机和虚拟机场景。动态虚拟化通过软件配置在收到虚拟化任务请求后动态创建vNPU、挂载任务并回收资源。将vNPU挂载到容器有以下方案原生Docker仅支持静态虚拟化通过Docker拉起容器时将vNPU挂载到容器。注意不支持通过原生Containerd拉起容器时挂载vNPU。安装Docker及挂载vNPU的指导请参考多容器场景下安装 - Atlas 中心训练服务器 25.2.0 NPU驱动和固件安装指南 02 - 华为结合MindCluster组件静态虚拟化通过npu-smi工具提前创建多个vNPU基于Ascend Device Plugin实现设备发现、分配与健康状态上报Volcano组件为可选。Ascend Docker Runtime单独使用支持静态和动态虚拟化通过容器引擎插件拉起容器时挂载vNPU。Kubernetes结合MindCluster组件Ascend Device Plugin、Volcano通过Kubernetes拉起容器时挂载vNPU支持静态和动态虚拟化。1.2 vNPU切分特性操作说明虚拟化实例功能通过资源虚拟化将物理机或虚拟机配置的NPU切分成若干份vNPU挂载到容器中使用实现统一资源分配与回收满足多用户反复申请/释放资源的操作需求。参考文档创建vNPU-MindCluster7.0.RC1-昇腾社区约束说明若涉及平台管理切分操作由平台根据模板下发具体操作见参考文档。物理NPU虚拟化出vNPU后不支持再将该物理NPU挂载到容器或直通到虚拟机使用。一个vNPU只能被一个任务容器使用不支持多个容器共用。1.2.1 虚拟化模式查询在物理机执行以下命令设置虚拟化模式虚拟机内划分vNPU无需执行npu-smiset-tvnpu-mode-dmode类型描述mode虚拟化实例模式取值为0或10为容器模式1为虚拟机模式更多npu-smi命令参考Atlas A2 中心推理和训练硬件 24.1.0 npu-smi 命令参考 05 - 华为1.2.2 查询算力切分模板信息npu-smi info-ttemplate-info不同设备切分模板略有区别。以某款设备为例支持两种模板显存分别为32G/16G最大支持1切4。说明vir后的数字表示AI Core数量c前的数字表示AI CPU数量32/16G表示显存资源分配。AI Core主要用于矩阵乘等计算AI CPU负责执行CPU类算子包括控制算子、标量和向量等通用计算。1.2.3 创建vNPU命令格式npu-smiset-tcreate-vnpu-iid-cchip_id-fvnpu_config[-v vnpu_id][-g vgroup_id]类型描述id设备id通过npu-smi info -l命令获取chip_id芯片id通过npu-smi info -m命令获取2 实操RECCE模型算力切分验证2.1 模型介绍当前鉴别人脸图像是否伪造存在两方面技术难题一是如何鉴别未知方法伪造的人脸图像二是人脸伪造本质上是利用深度学习进行信息篡改现有方法未考虑对鉴别方法自身的攻击。为此杨小康教授团队提出RECCE侦查鉴别方法利用图像重建技术放大伪造痕迹即使面对未知伪造方法也能准确识别伪造区域。同时团队设计了Hybrid Attack攻击方法对人眼不可见的微量修改即可欺骗鉴别算法。相关论文已被CVPR 2022收录。模型源码https://github.com/VISION-SJTU/RECCE2.2 部署环境说明硬件Atlas 800I A2服务器驱动安装后默认包含npu-smi工具位于/usr/local/sbin/和/usr/local/bin/路径下CANN版本8.1.RC1HDK版本25.2.02.3 算力切分2.3.1 设置虚拟化模式使用Docker容器部署服务设置为容器模式npu-smiset-tvnpu-mode-d02.3.2 创建vNPU查看当前设备支持的切分模板npu-smi info-ttemplate-info设备支持两种模板分别可切分出16G和32G显存模型权重不足1G可直接切成4份每份16G显存指定对应模板创建vNPUnpu-smiset-tcreate-vnpu-i6-c0-fvir05_1c_16g2.3.3 查询vNPU创建结果npu-smi info-tinfo-vnpu-i6-c0原NPU被切成四个vNPUID为196~199/dev目录下也可看到对应信息2.3.4 销毁vNPU验证完成后执行npu-smiset-tdestroy-vnpu-i6-c0-v196npu-smiset-tdestroy-vnpu-i6-c0-v197npu-smiset-tdestroy-vnpu-i6-c0-v198npu-smiset-tdestroy-vnpu-i6-c0-v1992.3.5 挂载容器基于原生Dockerdockerrun-it-d--nethost --shm-size1g\--name容器名\--device/dev/davinci_manager\--device/dev/hisi_hdc\--device/dev/devmm_svm\--device/dev/vdavinci196:/dev/davinci0\-v/usr/local/Ascend/driver:/usr/local/Ascend/driver:ro\-v/usr/local/sbin:/usr/local/sbin:ro\-v/home:/home\镜像名bash注意不要使用--privilegedtrue特权模式。容器内执行npu-smi info可查看NPU信息后续使用方式与普通NPU一致。2.4 推理模型测试2.4.1 精度测试精度测试可使用开源数据集或业务相关数据集进行验证。RECCE模型通过现有数据集进行精度测试主要流程如下将未切分的NPU挂载到容器中。执行推理脚本得到图片数据集中每张图片的伪造可能性。将切分后的vNPU挂载到容器中重复步骤2。比较两次结果计算每张图片伪造可能性的差异并取平均得到最终精度差异。核心代码devicetorch.device(args.device)modeleval(Recce)(num_classes1)ifargs.weightandargs.bin:raiseValueError(Only one of --weight or --bin can be set.)elifargs.weight:weightstorch.load(args.weight,map_locationcpu)elifargs.bin:weightstorch.load(args.bin,map_locationcpu)[model]else:raiseValueError(Neither of --weight nor --bin is set. )model.load_state_dict(weights)modelmodel.to(device)freeze_weights(model)model.eval()paths,imagesprepare_data()inference(model,imagesimages,pathspaths,devicedevice)最终精度测试结果切分前后误差在可接受范围内符合预期。2.4.2 性能测试精度验证完成后进行性能测试主要流程如下启动4个Docker容器挂载到同一张NPU上。客户端持续向每个容器中的推理服务发送请求逐步提高并发数量记录单张图片处理耗时。启动4个Docker容器分别挂载到4个vNPU上重复步骤2。对比两次结果评估性能提升程度。最终性能测试结果切分前后性能几乎持平。2.5 FAQ2.5.1 容器启动失败问题现象执行docker run报错docker: Error response from daemon: OCI runtime create failed: container_linux.go:329 starting container process caused permission denied: unknown.根因分析某些镜像需要调用的系统调用被seccomp profile限制导致权限拒绝。解决方案在docker run命令中添加参数--security-opt seccompunconfined --security-opt apparmorunconfined。2.5.2 拉起模型服务报错问题现象执行npu-smi info报错dcmi module initialize failed. ret is -8005。根因分析检查docker run启动脚本发现--device参数中设备名称拼写错误。解决方案修正设备名称拼写重新执行docker run后服务正常启动。2.5.3 算力切分后如何统计单个NPU的AICore利用率问题现象切分后在宿主机上使用npu-smi info查看AICore利用率一直上不去。根因分析切分后该命令查看的是原始NPU的利用率不准确需进入容器查看vNPU的利用率。解决方案在每个容器中实现脚本定时执行npu-smi info获取AICore利用率写入宿主机可访问的日志文件中然后在宿主机上读取所有vNPU的利用率信息求和取平均。3 价值与效果通过本实践案例验证了昇腾Atlas 800I A2服务器对RECCE小模型进行部署切分的可行性并验证了精度和性能方面几乎无损失。在部分业务场景中单个容器要求只部署管理一个模型通过vNPU切分可实现算力资源隔离满足业务部署诉求同时提高NPU卡整体利用率。

相关新闻

生成引擎优化(GEO)提升内容创作效率的实践指南

生成引擎优化(GEO)提升内容创作效率的实践指南

生成引擎优化(GEO)是提升内容创作效率的重要工具。它利用智能化的方式,帮助内容创作者更快地定位用户需求,优化内容的结构和质量。GEO允许创作者在短时间内生成符合市场趋势的高质量内容,进而提升用户体验。这一过程为创作提供了数据支撑&…

2026/7/8 2:26:28阅读更多 →
深入浅出KVCache:大模型加速的“秘密武器”

深入浅出KVCache:大模型加速的“秘密武器”

在用 ChatGPT、Claude 等大模型(LLM)聊天时,你可能注意到了一个现象:模型吐出第一个字往往最慢,但一旦开始蹦字,速度就会飞快。 这背后最大的功臣,就是 KV Cache(键值缓存&#xff0…

2026/7/8 2:26:28阅读更多 →
鹤壁企业采购白酒,几点建议

鹤壁企业采购白酒,几点建议

企业采购白酒,与个人日常选酒完全不同。面对公司年会、客户送礼、员工福利等多个场景,既要考虑预算和数量,又要兼顾品牌认知与包装体面。本文结合鹤壁本地企业采购的真实经验,从四个维度给出具体建议,帮助采购负责人高…

2026/7/8 2:26:28阅读更多 →
本地部署开源物联网平台 ThingsBoard 并实现外部访问( Windows 版本)

本地部署开源物联网平台 ThingsBoard 并实现外部访问( Windows 版本)

ThingsBoard 是一款开源的物联网平台,它提供了强大的设备管理、数据采集、实时可视化、告警管理和规则链处理等功能,支持多种协议和设备连接,专门用于物联网项目的快速开发、管理和规模化,能够帮助企业和开发者高效地构建个性化的…

2026/7/8 3:16:31阅读更多 →
【Agent 学习日记】不想把网站数据交给第三方?用Umami搭建自己的访问分析系统

【Agent 学习日记】不想把网站数据交给第三方?用Umami搭建自己的访问分析系统

目录 🎈前言 🎈1.什么是Umami? 🎈2.安装Typecho(个人网站示例) 🎈3.安装Umami 🎈4.简单使用Umami 🎈5.安装cpolar实现随时随地开发 🧣5.1 什么是cpola…

2026/7/8 3:16:31阅读更多 →
法人章遗失登报不知道怎么办?别慌!完整流程在这篇

法人章遗失登报不知道怎么办?别慌!完整流程在这篇

内容摘要:法人章遗失后,需先准备企业营业执照、法人身份证等材料,选择正规渠道登报声明作废。整体流程简单,线上小程序可全程线上操作,线下可前往报社网点办理。搭配模板、常见坑点和问题解答,帮助各位快速…

2026/7/8 3:16:31阅读更多 →
家庭防水行业标准:宝师傅师傅解读

家庭防水行业标准:宝师傅师傅解读

选购防水胶的时候,很多消费者会在产品包装上看到各种各样的执行标准编号,比如Q/421081HBZB 021-2026这样的代码。这些标准和编号到底代表什么?家庭防水有没有统一的行业标准?了解这些信息,不仅能帮助你辨别产品是否正规…

2026/7/8 3:16:31阅读更多 →
Anthropic论文揭秘Claude模型:J-space类似人脑结构,离AI“意识”还有多远?

Anthropic论文揭秘Claude模型:J-space类似人脑结构,离AI“意识”还有多远?

Claude模型惊现类似人脑结构!J-space揭秘AI“意识”真相 万万没想到,在Claude模型里,真的发现了类似人脑的结构。Anthropic最新发表了一篇超长论文,研究了Claude的潜意识与意识。 结果显示,Claude内部确实存在类似的功…

2026/7/8 3:16:31阅读更多 →
OpenPI真机部署Cobot Magic:让VLA模型驱动真实机械臂

OpenPI真机部署Cobot Magic:让VLA模型驱动真实机械臂

1. OpenPI真机部署Cobot Magic:不是跑个Demo,而是让机械臂在真实世界里“看见—理解—行动”你有没有试过,在树莓派或国产OpenPI开发板上跑通一个VLA(Vision-Language-Action)模型的推理demo,终端输出一行漂…

2026/7/8 3:11:30阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/7 4:43:43阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/7 2:56:31阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/8 2:26:06阅读更多 →
作为一个给团队打绩效的人,我想说几句

作为一个给团队打绩效的人,我想说几句

我每半年都会给团队成员打绩效,也会参与和 CTO 的绩效校准,所以从管理者的视角,说说这件事 首先,我先把结论告诉你:接受结果,但一定要把原因问清楚。 因为当绩效公布到你这里的时候,结果基本已…

2026/7/8 0:01:17阅读更多 →
A股股指期货:全维度解析(多表格结构化完整版)

A股股指期货:全维度解析(多表格结构化完整版)

一、基础定义与核心本质股指期货全称股票价格指数期货,是中国金融期货交易所(中金所)上市的标准化金融期货合约,交易标的为 A 股大盘指数,约定未来特定时间按约定价格现金交割指数涨跌差价,不交割一篮子股票…

2026/7/8 0:01:17阅读更多 →
iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder &…

2026/7/8 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/7 5:11:21阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/7 5:11:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/7 5:11:21阅读更多 →