参考资料:
参考了如下教程,再结合自己的经历,励志做最好的教程!!
Model 复现系列(一)OpenVLA_openvla复现-CSDN博客
openvla/openvla: OpenVLA: An open-source vision-language-action model for robotic manipulation.
junnannie/OpenVLA: 多模态具身智能大模型 OpenVLA 的复现以及在 LIBERO 数据集上的微调改进
如何快速下载huggingface模型——全方法总结 - 知乎
记录openVLA的LIBERO评估复现过程介绍 OpenVLA
上代理后的检查:- curl ipinfo.io
- env | grep proxy
复制代码 清除代理:- unset http_proxy https_proxy ftp_proxy all_proxy HTTP_PROXY HTTPS_PROXY FTP_PROXY
复制代码 1. 拉取仓库
- git clone https://github.com/openvla/openvla.git
复制代码 仓库/项目文件树的高级概述:
- prismatic- 封装源;提供模型加载、训练、数据预处理等核心工具
- vla-scripts/- 用于训练、微调和部署 VLA 的核心脚本。
- experiments/- 用于评估机器人环境中OpenVLA策略的代码。
- LICENSE- 所有代码均以MIT许可证发布;祝你黑客愉快!
- Makefile- 顶层 Makefile(默认支持线条处理——检查和自动修复);根据需要扩展。
- pyproject.toml- 完整的项目配置细节(包括依赖关系),以及工具配置。
2. 创建conda虚拟环境
什么??如果你告诉我你连conda虚拟环境都不知道是什么的话,请先下载一个conda再来看本教程吧!
最新版最详细Anaconda新手安装+配置+环境创建教程_anaconda配置-CSDN博客
然后终端输入:- conda create -n openvla python=3.10 -y
- conda activate openvla
复制代码 3.准备环境
OPENVLA官方所提供的环境如下:
- PyTorch 2.2.0, torchvision 0.17.0, transformers 4.40.1, tokenizers 0.19.1, timm 0.9.10, and flash-attn 2.5.5
为了遵循官方,我们也采用同样的配置。
首先查看自己电脑的CUDA版本,在这里我的CUDA版本为12.1
去官方下载对应的PYtorch版本吧!点击这里下载
找到官方对应的版本V2.2.0 ,选择对应的CUDA版本号
- pip install torch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 --index-url https://download.pytorch.org/whl/cu121
- cd openvla
- pip install -e .
复制代码[!CAUTION]
如果你没有按照官方的版本下,或者说你原本的电脑就存在pytorch的其他版本。同样没关系,不过需要注释掉pyproject.toml中对应的部分
如果你需要进行训练或者微调还需要安装 Flash Attention 2:
[!CAUTION]
Flash Attention 2 是需要硬件支持的,必须是Nvidia 30系列及其以上的显卡才可以
- pip install packaging ninja
- pip install "flash-attn==2.5.5" --no-build-isolation
复制代码 我在下载flash-attn==2.5.5的时候一直卡住,等了很久直接报错:
说明网络超时,你还得用代理来pip这个链接。这才能安装上flash-attn。(注意自己的torch版本和cuda版本哦!!)- pip install https://github.com/Dao-AILab/flash-attention/releases/download/v2.5.5/flash_attn-2.5.5+cu122torch2.2cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
复制代码
全部按照好后,我们来进行一下小小的测试看看我们安装是否正确
**测试 Ninja **- $ ninja --version; echo $?
复制代码 正常输出如下:
测试pytorch- python
- import torch
- torch.__version__
- print('CUDA可用:', torch.cuda.is_available())
复制代码
4.下载模型
Huggingface下载地址 penvla (OpenVLA Collaboration)
你可以选择下载预训练模型自行进行微调或者是下载已经微调好的模型进行测试。
这里我选择进行微调所以使用预训练模型openvla-7b
下载模型的方式有很多,由于我使用huggingface的cli工具包下载,并且想在后台默认下载,所以我使用了这个指令- # 下载cli工具包
- pip install -U huggingface_hub
- #添加国内镜像源(建议写道bashrc里面,记得source)
- export HF_ENDPOINT=https://hf-mirror.com
- export HF_HUB_DOWNLOAD_TIMEOUT=30
- # 下载
- HF_ENDPOINT=https://hf-mirror.com huggingface-cli download --resume-download openvla/openvla-7b --local-dir model --local-dir-use-symlinks False
- (或者下载已调好的模型)
- HF_ENDPOINT=https://hf-mirror.com huggingface-cli download --resume-download openvla/openvla-7b-finetuned-libero-spatial --local-dir model --local-dir-use-symlinks False
复制代码 你可以通过tail -f download.log查看日志,可以通过ps aux | grep huggingface-cli 查看任务进程
5.下载数据集
论文上说数据集有128G比较大,所以下的可能很慢。但是实际去下的时候发现BridgeDataV2竟然变成442G了。
下载指令:- wget -c -r -nH --cut-dirs=4 --reject="index.html*" \
- https://rail.eecs.berkeley.edu/datasets/bridge_release/data/tfds/bridge_dataset/ \
- 2>&1 | tee "$LOG_FILE"
复制代码 6.开始训练
调整好openvla/vla-scripts/finetune.py中的参数
注意数据集存放路径,如果你的GPU显存比较小,应该减少和增加批量- python vla-scripts/finetune.py
复制代码 启动Libero评估
1.安装环境
- git clone https://github.com/Lifelong-Robot-Learning/LIBERO.git
- cd LIBERO
- pip install -e .
- cd openvla
- pip install -r experiments/robot/libero/libero_requirements.txt
复制代码[!CAUTION]
这里有一步操作需要注意:在下载pip install -r experiments/robot/libero/libero_requirements.txt的时候,会自动把numpy升级成2.x版本这会导致与深度学习库不兼容,在运行评估脚本的时候出现报错。简单的解决办法就是,再运行一次,它会帮你下载会原来1.x的numpy
- cd openvla
- pip install -e .
复制代码 2.下载数据集
openvla/modified_libero_rlds · Datasets at Hugging Face
注意数据集存放的位置,后面需要用到- huggingface-cli download --repo-type dataset --resume-download openvla/modified_libero_rlds --local-dir ./ --local-dir-use-symlinks False
复制代码 3.启动评估
在experiments/robot/libero/run_libero_eval.py中,修改对应的检查点,以及任务名称- @dataclass
- class GenerateConfig:
- # fmt: off
- #################################################################################################################
- # Model-specific parameters
- #################################################################################################################
- model_family: str = "openvla" # Model family
- pretrained_checkpoint: Union[str, Path] = "/mnt/nvme1n1p1/zzh/openvla/model/openvla-7b-finetuned-libero-spatial" # Pretrained checkpoint path
- load_in_8bit: bool = False # (For OpenVLA only) Load with 8-bit quantization
- load_in_4bit: bool = False # (For OpenVLA only) Load with 4-bit quantization
- center_crop: bool = True # Center crop? (if trained w/ random crop image aug)
- #################################################################################################################
- # LIBERO environment-specific parameters
- #################################################################################################################
- task_suite_name: str = "libero_spatial" # Task suite. Options: libero_spatial, libero_object, libero_goal, libero_10, libero_90
- num_steps_wait: int = 10 # Number of steps to wait for objects to stabilize in sim
- num_trials_per_task: int = 5 # Number of rollouts per task
- #################################################################################################################
- # Utils
- #################################################################################################################
- run_id_note: Optional[str] = None # Extra note to add in run ID for logging
- local_log_dir: str = "./experiments/logs" # Local directory for eval logs
- use_wandb: bool = False # Whether to also log results in Weights & Biases
- wandb_project: str = "YOUR_WANDB_PROJECT" # Name of W&B project to log to (use default!)
- wandb_entity: str = "YOUR_WANDB_ENTITY" # Name of entity to log under
- seed: int = 7 # Random Seed (for reproducibility)
- # fmt: on
复制代码 然后运行,第一次运行会让你填写你数据集存放的地方,填写数据集所下载的位置即可- #链接 libero
- export PYTHONPATH="/mnt/nvme1n1p1/zzh/openvla/LIBERO:$PYTHONPATH"
- python experiments/robot/libero/run_libero_eval.py
复制代码 4.实验结果评估
等待运行,装在模型至少需要16G的GPU显存,或者可以使用8bit量化后的模型,官方论文中指到的是8bit量化后模型占用下显存为8G。
如何使用量化后的模型进行加载??但是最新的bitsandbytes 要求pytorch至少>2.3
由于我们之前下载的pytorch版本是2.2.0,所以直接使用该指令会导致系统帮你下载更新的pytorch来满足要求。我尝试寻找旧版本来适配我的pytorch,我尝试了所有适配2.2.0版本pytorch的bitsandbytes,在运行时都会报错。网上提供不少解决方案。除了升级bitsandbytes都试过了,都以失败告终hhhh。
运行结束后,就可以看到结果了。在我设置的参数中num_trials_per_task=5也就是说在libero中的spatial任务中,一共有10个任务,每个任务分别执行5次。最后也就会有50个实验结果。
根据测试日志给出的结果发现- # episodes completed so far: 50
- # successes: 42 (84.0%)
- Current task success rate: 1.0
- Current total success rate: 0.84
复制代码 50次任务中,成功了42次,失败了8次。这与论文中的数据相符
并且在rollout目录中可以看到测试结果:
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |