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

# 数据集

> 有版本的数据集资产、文件清单，以及数据质量报告。

<Frame caption="数据集版本，含文件清单与质量指标。">
  <img src="https://mintcdn.com/starforge/uvmvPkp_ZhvHy6tN/images/console/data.png?fit=max&auto=format&n=uvmvPkp_ZhvHy6tN&q=85&s=4b600d41d08447236188a323fdbc05f6" alt="TunePlane 数据集页" width="2160" height="1350" data-path="images/console/data.png" />
</Frame>

两个标签页，在 `/data`，因为两者装的都是作业会读的材料，区别只在于其中多少能再出来。

| 标签页                         | 装什么                                  | 版本            |
| --------------------------- | ------------------------------------ | ------------- |
| **Datasets**                | 训练材料，引用形式 `<owner>/<name>[@version]` | 不可变的版本        |
| **Volumes**（`?tab=volumes`） | 作业只读挂载的受管目录                          | 没有。当前内容就是它的内容 |

旧的 `/datasets` 和 `/volumes` 链接都落到这里。

## 你会看到什么

| 区域       | 显示什么                       |
| -------- | -------------------------- |
| **版本**   | 每个不可变版本及其校验和               |
| **文件清单** | 这个版本里有什么，以及每个文件的大小         |
| **预览**   | 控制台能渲染的格式的样本记录——且仅在策略允许时   |
| **数据质量** | 推送时对全量数据计算                 |
| **使用情况** | 哪些作业引用过它，这是判断某个版本能否安全删除的依据 |

## 质量报告

在推送时算一次，覆盖全量数据——只有非常大的数据集才采样。
它统计的是机器能统计的东西，不假装能判断内容。

| 指标               | 为什么有它                                      |
| ---------------- | ------------------------------------------ |
| **记录数**          | 确认你以为自己上传的那个数                              |
| **重复**           | 近似重复和完全字节相同分开统计。重复率高意味着模型会对重复样本过拟合         |
| **空记录**          | 没有可用内容的记录                                  |
| **长度 p50 / p95** | 用 p95 而不是均值来定 `max_seq_len`——按均值会截掉五分之一的数据 |
| **字段漂移**         | 字段集合与多数派不同的记录，以及它们缺了哪些字段                   |

<Tip>
  字段漂移是最能抓到真 bug 的那一项。几百条记录缺了你的 loss 要读的字段，作业不会失败；
  它们会安静地在空值上训练，然后把曲线拖下去。
</Tip>

## 受保护的数据集

一个数据集可以被治理成「可以用于训练，但读不到内容」。这样的数据集在控制台上只显示
身份、版本、schema、血缘和授权状态——没有预览、没有样本记录、没有下载。

这是在服务端强制的，不是把按钮藏起来。日志、验证样本和产物受同一套策略约束，
所以它们不会变成另一条导出通道。

## 从控制台上传

数据集列表页的**上传数据集**用来新建一个数据集和它的第一个版本；数据集详情页的**上传新版本**
是给已有数据集加一个版本。两者问的是 `tp dataset push` 一样的三个问题——哪个数据集、哪个版本、
哪些文件——文件也一样是用预签名 URL 直传对象存储。`index.json` 是「这个版本已完整」的标记，
也因此让版本不可变，所以它只在全部文件都落盘之后才写：中途失败留下的是一个仍然空着的版本号，
而不是一个自称已完成的版本。

文件里如果有 `README.md`，会一并作为数据集说明发布，和 CLI 推送的行为一致。

质量报告和污染指纹不在浏览器里算——一个页面不会为了切 n-gram 去读几个 GB。版本出现之后，
worker 会在扫描它的同一趟里从对象存储把它们算出来，写在版本旁边，位置和 CLI 推送时写的一样。
超过单版本的读取预算时，报告会把自己标成**抽样**，而不是拿半个文件算出来的重复率当全量。

<Note>
  控制台上传拒绝超过 512 MB 的单个文件：浏览器要算校验和就得把整个文件读进内存，而这个校验和
  正是作业侧用来验证下载完整性的东西。`tp dataset push` 是流式的，没有这个限制——它也是在推送
  时就把两份报告按全量算出来，而不是事后按预算算。
</Note>

## 你可以做什么

* 在配置里或用 `--train-dataset` **引用某个版本**。
* 在这一页，或用 `tp dataset push` **推送新版本**。
* 推送前用 `tp dataset check` 和 `tp dataset quality` **先检查质量**。

完整流程见[数据集](/zh-Hans/guides/datasets)。

## Volumes 标签页

一个 [Volume](/zh-Hans/guides/volumes) 是作业通过只读挂载读取的命名目录。它没有版本：文件原地
增删，引用指向这个 volume 本身而不是它的某个快照。

| 区域            | 显示什么                                              |
| ------------- | ------------------------------------------------- |
| **volume 列表** | 名字、所有者、文件数、大小，以及下载和预览是否开着                         |
| **结构**        | 文件名和大小。对任何能引用它的人始终可见                              |
| **预览**        | 一次内联一个文件，**只有** `allow_preview` 开着时。每次读取都被审计      |
| **权限**        | 所有者的两个开关，`allow_download` 和 `allow_preview`，都默认关闭 |

那里从来没有的东西：批量下载、任何顺手的便利接口，以及所有者没打开时任何设置下的预览。列出结构
和读取内容不是一回事，而这个切分是有意的 —— 一个作业挂上一个 volume 之后已经能读它的每个字，所以
把文件名藏起来什么都保护不了。

| 操作              | 效果                                   |
| --------------- | ------------------------------------ |
| **创建一个 volume** | 或 `tp volume create`                 |
| **上传文件**        | 或 `tp volume push`                   |
| **打开下载**        | 材料按设计离开平台的唯一通路。会被记录                  |
| **打开预览**        | 每读一个文件留一条审计                          |
| **引用它**         | 配置里的 `data.volumes`，或提交时的 `--volume` |

一个 volume 的文件永远没有版本，所以要从它产出可复现的东西，跑一次发布数据集版本的
[Processing Run](/zh-Hans/guides/volumes)。
