测试 pi0.5 微调模型指南

目录

    • [1. 检查训练状态和模型检查点](#1. 检查训练状态和模型检查点)
    • [2. 测试方式](#2. 测试方式)
    • [3. 查看评估结果](#3. 查看评估结果)
      • [如果使用 lerobot-eval(仿真环境)](#如果使用 lerobot-eval(仿真环境))
      • [如果使用 lerobot-record(真实机器人)](#如果使用 lerobot-record(真实机器人))
    • [4. 常见问题](#4. 常见问题)
      • [Q: 如何找到最新的检查点?](#Q: 如何找到最新的检查点?)
      • [Q: 如何确定环境类型?](#Q: 如何确定环境类型?)
      • [Q: 模型路径格式](#Q: 模型路径格式)
      • [Q: 如何指定特定的检查点?](#Q: 如何指定特定的检查点?)
    • [5. 推荐流程](#5. 推荐流程)

1. 检查训练状态和模型检查点

首先,检查训练是否完成以及模型保存位置:

bash 复制代码
# 检查训练日志
tail -f /home/fyw/Software/1.out

# 查找保存的检查点(每 10000 步保存一次)
find /home/fyw/Software/output_lerobot_train/pi0dot5/a -name "pretrained_model" -type d

训练完成后,检查点会保存在:

复制代码
output_lerobot_train/pi0dot5/a/checkpoints/010000/pretrained_model/
output_lerobot_train/pi0dot5/a/checkpoints/020000/pretrained_model/
...
output_lerobot_train/pi0dot5/a/checkpoints/050000/pretrained_model/  # 最终检查点
output_lerobot_train/pi0dot5/a/checkpoints/last/pretrained_model/    # 最新检查点

2. 测试方式

方式一:在仿真环境中测试(推荐用于快速验证)

如果你的数据集有对应的仿真环境,可以使用 lerobot-eval 命令:

bash 复制代码
lerobot-eval \
    --policy.path=/home/fyw/Software/output_lerobot_train/pi0dot5/a/checkpoints/last/pretrained_model \
    --env.type=<环境类型> \
    --env.task=<任务名称> \
    --eval.batch_size=1 \
    --eval.n_episodes=10 \
    --policy.device=cuda \
    --output_dir=outputs/eval/pi05_orange_test \
    --job_name=pi05_orange_eval

注意:由于你的数据集来自真实机器人(so101_follower),如果没有对应的仿真环境,需要:

  1. 创建一个自定义仿真环境(参考 docs/custom_environment_guide.md
  2. 或者使用方式二在真实机器人上测试

方式二:在真实机器人上测试(推荐用于最终验证)

使用 lerobot-record 命令配合策略路径,在真实机器人上运行策略并记录评估数据:

bash 复制代码
lerobot-record \
    --robot.type=so101_follower \
    --robot.port=/dev/ttyUSB0 \  # 根据你的实际端口修改
    --robot.id=my_so101_follower \
    --control.policy.path=/home/fyw/Software/output_lerobot_train/pi0dot5/a/checkpoints/last/pretrained_model \
    --control.policy.type=pi05 \
    --control.policy.device=cuda \
    --dataset.repo_id=TommyZihao/eval_orange_pi05 \
    --dataset.root=/home/fyw/Dataset/huggingface/lerobot/TommyZihao/eval_orange_pi05 \
    --fps=30 \
    --episode.length=300 \
    --job_name=eval_orange_pi05

参数说明

  • --control.policy.path: 训练好的模型检查点路径
  • --control.policy.type: 策略类型(pi05)
  • --control.policy.device: 推理设备(cuda/cpu)
  • --dataset.repo_id: 评估数据集仓库 ID(用于保存评估数据)
  • --robot.port: 机器人串口端口(根据实际情况修改)

方式三:使用 Python 脚本测试(更灵活)

创建一个 Python 脚本来加载模型并在真实机器人上测试:

python 复制代码
#!/usr/bin/env python
"""测试 pi0.5 模型在真实机器人上的表现"""

from lerobot.robots.so_follower import SO101Follower, SO101FollowerConfig
from lerobot.policies.factory import make_policy
from lerobot.policies.factory import make_pre_post_processors
from lerobot.cameras.opencv.configuration_opencv import OpenCVCameraConfig

# 1. 配置机器人
camera_config = {
    "front": OpenCVCameraConfig(
        index_or_path=0,  # 根据你的摄像头修改
        width=1920,
        height=1080,
        fps=30
    )
}

robot_config = SO101FollowerConfig(
    port="/dev/ttyUSB0",  # 根据你的实际端口修改
    id="test_so101",
    cameras=camera_config,
    use_degrees=True,
)

# 2. 加载策略
policy_path = "/home/fyw/Software/output_lerobot_train/pi0dot5/a/checkpoints/last/pretrained_model"
policy = make_policy(
    cfg=None,  # 会自动从检查点加载配置
    pretrained_path=policy_path,
)

# 3. 创建预处理器和后处理器
preprocessor, postprocessor = make_pre_post_processors(
    policy_cfg=policy.config,
    pretrained_path=policy_path,
)

# 4. 连接机器人并测试
robot = SO101Follower(robot_config)
robot.connect()

if not robot.is_connected:
    raise ValueError("机器人未连接!")

print("开始测试...")
policy.eval()

# 运行几个测试回合
for episode in range(5):
    print(f"Episode {episode + 1}/5")
    
    # 重置环境
    obs = robot.get_observation()
    
    # 运行一个回合
    for step in range(300):  # 假设每个回合最多 300 步
        # 预处理观察
        processed_obs = preprocessor(obs)
        
        # 获取动作
        with torch.no_grad():
            action = policy.select_action(processed_obs)
        
        # 后处理动作
        processed_action = postprocessor(action)
        
        # 执行动作
        robot.set_action(processed_action)
        
        # 获取新观察
        obs = robot.get_observation()
        
        # 检查是否完成(根据你的任务定义)
        # if done:
        #     break
    
    print(f"Episode {episode + 1} 完成")

robot.disconnect()
print("测试完成!")

3. 查看评估结果

如果使用 lerobot-eval(仿真环境)

评估结果会保存在:

复制代码
outputs/eval/pi05_orange_test/eval_info.json
outputs/eval/pi05_orange_test/videos/  # 评估视频

查看结果:

bash 复制代码
cat outputs/eval/pi05_orange_test/eval_info.json

如果使用 lerobot-record(真实机器人)

评估数据会保存在指定的数据集路径,可以:

  1. 查看记录的视频和数据
  2. 分析成功率、奖励等指标
  3. 上传到 Hugging Face Hub 进行分享

4. 常见问题

Q: 如何找到最新的检查点?

bash 复制代码
# 查找最新的检查点
ls -lt /home/fyw/Software/output_lerobot_train/pi0dot5/a/checkpoints/ | head -10

# 或者直接使用 last 链接
ls -la /home/fyw/Software/output_lerobot_train/pi0dot5/a/checkpoints/last/pretrained_model/

Q: 如何确定环境类型?

由于你的数据集来自真实机器人,如果没有对应的仿真环境,建议:

  1. 使用真实机器人测试(方式二或方式三)
  2. 或者创建一个自定义仿真环境

Q: 模型路径格式

检查点路径应该指向包含以下文件的目录:

  • config.json
  • model.safetensorspytorch_model.bin
  • processor_config.json(如果有)

Q: 如何指定特定的检查点?

bash 复制代码
# 使用特定步数的检查点
--policy.path=/home/fyw/Software/output_lerobot_train/pi0dot5/a/checkpoints/050000/pretrained_model

# 或使用 last(最新)
--policy.path=/home/fyw/Software/output_lerobot_train/pi0dot5/a/checkpoints/last/pretrained_model

5. 推荐流程

  1. 等待训练完成(目标 50000 步)
  2. 使用方式二或方式三在真实机器人上测试(最接近实际应用场景)
  3. 记录多个测试回合,分析成功率
  4. 如果效果不理想 ,可以:
    • 调整超参数重新训练
    • 增加训练数据
    • 调整 LoRA 参数(r, lora_alpha)
相关推荐
YMWM_2 天前
论文阅读“SimVLA: A Simple VLA Baseline for Robotic Manipulation“
论文阅读·vla
一颗小树x3 天前
《VLA 系列》DM0 | 流匹配 | 具身空间推理增强 | 空间思维链
vla·流匹配·dm0·具身空间推理·空间思维链
BackCatK Chen4 天前
2026智驾决赛圈:洗牌、技术决战与3大生死门槛
算法·华为·gpu算力·vla·世界模型
一颗小树x7 天前
《VLA 系列》Dexbotic | 一站式 | 具身智能 | VLA 开发工具箱
具身智能·vla·一站式·dexbotic·vla 开发工具箱
YMWM_10 天前
论文阅读“DM0: An Embodied-Native Vision-Language-Action Model towards Physical AI“
论文阅读·人工智能·vla
一颗小树x10 天前
《VLA 系列》π0 与 π0.5 | 强化学习 训练 | VLA
强化学习·训练·vla·π0·π0.5
YMWM_12 天前
论文阅读“OpenVLA: An Open-Source Vision-Language-Action Model“
论文阅读·vla
BatmanWayne12 天前
swift微调记录
微调·swift
一颗小树x14 天前
《VLA 系列》π0.5 | 流匹配 | 分层推理 | VLA
vla·流匹配·π0.5·分层推理
yyoc9715 天前
Mac基于LLaMA Factory微调模型导入Ollama踩坑记录
大模型·微调·llama·ollama