Quiltとは
Quiltはデータセットの公開およびバージョン管理のためのツールです。下のイラストのようにPython,Pandas,Jupyter等を使って機械学習の開発・研究をするユーザのために設計されています。
メリットとしては、再現性、透明性、高速アクセスなどが挙げられています。
個人的には、設計がシンプルで、後で説明するインストールや使用法が非常に簡単である点だと思っています。
https://github.com/quiltdata/quilt
・Reproducibility - Imagine source code without versions. Ouch. Why live with un-versioned data? Versioned data makes analysis reproducible by creating unambiguous references to potentially complex data dependencies.
・Collaboration and transparency - Data likes to be shared. Quilt offers a unified catalog for finding and sharing data.
・Auditing - the registry tracks all reads and writes so that admins know when data are accessed or changed.
・Less data prep - the registry abstracts away network, storage, and file format so that users can focus on what they wish to do with the data.
・De-duplication - Data are identified by their SHA-256 hash. Duplicate data are written to disk once, for each user. As a result, large, repeated data fragments consume less disk and network bandwidth.
・Faster analysis - Serialized data loads 5 to 20 times faster than files. Moreover, specialized storage formats like Apache Parquet minimize I/O bottlenecks so that tools like Presto DB
インストール
$ pip install quilt
使い方
下図のように非常にシンプルなフローで管理することができます。
以下の説明ではホントに簡単なところだけ触れています。ただし、これだけれも十分使うことができます。
より詳細な使い方については以下の公式ドキュメントやSlackで
公式ドキュメント
https://slack.quiltdata.com/
1. データセットのアップロード
build ...
# 空のパッケージを作成
quilt.build("USR/PKG")
# データを挿入
from quilt.data.USR import PKG
df = pd.DataFrame(data=[1,2,3])
foo._set(['bar'], df)
push ...
# レジストリにログイン (アカウントの作成が必要です https://quiltdata.com/)
quilt.login()
# レジストリにプッシュ
quilt.push("USR/PKG", is_public=True)
公開したデータセットは、管理ページをブラウジングすることにより以下のように確認することができます。
例: uciml/iris
2. データセットのダウンロード
import quilt
quilt.install("USR/PKG")
from quilt.data.USR import PKG
PKG.bar()
# Output:
# 0
# 0 1
# 1 2
# 2 3
終わりに
本記事では、データセット管理ツールQuiltの概要や使い方について解説しました。
非常にシンプルにデータの公開/バージョン管理できるため、公開者にも利用者にもメリットがあり、データセットの公開する際の1つの選択肢として面白いのでは無いのかと思いました。(※ あまり詳しくないのですが、データセットの公開方法のデファクト的なものってあるんですかね?)
ただし、無料プランだとすべて公開になるため、ビジネス用途やKaggle等のコンペでは情報漏洩の観点から採用しにくいですね。
有料プランだと7$/monthで1TBのプライベートで使えるみたいなので、pythonユーザでかなり気に入ったら採用してみるといいかもで。(今風でかっこいいし)
↓ 料金体系