我使用 Python 版本 3.7.13 并为 MLOps 项目创建虚拟环境 (venv)。
此 venv 中安装了与 Python== 3.7.13 兼容的 dvc 包(=2.10.2)。
(venv) (base) tony3@Tonys-MacBook-Pro mlops % dvc --version
2.10.2
Run Code Online (Sandbox Code Playgroud)
但是当运行 dvc 启动时:
(venv) (base) tony3@Tonys-MacBook-Pro mlops % dvc init
Run Code Online (Sandbox Code Playgroud)
导入时出现如下错误:
from fsspec.asyn import fsspec_loop
ImportError: cannot import name 'fsspec_loop' from 'fsspec.asyn'
Run Code Online (Sandbox Code Playgroud)
我尝试以下操作:
转到文件位置 /venv/lib/python3.7/site-packages/fsspec/asyn.py 并检查文件 asyn.py。发现没有名为“fsspec_loop”的函数。
尝试通过以下方式将 dvc 升级到更新版本:
pip install dvc --upgrade
Run Code Online (Sandbox Code Playgroud)
但 dvc 版本保持不变(2.10.2)。
pip uninstall dvc
Run Code Online (Sandbox Code Playgroud)
并尝试安装最新版本,
pip install dvc==2.42.0
Run Code Online (Sandbox Code Playgroud)
响应显示,与Python 3.7.13兼容的dvc最新版本是2.10.2。因此,无法安装2.42.0版本。
(venv) …
Run Code Online (Sandbox Code Playgroud) 两者有什么区别?我们在上一份工作中使用了git-lfs,并且在我当前的工作中开始与git一起使用dvc。它们都放置某种索引而不是文件,可以按需下载。dvc是否比前一个有所改进?
我想对 ~1m+ 文档进行分类,并有一个版本控制系统用于相应模型的输入和输出。
数据随时间变化:
所以基本上“一切”可能会改变:观察量、特征和值。我们有兴趣在不使用 10/100+ GB 磁盘容量的情况下使 ml 模型构建可重现,因为我们保存了输入数据的所有更新版本。目前数据的卷大小是~700mb。
我发现的最有前途的工具是:https : //github.com/iterative/dvc。目前,数据存储在数据库中,从那里加载到 R/Python 中。
题:
使用 dvc 可以(非常近似)节省多少磁盘容量?
如果可以粗略估计一下。我试图找出是否只保存了数据的“差异”。我没有通过阅读以下内容找到太多信息:https : //github.com/iterative/dvc#how-dvc-works或其他文档。
我知道这是一个非常模糊的问题。它将高度依赖于数据集。但是,我仍然有兴趣获得一个非常近似的想法。
有人在 MinIO 存储上安装 DVC 吗?
我已阅读文档,但对我来说并不是很清楚。
我应该使用哪个命令来设置具有此入口参数的 MinIO 存储:
存储网址: https: //minio.mysite.com/minio/bucket-name/ 登录名:my_login 密码:my_password
我的团队有一个设置,其中我们跟踪 DVC 中的数据集和模型,并有一个 GitLab 存储库用于跟踪我们的代码和 DVC 元数据文件。我们的开发 GitLab 管道中有一项工作(在每次推送合并请求时运行),其目标是检查以确保开发人员记得运行dvc push
以保持 DVC 远程存储最新。目前,我们执行此操作的方法是dvc pull
在 GitLab 运行程序上运行,该运行程序将失败并显示错误,告诉您未找到哪些文件(新文件或现有文件的最新版本)。
这种方法的缺点是,我们将存储在 DVC 中的全部数据加载到 GitLab 运行器上,并且我们遇到了内存不足的问题,更不用说下载所有数据的运行时间很长了。由于对象的路径和 md5 哈希存储在 DVC 元数据文件中,我认为这就是 DVC 需要能够回答“远程存储系统是否是最新的”问题的所有信息。
看起来dvc status
与我所要求的类似,但比较了缓存或工作区和远程存储。换句话说,它要求文件实际存在于进行调用的任何文件系统上。
有没有什么方法可以实现我上面列出的目标(“通知开发人员他们需要运行dvc push
”)而不从 DVC 中提取所有内容?
我有一个用python 3.6配置conda的环境,并且在那里安装了dvc,但是当我尝试用python执行dvc run时,dvc调用conda的主要安装的python版本而没有找到已安装的库.
$ conda activate py36
$ python --version
Python 3.6.6 :: Anaconda custom (64-bit)
$ dvc run python --version
Running command:
python --version
Python 3.7.0
Saving information to 'Dvcfile'.
Run Code Online (Sandbox Code Playgroud) 我们开始将dvc 与git 一起使用以控制机器学习项目的版本控制。对于dvc远程存储,我们使用Google云存储。
我们的数据集是包含超过100000张小图像的OCR数据集,总大小约为200 MB。使用dvc跟踪此数据集时,我们遇到了下一个问题:
换句话说,如果我们压缩数据集并以单个文件dvc的形式跟踪它足够快地工作,但是问题在于这种方式我们无法跟踪特定文件的更改。
目标是对具有大量文件的数据集进行版本控制,并具有下一个功能。
任何有关更好解决方案的建议都可以接受。
我希望我的数据和模型存储在单独的Google Cloud存储桶中。我的想法是,我希望能够与其他人共享数据而不共享模型。
我能想到的一个想法是对数据和模型使用单独的git子模块。但这感觉很麻烦,并给最终用户带来了一些额外的要求(例如,必须这样做git submodule update
)。
那么我可以不使用git子模块来做到这一点吗?
DVC 使用 git commits 来保存实验并在实验之间导航。
是否可以避免在 CI/CD 中进行自动提交(dvc repro
在 CI/CD 端之后保存数据工件)。
我在将带有 DVC 的文件推送到 DAGsHub 时遇到问题。
工作流程:
它坐等,甚至禁止我使用 Ctrl+C 取消操作。我被迫手动关闭终端,打开一个新终端,结束任务管理器中的“Python”进程并删除 .dvc/tmp/lock 中的锁定文件。