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

CANN OpenVLA昇腾推理指南

OpenVLA on 310P具身智能VLA大模型昇腾使用指南【免费下载链接】cann-recipes-embodied-intelligence本项目针对具身智能业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-embodied-intelligence本目录介绍在 Ascend 310P 上如何对 OpenVLA 模型进行离线模型转换及推理附带精度验证及仿真步骤。OpenVLA整体介绍在《OpenVLA: An Open-Source Vision-Language-Action Model》论文中提出了 OpenVLA 模型论文地址为https://arxiv.org/abs/2406.09246OpenVLA 官方仓库地址为https://github.com/openvla/openvla功能介绍OpenVLA 是一种典型的视觉-语言-动作Vision-Language-Action, VLA通用控制模型其核心思想是将视觉观测与语言指令统一编码到同一序列表示中并利用自回归autoregressive生成的方式输出动作表示如动作 token 或离散化动作序列再解码为可执行的连续控制量。通过在大规模多任务机器人示范数据上学习“从感知与语义到动作”的统一映射OpenVLA 旨在提升跨任务、跨场景的泛化能力并降低为每个任务单独训练策略的成本OpenVLA的相关代码仓拉取、仿真测试集和模型下载本样例使用的示例模型为 https://huggingface.co/openvla/openvla-7b-finetuned-libero-object这是OpenVLA官方发布的在libero_object数据集上微调后的模型模型输入输出说明OpenVLA 的输入由文本指令token与图像张量pixel_values共同构成。当启用fused vision backbone时pixel_values的通道数为633表示同一帧图像经过两套视觉预处理后在通道维拼接。输入Inputs输入名含义dtypeshape示例备注input_ids指令/提示词的 token 序列int64[B, T]T为文本 token 长度包含特殊 tokenB为 batch size常见为 1attention_mask文本 token 的有效位掩码bool或int64/int32依实现而定[B, T]1/True 表示有效 token0/False 表示 paddingpixel_values摄像头 RGB 图像经 processor 预处理后的张量float16常见[B, C, H, W]若use_fused_vision_backboneTrue则C633否则C3输出Outputs输出名含义dtypeshape示例备注actions/generated_ids动作 token或离散动作序列的 token idint64常见[B, A]A为动作维度/动作 token 个数通常由action_dim决定后续需用bin_centersaction_norm_stats反归一化得到连续动作参数符号说明Bbatch size离线验证通常为 1。T文本 token 序列长度由 prompt 长度与 tokenizer 规则决定含特殊 token。H, Wprocessor 输出的视觉输入分辨率常见为 224×224具体以 processor 配置为准。C图像通道数启用 fused backbone 时为633两套视觉塔输入拼接否则为3。A动作序列长度/动作维度通常等于action_dim与机器人自由度、动作表示方式有关。OpenVLA在昇腾310P上的运行配置与昇腾平台相关的环境配置.om 模型转化及运行需要安装 CANN 软件包。本样例的编译执行依赖 CANN 开发套件包cann-toolkit与 CANN 二进制算子包cann-kernels支持的 CANN 软件版本为CANN 8.0.0-8.2.RC1。请从软件包下载地址下载对应架构软件包并参考 CANN 安装文档依次进行安装。# ${cann_install_path}为CANN包的实际安装目录注意每次新建终端时首先source一下set_env.sh。 # 方式1默认路径安装以root用户为例 source /usr/local/Ascend/ascend-toolkit/set_env.sh # 方式2指定路径进行安装 source ${cann_install_path}/ascend-toolkit/set_env.sh与昇腾服务器无关的环境配置# 创建运行环境 conda create -y -n openvla python3.10 conda activate openvla # 拉取openvla仓库并安装示例 git clone https://github.com/openvla/openvla.git cd openvla pip install -e .仿真渲染MuJoCo无头模式如果服务器/容器缺少显示环境或 OpenGL 渲染后端MuJoCo 可能无法正常渲染。 可以在运行仿真/评测前指定 EGL 无头渲染export MUJOCO_GLeglOpenVLA在昇腾310P上的推理步骤本节介绍离线推理模式通过昇腾亲和的 OM 文件的部署参考更多使用参数可参考atc工具使用文档。下面给出一条推荐的单机器链路在 310P 宿主机导出 ONNX使用Host CPU使用 ATC 将 ONNX 转为 OM在 310P 上使用 OM-backend sim-evaluator 在仿真环境评测在 310P 上需要在转化onnx的机器上额外安装onnx runtime依赖:pip install onnx # 基于Host CPU转换onnx请安装(310P 宿主机执行): pip install onnxruntime # 基于Host GPU转换onnx请安装 pip install onnxruntime-gpu1) 导出 ONNX导出前需要先对环境中的transformers库进行算子的转化修复确保OM模型转换时能匹配昇腾亲和的算子cd /path/to/conda/envs/openvla/lib/python3.10/site-packages/transformers/models/llama git apply --check -p1 /path/to/openvla/modeling_llama.patch git apply -p1 /path/to/openvla/modeling_llama.patch在 HostCPU 或 GPU上执行# 以本地目录为例models/ 里包含 config.json 等文件 # 也可以先用 huggingface-cli 下载到 models/: # pip install -U huggingface_hub # huggingface-cli download openvla/openvla-7b-finetuned-libero-object --local-dir models python3 convert_and_verify_onnx.py \ --model-path models/openvla-7b-finetuned-libero-object \ --vision-export-dir outputs/onnx/vision \ --llama-prefill-export-dir outputs/onnx/llama_prefill \ --llama-decoder-export-dir outputs/onnx/llama_decode \ --unnorm-key libero_object说明默认会用 ONNXRuntime CPU 对比 PyTorch 输出打印 max/mean diff如需跳过可加--no-validate。样例输出如下 Validating Full Inference Pipeline [1/2] Running PyTorch inference... [2/2] Running ONNX inference... Loading ONNX models with provider: CPUExecutionProvider... ONNX models loaded successfully. [3/3] Comparing results... full_pipeline_action: max abs diff 0.000000e00 full_pipeline_action: mean abs diff 0.000000e00 full_pipeline_action: ✓ MATCH (rtol0.001, atol0.001, mean_diff_threshold1e-2) PyTorch action: [ 1.43156521e-01 2.43907466e-02 9.26470588e-01 -3.15118654e-05 7.75504180e-02 -3.35294148e-02 0.00000000e00] ONNX action: [ 1.43156521e-01 2.43907466e-02 9.26470588e-01 -3.15118654e-05 7.75504180e-02 -3.35294148e-02 0.00000000e00] ✅ Full pipeline validation passed! 2) ATC 将 ONNX 转为 OM在 310P 上已安装并sourceCANN 环境执行转换脚本./convert_onnx_to_om.sh \ --vision-onnx-dir outputs/onnx/vision \ --llama-prefill-onnx-dir outputs/onnx/llama_prefill \ --llama-decoder-onnx-dir outputs/onnx/llama_decoder \ --vision-om-dir outputs/om/vision \ --llama-prefill-om-dir outputs/om/llama_prefill \ --llama-decoder-om-dir outputs/om/llama_decoder \ --soc-version Ascend310P3当模型转换完成后各个模型转换出的.om模型应在相应的各个指定output目录中在终端中有输出“ATC run success, welcome to the next use”。3) 使用 OM-backend sim-evaluator 进行仿真评测在 310P 上执行需要 ACL/ACLLite Python 依赖可用。 可参考ACLLite安装教程仿真评测是在openvla官方给出的libero仿真评测的基础上修改而来可以通过应用仓库中给出的仿真适配patch获取OM-backend仿真评测代码环境仿真相关patch位于仓库sim/目录下包含robot_utils.patchopenvla_utils.patchrun_libero_eval.patch三个patch以及一个需要新增的文件openvla_om_utils.py#确保处于openvla仓库根目录 cd openvla git apply --check /path/to/xxx.patch git apply xxx.patch #新增文件需置于experiments/robot/目录下 cp /path/to/openvla_om_utils.py ./experiments/robot/准备好代码环境后可以运行以下命令进行仿真评测python3 -m experiments.robot.libero.run_libero_eval \ --model_family openvla \ --pretrained_checkpoint models/openvla-7b-finetuned-libero-object/ \ --task_suite_name libero_object \ --center_crop True \ --vision_backbone_om outputs/om/vision/vision_backbone.om \ --projector_om outputs/om/vision/projector.om \ --embedding_om outputs/om/vision/embedding.om \ --prefill_om outputs/om/llama_prefill/vla_prefill.om \ --decode_om outputs/om/llama_decode/vla_decoder.om输出评测结果日志会写入experiments/logs包含成功率等信息仿真结果视频位于rollout/date目录下date为日期OpenVLA在昇腾上的精度验证步骤接下来介绍两种验证转换后的 .om 模型在 NPU 上运行的验证方法。1基于mock的数据输入CPU/GPU与原始Pytorch输出相似度对比构造固定输入如全0图像 固定指令 token测试 PyTorch CPU/GPU 和 OM 310P NPU 的输出精度对比# 在 310P 上执行需要 ACL/AclLite Python 依赖 python3 verify_om_onnx.py \ --model-path models/openvla-7b-finetuned-libero-object \ --unnorm-key libero_object \ --vision-backbone-om outputs/om/vision/vision_backbone.om \ --projector-om outputs/om/vision/projector.om \ --embedding-om outputs/omvision/embedding.om \ --prefill-om outputs/om/llama_prefill/vla_prefill.om \ --decode-om outputs/om/llama_decode/vla_decoder.om2基于仿真模拟器的功能测试MuJoCo / LIBERO使用libero仿真环境数据在 NPU 进行推理在 Host CPU 上进行仿真渲染或控制循环python3 -m experiments.robot.libero.run_libero_eval \ --model_family openvla \ --pretrained_checkpoint models/openvla-7b-finetuned-libero-object/ \ --task_suite_name libero_object \ --center_crop True \ --vision_backbone_om outputs/om/vision/vision_backbone.om \ --projector_om outputs/om/vision/projector.om \ --embedding_om outputs/om/vision/embedding.om \ --prefill_om outputs/om/llama_prefill/vla_prefill.om \ --decode_om outputs/om/llama_decode/vla_decoder.om示例效果:Citationarticle{kim24openvla, title{OpenVLA: An Open-Source Vision-Language-Action Model}, author{{Moo Jin} Kim and Karl Pertsch and Siddharth Karamcheti and Ted Xiao and Ashwin Balakrishna and Suraj Nair and Rafael Rafailov and Ethan Foster and Grace Lam and Pannag Sanketi and Quan Vuong and Thomas Kollar and Benjamin Burchfiel and Russ Tedrake and Dorsa Sadigh and Sergey Levine and Percy Liang and Chelsea Finn}, journal {arXiv preprint arXiv:2406.09246}, year{2024} }附录openvla 根目录相关代码目录树示例检查整体代码目录树经过上述的操作OpenVLA 适配昇腾的工程目录树示例如下所示格式 ├── readme.md # 本文件 ├── models # Huggingface或其他来源下载的模型 ├── openvla/ | ├── convert_and_verify_onnx.py # PyTorch - ONNX 转化脚本 | ├── verify_om_onnx.py # PyTorch(CPU) vs OM(NPU) 误差对比 | ├── vla_validation_utils.py # 精度验证辅助方法 | ├── convert_onnx_to_om.sh # ONNX - OM 转化脚本 | ├── lib | | └── modeling_llama.patch # 对transformers lib的适配patch | | | └── sim | ├── robot_utils.patch # 仿真文件robot_utils.py补丁 | ├── openvla_utils.patch # 仿真文件openvla_utils.py补丁 | ├── run_libero_eval.patch # 仿真文件run_libero_eval.py补丁 | └── openvla_om_utils.py # 仿真新增OM-Backend支持文件 | └── outputs ├── onnx/ # 输出的onnx格式模型 └── om/ # 输出的om格式模型【免费下载链接】cann-recipes-embodied-intelligence本项目针对具身智能业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-embodied-intelligence创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

CANN OpenVLA昇腾推理指南

OpenVLA on 310P具身智能VLA大模型昇腾使用指南 【免费下载链接】cann-recipes-embodied-intelligence 本项目针对具身智能业务中的典型模型、加速算法,提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-embodied-intelligence …...

纯Go实现Llama大模型推理引擎:llama.go架构解析与部署实践

1. 项目概述与核心价值最近在折腾大语言模型本地部署和推理时,发现了一个挺有意思的项目——gitctrlx/llama.go。简单来说,这是一个用纯Go语言实现的Llama系列大模型推理引擎。如果你和我一样,对在本地跑大模型感兴趣,但又不想被P…...

从失效的Cursor试用重置工具看自动化脚本与API逆向工程

1. 项目背景与核心思路解析最近在开发者圈子里,Cursor 这款 AI 驱动的代码编辑器热度一直很高。它集成了强大的 AI 助手,能直接理解代码上下文、生成代码片段甚至重构整个函数,对提升开发效率的帮助是实实在在的。不过,它的高级功…...

电容式旋转编码器:高精度运动控制新标准

1. 电容式旋转编码器:重新定义运动控制精度与可靠性 在工业自动化领域,电机控制系统的精度直接决定了整个生产线的品质与效率。作为闭环控制的核心传感器,旋转编码器的性能往往成为系统瓶颈。传统解决方案中,工程师们不得不在光学…...

gpt4local:用OpenAI API语法在本地高效运行开源大模型

1. 项目概述:在本地跑一个“ChatGPT”有多简单? 如果你和我一样,对大型语言模型(LLM)既充满好奇,又对数据隐私、API调用成本和网络延迟心存顾虑,那么“本地部署”这条路子,你迟早会…...

为机械爪添加LCD显示:STM32驱动、UI状态机与串口通信实战

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目,叫“MimiClaw-1.3-LCD”。光看这个名字,可能有点摸不着头脑,它其实是一个为“MimiClaw”机械爪设计的1.3英寸LCD屏幕扩展模块。如果你玩过树莓派、Arduino或者ESP32这类开源硬件&…...

神经网络求解量子多体基态:从变分原理到JAX实战

1. 项目概述:当神经网络遇见薛定谔方程最近几年,我一直在关注一个特别有意思的交叉领域:用人工智能,特别是深度神经网络,去解决量子多体物理中的“老大难”问题。这个方向听起来很前沿,但它的核心动机其实非…...

CANN元数据定义Format转换API

FormatToSerialString 【免费下载链接】metadef Ascend Metadata Definition 项目地址: https://gitcode.com/cann/metadef 函数功能 将Format类型值转化为字符串表达。 从GCC 5.1版本开始,libstdc为了更好的实现C11规范,更改了std::string和st…...

双足机器人CBF-MPC高速动态避障技术解析

1. 机器人动态避障技术概述 在双足机器人运动控制领域,实现高速状态下的实时避障一直是极具挑战性的课题。传统方法往往需要在运动速度与安全性之间做出妥协——要么降低移动速度以保证避障反应时间,要么简化环境复杂度来满足实时性要求。而基于CBF-MPC&…...

CANN/ops-math 广播算子

BroadcastTo 【免费下载链接】ops-math 本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-math 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列…...

多核处理器优化实战:从原理到性能提升

1. 多核处理器优化概述现代计算系统早已从单纯追求单核频率提升转向了多核架构发展。我十年前第一次接触四核处理器时,就意识到这种架构变革带来的不仅是性能提升,更是一整套全新的资源管理挑战。多核处理器通过并行计算提升系统性能的本质,在…...

魔兽争霸3现代化改造指南:如何让经典游戏在现代电脑上完美运行

魔兽争霸3现代化改造指南:如何让经典游戏在现代电脑上完美运行 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还记得那些在网吧通宵…...

Rust内存布局深度解析:从栈到堆的高效管理

Rust内存布局深度解析:从栈到堆的高效管理 引言 内存布局是理解Rust内存安全和性能的关键。与Python的自动内存管理不同,Rust通过编译时检查和显式的内存布局控制,实现了零成本抽象和内存安全。 本文将深入探讨Rust的内存布局原理&#xff0c…...

Godot双网格瓦片地图系统:实现逻辑与渲染分离的2D地图架构

1. 项目概述:一个为Godot引擎设计的双网格瓦片地图系统如果你在Godot引擎里做过2D游戏,尤其是那种需要复杂地形、多层结构或者动态拼接的地图,大概率会对内置的TileMap节点又爱又恨。爱的是它上手快,拖拽就能铺地图;恨…...

CANN/pyto expm1函数文档

pypto.expm1 【免费下载链接】pypto PyPTO(发音: pai p-t-o):Parallel Tensor/Tile Operation编程范式。 项目地址: https://gitcode.com/cann/pypto 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/At…...

Allegro PCB设计许可不够用?不想买新许可,浮动许可回收

Allegro PCB设计许可不够用?不想买新许可,浮动许可回收能救命!你是不是经常在深夜加班时接到开发主管的电话"许可证不够,项目要停"?我们几个项目组去年就这么被干趴下的。当时公司采购部说要花钱买许可证&am…...

Chat with NeRF:基于对话的3D视觉定位系统架构与实践

1. 项目概述:当NeRF学会“聊天” 想象一下,你站在一个由数百张照片重建出的逼真3D场景里,比如一个摆满杂物的书桌。你问:“那个蓝色的马克杯在哪里?” 系统不仅能听懂你的话,还能立刻在3D空间中高亮出那个…...

Cursor兼容VSCode扩展:lanes项目解析与手动适配实践

1. 项目概述:一个为 Cursor 编辑器设计的 VSCode 扩展如果你和我一样,日常重度依赖 Cursor 这款基于 VSCode 技术栈的 AI 编程工具,同时又对 VSCode 强大的扩展生态念念不忘,那么你很可能也遇到过和我一样的困境:如何在…...

LlamaIndex:构建私有数据LLM应用的智能数据管道框架

1. 项目概述:LlamaIndex,一个为LLM应用构建数据管道的开源框架如果你正在尝试将私有数据与大语言模型(LLM)结合,构建一个能“理解”你公司文档、个人知识库或业务数据的智能应用,那么你大概率会遇到一个核心…...

为Hermes Agent配置Taotoken自定义提供商接入大模型

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为Hermes Agent配置Taotoken自定义提供商接入大模型 基础教程类,指导用户在使用Hermes Agent时,如何按照文…...

syncfu:声明式文件同步工具,简化开发部署流程

1. 项目概述:一个为现代开发流程而生的文件同步工具如果你和我一样,经常需要在多个开发环境、服务器或者本地与远程之间同步文件,那你一定对rsync、scp这些老牌工具又爱又恨。爱的是它们确实强大、稳定,恨的是每次都要敲一长串参数…...

如何在3分钟内为Word安装完整的APA第7版引用格式:终极免费解决方案

如何在3分钟内为Word安装完整的APA第7版引用格式:终极免费解决方案 【免费下载链接】APA-7th-Edition Microsoft Word XSD for generating APA 7th edition references 项目地址: https://gitcode.com/gh_mirrors/ap/APA-7th-Edition 还在为学术论文的参考文…...

构建模块化AI语音聊天系统:本地部署与实时对话实战

1. 项目概述:打造你的专属AI语音聊天伙伴如果你厌倦了在屏幕上敲字,渴望像科幻电影里那样,与一个拥有独特个性和声音的AI角色进行一场真正的、自然的语音对话,那么voice-chat-ai这个项目就是为你准备的。它不是一个简单的语音助手…...

抖音音乐下载神器:3分钟搞定全网热门BGM免费下载

抖音音乐下载神器:3分钟搞定全网热门BGM免费下载 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖…...

MCP服务器模板:快速构建AI数据连接器的脚手架指南

1. 项目概述:MCP服务器模板的定位与价值 最近在构建AI应用时,我经常需要让大语言模型(LLM)访问和处理外部数据源,比如数据库、API接口或者本地文件。传统的做法要么是写死一堆插件代码,要么就是让模型直接调…...

ARM架构Hypervisor陷阱寄存器原理与应用

1. ARM架构Hypervisor陷阱寄存器深度解析在ARMv8/v9架构的虚拟化实现中,异常级别(EL)和系统寄存器构成了隔离机制的核心基础设施。作为虚拟化技术的实践者,我们需要深入理解Hypervisor如何通过精细陷阱寄存器(Fine-Grained Trap Registers)实现对关键系统…...

STATIC框架:向量化约束解码技术解析与应用

1. STATIC框架:重新定义约束解码的技术边界 在生成式推荐系统的实际落地过程中,我们经常面临一个核心矛盾:如何在大规模语言模型(LLM)的开放生成能力与业务规则的硬性约束之间找到平衡点。传统基于前缀树(T…...

ARM Cortex-M23/M33处理器与TrustZone安全技术解析

1. ARM Cortex-M23与M33处理器概述在物联网设备爆发式增长的背景下,嵌入式系统的安全需求达到了前所未有的高度。作为回应,ARM在2016年推出了基于ARMv8-M架构的Cortex-M23和Cortex-M33处理器,这两款产品不仅延续了Cortex-M系列在低功耗和实时…...

量子计算中的非厄米线性响应理论与薛定谔化技术

1. 量子计算中的非厄米线性响应理论解析在量子计算领域,非厄米系统的研究正逐渐成为前沿热点。传统量子模拟主要关注封闭系统的厄米哈密顿量演化,而现实世界中的量子系统往往与环境存在不可忽略的相互作用,导致系统表现出非厄米特性。这种开放…...

LLM在教育技术中的应用与优化策略

1. LLM在教育技术领域的应用概述大型语言模型(Large Language Model, LLM)正在深刻改变教育技术的面貌。作为一名长期关注教育技术发展的从业者,我亲眼见证了这项技术从实验室走向课堂的完整历程。在教育场景中,LLM最核心的价值在于其强大的语义理解能力…...