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

# 数据集

> 上传 JSONL、CSV 或 Parquet 数据集，并验证 evaluation runs 和 training runs 所需的必需列

Datasets 提供驱动 evaluation runs 和 training runs 的 prompts，以及可选的参考答案。每一行都会成为 rollout 和 Grader 处理的一个样本。

## Dataset 格式

Osmosis 接受 **JSONL**、**CSV** 或 **Parquet** 格式的数据集，单个文件最大 **5 GB**。

每个数据集至少需要 **4 行**。

### 必需列

| Column          | Description              |
| --------------- | ------------------------ |
| `system_prompt` | 此样本提供给模型的 system prompt。 |
| `user_prompt`   | 模型需要回答的 user prompt 或问题。 |

### 可选列

| Column         | Description                                                                                                      |
| -------------- | ---------------------------------------------------------------------------------------------------------------- |
| `ground_truth` | 期望的正确答案或参考输出。平台 UI 也接受 `label` 作为该列的别名。当存在该列时，其值会以 `context.label` 传给您的 Grader。                                  |
| `metadata`     | 按行的 JSON 对象，会以 `ctx.metadata` 暴露给您的 AgentWorkflow 和 Grader。用于附加模型或 grader 需要的上下文（例如标签、标识符或预期工具调用），而不需要写进 prompt。 |

<Note>
  当您的 Grader 需要参考答案来评分时，请包含 `ground_truth`（或 `label`）。如果 reward function 仅基于模型行为评分，则可以省略此列。只包含 `metadata`（没有 `ground_truth`）的行仍会进入 Grader。
</Note>

#### Metadata 校验规则

`osmosis dataset upload` 与 `osmosis dataset validate` 会对 CSV、JSONL、Parquet 的 `metadata` 列执行以下校验：

* 每个单元必须是 JSON 对象（字典）。CSV 单元和 JSONL 字符串会被解析为 JSON；Parquet 接受 struct 列、null 列或 JSON 对象字符串列。
* 嵌套的空对象（顶层对象内出现的 `{}`）会被拒绝。单行的顶层 `{}` 允许，但抽样行不能全部为空对象。
* 同一 key 在不同行的值类型必须一致（例如 `metadata.tag` 不能在一行为字符串、另一行为数字）。
* 整数值必须在 64 位有符号整数范围内。
* 空字符串和缺失值视为缺省，会跳过校验。

### JSONL 示例

```jsonl theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/cli.json"]}}
{"system_prompt": "You are a helpful math tutor.", "user_prompt": "What is 15 * 23?", "ground_truth": "345"}
{"system_prompt": "You are a helpful math tutor.", "user_prompt": "Simplify 3/9.", "ground_truth": "1/3"}
```

## 上传 Dataset

```bash theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/cli.json"]}}
osmosis dataset upload data/train.jsonl
```

上传后的数据集名称来自文件 stem（本例中是 `train`）。上传后，数据集会进入处理 pipeline。您可以查看状态：

```cli theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/cli.json"]}}
osmosis dataset info <dataset-name>
```

| Status         | Description                             |
| -------------- | --------------------------------------- |
| **uploading**  | 文件上传已开始但尚未完成。                           |
| **pending**    | 已收到上传，等待处理。                             |
| **processing** | 正在验证并索引数据集。                             |
| **uploaded**   | 数据集可用于 evaluation runs 和 training runs。 |
| **error**      | 处理失败，请检查列名和文件格式。                        |
| **cancelled**  | 上传在处理完成前被取消。                            |

## 本地验证

上传前先在本地验证数据集，尽早发现格式问题：

```bash theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/cli.json"]}}
osmosis dataset validate data/train.jsonl
```

这会检查必需列、文件格式和基础 JSONL/CSV/Parquet 结构，不会上传到平台。

## 预览 Dataset

预览已上传数据集的前几行：

```bash theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/cli.json"]}}
osmosis dataset preview my-dataset --rows 5
```

## 管理 Datasets

```bash theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/cli.json"]}}
# 列出当前 workspace 中的所有 datasets
osmosis dataset list

# 下载 dataset 文件
osmosis dataset download my-dataset
```

## 下一步

<CardGroup cols={2}>
  <Card title="Training Runs" icon="play" href="/zh/platform/training-runs">
    在 training configs 中使用已验证的数据集。
  </Card>

  <Card title="模型" icon="cube" href="/zh/platform/models">
    选择 base models，并部署已训练 LoRA models。
  </Card>
</CardGroup>
