这更像是一个关于数据科学的基础设施问题。如何管理GitHub存储库中的数据合并?
作为一个例子,作为一个数据科学家,我可能在我的分支和开发代码,分析ecc.ecc。将代码合并回主程序并不是一个问题,是标准的软件工程工作。
但是,您将如何管理数据?您将如何管理我所建立的分析/模型的输出?您将如何解决冲突,以及如何保证代码和生成的数据对齐?
我想出了一个简单的解决方案,就是有一个CI管道,一旦有人合并到主程序中并重新运行所有代码,就会触发这个管道。作为一个例子,运行数据提取流水线,对模型进行训练,将模型存储在S3 ecc上。
这样您就可以将您的数据输出复制到主服务器上,您可以保证代码和数据对齐,并且它是自动的。然而,对于长管道来说,这意味着(例如)等待10小时才能收集到数据并安装模型。
我一直在寻找资源或可能的解决方案在网上没有成功,这似乎是一个非常重要,但没有太多讨论的问题。
发布于 2023-02-08 16:48:45
@Mattia,您可以使用DVC对您的数据、管道、工件和实验进行版本化。DVC将绝对调整您的代码与您的数据,并防止去重复。
关于长管道和再培训,在情况不变的情况下(例如加载数据),DVC将跳过这一步骤,如果它没有改变。因此,如果您将脚本分解成几个阶段,您就可以让您的模型只在您进行更改/实验的地方运行(例如,更改超参数),从而节省大量时间。
下面是对您有用的持久化实验的链接:https://dvc.org/doc/user-guide/experiment-management/persisting-experiments#persisting-experiments
这里还有一篇关于端到端场景的博客文章,它可能会为您的问题提供一些帮助,特别是如果这是计算机视觉场景:https://iterative.ai/blog/end-to-end-computer-vision-api-part-1-data-versioning-and-ml-pipelines/
希望这能帮上忙!坦白地说,我是迭代公司的社区管理人员( DVC.org、CML.dev和MLEM.ai (开源)的维护者,以及Iterative (SaaS)的维护者)。并随时加入我们的服务器,以获得任何问题的帮助!https://discord.com/invite/dvwXA2N!
https://datascience.stackexchange.com/questions/117923
复制相似问题