toolin.ai logo
toolin.ai
首页
AI工具
AI技能包
AI提示词
提交AI工具提交
toolin.ai logo
toolin.ai

AI玩家的创作利器库,发现最佳AI工具组合,提升您的创作效率

AI工具1,424个
技能包11个
产品功能
  • AI工具
  • AI技能包
  • AI快讯
  • AI资讯
  • 精选推文
  • 提交AI工具
  • 推广AI工具
关于我们
  • 关于Toolin
  • 联系我们
  • 合作洽谈
  • 更新日志
关注我们
© 2025 toolin.ai. All rights reserved.
服务条款隐私政策

Jetson-PI:北大开源 VLA 端侧实时控制方案,Jetson Orin 控制频率提升 8.66×

2026/07/25
·toolin小编

北大 AIRS 联合 PrimeBot 开源 Jetson-PI(Apache-2.0),通过 FAAC 异步推理 + 置信度调度 + llama.cpp 引擎三件套,把 π0.5 在 Jetson Orin 上从 0.70Hz 提到 6.06Hz,且不丢精度。

Jetson-PI:北大开源 VLA 端侧实时控制方案,Jetson Orin 控制频率提升 8.66×
Jetson-PI:北大开源 VLA 端侧实时控制方案,Jetson Orin 控制频率提升 8.66×
2026/07/25

Jetson-PI:北大开源 VLA 端侧实时控制方案,Jetson Orin 控制频率提升 8.66×

北大 AIRS 联合 PrimeBot 开源 Jetson-PI(Apache-2.0),通过 FAAC 异步推理 + 置信度调度 + llama.cpp 引擎三件套,把 π0.5 在 Jetson Orin 上从 0.70Hz 提到 6.06Hz,且不丢精度。

问题:端侧 VLA 不只是"推理太慢"核心算法:FAAC(前瞻对齐异步修正)置信度调度:让机器人学会"什么时候该再瞄一眼"Jetson-PI-Edge:基于 llama.cpp 重做端侧推理引擎1. 计算图复用(Graph Reuse)2. 常驻 GPU 中间缓存(GPU-resident Intermediate Buffers)3. Flow Matching 展开(Flow Unrolling)Benchmark:8.66× 提速,LIBERO 平均 SR 行业首位端侧延迟(NVIDIA Jetson Orin, MAXN, ms)LIBERO(π0.5)四子集平均成功率 SR真实机器人实验训练侧上手:Jetson-PI(JAX/Python 3.11)环境要求安装下载权重(ModelScope)训练默认 recipe(π0.5-LIBERO 三阶段)单次评估端侧推理上手:Jetson-PI-Edge(llama.cpp)构建启动前台服务器HTTP 调用单次推理Python Foreground 客户端(跨控制步复用 session)FlashRT 集成(可选)Roadmap 模型适用场景与边界写在最后
AI产品

把 VLA(Vision-Language-Action)模型从 RTX 4090 工作站搬到机器人机身上,一直是具身智能落地的硬骨头。π0.5 在 NVIDIA Jetson Orin 上跑一次推理大约 1.4 秒,对应控制频率仅约 0.7 Hz——机器人动作迟缓,连续动作块之间还会出现明显停顿。北京大学、AIRS 与 PrimeBot Research Institute 联合开源的 Jetson-PI(Apache-2.0)给出了一套完整方案:不靠量化、不靠剪枝,从异步推理算法、模型调度、底层推理引擎三层同时下手,把 π0.5 在 Jetson Orin 上的控制频率提升到 6.06 Hz(8.66×),且不损失精度。这是从"实验室 Demo"走向"工业级可长期工作"的关键一步。

论文:https://arxiv.org/abs/2607.12659 异步推理代码:https://github.com/PKU-SEC-Lab/Jetson-PI 端侧推理引擎:https://github.com/PKU-SEC-Lab/Jetson-PI-Edge

问题:端侧 VLA 不只是"推理太慢"

传统同步推理下,机器人必须等模型生成完整动作块才能开始执行,端侧设备算力有限,推理延迟直接表现为长时间停顿。自然的解法是异步推理:执行当前动作块的同时,模型并行预测下一个动作块。但异步推理引入两个新问题:

  1. 感知—执行错位:模型预测下一个动作块时用的是推理开始时的图像,但动作真正执行时机器人与环境早已变化,延迟越长偏差越大。
  2. 反应时间过长:即使并行了,机器人对环境变化(物体滑动、位置变化)的响应仍受完整 VLA 推理延迟限制,端侧一次推理常常超过 1 秒。

以往的异步方法尝试在时间维度上融合新旧轨迹来提升平滑度,但动作预测本身仍然存在上述两个问题。Jetson-PI 走了一条不同的路:不融合轨迹,而是直接预测未来的环境表征,从未来时刻开始预测动作。

核心算法:FAAC(前瞻对齐异步修正)

Foresight-Aligned Asynchronous Correction(FAAC) 是 Jetson-PI 的方法核心。团队训练了一个轻量级 未来修正模块(Future Correction Module):

  • 输入:当前时刻 VLM 生成的环境表征 + 已经提交给机器人、即将执行的动作序列
  • 输出:这些动作执行完成后,环境在未来时刻对应的 VLM 环境表征
  • 动作专家不再依据过时的当前观测,而是从预计的未来时间点开始生成动作序列

关键设计上的克制:

  • 不生成完整未来图像(计算成本过高)
  • 不逐层修正 VLM 的全部 KV Cache(同样会引入大量额外推理)
  • 只压缩并预测 VLM 最后一层的环境表示,把修正信息送入动作专家

整个未来修正模块约 40M 参数,仅占完整 VLA 模型参数量的约 1%,不会给端侧设备带来过大负担。训练过程中会随机采样未来时间跨度,让同一套修正模块可以适配 Jetson Orin、Jetson Thor 或更高性能 GPU 的不同延迟。

置信度调度:让机器人学会"什么时候该再瞄一眼"

引入未来修正后,理论上完成一次 VLM 观测后只需反复调用未来修正模块和动作专家就能持续生成动作。但未来修正存在误差,长期只依赖它会累积出错。

Jetson-PI 的洞察是重新理解 VLM 与动作专家的分工:

  • VLM 的主要作用是重新观察环境,校正对外部世界的理解
  • 动作专家 负责高频生成动作,推理更快

于是有了基于置信度的调度机制(Confidence-based Scheduling):未来修正模块在预测未来表征的同时输出置信度。

  • 置信度高于阈值 → 跳过 VLM,直接用修正表征调动作专家(机器人更频繁生成新动作)
  • 置信度降到阈值以下 → 重新调用 VLM,刷新环境表征、KV Cache 和后续预测所需状态缓存

实测在动作平稳、环境变化容易预测的阶段置信度通常较高;抓取、接触、放置等关键步骤置信度明显下降,触发 VLM 重新观察。这相当于让机器人学会判断"什么时候可以凭已有认知继续,什么时候必须重新看一眼"。

Jetson-PI-Edge:基于 llama.cpp 重做端侧推理引擎

算法解决了"何时调用模型",但要让 π0 / π0.5 真正达到端侧实时控制,底层推理系统也得重做。团队基于 llama.cpp 开发了 Jetson-PI-Edge,针对 VLA 执行特点做了三项核心优化:

1. 计算图复用(Graph Reuse)

传统语言模型输出长度随解码过程动态变化,计算图形态也在变。VLA 推理则不同:摄像头数、图像分辨率、动作维度固定时,大部分输入张量尺寸固定;语言指令通常较短,可 padding 到固定长度。因此第一次推理时构建 CUDA Graph,之后直接复用,避免每轮控制重复建图。

2. 常驻 GPU 中间缓存(GPU-resident Intermediate Buffers)

ViT / LLM / 动作专家之间要传递视觉 embedding、KV Cache 等中间结果。通用推理框架会把它们写回 CPU 内存,再由下一个模块重新复制到 GPU——内存带宽有限的端侧设备上这类 H2D / D2H 往返开销明显。Jetson-PI-Edge 为固定尺寸中间结果预留 GPU 缓冲区,让 ViT、LLM、动作专家直接复用 GPU 上的数据。

3. Flow Matching 展开(Flow Unrolling)

π 系列动作专家要执行多轮 flow matching 去噪。如果每步单独调用计算图,会有重复调度和 kernel launch 开销。Jetson-PI-Edge 把多轮去噪展开到统一计算图——第一次建图成本高一些,但之后可持续复用,特别适合机器人长时间运行的控制循环。

Benchmark:8.66× 提速,LIBERO 平均 SR 行业首位

端侧延迟(NVIDIA Jetson Orin, MAXN, ms)

阶段PI0.5 总延迟PI0 总延迟
Naive1420.8(ViT 152.3 / LLM 631.0 / AE 536.8)1250.9
+Schedule optimization1420.81251.5
+Graph reuse476.1444.4
+Buffer + Unroll412.9(ViT 79.5 / LLM 210.3 / AE 123.1)394.5(ViT 75.4 / LLM 200.3 / AE 118.8)

结合置信度调度后,系统反应时间进一步降至 165.1 ms,控制频率达到 6.06 Hz,相较原生 PyTorch(0.70 Hz)提升 8.66×。注意这套加速不以量化或剪枝为前提,理论上可与量化、剪枝组合进一步降延迟。

LIBERO(π0.5)四子集平均成功率 SR

Jetson-PI(Ours+Sched)在四个子集上均列首位:

子集Jetson-PI SR
SPATIAL97.4
OBJECT98.6
GOAL96.8
LIBERO-1092.5

随着异步延迟增大,只预测未来机器人状态的 VLASH 性能明显下滑。Δ=9 时 Jetson-PI 在四子集平均比 VLASH 高 45.6 个百分点,比 RTC 高 7.0 个百分点;整体平均比 VLASH 高 14.8 pp,比 RTC 高 3.9 pp。这组实验说明:端侧 VLA 不只是"把推理做快",还要让模型理解在延迟时间内机器人执行的动作会怎样改变未来环境。

真实机器人实验

PrimeBot X2-W 机器人(1 头部 + 2 腕部摄像头,224×224,15 Hz 动作执行),任务拆为衣物拾取 / 展开+折叠 / 整理存放三子任务。Jetson-PI 轨迹更连续、衣物操作更流畅,关键阶段不会因感知—执行错位造成失败。

训练侧上手:Jetson-PI(JAX/Python 3.11)

环境要求

  • OS:Ubuntu 22.04
  • GPU:NVIDIA GPU ≥ 48 GB VRAM(batch 16 三阶段全量训练)
  • CUDA:12.x(项目依赖装,无需系统 CUDA)
  • Python:3.11(uv / JAX)

安装

git clone --recurse-submodules https://github.com/PKU-SEC-Lab/Jetson-PI
cd Jetson-PI
git submodule update --init --recursive

export PYTHONNOUSERSITE=1
GIT_LFS_SKIP_SMUDGE=1 uv sync
GIT_LFS_SKIP_SMUDGE=1 uv pip install -e .

# 打 π0.5 PyTorch/JAX 兼容性补丁
cp -r ./src/openpi/models_pytorch/transformers_replace/* \

下载权重(ModelScope)

权重仓库 zebinyang/Jetson-PI-pi05 含两个目录 pi05_libero/ 和 future_correction_module/,不要合并 params 树。

pip install modelscope
python -c "from modelscope import snapshot_download; snapshot_download('zebinyang/Jetson-PI-pi05', local_dir='./checkpoints/jetson-pi-pi05')"

export PI0_CHECKPOINT=./checkpoints/jetson-pi-pi05/pi05_libero
export WM=./checkpoints/jetson-pi-pi05/future_correction_module

训练默认 recipe(π0.5-LIBERO 三阶段)

Stage步数训练内容
Stage 130000Action Expert + token reducer(L_act)
Stage 215000Future correction module(L_cond,无 logvar head)
Stage 355000L_cond(无 reducer)+ L_act on Pi0 AE + 全 LLM(μ detached)

固定 handover H=10,max_delta_t=10,action_encoder=transformer_block。

bash scripts/train_wm_libero_spatial_four_stage.sh

可 override STAGE1_STEPS / STAGE2_STEPS / STAGE3_STEPS / BATCH_SIZE / NUM_WORKERS / EXP_NAME,日志在 logs/<EXP_NAME>.log。

单次评估

export PI0_CHECKPOINT=PATH/TO/CHECKPOINT/pi05_libero
export PY_SERVER=PATH/TO/PYTHON   # 必须是带 JAX 的 venv
export WM=PATH/TO/future-correction-module
export CUDA_VISIBLE_DEVICES=0
export PORT=8000

bash scripts/eval_wm_libero_spatial.sh

默认 libero_spatial,50 trials/task,H=10, K=9, overlap=1。

置信度调度(自适应多 rollout):

export LIBERO_WM_EVAL_ADAPTIVE_KAPPA=1
export LIBERO_WM_EVAL_KAPPA_DELTA=0.4
bash scripts/eval_wm_libero_spatial.sh

切换其他任务套件:export LIBERO_WM_EVAL_TASK_SUITE=libero_object|libero_goal|libero_10。

💡 避坑:

  • ModuleNotFoundError: jax → 把 PY_SERVER 设为带 JAX 的 venv
  • OOM → 降 BATCH_SIZE / XLA_PYTHON_CLIENT_MEM_FRACTION=0.85 / NUM_WORKERS=0
  • 缺 norm_stats → --pi0-norm-checkpoint-dir 指向含 assets/physical-intelligence/libero/norm_stats.json 的树
  • EGL/display 问题 → 装 xvfb 或 MUJOCO_GL=egl

端侧推理上手:Jetson-PI-Edge(llama.cpp)

构建

CPU-only:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --target llama-server -j

Jetson / CUDA:

cmake -S . -B build -DGGML_CUDA=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build --target llama-server -j

启动前台服务器

PI_MODEL 支持 auto | pi0 | pi05(默认 auto 从 GGUF metadata 与 tensor 名识别):

PI_MODEL=auto ./build/bin/llama-server \
  -m /path/to/pi_llm.gguf --mmproj /path/to/mmproj.gguf \
  -ngl 99 --host 0.0.0.0 --port 8080

HTTP 调用单次推理

按顺序四步:

  1. POST /foreground/reset — 初始化会话
  2. POST /foreground/image(两次,两个相机视角)
  3. PUT /foreground/state(32 维机器人状态 CSV)
  4. POST /foreground/infer body {"text":"pick up the object and place it into the tray"}

响应含 action_final 与 encode_ms / decode_ms / total_ms / timing_breakdown_ms,方便逐模块定位延迟。

Python Foreground 客户端(跨控制步复用 session)

from jetson_pi_foreground import ManagedForegroundSession

session = ManagedForegroundSession(
    server_path=...,
    model_path=...,
    mmproj_path=...,
    gpu











复用同一 session 可避免每步重建 CUDA context——这是控制循环里非常关键的一笔性能节省。

FlashRT 集成(可选)

通过 C API provider,同一 GGUF 运行时可暴露给 FlashRT Python 接口,无需起前台 HTTP。cmake 配 -DFLASHRT_CPP_WITH_JETSON_PI=ON -DJETSON_PI_ROOT=/path/to/Jetson-PI-Edge -DGGML_CUDA=ON -DGGML_CUDA_FA=ON,构建 libflashrt_cpp_llama_cpp_provider_c.so。

Roadmap 模型

Jetson-PI 框架并不锁死 π0 / π0.5,后续将支持:

  • NVIDIA Isaac GR00T N1.7
  • LingBot-VLA 2.0
  • Qwen-RobotManip
  • DreamZero
  • FastWAM

适用场景与边界

适合:

  • 在 Jetson Orin / Thor 等端侧设备上部署 VLA、对功耗和续航敏感的移动机器人项目
  • 想把 π0.5 训练 + 评估全流程跑通的具身智能研究者
  • 需要把 VLA 推理接入实时控制循环(15Hz+)的工程团队

当前局限:

  • 训练侧硬件门槛高(≥48 GB VRAM)
  • 端侧优化高度绑定 llama.cpp 架构,深度定制需要 C++ 经验
  • 真实机器人实验数据目前集中在衣物折叠任务,更多任务类型待社区验证

写在最后

Jetson-PI 关注的不是把 VLA 参数推到更大,而是解决一个更接近真实机器人落地的问题:当模型必须在功耗、带宽、散热都受限的机载设备上运行时,如何让它依然具备足够快的反应速度。答案由三部分组成:用未来环境表征缓解异步推理中的感知—执行错位;用置信度调度减少不必要的 VLM 调用;用面向 VLA 特性的系统优化压缩端侧执行开销。代码、引擎、权重、训练脚本全部开源,对做具身智能的开发者来说,这是 2026 年值得直接 fork 作为起点的项目。

论文:https://arxiv.org/abs/2607.12659 异步推理代码:https://github.com/PKU-SEC-Lab/Jetson-PI 端侧推理引擎:https://github.com/PKU-SEC-Lab/Jetson-PI-Edge

所有文章

作者

avatar for toolin小编
toolin小编

分类

  • AI产品
问题:端侧 VLA 不只是"推理太慢"核心算法:FAAC(前瞻对齐异步修正)置信度调度:让机器人学会"什么时候该再瞄一眼"Jetson-PI-Edge:基于 llama.cpp 重做端侧推理引擎1. 计算图复用(Graph Reuse)2. 常驻 GPU 中间缓存(GPU-resident Intermediate Buffers)3. Flow Matching 展开(Flow Unrolling)Benchmark:8.66× 提速,LIBERO 平均 SR 行业首位端侧延迟(NVIDIA Jetson Orin, MAXN, ms)LIBERO(π0.5)四子集平均成功率 SR真实机器人实验训练侧上手:Jetson-PI(JAX/Python 3.11)环境要求安装下载权重(ModelScope)训练默认 recipe(π0.5-LIBERO 三阶段)单次评估端侧推理上手:Jetson-PI-Edge(llama.cpp)构建启动前台服务器HTTP 调用单次推理Python Foreground 客户端(跨控制步复用 session)FlashRT 集成(可选)Roadmap 模型适用场景与边界写在最后

相关文章

Claude Code Agent View:一个面板管住所有AI会话
AI产品

Claude Code Agent View:一个面板管住所有AI会话

Anthropic 发布 Agent View 研究预览版,一个界面管理多个 Claude Code 会话,支持后台并行、状态追踪和 worktree 隔离。

avatar for toolin小编
toolin小编
2026/05/12
Claude Code + 飞书 CLI:5个Agent办公实操玩法
AI教程

Claude Code + 飞书 CLI:5个Agent办公实操玩法

飞书 CLI 开源近 120 项能力,结合 Claude Code 实现会议知识库沉淀、工作复盘、对账自动化、画板协作和自动报销,全程免费可用。

avatar for toolin小编
toolin小编
2026/05/12
DreamLite:字节开源端侧AI画板,手机3秒出图
AI产品

DreamLite:字节开源端侧AI画板,手机3秒出图

字节跳动开源 DreamLite,0.39B 参数统一扩散模型,在 iPhone 17 Pro 上 3 秒生成或编辑 1024x1024 图像,无需云端。

avatar for toolin小编
toolin小编
2026/05/12
.venv/lib/python3.11/site-packages/transformers/
=
0
,
port=8080,
timeout=300,
)
action, metadata = session.predict(
image_paths=[IMG, IMG],
prompt='/do something',
state=state_np_float32,
reset=True,
)
session.close()