问题标签 [dvc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dvc - 数据版本控制 (DVC) 就地编辑文件导致循环依赖
我们有一个更大的数据集和几个预处理脚本。这些脚本会更改数据。当我尝试注册它时,它似乎dvc run
抱怨循环依赖(输入与输出相同)。我认为这是一个非常常见的用例。
这里的最佳做法是什么?
试图用谷歌搜索,但我没有看到任何解决方案(除了为输出创建另一个文件夹)。
dvc - 没有导入的派生数据的 DVC 依赖项
我是 DVC 的新手,到目前为止,我喜欢我所看到的。但可能我的问题很容易回答。
我的问题:我们如何正确跟踪派生数据项目中原始hugedatarepo(假设这也可以改变)中文件的依赖关系,但是在签出派生数据时通常不导入大文件?我不认为我可以dvc import
用来实现这一点。
详细信息:我们有一个包含大量非常大的数据文件(扫描)的存储库,并使用这些数据来设计和训练各种算法。通常我们只想使用特定文件,甚至只是文件中的小块用于训练、注释等。也就是说,我们为特定任务获取数据,我们希望将其放入新的存储库中。
目前我的想法是对dvc get
相关数据,将其放在一个未跟踪的临时文件夹中,然后再次使用 dvc 管理派生数据。但仍然要依赖原始数据。
在派生数据存储库中我做
我的 derivedData.py 做了一些事情(伪代码)
所以我使用元数据文件作为实际数据的代理。hugeFileRepo 数据不会频繁更改,metaData 文件将保持最新。而且我完全可以依赖一般数据而不是我使用的实际文件。所以我相信这个解决方案对我有用,但我相信有更好的方法。
dvc - 恢复 dvc remove -p 命令
我刚刚使用命令错误地删除了一个 DVC 跟踪文件dvc remove training_data.dvc -p
,这导致我的所有训练数据集完全消失。我知道在 Git 中,我们可以轻松地根据其哈希恢复已删除的分支。有谁知道如何恢复我在 DVC 中丢失的所有数据?
linux - 数据版本控制 (DVC) 命令不起作用 ---> TypeError: public() got an unexpected keyword argument 'SEP'
突然间,dvc 已停止运行。键入的任何命令都会失败并引发异常。例子。dvc 远程列表导致 -
任何建议都会有很大帮助。
unit-testing - 如何在 CI 管道中对使用不属于 git 远程的模型文件的函数进行单元测试?
我正在开发需要相当大的训练模型文件才能运行的机器学习存储库。这些文件不是 git remote 的一部分,而是由 DVC 跟踪并保存在单独的远程存储中。当我尝试在 CI 管道中为需要这些模型文件进行预测的函数运行单元测试时,我遇到了问题。由于我无法在 git 远程访问它们,因此无法测试它们。
人们在这种情况下通常做的最佳实践是什么?我能想到几个选择——
- 从 CI 管道内的 DVC 远程拉取模型。我不想这样做,因为每次你想运行 push 一些代码时下载模型会很快耗尽我的 CI 使用时间,而且是一个昂贵的选择。
- 用于
unittest.mock
模拟模型预测的输出并测试我的代码的其他部分。这就是我现在正在做的事情,但是对于 unittest 的模拟功能来说有点痛苦。据我所知,该模块并没有真正考虑到 ML 开发。它缺少(或很难找到)一些我真正喜欢的功能。有没有专门针对 ML 的好工具来做这件事? - 对函数定义进行奇怪的重新格式化,使我基本上可以执行选项 2,但没有模拟模块。也就是只测试周边逻辑,不用担心模型输出。
- 只需将模型文件放入 git 远程并完成它。仅使用 DVC 跟踪数据。
人们在这种情况下通常会做什么?
version-control - 控制跟踪的外部依赖版本
我正在尝试为具有不同标记版本的数据集的机器学习数据设置 DVC 存储库。我这样做是这样的:
我有多个项目,每个项目都需要引用该数据集的某个版本。问题是我不知道如何设置这些项目以引用特定版本。我可以通过以下方式跟踪HEAD
回购:
这让我获得了最新版本的数据集,符号链接到我的data
文件夹中,但是如果我希望一些项目使用该1.0.0
版本,而一些项目使用该1.1.0
版本,或者另一个版本怎么办?或者就此而言,如果我将数据集更新为2.0.0
但不希望我现有的项目必须跟踪HEAD
并保留设置它们的版本?
不要为我的数据集创建大量本地副本对我来说很重要,因为/home
驱动器比驱动器小得多,/raid
而且其中一些数据集很大。
git - 数据版本控制:管道参数中的绝对路径和项目路径?
在 DVC 中,可以定义管道。在 Unix 中,通常不能在根级别工作。此外,DVC 期望文件位于 git 存储库中。
所以,这似乎是一个典型的问题。
假设我有以下内容:
Git 开始于/home/user/project/
对我来说似乎是合理的:脚本采用存储在特定位置的配置,针对一些封装的功能运行它,并使用绝对路径将其输出到目的地。
的默认行为--dest
是输出到当前工作目录。这似乎是另一个合理的默认值。
接下来,我去配置params.yaml
文件dvc
,我立即感到困惑和不确定会发生什么。我写的:
我想写的(并且会在 shell 脚本中):
但是,在 DVC 中,路径似乎是隐含的,我也不知道从哪里开始:
- DVC 将在本地计算我的脚本的路径
- 不在本地计算我的脚本的路径
这很好——我可以发现这一点。但我有理由确定 DVC 绝对不会在我的 params.yaml 中的目录和文件参数前面加上我的项目路径。
如何实现不假定固定项目位置的路径控制,就像我在 BASH 中那样?
dvc - 数据版本控制 (dvc) 无法推送到远程存储,因为查询缓存
我正在使用 webdavs 使用 dvc 设置远程存储
我可以从 Finder 连接到远程存储。
我添加了新的遥控器,当我检查时看到它(dvc 遥控器列表)
但是当我尝试推送数据时,我有 0% Querying cache 的密码请求
它永远保持 0%。当我输入密码时,它以以下错误结束:
错误:意外错误 - 没有与 LINK_OF_REMOTE_STORAGE 的连接
我唯一在想的是如何检查我是否可以从 dvc 连接到服务器以及为什么查询缓存永远不会结束(甚至可能永远不会开始)
jenkins - jenkins 中的 SSH 自动化
所以我一直致力于流程的自动化,它包括通过 DVC(数据版本控制)从外部源获取数据,为此我使用 SSH 客户端来拉取和推送更改。对于自动化,我使用的是Jenkins,我面临的问题是,对于 ssh,我们需要在运行时提供密码,而在自动化中这不是一个选项。我尝试了多种方法来为 ssh 指定密码,例如 sshpass 和 ssh config,但事实证明 Jenkins 在构建时会在 var/lib/jenkins/....的目录repoName@tmp中创建一些文件名script.sh,因此它正在授予权限被拒绝错误。无论我尝试什么。如果有人可以对此问题提出任何建议,将不胜感激。