当前位置: 首页 > article >正文

pi0机器人VLA大模型昇腾推理优化

pi0机器人VLA大模型推理昇腾迁移-性能优化说明【免费下载链接】cann-recipes-embodied-intelligence本项目针对具身智能业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-embodied-intelligencepi0昇腾迁移适配基于torch_npu可以实现原始代码的昇腾npu自动适配。同时将代码中npu不支持的float64数据类型替换为float32数据类型可以实现推理快速适配打通并保证推理精度达标。部分npu迁移导入语句如下所示import torch_npu from torch_npu.contrib import transfer_to_npupi0昇腾迁移优化优化目标在昇腾单机单卡计算平台上实现pi0模型的推理性能优化缩短推理时间。测试的输入输出信息如下所示输入双路RGB图像 机器人本体状态 语言文本指令输出50x6关节角度序列优化流程pi0原始开箱推理profiling分析结合torch_npu.profiler及MindStudio Insight计算流水可视化工具得到pi0推理过程中的流水图及算子计算统计图。需要注意pi0在整个推理过程中计算时间和空闲时间所占的比例。pi0原始开箱推理的流水图中空闲时间占据的比例过大由此可以得出是host-bound问题即device侧一直在等待运算指令的下发。同时也需要关注推理过程中AI_VECTOR_CORE和AI_CORE中算子所占的比例pi0原始开箱推理过程中AI_CORE算子占据的比例较小由此可以得出计算过程中昇腾npu亲和的融合大算子所占比例较少没能充分发挥npu的Cube矩阵单元的计算性能原始的pi0代码推理计算逻辑不适合Cube。pi0推理代码结构分析根据pi0推理代码慢系统调用PaliGemma的视觉编码器对单帧图像提取高维表征快系统则是一个基于Transformer的Flow-Matching策略模型负责并行去噪生成动作序列。代码中的旋转编码部分、FA部分、layer-norm(add)部分、QKV计算部分均是通过小算子拼接或多步骤串接而成导致在昇腾npu上计算不亲和。因此从代码逻辑、昇腾亲和融合算子替换、图模式等手段出发对pi0在昇腾npu上的推理性能优化具有重要意义。以下是对几点优化策略的简介优化策略——旋转编码sin/cos计算逻辑优化通过修改paligemma_with_expert.py中class PaliGemmaWithExpertModel(PreTrainedModel)中forward函数中的旋转编码计算逻辑修改apply_rope函数中的输入输出利用torch_npu.npu_rotary_mul融合算子并将Q/K_states进行融合计算拆分同时将sin/cos计算提到for循环外部进行统一计算减少其重复计算次数等手段可以实现旋转编码部分的优化加速。优化的部分代码片段如下所示def apply_rope(query_states, key_states, cos, sin): n_q query_states.shape[2] n_k key_states.shape[2] merged_states torch.cat([query_states, key_states], dim2) # 维度为[B, S, n_q n_k, D] merged_rot torch_npu.npu_rotary_mul(merged_states, cos, sin) q_rot, k_rot merged_rot.split([n_q, n_k], dim2) return q_rot, k_rot优化策略——flash attention的npu原生算子优化通过替换paligemma_with_expert.py中FA部分为npu_prompt_flash_attention融合算子复用融合算子在npu上的快速计算能力提升此模块的计算性能。同时需要注意pi0中原始FA计算方式与npu_prompt_flash_attention融合算子在数学公式上的实现差别尤其是在attention_mask上的数学公式实现差异bool类型True位置转换为负无穷大并进行相应的适配修改将一些计算过程提到循环外面进行提前计算可以实现FA部分的优化加速。优化的部分代码片段如下所示attention_mask torch.logical_not(attention_mask).to(dtypetorch.int8, memory_formattorch.contiguous_format) attention_mask attention_mask[:, None, :, :] ...... def eager_attention_forward( self, attention_mask, batch_size, head_dim, query_states, key_states, value_states ): att_output torch_npu.npu_prompt_flash_attention( query_states, key_states.contiguous(), value_states.contiguous(), num_headsself.num_att_heads_forward, input_layoutBSND, scale_valueself.scale_value, pre_tokens65535, next_tokens65535, atten_maskattention_mask, num_key_value_headsself.num_key_value_heads_forward ) att_output att_output.reshape(batch_size, -1, self.num_att_heads_forward * head_dim) return att_output优化策略——layernorm部分npu原生算子优化将first residule计算中的layernorm和add运算替换为npu算子npu_add_rms_norm融合算子复用融合算子在npu上的快速计算能力提升此模块的计算性能。同时需要注意pi0中layernorm计算方式和npu_add_rms_norm融合算子在数学公式乘积系数上的实现差别并进行相应的适配修改。此外可以将paligemma_with_expert.py中class PaliGemmaWithExpertModel(PreTrainedModel)中forward函数中原生的layer.input_layernorm计算部分用昇腾原生的npu_rms_norm进行替换可以实现layernorm部分的优化加速。优化的部分代码片段如下所示hidden_states torch_npu.npu_rms_norm( hidden_states, layer.input_layernorm.weight.add(self.ones_add), 1e-6 )[0] ...... out_emb, _, after_first_residual torch_npu.npu_add_rms_norm( layer.self_attn.o_proj(att_output[:, start:end]), hidden_states.to(torch.bfloat16), layer.post_attention_layernorm.weight.add(self.ones_add), 1e-6 )优化策略——qkv计算部分npu原生算子优化将pi0模型前向计算过程中q/k/v的分离计算过程转换为qkv融合权重进行计算然后再对融合计算结果进行split切分节省缓存换入换出用大矩阵乘法提升Cube的利用率。通过对paligemma_with_expert.py中的q/k/v计算部分进行对应优化可以实现qkv计算部分的优化加速。优化的部分代码片段如下所示# 将q/k/v权重融合为单个线性层qkv torch.no_grad() def fuse_qkv_weights(self): 将每层 self_attn 的 q/k/v 权重 concat 成单个 qkv 线性层 for model in self.models: # paligemma gemma_expert for layer in model.layers: attn layer.self_attn w_q attn.q_proj.weight w_k attn.k_proj.weight w_v attn.v_proj.weight w_fused torch.cat([w_q, w_k, w_v], dim0).bfloat16() # 创建 qkv 线性层 attn.qkv nn.Linear(w_fused.shape[1], w_fused.shape[0], biasFalse, devicew_q.device).to(torch.bfloat16) # 将拼接后的权重赋值给 qkv 权重 attn.qkv.weight.data.copy_(w_fused) ...... qkv layer.self_attn.qkv(hidden_states) q_proj, k_proj, v_proj qkv.split([q_out, kv_out, kv_out], dim-1)优化策略——图模式优化原生开箱的pi0推理性能在npu上存在严重的host-bound问题。因此为了减少CPU到NPU的逐算子下发与同步开销结合torch_npu的torchair图模式编译模块可以在modeling_pi0.py中将pi0的快系统与慢系统部分尽可能进行整图编译进而实现整体的计算优化加速。优化的部分代码片段如下所示import torch_npu import torchair as tng from torchair.configs.compiler_config import CompilerConfig config CompilerConfig() config.experimental_config.frozen_parameter True config.experimental_config.tiling_schedule_optimize True npu_backend tng.get_npu_backend(compiler_configconfig) ...... self.compiled_embed_and_model_forward torch.compile( self.embed_and_model_forward, dynamicFalse, fullgraphTrue, backendnpu_backend ) self.denoise_step_all_compile torch.compile( self.denoise_step_all.forward, dynamicFalse, fullgraphTrue, backendnpu_backend ) ...... ( prefix_pad_masks, dt, x_t, time, past_key_values ) self.compiled_embed_and_model_forward( noise, images, img_masks, lang_tokens, lang_masks ) for step in range(self.config.num_steps): self.denoise_step_all_compile( state, prefix_pad_masks, past_key_values, x_t, bsize, time, dt )优化策略结果总结基于上述昇腾迁移-优化策略对单次推理过程进行基于MindStudio Insight的profiling分析。其中昇腾npu计算时间总占比提升至94%AI_CORE类型昇腾融合算子计算时间占比提升至50%计算总耗时为71.6毫秒空闲时间为4.58毫秒。分析结果充分显示出迁移优化策略提升了pi0对昇腾的亲和程度充分发挥了昇腾npu的融合算子优势和算力优势并充分显示出具身智能pi0模型在昇腾上迁移的可行性及易用性。【免费下载链接】cann-recipes-embodied-intelligence本项目针对具身智能业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-embodied-intelligence创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

pi0机器人VLA大模型昇腾推理优化

pi0机器人VLA大模型推理昇腾迁移-性能优化说明 【免费下载链接】cann-recipes-embodied-intelligence 本项目针对具身智能业务中的典型模型、加速算法,提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-embodied-intelligence pi…...

如何用FastbootEnhance轻松管理Android设备:Windows终极图形化工具箱指南

如何用FastbootEnhance轻松管理Android设备:Windows终极图形化工具箱指南 【免费下载链接】FastbootEnhance A user-friendly Fastboot ToolBox & Payload Dumper for Windows 项目地址: https://gitcode.com/gh_mirrors/fa/FastbootEnhance 还在为复杂的…...

3步掌握鼠标键盘自动化神器,彻底告别重复劳动

3步掌握鼠标键盘自动化神器,彻底告别重复劳动 【免费下载链接】KeymouseGo 类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入 | automate mouse clicks and keyboard input 项目地址: https://gitcode.com/gh_mirrors/ke/KeymouseGo 你是否厌倦了每天…...

AI 术语通俗词典:导数

导数是微积分、机器学习、深度学习和人工智能中非常基础的一个术语。它用来描述:当一个输入变量发生微小变化时,函数输出会怎样变化。 换句话说,导数是在回答:如果把输入稍微往前推一点,结果会变大、变小,还…...

深度解析 MCP 协议:如何通过 Model Context Protocol 实现 AI Agent 的工具调用标准化

深度解析 MCP 协议:如何通过 Model Context 协议实现 AI Agent 的工具调用标准化 摘要: 随着大语言模型(LLM)能力的飞速提升,如何让 AI 能够更安全、更高效地访问外部工具和数据成为了 AI Agent 领域的核心挑战。Model…...

开源AI智能眼镜开发实战:OpenVision项目架构与集成指南

1. 项目概述:当智能眼镜遇见开源AI大脑如果你和我一样,对Meta Ray-Ban智能眼镜的硬件设计爱不释手,却又对Meta AI的封闭生态和功能限制感到束手束脚,那么OpenVision这个项目,可能就是你在寻找的“终极解药”。简单来说…...

市场热门的台式离子风机公司

开篇:定下基调随着半导体、电子制造、生物医药等行业对生产环境静电控制要求日益严苛,台式离子风机作为桌面工位、小型生产线核心的静电消除设备,其性能直接影响产品良品率与生产效率。为帮助消费者精准选择适合的产品,我们针对市…...

5分钟快速上手:Windows离线实时字幕工具TMSpeech完全指南

5分钟快速上手:Windows离线实时字幕工具TMSpeech完全指南 【免费下载链接】TMSpeech 腾讯会议摸鱼工具 项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech 还在为会议记录而烦恼吗?是否经常因为网络不稳定而无法使用云语音识别服务&#xff…...

Hermes Agent工具接入Taotoken聚合平台的具体配置步骤详解

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Hermes Agent工具接入Taotoken聚合平台的具体配置步骤详解 本教程将逐步演示如何将 Hermes Agent 工具的后端切换至 Taotoken 平台…...

一键切换Claude Code AI引擎:GLM、订阅版、API与本地模型自由切换

1. 项目概述:一键切换Claude Code的四种AI引擎 如果你和我一样,日常重度依赖Cursor或者VSCode的Claude Code插件来写代码,那你肯定遇到过这个痛点:有时候想用Claude官方订阅版,有时候想用更便宜的GLM代理,…...

从1982年智能仪器到现代数字万用表:设计演进与选型实践

1. 项目概述:一次关于智能仪器与数字万用表的深度回溯如果你是一位电子工程师,或者任何需要和电路、信号打交道的人,你的工作台上、实验室的机架里,甚至生产线上,最不可或缺、最沉默寡言的伙伴是什么?十有八…...

CANN/asc-tools msobjdump样例

msobjdump样例 【免费下载链接】asc-tools Ascend C Tools仓是CANN基于Ascend C编程语言推出的配套调试工具仓。 项目地址: https://gitcode.com/cann/asc-tools 概述 本样例基于MatmulLeakyRelu算子,演示融合编译场景下msobjdump工具的使用方式。样例通过编…...

证书链技术与ADAC安全调试协议详解

1. 证书链技术原理与信任传递机制1.1 非对称加密基础证书链技术的核心依赖于非对称加密算法体系。典型实现中,ECDSA(椭圆曲线数字签名算法)和RSA是最常用的两种方案。以ECDSA P-256为例,其采用256位素数域上的椭圆曲线&#xff0c…...

性价比高的芯片老化座哪家公司好?

芯片作为电子设备的核心组件,其质量和性能直接关系到整个产品的稳定性与可靠性。因此,芯片老化座的选择显得尤为重要。那么,在市场上琳琅满目的品牌中,哪家公司的芯片老化座性价比最高呢?本文将为您详细介绍深圳市鸿怡…...

# 026 Agent 的文件处理:PDF、Excel、图片、音频的解析与生成

一、从一次线上事故说起 去年冬天凌晨两点,我被值班电话吵醒。客户那边一个自动化报表Agent跑崩了,日志里只有一行:MemoryError: cannot fit int into an index-sized integer。查了半天,发现是Agent在处理一个300MB的Excel文件时…...

桶排序、堆排序、奇偶排序、计数排序、阿坤老师的独特瓷器、封闭图形个数、二进制王国【算法赛】

桶排序import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Collections; import java.util.LinkedList;public class Main {static int N100010,idx;//res0;static String s[]new String[N];static boolean num[…...

#24 Agent 的浏览器自动化:Playwright、Selenium 与网页交互

从一次凌晨三点的事故说起 去年冬天,我负责的一个自动化脚本在凌晨三点突然崩了。日志里只有一行:ElementClickInterceptedException。点一个“确认”按钮,被一个弹窗遮住了。Selenium 的 WebDriverWait 等了十秒,弹窗刚好在点击前…...

免费文本挖掘神器KH Coder:三步掌握多语言内容分析技巧

免费文本挖掘神器KH Coder:三步掌握多语言内容分析技巧 【免费下载链接】khcoder KH Coder: for Quantitative Content Analysis or Text Mining 项目地址: https://gitcode.com/gh_mirrors/kh/khcoder 面对海量文本数据不知从何入手?想从用户评论…...

CANN具身智能优化样例

CANN Recipes for Embodied Intelligence 【免费下载链接】cann-recipes-embodied-intelligence 本项目针对具身智能业务中的典型模型、加速算法,提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-embodied-intelligence &#…...

如何10分钟快速搭建Sunshine游戏串流服务器:完整实战指南

如何10分钟快速搭建Sunshine游戏串流服务器:完整实战指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的自托管游戏串流服务器,专为M…...

抖音批量下载工具:5分钟搞定无水印内容保存

抖音批量下载工具:5分钟搞定无水印内容保存 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批…...

解锁全平台直播录制:DouyinLiveRecorder让你永不错过精彩瞬间

解锁全平台直播录制:DouyinLiveRecorder让你永不错过精彩瞬间 【免费下载链接】DouyinLiveRecorder 可循环值守和多人录制的直播录制软件,支持抖音、TikTok、Youtube、快手、虎牙、斗鱼、B站、小红书、pandatv、sooplive、flextv、popkontv、twitcasting…...

企业级即时通讯「删除消息」:六个场景叠加之后,复杂性超出你的想象

本文不是一上来就讲方案,而是带你还原真实的业务场景,看清楚复杂性是如何一层一层叠加上来的。每加一个场景,原来的解法就出现新的漏洞,直到六个场景同时存在,你才会明白为什么"删除一条消息"在企业级系统里…...

bili2text:如何用3个步骤将B站视频转换为可搜索的文本知识库?

bili2text:如何用3个步骤将B站视频转换为可搜索的文本知识库? 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 在信息过载的数字时代&a…...

TranslucentTB - Windows任务栏透明化技术配置手册

TranslucentTB - Windows任务栏透明化技术配置手册 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB TranslucentTB是一款专为Windows 10/1…...

Taotoken模型广场如何帮助开发者快速对比与选择合适模型

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken模型广场如何帮助开发者快速对比与选择合适模型 当开发者需要为大语言模型应用选择基础模型时,常常面临一个现…...

解决Wireshark安装 无法显示USB接口

密评实施过程中,会使用到Wireshark抓取智能密码钥匙的通信流量,但是某些情况下安装Wireshark之后,无法找到USB的捕获接口,重启Wireshark和电脑后还是无法正常显示。如下图。解决办法如下:将“USBPcapCMD.exe”复制到“…...

3D高斯泼溅优化:多项式核函数与高效剔除算法

1. 3D高斯泼溅技术背景与挑战在实时神经渲染领域,3D高斯泼溅(3D Gaussian Splatting, 3DGS)已成为近年来最具突破性的技术之一。这项技术通过将场景表示为大量各向异性高斯基元的集合,实现了高质量的实时渲染效果。每个高斯基元包含位置(μ)、协方差矩阵…...

基于GSAP与线性插值实现丝滑自定义光标动画

1. 项目概述:一个丝滑的现代自定义光标如果你厌倦了浏览器那个千篇一律的箭头指针,想为你的个人作品集、创意网站或者某个酷炫的着陆页注入一点灵动的生命力,那么这个名为“Cuberto Cursor”的项目绝对值得你花时间研究。它不是一个简单的图片…...

如何5分钟搞定抖音无水印视频下载:douyin-downloader完整指南

如何5分钟搞定抖音无水印视频下载:douyin-downloader完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallbac…...