安装
Quilt 有两个用户可见的组件:
- 一个 Python 客户端
- 一个 Web 目录
Python 客户端
需要 Python 3.7 或更高版本。
$ pip install 'quilt3[pyarrow]'
Mental Model
Quilt 数据包的思维模型
Quilt 将数据集表示为数据包。一个数据包是一个不可变的相关文件集合,具有形式为 AUTHOR/DESCRIPTION
的句柄,一个用于唯一标识包内容的密码学顶级哈希(或哈希链),以及一个后备清单。
清单被序列化为一个包含条目的文件。清单条目是以下形式的元组:
(LOGICAL_KEY, PHYSICAL_KEYS, HASH, METADATA)
- LOGICAL_KEY逻辑键是用户可见的友好名称,比如 “README.md”。
- PHYSICAL_KEYS物理键是指磁盘上的字节或S3中的字节的完全限定路径。
- Hash哈希是物理键内容的摘要,通常是 SHA-256。
- METADATA元数据是一个字典,可以包含用户定义的元数据键,如边界框、标签或溯源信息(例如,
{"algorithm_version": "4.4.1"}
表示给定文件的创建方式)。
数据包清单存储在注册表中。Quilt 支持本地磁盘和 Amazon S3 存储桶作为注册表。**注册表既可以存储清单,也可以存储主要数据。**选择 S3 是因为它被广泛采用,具有一流的版本控制支持,以及成本/性能配置。Quilt 的路线图中包括将来支持更多的存储格式(如 GCP、Azure、NAS 等)的计划。
下面是 COCO 机器学习数据集的数据包清单的示例:
{
"logical_key": "annotations/captions_train2017.json",
"physical_keys":
["s3://quilt-ml-data/data/raw/annotations/captions_train2017.json?versionId=UtzkAN8FP4irtroeN9bfYP1yKzX7ko3G"],
"size": 91865115,
"hash": {
"type": "SHA256",
"value":
"4b62086319480e0739ef390d04084515defb9c213ff13605a036061e33314317"},
"meta": {}
}
存储桶就是分支
在 Quilt 中,S3 存储桶类似于 git 中的分支。每个存储桶都是一个独立的注册表,用于存储一个或多个数据包。随着数据和模式的改进,您可以将一个数据包推广到新的存储桶,表示其数据质量提高。
对于数据生命周期,我们通常建议至少使用三个存储桶:
- 原始(Raw)
- 阶段(Stage)
- 生产(Production)
架构
Quilt 数据包统一了数据和元数据
Quilt 数据包是可复现、可发现和可信任的数据集,存储在 Blob 存储中。
数据包清单包括元数据和主要数据的物理键。
所有数据包的元数据和数据都存储在您的 S3 存储桶中。一部分数据包级别的元数据和 S3 对象内容被发送到由 Quilt 管理的 ElasticSearch 集群中。所有 Quilt 数据包清单都可以通过 AWS Athena 使用 SQL 进行访问。