从命令行界面管理数据
在这个例子中,我们将创建一个简单的数据集,并使用clearml-data
CLI演示其上的基本操作。
先决条件
-
首先,确保你已经克隆了clearml仓库。它包含了所有需要的文件。
-
打开终端并切换到克隆仓库的示例文件夹:
cd clearml/examples/reporting
创建初始数据集
-
要创建数据集,请运行以下代码:
clearml-data create --project datasets --name HelloDataset
预期响应:
clearml-data - Dataset Management & Versioning CLI
Creating a new dataset:
New dataset created id=24d05040f3e14fbfbed8edb1bf08a88c -
添加一个文件夹。文件添加是递归的,因此只需指向文件夹即可捕获所有文件和子文件夹:
clearml-data add --files data_samples
预期响应:
clearml-data - Dataset Management & Versioning CLI
Adding files/folder to dataset id 24d05040f3e14fbfbed8edb1bf08a88c
Generating SHA2 hash for 2 files
Hash generation completed
5 files added
note
创建数据集后,运行命令时不需要指定其ID,例如add
、remove
或list
-
关闭数据集 - 此命令会上传文件。默认情况下,文件会上传到文件服务器,但可以使用
--storage
标志配置为任何ClearML支持的存储介质(参见存储)。 该命令还会完成数据集的最终化,使其不可变并准备好被使用。clearml-data close
预期响应:
clearml-data - Dataset Management & Versioning CLI
Finalizing dataset id 24d05040f3e14fbfbed8edb1bf08a88c
Pending uploads, starting dataset upload to https://files.community.clear.ml
Uploading compressed dataset changes (4 files, total 221.56 KB) to https://files.community.clear.ml
Upload completed (221.56 KB)
2021-05-04 09:32:03,388 - clearml.Task - INFO - Waiting to finish uploads
2021-05-04 09:32:04,067 - clearml.Task - INFO - Finished uploading
Dataset closed and finalized
列出数据集内容
要查看所有文件是否已添加到创建的数据集中,请使用 clearml-data list
并输入刚刚关闭的数据集的ID。
clearml-data list --id 24d05040f3e14fbfbed8edb1bf08a88c
预期响应:
clearml-data - Dataset Management & Versioning CLI
List dataset content: 24d05040f3e14fbfbed8edb1bf08a88c
Listing dataset content
file name | size | hash
-----------------------------------------------------------------------------------------------------------------
dancing.jpg | 40,484 | 78e804c0c1d54da8d67e9d072c1eec514b91f4d1f296cdf9bf16d6e54d63116a
data.csv | 21,440 | b618696f57b822cd2e9b92564a52b3cc93a2206f41df3f022956bb6cfe4e7ad5
picasso.jpg | 114,573 | 6b3c67ea9ec82b09bd7520dd09dad2f1176347d740fd2042c88720e780691a7c
sample.json | 132 | 9c42a9a978ac7a71873ebd5c65985e613cfaaff1c98f655af0d2ee0246502fd7
sample.mp3 | 72,142 | fbb756ae14005420ff00ccdaff99416bebfcea3adb7e30963a69e68e9fbe361b
Total 5 files, 248771 bytes
创建子数据集
使用ClearML数据,您可以创建继承其他数据集内容的子数据集。
-
创建一个新的数据集,指定先前创建的作为其父级:
clearml-data create --project datasets --name HelloDataset-improved --parents 24d05040f3e14fbfbed8edb1bf08a88c
note您需要输入在上述创建数据集时收到的数据集ID
-
添加一个新文件。
-
创建一个新文件:
echo "data data data" > new_data.txt
-
现在将文件添加到数据集中:
clearml-data add --files new_data.txt
控制台应显示此输出:
clearml-data - Dataset Management & Versioning CLI
Adding files/folder to dataset id 8b68686a4af040d081027ba3cf6bbca6
1 file added -
-
删除一个文件。您需要指定文件的完整路径(在数据集内,而不是本地)以删除它。
clearml-data remove --files data_samples/dancing.jpg
预期响应:
clearml-data - Dataset Management & Versioning CLI
Removing files/folder from dataset id 8b68686a4af040d081027ba3cf6bbca6
1 files removed -
关闭并最终确定数据集:
clearml-data close
-
再次查看数据集中的文件:
clearml-data list --id 8b68686a4af040d081027ba3cf6bbca6
并查看所做的更改!
new_data.txt
已被添加,dancing.jpg
已被移除。file name | size | hash
------------------------------------------------------------------------------------------------------------------------------------------------
data.csv | 21,440 | b618696f57b822cd2e9b92564a52b3cc93a2206f41df3f022956bb6cfe4e7ad5
new_data.txt | 15 | 6df986a2154902260a836febc5a32543f5337eac60560c57db99257a7e012051
picasso.jpg | 114,573 | 6b3c67ea9ec82b09bd7520dd09dad2f1176347d740fd2042c88720e780691a7c
sample.json | 132 | 9c42a9a978ac7a71873ebd5c65985e613cfaaff1c98f655af0d2ee0246502fd7
sample.mp3 | 72,142 | fbb756ae14005420ff00ccdaff99416bebfcea3adb7e30963a69e68e9fbe361b
Total 5 files, 208302 bytes
通过使用clearml-data
,为数据创建了清晰的谱系。如本示例所示,当数据集关闭时,添加或删除数据的唯一方法是创建一个新数据集,并使用前一个数据集作为父级。这样,数据不依赖于代码,并且是可复现的。