# MyTinyVLA **Repository Path**: hanssjtuer/my-tiny-vla ## Basic Information - **Project Name**: MyTinyVLA - **Description**: 本项目是基于TinyVLA轻量级视觉语言动作模型的全流程实操方案,聚焦低资源场景下模型的本地化部署、自定义适配及功能拓展,提供可复现的部署、训练与集成教程,适用于机器人控制、视觉引导动作生成等场景的科研与落地验证。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: https://gitee.com/hanssjtuer/my-tiny-vla.git - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 1 - **Created**: 2025-12-26 - **Last Updated**: 2026-03-13 ## Categories & Tags **Categories**: robot **Tags**: None ## README # TinyVLA 环境配置与模型训练、测试全流程 ## 前置依赖说明 确保本地已安装:Git、Conda(Anaconda/Miniconda)、Huggingface-cli(可通过 `pip install huggingface-hub` 安装),且具备Python 3.10运行环境。 ## 1. 源码下载与虚拟环境配置 ### 1.1 下载TinyVLA源码并进入目录 ```bash git clone https://github.com/liyaxuanliyaxuan/TinyVLA cd TinyVLA ``` ### 1.2 创建并激活Conda虚拟环境 ```bash # 创建名为MyTinyVLA的虚拟环境(Python 3.10) conda create -n MyTinyVLA python=3.10 -y # 激活虚拟环境 conda activate MyTinyVLA ``` ### 1.3 安装依赖库与子模块 ```bash # 安装基础依赖 pip install setuptools_scm conda install -c conda-forge cmake==3.24.3 -y pip install -r requirements.txt # 安装policy_heads子模块 cd policy_heads pip install -e . cd .. # 安装llava-pythia子模块 cd llava-pythia pip install -e . cd .. ``` ## 2. 预训练模型下载 ### 2.1 创建模型目录并配置镜像 ```bash # 创建模型存放目录 mkdir my_models cd my_models # 设置HuggingFace镜像加速下载 export HF_ENDPOINT=https://hf-mirror.com ``` ### 2.2 下载Llava-Pythia系列模型 ```bash # 推荐下载400M模型(核心) huggingface-cli download lesjie/Llava-Pythia-400M --local-dir ./Llava-Pythia-400M # 可选下载其他尺寸模型 huggingface-cli download lesjie/Llava-Pythia-700M --local-dir ./Llava-Pythia-700M huggingface-cli download lesjie/Llava-Pythia-1.3B --local-dir ./Llava-Pythia-1.3B # 返回根目录 cd .. ``` ## 3. 数据处理(原始数据转HDF5) ### 3.1 创建数据目录并编写转换脚本 ```bash # 创建数据目录 mkdir my_datas cd my_datas # 新建data2hdf5.py(参考附录,实现原始数据转HDF5) touch data2hdf5.py # 返回根目录 cd .. ``` ### 3.2 运行数据转换脚本 ```bash python3 my_datas/data2hdf5.py ``` ### 3.3 查看HDF5文件结构(获取关键参数) ```bash # 进入数据目录,新建结构查看脚本 cd my_datas touch get_hdf5_structure.py # 运行脚本(输出episode平均长度、状态维度等关键信息) python3 get_hdf5_structure.py # 返回根目录 cd .. ``` ## 4. 配置文件修改 ### 4.1 创建训练输出目录 ```bash mkdir my_llava_pythia_lora ``` ### 4.2 修改任务配置(aloha_scripts/constants.py) 进入目录并修改文件,新增自定义任务配置: ```bash cd aloha_scripts # 编辑constants.py文件,新增以下配置 ``` ```python TASK_CONFIGS = { 'example_task_config': { # 示例配置(保留) 'dataset_dir': [ "/media/rl/HDD/data/data/act/new_view/8_29_tennis", ], 'episode_len': 1000, 'camera_names': ['left', 'right', 'wrist'] }, 'my_fsd': { # 自定义任务配置 'dataset_dir': [ "my_datas/train", # 自定义训练数据路径 ], 'episode_len': 250, # 替换为get_hdf5_structure.py输出的平均值 'camera_names': ['left', 'right', 'wrist'] }, } ``` ```bash cd .. # 返回根目录 ``` ### 4.3 修改训练脚本(scripts/train.sh) 进入目录并修改核心配置: ```bash cd scripts # 编辑train.sh文件,修改以下关键配置 ``` ```bash # 核心配置修改项 OUTPUT='my_llava_pythia_lora' --deepspeed llava-pythia/scripts/zero2.json --task_name "my_fsd" --model_name_or_path "my_models/Llava-Pythia-400M" --num_gpus=1 --max_steps 1000 --per_device_train_batch_size 4 --gradient_accumulation_steps 4 --save_steps 100 ``` ```bash cd .. # 返回根目录 ``` ### 4.4 修改训练参数(train_tinyvla.py) 修改`ActionArguments`类的配置(替换关键维度参数): ```python from dataclasses import dataclass, field @dataclass class ActionArguments: action_head_type: str = field(default="droid_diffusion") # 动作头类型 action_dim: int = field(default=3) state_dim: int = field(default=12) # 替换为get_hdf5_structure.py输出的状态维度 chunk_size: int = field(default=16) # 与mobile aloha保持一致 use_state: bool = field(default=True) window_size: int = field(default=6) ``` ## 5. 模型训练 运行训练脚本启动TinyVLA模型训练: ```bash scripts/train.sh ``` ## 6. 模型测试 ### 6.1 编写测试脚本 ```bash # 新建test_tinyvla.py(参考附录,使用my_datas/test的HDF5文件作为输入) touch test_tinyvla.py ``` ### 6.2 修改扩散模型配置(测试适配) ```bash cd policy_heads/models # 编辑droid_unet_diffusion.py,修改diffusion_step_encoder部分 ``` ```python diffusion_step_encoder = nn.Sequential( # SinusoidalPosEmb(dsed, torch.bfloat16), # 注释训练模式 SinusoidalPosEmb(dsed, torch.float32), # 启用测试模式 nn.Linear(dsed, dsed * 4), nn.Mish(), nn.Linear(dsed * 4, dsed), ) ``` ```bash cd ../../.. # 返回根目录 ``` ### 6.3 运行测试脚本 ```bash python3 test_tinyvla.py ``` ## 7. XGBoost模型训练与集成测试 ### 7.1 创建XGBoost相关目录与脚本 ```bash mkdir my_ml cd my_ml # 新建CSV合并脚本(合并原始状态数据) touch merge_csvs.py # 新建XGBoost训练脚本(速度转档位) touch my_xgboost.py cd .. # 返回根目录 ``` ### 7.2 运行数据合并与模型训练 ```bash # 合并CSV数据 python3 my_ml/merge_csvs.py # 安装XGBoost依赖 pip install xgboost # 训练XGBoost模型 python3 my_ml/my_xgboost.py ``` ### 7.3 编写并运行集成测试脚本 ```bash # 新建集成测试脚本(TinyVLA输出+XGBoost档位预测) touch test_tinyvla_xgboost.py # 运行集成测试 python3 test_tinyvla_xgboost.py ``` --- ### 7.4 封装推理API,提供模型服务 ```bash # 新建API脚本(参考附录,实现模型推理服务) touch my_api.py # 运行API服务 python3 my_api.py # 测试API服务(参考附录,发送POST请求测试) python3 use_api.py # 测试API服务(参考附录,发送POST请求测试) python3 use_api_scl.py ``` ### 7.5 封装UI界面,提供模型可视化服务 ```bash # 新建UI脚本(参考附录,实现模型可视化服务) touch my_ui_fake.py # 运行UI服务 python3 my_agent/my_ui_fake.py ``` UI主界面 ### 总结 1. 核心流程分为**环境配置→模型下载→数据处理→配置修改→模型训练→测试→XGBoost集成**七大阶段,需按顺序执行。 2. 关键参数(episode_len、state_dim)需从`get_hdf5_structure.py`的输出结果替换,确保配置匹配数据特征。 3. 测试阶段需将扩散模型的精度从`torch.bfloat16`改为`torch.float32`,否则可能出现精度不兼容问题。