> ## Documentation Index
> Fetch the complete documentation index at: https://avala.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 导出

> 把 LeRobot 数据集导入 Avala，把 Avala 数据集导出为 LeRobot，以及每个机群学习发布版本包含的内容

机群学习发布版本为您的训练栈而构建。本页介绍 LeRobot 导入器、LeRobot 导出器，以及每个发布版本附带的文件。

## 每个发布版本包含的内容

机群学习计划中的每个发布版本都包括：

| 项目 | 内容 |
| - | - |
| 数据集发布版本 | 一个带版本号、权利已清理的 Avala 数据集。训练通道和失败与恢复通道以切片形式交付。 |
| 结果标签 | 每个序列当前的[结果标签](/docs/zh/fleet-learning/sequence-metadata.md)，可通过 API、SDK、CLI 和 MCP 服务器读取。 |
| LeRobot 导出 | LeRobot v3 格式的发布版本，结果标签位于 `meta/avala_sequence_outcomes.jsonl`。 |
| 覆盖报告 | 本次交付的[覆盖报告](/docs/zh/fleet-learning/coverage.md)。 |
| 能力报告 | 最新的[能力报告](/docs/zh/fleet-learning/evaluation.md)，在进行过评估时提供。 |

Avala 在计划中准备 LeRobot 导出。训练由您运行。

## 导入 LeRobot 数据集

LeRobot 导入器从 Hugging Face Hub 或本地目录读取 LeRobot 数据集。它会创建一个 Avala MCAP 数据集。

* 每个 LeRobot episode 成为一个 `.mcap` 文件，Avala 将其作为一个数据项接入。一个 LeRobot episode 对应一个 Avala 序列。
* 摄像头流写为 `foxglove.CompressedImage`，因此可以在 Mission Control 查看器中渲染。
* 本体感知（`observation.state`、`action` 以及其他一维数值特征）写为 `google.protobuf.Struct` 消息。数值被完整保留，可作为原始消息读取。
* 其他每帧列（奖励、`episode_uuid`、`failure_type` 及其他文本列）也各自保留在独立的 topic 中。`control_source` 列（`policy`、`teleop`、`intervention`、`hold`）写入 `/lerobot/control_source`。

该导入器面向 LeRobot v2.1 和 v3 数据集 API。它需要 `lerobot` 扩展，该扩展要求 Python 3.12 或更高版本。对于 LeRobot v3 数据集，不依赖 torch 的读取器也可在 Python 3.9 及更高版本上使用：`pip install "avala[lerobot-core-video]"`。

```bash theme={null}
pip install "avala[lerobot]"
```

```bash CLI theme={null}
avala import lerobot \
  --repo-id your-hf-user/your-dataset \
  --name "Teleop rollouts" \
  --slug teleop-rollouts \
  --episodes 0,1,2 \
  --wait
```

```python Python theme={null}
from avala import Client
from avala.importers import import_lerobot

dataset = import_lerobot(
    Client(),
    repo_id="your-hf-user/your-dataset",
    name="Teleop rollouts",
    slug="teleop-rollouts",
    episodes=[0, 1, 2],
    wait=True,
)
print(dataset.uid, dataset.item_count)
```

| CLI 选项 | 用途 |
| - | - |
| `--repo-id` | Hugging Face Hub 数据集 ID。 |
| `--root` | 本地 LeRobot 数据集目录，可替代 `--repo-id` 或与其一起使用。 |
| `--name`, `--slug` | 新 Avala 数据集的名称和 slug（必填）。 |
| `--episodes` | 要导入的 LeRobot episode 索引，以逗号分隔。默认：全部。 |
| `--camera-keys` | 摄像头特征键，以逗号分隔。默认：所有摄像头。 |
| `--fps` | 覆盖数据集的帧率。 |
| `--owner` | 数据集所有者的用户名或邮箱。 |
| `--workers` | 并行上传线程数。默认：8。 |
| `--wait` / `--no-wait` | 等待索引完成。默认：不等待。 |

传入 `repo_id`、`root` 或两者。在 Python 中，`state_keys` 选择要保留的数值特征。默认为 `observation.state` 和 `action`。

## 把 Avala 数据集导出为 LeRobot

您也可以自行把任何 Avala 序列数据集转换为 LeRobot v3。一个 Avala 序列成为一个 LeRobot episode。

```bash theme={null}
avala lerobot export your-org/your-dataset \
  --repo-id your-hf-user/your-dataset \
  --output ./lerobot-out \
  --fps 30 \
  --task "load the dishwasher" \
  --include-outcomes
```

`--include-outcomes` 把每个序列当前的结果标签写入 `meta/avala_sequence_outcomes.jsonl`，每个 LeRobot episode 一行。在 Python 中，传入 `include_outcomes=True`。文件格式见[序列元数据模式](/docs/zh/fleet-learning/sequence-metadata.md)中的“通过 LeRobot 导出结果标签”一节。

当源帧带有本体感知数据时，添加 `--state-key` 和 `--action-key`。完整的选项列表和 Python API 见 [Avala + LeRobot](/docs/resources/frameworks/lerobot.md)。

## 在训练中使用结果标签

结果标签随 LeRobot 导出一起提供。常见用法：

* 按 `outcome`、`progress`、`quality` 和 `speed` 为序列加权或挑选序列。
* 用子任务的 `label` 字符串和手部动作的 `action` 字符串训练语言条件策略。
* 构建您自己的验证集时，按[泄漏组](/docs/zh/fleet-learning/sequence-metadata.md)划分。
* 合并来自其他来源的数据时，把 `evaluation_membership` 为 `held_out_eval` 的序列排除在训练之外。发布版本从不包含它们。

技术有效性不在导出中。Avala 在序列进入发布版本之前对其进行审核和验收。参见[序列元数据模式](/docs/zh/fleet-learning/sequence-metadata.md)中的“技术有效性”一节。
