一、环境配置要求
硬件要求
- 显卡显存:需要15.9GB,16GB显存的显卡不够用
- 保持代码:不要修改任何源代码
- 操作系统:必须使用Ubuntu 20.04
- 显卡驱动类型:
- 必须使用desktop version(图形化桌面版本)
- 支持X11等图形化库
- 禁止使用service版(服务器版/无头版)
- 识别特征:驱动名称带
--server后缀,如:nvidia-driver-XXX-server
- 外接显示器:不要使用 VNC 远程而是使用外接的显示器。
环境验证命令
# 检查系统信息
hw@T640$ uname -a
hw@T640$ nvidia-smi
# 检查显卡驱动版本
apt list --installed | grep nvidia-driver
命令行前缀 hw@T640$ 的含义
分解说明:
hw:当前登录系统的用户名(username)@:分隔符,表示"在"的意思T640:计算机的主机名(hostname)$:命令提示符,表示普通用户权限(如果是#则表示root管理员权限)
完整含义:
hw@T640$ 表示:
- 当前用户
hw - 在名为
T640的计算机上 - 以普通用户身份执行命令
在实际输入命令时,你只需要输入 $ 后面的内容,前面的 hw@T640$ 是系统自动显示的提示符。
命令详解
1. uname -a
命令作用:
显示详细的系统信息(Unix Name - All)
输出示例:
Linux T640 5.15.0-91-generic #101~20.04.1-Ubuntu SMP Thu Nov 16 14:22:28 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
各字段含义:
Linux:操作系统内核名称T640:网络节点主机名5.15.0-91-generic:内核版本号#101~20.04.1-Ubuntu SMP:内核编译信息和版本Thu Nov 16 14:22:28 UTC 2023:内核编译时间x86_64:机器硬件架构(64位x86架构)GNU/Linux:操作系统类型
在实验中的重要性:
- 验证系统是否为Ubuntu 20.04
- 确认系统架构兼容性
- 排查系统级别的问题
2. nvidia-smi
命令作用:
NVIDIA System Management Interface - 显示NVIDIA显卡状态信息
输出示例:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 535.146.02 Driver Version: 535.146.02 CUDA Version: 12.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 NVIDIA RTX 4090 On | 00000000:01:00.0 Off | Off |
| 0% 45C P8 20W / 450W | 245MiB / 24564MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
关键信息解读:
1. 驱动信息:
Driver Version: 535.146.02- NVIDIA驱动版本CUDA Version: 12.2- CUDA工具包版本
2. 显卡状态:
GPU Name: NVIDIA RTX 4090- 显卡型号Memory-Usage: 245MiB / 24564MiB- 显存使用情况(已用/总量)- 总量24GB:验证是否满足15.9GB要求
3. 性能指标:
Temp: 45C- 显卡温度Perf: P8- 性能状态(P0最高,P12最低)GPU-Util: 0%- GPU利用率
在实验中的关键作用:
-
验证驱动类型:
- 检查是否是desktop版本(非server版)
-
确认显存容量:
- 必须 ≥15.9GB(16GB不够用)
- 示例中24GB满足要求
-
检查CUDA兼容性:
- 确保CUDA版本与PyTorch-cuda版本匹配
-
监控资源使用:
- 在长时间实验(40小时)中监控显卡状态
实验环境验证流程
完整的验证步骤:
# 1. 检查系统基本信息
uname -a
# 输出应包含 Ubuntu 20.04 相关信息
# 2. 检查显卡状态
nvidia-smi
# 验证:驱动版本、显存大小(≥15.9GB)、CUDA版本
# 3. 确认驱动类型
apt list --installed | grep nvidia-driver
# 确认不是 xxx-server 版本
# 如果失败了,则改成如下两步
# apt list --installed > installed.txt
# search in installed.txt about nvidia
为什么这些验证很重要:
- 系统兼容性:确保Ubuntu 20.04系统
- 驱动正确性:避免使用server版驱动导致图形化仿真失败
- 资源充足性:确认显存满足OpenVLA运行需求
- 版本匹配:防止CUDA版本不匹配导致的安装错误
这些验证步骤是确保整个OpenVLA实验能够成功运行的基础前提条件。
重要限制与说明
- ❌ 禁止使用虚拟机
- ❌ 禁止使用云服务器(原因:云服务器通常为无头模式,显卡驱动为server版,缺少图形化库,导致Libero仿真环境出错)
- ❌ 不要使用VNC,必须使用外接显示器
- ✅ 推荐平台:gpulab(国内唯一支持可视化、带显卡的Ubuntu服务器)
- 网址:https://youlika.gpulab.top/
云服务器无头模式原因:厂商为节省资源通常提供无头模式
二、OpenVLA 环境安装
始终保证目前所在的环境是 openvla 而不是 base 有的时候就是会突然自己变成了 base 环境,一定要注意!
1. 创建 conda 环境
conda create -n openvla python=3.10 -y
conda activate openvla
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia -y
这里需要区分使用 conda install 和使用 pip install 的区别。
版本兼容性关键:
- 必须确保
nvcc和pytorch-cuda版本完全一致,例如:pytorch-cuda 11.8 + nvcc 11.8 - CUDA次要版本(如11.0和11.8)通常向后兼容
- 例如:pytorch-cuda 11.8 可能兼容 11.0-11.8
2. 下载 OpenVLA-7B 模型
初始步骤:
cd /mnt/home/youzeshun/models
git clone https://huggingface.co/openvla/openvla-7b
无梯子环境方案:
方案一:使用modelscope
pip install modelscope
modelscope download --model zixiaoBios/openvla-7b
# 下载路径:~/.cache/modelscope/hub/models/zixiaoBios/openvla-7b
# 验证大小:du -sh ~/.cache/modelscope/hub/models/zixiaoBios/openvla-7b
# 正确大小应为15G
方案二:使用镜像
sudo apt-get install git-lfs
git clone https://hf-mirror.com/openvla/openvla-7b
3. 安装OpenVLA代码库
git clone https://github.com/openvla/openvla.git
cd openvla
pip install -e .
pip install -e . 的作用
pip install -e .= “我要开发这个包,修改代码后立即生效”pip install -r requirements.txt= “我要安装这些现成的包,确保环境一致”
关键安装步骤:
# 按照readme而不是requirement.txt安装
pip install packaging ninja
# 检查ninja:ninja --version; echo $? # 返回 exit 0 表示成功
# 关键步骤:flash-attn安装
pip install "flash-attn==2.5.5" --no-build-isolation
重要说明:--no-build-isolation参数让flash-attn构建时能识别当前环境已安装的torch,没有此参数会报错找不到pytorch(此步骤极易出错)
难以安装:flash-attn 是非常难以安装的,会出现很多的问题,可以参考这里。
4. 测试OpenVLA
创建main.py文件,将openvla-7b模型下载路径拷贝到main.py的path变量后运行。
from transformers import AutoModelForVision2Seq, AutoProcessor
from PIL import Image
import torch
# path = '~/.cache/modelscope/hub/models/zixiaoBios/openvla-7b/' # 这个写法有问题
path = '/home/ubuntu/.cache/modelscope/hub/models/zixiaoBios/openvla-7b/'
image_path = r"./xxx.png"
processor = AutoProcessor.from_pretrained(path, trust_remote_code=True)
vla = AutoModelForVision2Seq.from_pretrained(
path,
attn_implementation="flash_attention_2",
torch_dtype=torch.bfloat16,
low_cpu_mem_usage=True,
trust_remote_code=True
).to("cuda:0")
image: Image.Image = Image.open(image_path)
prompt = "In: what action should the robot take to {<INSTRUCTION>}?\nout"
inputs = processor(prompt, image).to("cuda:0", dtype=torch.bfloat16)
action = vla.predict_action(**inputs, unnorm_key="bridge_orig", do_sample=False)
print(action)
Action输出格式详解
- 输出:1×7向量
- 前3个元素:机器人平移部分(x, y, z)
- 中间3个元素:机器人旋转部分(axis-angle representation)
- 最后1个元素:夹爪控制
三、LIBERO环境安装与复现
1. 安装LIBERO
环境说明:LIBERO是OpenVLA自带的仿真环境,官方在此环境上进行了微调
# 在conda openvla环境中安装
git clone https://github.com/Lifelong-Robot-Learning/LIBERO.git
cd LIBERO
pip install -e .
# 返回openvla目录安装额外依赖
cd openvla
pip install -r experiments/robot/libero/libero_requirements.txt
# 必要情况下安装指定版本numpy:pip install numpy==1.24.4
2. 验证安装
python -m libero
3. 复现实验详情
实验规模:
- 4个套件,每个套件10个任务
- 每个任务50轮推理
- 每个任务结束后自动开启下一个任务推理
时间预估:
- A100上每个套件推理需要10小时
- 4个套件总共需要40小时
四个套件名称:
- libero-spatial
- libero-object
- libero-goal
- libero-10
4. 泛化能力对比
- OpenVLA:每个套件需要使用对应的微调模型,套件与模型不匹配则得分为0
- Pi0模型:一个模型运行在所有套件上,平均分高于OpenVLA
- 结论:反映出OpenVLA泛化能力不足
5. libero-spatial套件复现步骤
# 下载微调模型
git clone https://hf-mirror.com/openvla/openvla-7b-finetuned-libero-spatial
# 运行评估
python experiments/robot/libero/run_libero_eval.py \
--model_family openvla \
--pretrained_checkpoint /mnt/home/youzeshun//.cache/modelscope/hub/models/zixiaoBios/openvla-7b-finetuned-libero-spatial/ \
--task_suite_name libero_spatial \
--center_crop True
上述指令中,pretrained_checkpoint 是本次使用的模型的本地路径,就是上一步中通过 git clone 下载到本地的模型;而 task_suite_name 则是指套件的名称,libero 中包含了四种不同的套件。这里需要注意的是 pretrained_checkpoint 必须和 task_suite_name 一一对应上。
关键要求:
pretrained_checkpoint必须与task_suite_name一一对应(正如上面所说:每个套件需要使用对应的微调模型,套件与模型不匹配则得分为0)- 运行时间:A100上约10小时
- 输出:生成500个文件
6. 结果文件分析
文件存储位置:文件名如同 rollouts/2025-03-12 的文件夹
文件名格式:2025_06_11-16_12_45--episode=1--success=True--task=pick_up_the_black_bowl_between_the_plate_and_the_r.mp4
字段说明:
episode=1:第一次推理的结果success=True:任务成功标志task=...:任务名称.mp4:表明输出是一段视频
播放方式:ubuntu下需要将mp4文件拖拽到浏览器中播放
问题排查:如果LIBERO下载不完整,可能出现所有success=false
7. 其他套件复现
流程与libero-spatial类似:
- 下载对应的微调模型
- 修改启动指令中的
pretrained_checkpoint和task_suite_name,保证其能够一一对应
四、SimplerEnv安装和实验
SimplerEnv 的作用就是为了使程序的调试变得容易。
1. 安装步骤
git clone https://github.com/simpler-env/SimplerEnv --recurse-submodules
# 在conda openvla环境中安装依赖
pip install numpy==1.24.4
cd {this_repo}/ManiSkill2_real2sim # {this_repo}表示SimplerEnv项目目录
pip install -e . # 这里的 this_repo 指的就是 SimplerEnv 所在的文件夹
cd {this_repo}
pip install -e .
2. Jupyter环境配置
pip install jupyter
jupyter notebook password # 设置jupyter密码
jupyter notebook --no-browser --port 8080 --ip=0.0.0.0
3. 运行说明
最后运行相应代码即可(占空)
五、技术原理详解
1. OpenVLA与仿真环境交互流程
- 仿真环境提供当前摄像头拍摄的图像(image)
- OpenVLA根据image和prompt生成下一个action
- 仿真环境根据action移动机械臂
- 根据机械臂与环境的互动调整可乐罐的位置
- 生成新的image给模型
- 循环执行,最终每一步的照片组合生成操作视频
2. Action输出格式详解
- 输出:1×7向量
- 前3个元素:机器人平移部分(x, y, z)
- 中间3个元素:机器人旋转部分(axis-angle representation)
- 最后1个元素:夹爪控制
3. 部署架构
- 分开部署:OpenVLA与仿真环境可以分开部署
- API调用:OpenVLA只暴露API给仿真环境调用
- 优点:
- 一次部署供多人使用
- 显存效果只算单个人的量
- 大模型部署的常用方式
六、关键问题与解决方案
- 版本兼容性:确保CUDA版本、PyTorch版本、驱动版本完全匹配
- 网络问题:无梯子环境下使用modelscope或镜像源
- 安装错误:flash-attn必须使用
--no-build-isolation参数 - 模型匹配:套件与微调模型必须一一对应,否则性能为0
- 环境完整性:LIBERO下载不完整会导致所有任务失败
原始笔记:
1. 整个实验过程中不要额外修改源仓库拷贝下来的代码,否则会出现各种错误。
2. 使用 conda 创建一个名为 openvla 的环境。
conda create -n openvla python=3.10 -y
conda activate openvla
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia -y
需要确保 nvcc 和 pytorch-cuda 的版本完全一致,例如 pytorch-cuda 11.8 + nvcc 11.8.
cuda 的次要版本如 11.0 和 11.8 通常是向后兼容的,例如 pytorch-cuda 11.8 可能兼容 11.0-11.8.
3. apt list --installed | grep nvidia-driver
4. hw@T640$ uname -a
5. hw@T640$ nvidia-smi
6. 显存需要是 15.9GB 也就是说买一个 16GB 的显存是不够用的。
7. 环境必须使用 ubuntu 20.04。
8. 图形化仿真的显卡驱动要求:desktop version 其特点是能显示图形化桌面,支持 X11 等图形化库。不要使用 service 版,这个版本又称为服务器版或者无头版,其特征为驱动后面带有 --server 的后缀,如:nvidia-driver-XXX-server.
9. 查看显卡驱动的命令为:apy list --installed | grep nvidia-driver
10. 不要使用虚拟机、不要使用云服务器(云服务器不带图形界面,显卡的驱动版本为 server 版,缺少大量的图形化库,导致 Libero 仿真环境出现错误)。
11. 不要使用 VNC 而是用外接显示器。
12. 云服务器厂商基本上都是提供无头模式,为什么?
13. gpulab 是国内位移支持可视化、带显卡的 ubuntu 服务器,其网址为:https://youlika.gpulab.top/.
1. 安装 openvla 环境:
cd /mnt/home/youzeshun/models
git clone https://huggingface.co/openvla/openvla-7b
2. 没有梯子环境下:
方案一:
pip install modelscope
modelscope download --model zixiaoBios/openvla-7b
假设下载完毕之后的路径为:~/.cache/modelscope/hub/models/zixiaoBios/openvla-7b
我们需要查看其大小:du -sh ~/.cache/modelscope/hub/models/zixiaoBios/openvla-7b
如果是 15G 那就是正确的
方案二:
sudo apt-get install git-lfs
git clone https://hf-mirror.com/openvla/openvla-7b
3. 安装 openvla
git clone https://github.com/openvla/openvla.git
cd openvla
pip install -e .
安装 readme 而不是 requirement.txt 进行安装:
pip install packaging ninja
ninja --version; echo $?
pip install "flash-attn==2.5.5" --no-build-isolation # 这里的 --no-build-isolation 非常的关键,它让 flash-attn 构建是可以识别到当前环境已安装的 torch 如果没有这个参数会报错找不到 pytorch. (这一步非常容易出错)
4. 测试 openvla
创建一个文件 mian.py 将 openvla-7b 模型的下载路径拷贝到 main.py 的变量 path 后运行:
# main.py 的内容如下
5. openvla 每次输入的是 image 和 prompt 输出的是 action 其中 action 为 1*7 的向量,第 1-3 个元素表示机器人的平移部分(x,y,z)第 4-6 个元素表示的是机器人的旋转部分(axis-angle-representation),最后一个元素则表示的是夹爪的控制。
1. 安装 libero 环境
安装此环境的作用就是可视化 vla 的输出,libero 是 openvla 自带的,并且官方在这个环境上进行了微调。
还是在 conda openvla 环境中:
git clone https://github.com/Lifelong-Robot-Learning/LIBERO.git
cd LIBERO
pip install -e .
来到 openvla 所在的环境
cd openvla
pip install -r experiments/robot/libero/libero_requirements.txt
# 必要情况下安装 numpy:pip install numpy==1.24.4
2. 检查 lebero 是否被正确安装
python -m libero
3. 在 libero 中的复现,复现4个套件。每个套件 10 个任务,每个任务 50 轮推理,每个任务结束之后自动开启下一个任务的推理;在 A100 上每个套件推理完成需要 10小时,那么 4 个套件需要 40 个小时。这四个套件分别是:libero-spatial libero-object libero_goal libero_10
4. 在泛化能力上对比 openvla 和 pi0 模型
每个套件都有预制对应的微调后的模型,如果套件与模型没有对应上,那么得分就会直接为 0,这是因为 openvla 的泛化能力不足;而 pi0 模型是一个模型运行在所有套件之上的,并且平均分还高于 openvla。如此可以反映出泛化能力的不足。
5. 复现 libero-spatial 套件中的效果
作者提供了libero环境下的微调后的模型,我们直接使用即可:
git clone https://hf-mirror.com/openvla/openvla-7b-finetuned-libero-spatial
然后启动即可:
python experiments/robot/libero/run_libero_eval.py \
--model_family openvla \
--pretrained_checkpoint /mnt/home/youzeshun//.cache/modelscope/hub/models/zixiaoBios/openvla-7b-finetuned-libero-spatial/ \
--task_suite_name libero_spatial \
--center_crop True
其中,pretrained_checkpoint 是本次使用的模型的本地路径,就是上一步中通过 git clone 下载到本地的模型;而 task_suite_name 则是指套件的名称,libero 中包含了四种不同的套件。这里需要注意的是 pretrained_checkpoint 必须和 task_suite_name 一一对应上。
启动之后大概需要在 A100 上运行 10 个小时,然后生成 500 个文件。需要注意的是如果 libero 下载的不完全,则有可能会出现所有 success=false 的出现。这 500 个文件储存在名为 rollouts/2025-03-12 的文件夹中,从文件名中就可以看出来是否成功。
2025_06_11-16_12_45--episode=1--success=True--task=pick_up_the_black_bowl_between_the_plate_and_the_r.mp4
其中 episode=1 表示的是第一次推理的结果;success=True表示的是成果;而task=pick_up_the_black_bowl_between_the_plate_and_the_r 则是任务名。
如果想要成功播放 mp4 文件,则需要将其拖拽到浏览器中。
6. 其他三个套件的复现与 libero-spatial 类似,流程都是先下载微调之后的模型,然后修改启动指令中的 pretrained_checkpoint 和 task_suite_name 即可。
1. SimplerEnv 的安装和实验
SimplerEnv 的作用就是为了使程序的调试变得容易。其流程如下:
git clone https://github.com/simpler-env/SimplerEnv --recurse-submodules
继续在 conda openvla 环境中安装所需要的依赖:
pip install numpy==1.24.4
cd {this_repo}/ManiSkill2_real2sim // {this_repo} 表示的是项目的目录
pip install -e .
cd {this_repo}
pip install -e .
2. 然后安装 jupyter
pip install jupyter
jupyter notebook password # 这里是设置了 jupyter 的密码
jupyter notebook --no-browser --port 8080 --ip=0.0.0.0
3. 最后运行下面的代码即可(占空)
1. openvla 的原理说明
openvla 与仿真环境的交互过程是仿真环境告诉 openvla 当前摄像头拍摄到的 image。openvla 根据 image 和 prompt 生成下个 action,仿真环境根据 action 移动机械臂,并根据机械臂与环境的互动调整可乐罐的位置,然后生成新的 image 给模型。这个过程经过循环后会得到一系列的 iamge 这些 image 组成了最终的操作视频。
2. 分开部署
openvla 可以与仿真环境分开部署,然后 openvla 只暴露 api 给仿真环境调用,这种大模型的部署方式非常的常用。优点是只需要一次部署就可以供多人使用,显存的效果只算单个人的量。
1075

被折叠的 条评论
为什么被折叠?



