vla.cpp

VinRoboticsApache-2.0活跃维护

基于 llama.cpp 和 GGUF 的 VLA 模型统一推理运行时,用 C++ 实现,支持量化部署,让机器人视觉-语言-动作模型能在本地高效跑起来。

A unified inference runtime for VLA models.

v0.4.0发布于 2026-09-30 13:22 UTC266star +3 / 7 天53fork同步于 2026-11-10 06:05 UTC

怎么上手

由 README 提炼,执行前请确认
sudo apt-get install -y libzmq3-dev cppzmq-dev libprotobuf-dev protobuf-compiler
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
硬件要求按 README 说明

支持 CPU(x86-64/ARM)、Apple Silicon(Metal)、NVIDIA(含 Jetson,CUDA)、AMD(ROCm)、Intel(SYCL/OpenVINO)、Qualcomm(Hexagon)。README 未给出具体显存要求,各设备延迟与内存见 docs/benchmark。

支持 Apple Silicon需要 CUDA支持 ROCm / AMD
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

基于 llama.cpp 的 C++ 推理引擎,把多种 VLA 机器人策略统一到一个无需 Python 的运行时里

基于 llama.cpp 和 GGUF 的 VLA 模型统一推理运行时,用 C++ 实现,支持量化部署,让机器人视觉-语言-动作模型能在本地高效跑起来。

核心能力

  • 用单个自包含 GGUF 打包每个 VLA 策略,推理时不需要 Python 和 PyTorch
  • 基于 llama.cpp 构建,CMake 会自动拉取并锁定其版本
  • 同一套二进制覆盖 CPU、Apple Silicon、NVIDIA、AMD、Intel、Qualcomm 后端
  • 支持 SmolVLA、π0、π0.5、GR00T N1.x、OpenVLA-OFT 等十余种策略
  • 提供 vla-cli、vla-server、vla-bench 三个可执行程序,并支持 -hf 直接拉取权重

容易踩的坑

源码构建需要 CMake ≥ 3.22、C++17 编译器(GCC 11+/Clang 14+)以及 ZeroMQ 和 protobuf;若想省掉这些 apt 依赖,可加 -DVLA_BUILD_SERVER=OFF -DVLA_SPM=OFF,但 Octo 需改用 --tokens;用 -hf 首次运行会从 Hugging Face 下载并缓存权重到 $VLA_CACHE(默认 ~/.cache/vla);vla-server 默认绑定 tcp://*:5555,且官方提示桌面 CPU 上动作队列会卡顿,建议在 GPU 主机上运行服务端。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

4 个版本v0.4.0
  1. v0.4.0最新正式版2026-09-30 · 2026-09-30 13:22 UTC

    vla.cpp now runs 13 VLA architectures, adds Intel (OpenVINO) and Snapdragon (Hexagon, Adreno) backends, and ships portable binaries for Linux x86-64, Linux aarch64 and macOS.

    Highlights

    • New models: Octo-Small and TurboVLA.
    • OpenVINO backend for Intel CPUs, iGPUs and NPUs, 3-10x faster than the CPU backend on an Arc iGPU. See docs/backend/ov.md.
    • Snapdragon X on Windows on Arm: Hexagon NPU and Adreno GPU, with CPU fallback. See docs/backend/hexagon-windows.md.
    • Prebuilt binaries for CPU, CUDA 12.8/13.4 (incl. Jetson Orin, Thor, DGX Spark) and Apple Metal, plus a Python wheel. See docs/PREBUILT.md.
    • 6-18% faster inference on CUDA, with identical outputs.
    • More accurate: π0, SmolVLA, GR00T N1.7, VLA-JEPA, Evo-1 and BitVLA now match their reference implementations.
    • Tokenizer in the GGUF: vla-cli --text runs without Python for Octo, π0, π0.5 and OpenVLA-OFT.
    • More stable: the servers no longer crash on bad requests, and the C API is thread-safe.

    Breaking changes

    • The x86 CUDA 12.8 tarball is renamed linux-x86_64-cuda-12.8; the macOS tarball ships vla-cli and vla-bench only.
    • The CMake option VLA_OCTO is renamed VLA_SPM (the old name still works).
    • Command-line flags now override --config, and a missing or invalid config file is an error.

    Full details in CHANGELOG.md.

    What's Changed

    New Contributors

    Full Changelog: https://github.com/VinRobotics/vla.cpp/compare/v0.3.0...v0.4.0

  2. v0.3.02026-08-24 · 2026-08-24 04:04 UTC
    查看更新说明
    • add Docker Compose evaluation stack (client image + orchestration + docs) (#15)
    • add end-to-end LIBERO eval on WSL2 (#17)
    • add Apple Silicon (Metal) benchmarks and fix the macOS Metal doc (#20)
    • refactor and get same performance as Pytorch grap capture by using bf16 format (#21)
  3. v0.2.02026-08-13 · 2026-08-13 02:45 UTC
    查看更新说明

    vla.cpp v0.2.0

    Eleven VLA policies from one self-contained GGUF, now on Intel GPUs as well as CPU, CUDA and Metal.

    • SYCL backend for Intel Arc / Flex / Data Center Max / Xe iGPU; VLA_DEVICE picks the ordinal on CUDA and SYCL alike.
    • Stable C ABI (include/vla.h, libvla) with Python bindings.
    • Four new architectures: π0.5, VLA-Adapter, OpenVLA-OFT, VLA-JEPA.
    • Faster: the compute graph is cached across predict calls in every architecture; Evo-1 encodes all camera views in one pass; BitVLA's ternary GEMM is bank-conflict-free. Opt-in BF16 activations (VLA_*_BF16_ACT) and fused attention (VLA_*_FA) on top.
    • vla-bench, -hf user/repo checkpoint fetch, vla-cli --text.
    • Prebuilt binaries for Linux x86-64 (CPU/CUDA), Linux aarch64 (CPU), macOS Metal, plus a GHCR image.

    llama.cpp pinned at b10331. GR00T N1.5 and N1.6 shift by up to 4.6e-4 from an upstream ggml kernel change; the other nine architectures are bit-identical. Full detail in CHANGELOG.md.

  4. v0.1.12026-07-06 · 2026-07-06 11:09 UTC
    查看更新说明

    First tagged release. C++ inference for 10 VLA policies, validated on the LIBERO object suite (10 tasks).

    LIBERO object sweep (RTX 3090, CUDA 12.8)

    ModelSRclient/call (ms)
    bitvla100%145
    evo190%238
    gr00t_n1_5100%109
    gr00t_n1_680%99
    gr00t_n1_7100%102
    openvla_oft100%256
    pi080%264
    pi05100%167
    smolvla100%86
    vla_adapter100%108

    7/10 policies at 100% success. Full report: #14.

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    License: Apache 2.0 Built on llama.cpp Models on HF arXiv Website

    A C++ inference engine for Vision-Language-Action (VLA) models, built on llama.cpp. It runs the open VLA policies under one runtime, each packaged as a single self-contained GGUF that needs no Python or PyTorch at inference time. The binaries drive robots on CPU, Apple Silicon, NVIDIA (including Jetson), AMD, Intel and Qualcomm hardware.

    thumbnails


    Install

    Download a prebuilt release, or build from source for any other platform or backend.

    Prebuilt binaries

    Each release ships tarballs for Linux x86-64 and aarch64 (CPU and CUDA) and macOS arm64 (Metal):

    TAG=<release tag>
    curl -LO https://github.com/VinRobotics/vla.cpp/releases/download/$TAG/vla.cpp-$TAG-linux-x86_64-cpu.tar.gz
    tar -xzf vla.cpp-$TAG-linux-x86_64-cpu.tar.gz
    

    Each platform's requirements are in docs/PREBUILT.md.

    Build from source

    The CPU build needs CMake ≥ 3.22, a C++17 compiler (GCC 11+ or Clang 14+), ZeroMQ and protobuf. CMake fetches and pins llama.cpp itself:

    sudo apt-get install -y libzmq3-dev cppzmq-dev libprotobuf-dev protobuf-compiler
    cmake -B build -DCMAKE_BUILD_TYPE=Release
    cmake --build build -j$(nproc)
    

    -DVLA_BUILD_SERVER=OFF -DVLA_SPM=OFF drops the apt packages and builds only vla-cli, vla-bench and libvla; Octo then takes --tokens instead of --text.

    For a GPU or NPU, follow the backend's page in docs/backend/: CUDA, ROCm, SYCL, OpenVINO, Metal, Hexagon. For containers, see docs/DOCKER.md.


    Quickstart

    Once the binaries are built, run one CPU prediction without a server or simulator:

    pip install -U "huggingface_hub[cli]" transformers
    
    # -hf fetches and caches the checkpoint (under $VLA_CACHE, default ~/.cache/vla)
    ./build/vla-cli -hf vrfai/smolvla-libero-gguf \
        --image assets/front.jpg --text "pick up the black bowl" --pretty
    
    # or point at a file you already have
    ./build/vla-cli --ckpt models/smolvla/smolvla-libero.gguf \
        --image assets/front.jpg --text "pick up the black bowl" --pretty
    

    With a prebuilt tarball, run vla-cli from the extracted vla.cpp-<tag>-<platform>/ directory instead of ./build/. --pretty prints one action row per line and --state sets proprioception. Prompt tokenization, -hf tags, vla-server, runtime flags and environment variables are in docs/USAGE.md.


    Support matrix

    Models (rows) against platforms (columns). Per-device latency and memory are in docs/benchmark/. Use ggml-compiler and follow the instruction to add a new model.

    ModelCPU (x86-64 / ARM)CUDA (NVIDIA)ROCm (AMD)SYCL (Intel)Metal (Apple)OpenVINO (Intel)Hexagon (Qualcomm)
    SmolVLAYYYYYYY
    π0YYYYYYY
    π0.5YYYYYYY
    GR00T N1.5YYYYYYY
    GR00T N1.6YYYYYYY
    GR00T N1.7YYYYYYY
    BitVLAYY-----
    Evo-1YYYYYYY
    VLA-AdapterYYYYYYY
    OpenVLA-OFTYYYYYYY
    VLA-JEPAYYYYYYY
    Octo-SmallYYYYY-Y
    TurboVLAYYYYYYY
    ACTYYY~Y~Y

    Legend: Y = supported (released and benchmarked), ~ = in progress, - = planned.


    Rollout on a real robot

    The LeRobot fork adds a lerobot-vla-cpp client that drives an SO-101 arm against vla-server. It does the preprocessing for SmolVLA, π0, π0.5 and GR00T N1.5/1.6/1.7. Serve the policy on a GPU host; on a desktop CPU the action queue stalls:

    ./build/vla-server smolvla-so101.gguf   # binds tcp://*:5555
    

    Installing, wiring and running the client are in the fork's rollout guide.


    Companion Repos

    RepoContent
    llama.cppggml and its backends; CMake fetches it at a pinned tag (b11223)
    LeRobot forklerobot-vla-cpp, the client that runs a real robot against vla-server
    ggml-compilerGenerates ggml C++ from a policy's PyTorch implementation and verifies it, for porting a new model to vla.cpp

    Documentation

    DocContent
    docs/PREBUILT.mdRelease tarballs: layout, glibc and CUDA runtime requirements, macOS and Windows notes
    docs/USAGE.mdvla-cli, vla-server, vla-bench: prompt tokenization, -hf tags, runtime flags, environment variables
    docs/EVAL.mdInstalling LIBERO and SimplerEnv, running the eval clients against vla-server
    docs/MODELS.mdConverting safetensors checkpoints to GGUF, quantizing to Q8_0/Q4_0
    docs/QUANTIZATION.mdFoldQuant W8A8 / W4A4: the GGUF contract, the integer arithmetic, converting a FoldQuantVLA quantized model
    docs/DOCKER.mdBuilding and running the eval in containers
    docs/ARCHITECTURE.mdEngine design: layers, the prediction path, backends, adding an architecture
    docs/backend/Per-backend build and run notes: CUDA, ROCm, SYCL, OpenVINO, Metal, Hexagon, Hexagon on Windows, WSL2
    docs/benchmark/Per-device latency and memory for every model, and the fastest flags per device
    docs/KNOWN_ISSUES.mdKnown issues and their resolutions
    docs/ADOPTION.mdC ABI, Python bindings, release packaging, and what is left
    docs/UPSTREAMING.mdThe ggml-openvino fixes to send upstream to llama.cpp
    CHANGELOG.mdPer-release changes, with the fastest configuration and success rate per model
    CONTRIBUTING.mdProving a change is numerically neutral, adding an architecture
    bindings/python/Python bindings

    Citation

    @misc{nguyen2026vlacpp,
      title         = {{vla.cpp}: A Unified Inference Runtime for Vision-Language-Action Models},
      author        = {Khanh D. Nguyen and Hung T. Ho and Chinh T. Nguyen and
                       Thanh Q. Duong and Linh D. Le and Duy M. H. Nguyen and
                       Vien A. Ngo and An T. Le},
      year          = {2026},
      eprint        = {2606.08094},
      archivePrefix = {arXiv},
      primaryClass  = {cs.RO},
      doi           = {10.48550/arXiv.2606.08094},
      url           = {https://arxiv.org/abs/2606.08094}
    }
    

    License

    Licensed under the Apache License, Version 2.0.


    Acknowledgements

    Supported VLA models:

    Built on:

    • llama.cpp - LLM inference engine in C/C++.
    • LIBERO - benchmark suite for the success-rate sweeps.
    • SimplerEnv - the second simulator in the eval scaffold.
    • RoboCasa - RoboCasa365 kitchen simulator for the SmolVLA and GR00T N1.6 evals.