☰
Minari数据集标准全解析:Dataset ID、元数据与目录结构一文看懂
2026/10/10 15:53:16 网站建设 项目流程

【免费下载链接】Minari

A standard format for offline reinforcement learning datasets, with popular reference datasets and related utilities

项目地址:https://gitcode.com/gh_mirrors/mi/Minari
点击查看免费下载

Minari是一个面向离线强化学习(Offline RL)的数据集标准与托管框架,它为数据集定义了统一的 ID 命名规则、元数据格式和目录结构。本文带你一文看懂 Minari 数据集标准的三大核心:Dataset ID 命名语法、三层元数据体系与本地目录布局,帮助你在几分钟内快速定位、下载并读懂任意一个 Minari 数据集。

上图是 Minari 官方教程所用数据集D4RL/pen/human-v2中一个观测帧的真实数据(教程源码)——这正是 Minari 标准所规范的观测(observations)内容。

Dataset ID 命名语法:一个 ID 看懂数据集身份

Minari 数据集的目录以Dataset ID命名,它必须符合如下语法(定义于 docs/content/dataset_standards.md):

(namespace/)(env_name/)dataset_name(-v(version))

四个组成部分的含义:

组成部分是否可选含义示例
namespace✅ 可选命名空间,用于把一组数据集归到共同子目录,可任意嵌套D4RL
env_name✅ 可选数据集来源的环境名,官方强烈建议使用door、pen
dataset_name❌ 必填描述数据集内容,如数据采集方式human(人类演示)
version✅ 可选整数版本号,从 0 开始v0、v2

两个直观例子 🌰:

  • 无命名空间:Adroit 开门环境的初始版本人类数据 →door/human-v0
  • 带命名空间:同样的数据放到D4RL命名空间下 →D4RL/door/human-v0

ID 的合法性由正则校验,并可通过一对函数互转:

  • 解析:parse_dataset_id(),将 ID 拆分为(namespace, dataset_name, version)三元组
  • 生成:gen_dataset_id(),由属性反向拼出 ID 字符串

💡长尾提示:如果 ID 书写不规范(比如版本号缺失、多写了斜杠),Minari 会抛出Malformed dataset ID错误并附上标准格式提示。

本地目录结构:数据集存放在哪里?

Minari 将所有本地数据集存放在统一的根目录下,默认路径为~/.minari/datasets/,可通过环境变量MINARI_DATASETS_PATH自定义(实现见 minari/storage/datasets_root_dir.py)。

以minari download D4RL/pen/human-v2为例,下载后的目录长这样 📁:

~/.minari/datasets/ └── D4RL/ ├── namespace_metadata.json ← 命名空间元数据(可含多级) └── pen/ └── human-v2/ ← 数据集目录,与 Dataset ID 最后一级同名 ├── namespace_metadata.json └── data/ ← 数据文件目录(必需) ├── metadata.json ← 数据集全局元数据 └── main_data.hdf5 ← 主数据文件(HDF5 或 Arrow 格式)

几个关键规则:

  1. 数据集目录与命名空间目录分离:D4RL和pen是命名空间(可嵌套),只有最后一段human-v2才是真正的数据集目录;
  2. 数据文件统一放在data/子目录,目前支持两种文件格式:HDF5(主文件名main_data.hdf5,见 minari/dataset/_storages/hdf5_storage.py)和Arrow,创建数据集时二选一;
  3. 远程托管数据集与本地使用同一套 ID 体系,minari list remote即可浏览 Farama 官方服务器上的全部数据集。

命名空间的创建、更新与元数据读写 API 位于 minari/namespace.py,API 文档见 docs/api/namespace/namespace.md。

元数据体系:三层描述让数据集"会说话"

Minari 的元数据分三层,全部以 JSON 格式存储、人机均可读:

数据集全局元数据(metadata.json)

创建数据集时可附带全局元数据,默认包含以下属性(完整表格见 docs/content/dataset_standards.md):

属性类型说明
dataset_idstr数据集唯一标识(必填)
total_episodesint总回合数(必填,自动计算)
total_stepsint总步数(必填,自动计算)
action_spacegymnasium.Space动作空间描述
observation_spacegymnasium.Space观测空间描述
env_specstr环境注册的 JSON 字符串
author/author_emailset of str作者与邮箱
algorithm_namestr生成数据所用的专家策略名称
minari_versionstr生成数据集的 Minari 版本
requirementslist of strpip 风格的环境依赖列表
code_permalinkstr生成代码的仓库链接

元数据的自动落盘逻辑可参考 minari/dataset/minari_storage.py。

每个 Episode 的奖励统计元数据

每个回合会自动记录一组奖励统计指标,方便你做轨迹筛选(trajectory filtering):

指标说明
rewards_max/rewards_min回合内奖励的最大 / 最小值
rewards_mean/rewards_std回合奖励的均值 / 标准差
rewards_sum未折扣的总回报(undiscounted return)

命名空间元数据(namespace_metadata.json)

每个命名空间目录下的namespace_metadata.json可存放任意 JSON 可序列化信息(如description),用来描述"这个命名空间下的一整组数据集"。读写实现见 get_namespace_metadata()。

支持哪些观测与动作空间?

Minari 存储格式支持 Gymnasium 生态的全部常用空间,保存时序列化为 JSON:

Space用途
Boxn 维连续空间,可用上下界约束
Discrete离散取值{0, 1, ..., n-1}
MultiDiscrete多个离散空间的笛卡尔积
MultiBinary二值向量空间
Tuple/Dict组合空间(元组 / 字典结构)
Text有界字符串空间

序列化实现在 minari/serialization.py,这也是 Minari 能被 D3RLPy、TorchRL 等框架无缝读取的基础(集成测试见 tests/integrations/)。

实际场景:从 ID 到训练曲线

理解标准后,实际使用只有两步:用 ID 下载 → 用 ID 加载 🎯

minari download D4RL/pen/human-v2
import minari dataset = minari.load_dataset("D4RL/pen/human-v2", download=True) episodes = dataset.sample_episodes(10) # 随机采样 10 个回合

每个采样到的回合是一个EpisodeData数据类,包含id、observations、actions、rewards、terminations、truncations、infos七个字段(结构定义见 minari/dataset/episode_data.py,API 文档见 docs/api/minari_dataset/episode_data.md)。

Minari 官方教程就用这套流程,仅凭 25 条人类演示训练 IQL 算法完成了 Adroit 机器手转笔任务,训练过程如下:

左:训练损失(Loss)曲线;右:累计奖励(Cumulative reward)曲线——25 条演示就能学到可用的策略,可见高质量离线数据集的价值。

一张表总结核心要点

概念核心规则参考位置
Dataset ID(namespace/)(env_name/)dataset_name(-v(version)),name 必填minari_dataset.py
本地根目录~/.minari/datasets/,可用MINARI_DATASETS_PATH覆盖datasets_root_dir.py
数据文件data/目录下,HDF5 或 Arrow 格式hdf5_storage.py
全局元数据仅dataset_id/total_episodes/total_steps必填minari_storage.py
命名空间元数据namespace_metadata.json,任意 JSON 字段namespace.py

掌握以上三部分,你就能看懂、组织并复用任何 Minari 数据集了。完整标准文档请查阅 docs/content/dataset_standards.md,CLI 用法见 docs/content/minari_cli.md 🚀

【免费下载链接】Minari

A standard format for offline reinforcement learning datasets, with popular reference datasets and related utilities

项目地址:https://gitcode.com/gh_mirrors/mi/Minari
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询