# Octo微调LIBERO成功率0%及输出动作过小导致机器人不动

> 原文链接：https://robotics.hellobike.com/pitfalls/2025-12-07-openvla-215
> 频道：pitfalls | 更新日期：2025-12-07 | 标签：auto, github-issue, openvla
> 核心摘要：针对Octo微调LIBERO评估成功率为0及动作输出过微问题，建议改用octo-small模型、禁用手腕图像并修正数据标准化函数。

# Octo微调LIBERO成功率0%及输出动作过小导致机器人不动

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[The details of fine-tuning Octo using LIBERO](https://github.com/openvla/openvla/issues/215)（GitHub openvla/openvla #215）

**状态**：有绕过办法

## 问题

在LIBERO数据集上微调Octo模型时，评估成功率始终为0%。即使有输出，动作值也极小（如[-0.000, 0.002...]），导致仿真环境中机器人几乎无法移动。该现象在使用octo-base模型时尤为明显，且默认配置下未能复现论文指标。

## 环境

Octo (octo-base/octo-small), LIBERO RLDS数据集, finetune_config.py, TensorFlow

## 解决办法

1. 将基础模型从 `octo-base` 切换为 `octo-small`，后者在该任务上表现更稳定。
2. 修改 `FINETUNING_KWARGS` 配置，将 `image_obs_keys` 中的 `wrist` 设为 `None`，仅使用第三人称视角图像进行训练。
3. 设置 `action_normalization_mask` 为 `[True, True, True, True, True, True, False]`，避免对夹爪动作进行归一化。
4. 自定义 `libero_dataset_transform` 函数：将夹爪动作裁剪至0-1区间并执行 `invert_gripper_actions` 翻转（+1开/0关）；将本体状态前6维与后2维拼接作为 `proprio` 观测输入。
5. 确保数据标准化逻辑与OpenVLA处理流程保持一致，通过 `ModuleSpec.create` 正确加载自定义变换函数。

讨论原作者：@buduz 等，版权归原作者所有。
:::

## 原始参考来源 (Sources)

- [GitHub openvla/openvla #215：The details of fine-tuning Octo using LIBERO](https://github.com/openvla/openvla/issues/215)