gpt4 book ai didi

python - 我可以大约多少钱。使用 dvc 减少磁盘体积?

转载 作者:行者123 更新时间:2023-12-03 18:31:27 25 4
gpt4 key购买 nike

我想对 ~1m+ 文档进行分类,并有一个版本控制系统用于相应模型的输入和输出。

数据随时间变化:

  • 样本量随时间增加
  • 可能会出现新功能
  • 匿名化程序可能会随着时间的推移而改变

  • 所以基本上“一切”可能会改变:观察量、特征和值。
    我们有兴趣在不使用 10/100+ GB 的情况下使 ml 模型构建可重现
    磁盘卷,因为我们保存所有更新版本的输入数据。目前数据的卷大小是~700mb。

    我发现的最有前途的工具是: https://github.com/iterative/dvc .目前数据
    存储在从那里加载到 R/Python 中的数据库中。

    问题:

    使用 dvc 可以(非常近似)节省多少磁盘容量?

    如果可以粗略估计一下。我试图找出是否只保存了数据的“差异”。通过阅读我没有找到太多信息: https://github.com/iterative/dvc#how-dvc-works或其他文件。

    我知道这是一个非常模糊的问题。它将高度依赖于数据集。但是,我仍然有兴趣获得一个非常近似的想法。

    最佳答案

    让我尝试总结一下 DVC 如何存储数据,我希望您能够从中计算出在您的特定场景中将节省/消耗多少空间。

    DVC 在单个文件级别存储和重复数据删除。 那么,从实践的角度来看,这通常意味着什么。

    我会用 dvc add作为示例,但相同的逻辑适用于将数据文件或目录保存到 DVC 缓存中的所有命令 - dvc add , dvc run , 等等。

    场景一:修改文件

    假设我有一个 1GB 的 XML 文件。我开始用 DVC 跟踪它:

    $ dvc add data.xml

    在现代文件系统上(或者如果 hardlinkssymlinks 被启用,请参阅 this 了解更多详细信息)在此命令之后我们仍然消耗 1GB(即使文件被移动到 DVC 缓存中并且仍然存在于工作区中) .

    现在,让我们稍微更改一下并再次保存:

    $ echo "<test/>" >> data.xml
    $ dvc add data.xml

    在这种情况下,我们将消耗 2GB。 DVC 不会在同一文件的两个版本之间进行差异 ,它既不将文件拆分成块或块来理解只有一小部分数据发生了变化。

    To be precise, it calculates md5 of each file and save it in the content addressable key-value storage. md5 of the files serves as a key (path of the file in cache) and value is the file itself:

    (.env) [ivan@ivan ~/Projects/test]$ md5 data.xml
    0c12dce03223117e423606e92650192c

    (.env) [ivan@ivan ~/Projects/test]$ tree .dvc/cache
    .dvc/cache
    └── 0c
    └── 12dce03223117e423606e92650192c

    1 directory, 1 file

    (.env) [ivan@ivan ~/Projects/test]$ ls -lh data.xml
    data.xml ----> .dvc/cache/0c/12dce03223117e423606e92650192c (some type of link)


    场景二:修改目录

    现在让我们假设我们有一个 1GB 的大目录 images有很多文件:

    $ du -hs images
    1GB

    $ ls -l images | wc -l
    1001

    $ dvc add images

    此时我们仍然消耗1GB。什么也没有变。但是如果我们通过添加更多文件(或删除其中一些)来修改目录:
    $ cp /tmp/new-image.png images

    $ ls -l images | wc -l
    1002

    $ dvc add images

    在这种情况下,保存新版本后我们 仍然接近 1GB 消耗。 DVC 计算目录级别的差异。 它不会保存目录中之前存在的所有文件。

    相同的逻辑适用于所有将数据文件或目录保存到 DVC 缓存中的命令 - dvc add , dvc run , 等等。

    请让我知道它是否清楚,或者我们需要添加更多细节,澄清。

    关于python - 我可以大约多少钱。使用 dvc 减少磁盘体积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60365473/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com