InternVLA-M1

InternRoboticsMIT活跃维护

面向通用机器人策略的空间引导视觉-语言-动作框架,把视觉语言模型和动作输出打通,让机器人能按空间指令执行操作任务。

InternVLA-M1: A Spatially Guided Vision-Language-Action Framework for Generalist Robot Policy

暂无版本438star26fork同步于 2026-11-08 15:02 UTC

怎么上手

由 README 提炼,执行前请确认
git clone https://github.com/InternRobotics/InternVLA-M1
conda create -n internvla-m1 python=3.10 -y
conda activate internvla-m1
pip install -r requirements.txt
pip install flash-attn --no-build-isolation
pip install -e .
硬件要求按 README 说明

支持 NVIDIA CUDA、Intel GPU(XPU)和 CPU,脚本按 CUDA、XPU、CPU 顺序自动选设备;README 未给出具体显存要求。

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

项目说明

由 README 自动翻译提炼

基于开源 VLM 的通用机器人策略框架,用空间引导把视觉语言模型接到机器人动作上

面向通用机器人策略的空间引导视觉-语言-动作框架,把视觉语言模型和动作输出打通,让机器人能按空间指令执行操作任务。

核心能力

  • 语言头与动作头双系统双监督联合训练
  • 模块化拆分模型、数据、训练策略与评测流程
  • 从大规模多模态预训练迁移空间与视觉先验
  • 提供 LIBERO、SimplerEnv 与真机端到端示例
  • 发布主模型及 LIBERO 多任务微调权重

容易踩的坑

需自行从 Hugging Face 下载对应 checkpoint,示例里的路径要替换成本地权重;XPU 上要装 XPU 版 PyTorch 并跳过 flash-attn,它仅支持 CUDA;XPU 与 CPU 路径存在 float32 flow-matching 舍入偏差,属正常现象。

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

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

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

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

    README 原文

    未翻译

    InternVLA-M1

    InternVLA-M1 is a spatially guided vision-language-action framework for generalist robot policy.

    https://github.com/user-attachments/assets/e83ae046-a503-46a8-95e4-ef381919b7f8

    Paper Website Demo License

    🔥 Key Features

    1. Modular & Extensible
      All core components (model architecture, training data, training strategies, evaluation pipeline) are fully decoupled, enabling independent development, debugging, and extension of each module.

    2. Dual-System and Dual-Supervision InternVLA-M1 integrates both a language head and an action head under a unified framework, enabling collaborative training with dual supervision.

    3. Efficient Training & Fast Convergence Learns spatial and visual priors from large-scale multimodal pretraining and transfers them via spatial prompt fine-tuning. Achieves strong performance (e.g., SOTA-level convergence on in ~2.5 epochs without separate action pretraining).

    🎯 Target Audience

    1. Users who want to leverage open-source VLMs (e.g., Qwen2.5-VL) for robot control.
    2. Teams co-training action datasets jointly with multimodal (vision–language) data.
    3. Researchers exploring alternative VLA architectures and training strategies.

    📊 Experimental Results

    WindowXGoogle Robot(VA)Google Robot(VM)LIBERO
    $\pi_0$27.154.858.894.2
    GR00t61.944.535.293.9
    InternVLA-M171.776.080.795.9

    🚀 Quick Start

    🛠 Environment Setup

    # Clone the repo
    git clone https://github.com/InternRobotics/InternVLA-M1
    
    # Create conda environment
    conda create -n internvla-m1 python=3.10 -y
    conda activate internvla-m1
    
    # Install requirements
    pip install -r requirements.txt
    
    # Install FlashAttention2
    pip install flash-attn --no-build-isolation
    
    # Install InternVLA-M1
    pip install -e .
    

    Hardware support

    InternVLA-M1 runs on NVIDIA CUDA, Intel GPUs (XPU), or CPU. The deployment and evaluation scripts automatically select the available device in this order: CUDA, XPU, then CPU. No code or configuration changes are needed.

    Intel GPU (XPU): install a PyTorch build with XPU support instead of the CUDA wheels:

    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/xpu
    

    Skip the flash-attn step above when using XPU. It is CUDA-only and is not required on XPU; the model uses PyTorch's built-in attention implementation instead.

    Outputs closely match the CUDA and CPU paths. Minor float32 flow-matching rounding drift is expected and is not a bug.

    ⚡ Quick Interactive M1 Demo

    Below are two collapsible examples: InternVLA-M1 chat and action prediction.

    from InternVLA.model.framework.M1 import InternVLA_M1
    from PIL import Image
    import requests
    from io import BytesIO
    import torch
    
    def load_image_from_url(url: str) -> Image.Image:
        resp = requests.get(url, timeout=15)
        resp.raise_for_status()
        img = Image.open(BytesIO(resp.content)).convert("RGB")
        return img
    
    saved_model_path = "/PATH/checkpoints/steps_50000_pytorch_model.pt"
    internVLA_M1 = InternVLA_M1.from_pretrained(saved_model_path)
    
    # Use the raw image link for direct download
    image_url = "https://raw.githubusercontent.com/InternRobotics/InternVLA-M1/InternVLA-M1/assets/table.jpeg"
    image = load_image_from_url(image_url)
    question = "Give the bounding box for the apple."
    response = internVLA_M1.chat_with_M1(image, question)
    print(response)
    
    from InternVLA.model.framework.M1 import InternVLA_M1
    from PIL import Image
    import requests
    from io import BytesIO
    import torch
    
    def load_image_from_url(url: str) -> Image.Image:
        resp = requests.get(url, timeout=15)
        resp.raise_for_status()
        img = Image.open(BytesIO(resp.content)).convert("RGB")
        return img
    
    saved_model_path = "/PATH/checkpoints/steps_50000_pytorch_model.pt"
    internVLA_M1 = InternVLA_M1.from_pretrained(saved_model_path)
    
    image_url = "https://raw.githubusercontent.com/InternRobotics/InternVLA-M1/InternVLA-M1/assets/table.jpeg"
    view1 = load_image_from_url(image_url)
    view2 = view1.copy()
    
    # Construct input: batch size = 1, two views
    batch_images = [[view1, view2]]  # List[List[PIL.Image]]
    instructions = ["Pick up the apple and place it on the plate."]
    
    device = torch.device(
      "cuda" if torch.cuda.is_available()
      else "xpu" if hasattr(torch, "xpu") and torch.xpu.is_available()
      else "cpu"
    )
    internVLA_M1 = internVLA_M1.to(device)
    
    pred = internVLA_M1.predict_action(
        batch_images=batch_images,
        instructions=instructions,
        cfg_scale=1.5,
        use_ddim=True,
        num_ddim_steps=10,
    )
    normalized_actions = pred["normalized_actions"]  # [B, T, action_dim]
    print(normalized_actions.shape, type(normalized_actions))
    

    📘 Examples

    We provide several end-to-end examples for reference:

    • Reproduce InternVLA-M1 in SimplerEnv Example

    • Reproduce InternVLA-M1 in LIBERO Example

    • Training/Deployment on real robots Example

    📈 Model Zoo

    We release a series of pretrained models and checkpoints to facilitate reproduction and downstream use.

    ✅ Available Checkpoints

    ModelDescriptionLink
    InternVLA-M1Main pretrained model🤗 Hugging Face
    InternVLA-M1-Pretrain-RT-1-BridgePretraining on RT-1 Bridge data🤗 Hugging Face
    InternVLA-M1-LIBERO-LongFine-tuned on LIBERO Long-horizon tasks🤗 Hugging Face
    InternVLA-M1-LIBERO-GoalFine-tuned on LIBERO Goal-conditioned tasks🤗 Hugging Face
    InternVLA-M1-LIBERO-SpatialFine-tuned on LIBERO Spatial reasoning tasks🤗 Hugging Face
    InternVLA-M1-LIBERO-ObjectFine-tuned on LIBERO Object-centric tasks🤗 Hugging Face

    🗺️ Roadmap

    • 1215: Add Co-Training Multimodel Multitask README.md
    • 0930: Unified Inference Server for Simpler and LIBERO
    • 0918: Release model weights

    🤝 Contributing

    We welcome contributions via Pull Requests or Issues. Please include detailed logs and reproduction steps when reporting bugs.

    📜 Citation

    If you find this useful in your research, please consider citing our ICLR paper and technical report:

    @inproceedings{ye2026st4vla,
      title={ST4VLA: Spatially Guided Training for Vision-Language-Action Models},
      author={Ye, Jinhui and Wang, Fangjing and Gao, Ning and Yu, Junqiu and Zhu, Yangkun and Wang, Bin and Zhang, Jinyu and Jin, Weiyang and Fu, Yanwei and Zheng, Feng and Chen, Yilun and Pang, Jiangmiao},
      booktitle={International Conference on Learning Representations (ICLR)},
      year={2026}
    }
    @article{internvlam1,
      title   = {InternVLA-M1: A Spatially Guided Vision-Language-Action Framework for Generalist Robot Policy},
      author  = {InternVLA-M1 Contributors},
      journal = {arXiv preprint arXiv:2510.13778},
      year    = {2025}
    }
    

    📬 Contact

    • Issues: Submit via GitHub Issues with detailed logs and steps

    🙏 Acknowledgements

    We thank the open-source community for their inspiring work. This project builds upon and is inspired by the following projects (alphabetical order):

    • IPEC-COMMUNITY: Curated OXE / LIBERO style multi-task datasets and formatting examples.
    • Isaac-GR00T: Standardized action data loader (GR00T-LeRobot).
    • Qwen2.5-VL: Multimodal input/output format, data loader, and pretrained VLM backbone.
    • CogACT: Reference for a DiT-style action head design.
    • Llavavla: Baseline code structure and engineering design references.
    • GenManip Simulation Platform: Simulation platform for generalizable pick-and-place based on Isaac Sim.

    Notes:

    • If any required attribution or license header is missing, please open an issue and we will correct it promptly.
    • All third-party resources remain under their original licenses; users should comply with respective terms.

    Thanks for using InternVLA-M1! 🌟 If you find it useful, please consider giving us a ⭐ on GitHub.