dud

dud

高效数据版本管理与流程自动化工具

Dud是一款轻量级数据版本管理工具,支持大文件处理和数据流程自动化。它采用YAML文件存储数据操作步骤,能够灵活构建数据处理流程。相比同类工具,Dud性能更优,操作更简单,专注于数据管理核心功能。它采用显式提交机制,默认使用符号链接,并通过Rclone实现高效的远程缓存管理。Dud不会隐式修改数据,为用户提供更可控的数据处理体验。

Dud数据版本控制数据管道命令行工具开源项目Github

Dud

构建状态 Go 报告卡

网站 | 安装 | 入门指南 | 源代码

Dud 是一个轻量级工具,用于在源代码旁对数据进行版本控制并构建数据管道。实际上,Dud 将源代码控制的许多优势扩展到了大型二进制数据。

使用 Dud,你可以通过简单的命令行界面提交、检出、获取和推送大型文件和目录。Dud 将检索数据的配方(也称为阶段)存储在小型 YAML 文件中。这些阶段可以存储在源代码控制中,以将你的数据与代码关联。此外,阶段还可以运行生成数据的命令,有点像 Make。阶段可以链接在一起创建数据管道。请查看入门指南以获取实践性概述。

Dud 的发音是"duhd",而不是"dood"。Dud 不是缩写。

动机

Dud 受到 DVC 的深度启发。DVC 解决了数据版本控制和可重复性的需求,但其实现并非没有问题。我对 DVC 的批评归结为两点:速度和简单性。速度指的是吞吐量和响应速度。简单性指的是做得更少——无论是在项目范围还是抽象程度上。

就速度而言,Dud 通常比 DVC 快得多。就简单性而言,Dud 有一个更小、更专注的范围,并且它以独立可执行文件的形式分发

总结一下,可以用一个类比来说明:Dud 之于 DVC,就像 Flask 之于 Django。Dud 和 DVC 各有优势。如果你想要一套"包含所有功能"的机器学习项目管理工具套件,DVC 可能适合你。如果数据管理是你的主要需求,而你想要一些轻量级且快速的东西,Dud 可能更适合。

要深入了解细节,请继续阅读。

与 DVC 的具体区别

Dud 不管理实验和/或指标。

Dud 仅专注于在源代码旁对数据进行版本控制和复现。DVC 的范围已经扩大到包含传统机器学习工作流程的大部分内容。虽然集成的工具套件有其优势,但如果 UNIX 的经验可以借鉴的话,小型、更专注的工具的组合通常比它们的单体对应物产生更高的生产力。例如,没有理由你不能在 Dud 旁使用 MLflowAim 来跟踪你的实验。Dud 不规定任何实验跟踪的解决方案,也不试图进入这个新兴但已经拥挤的工具市场。

其次,在源代码旁对数据进行版本控制本身就是一个非常有用的概念。机器学习和数据科学之外的领域(例如游戏开发和数字设计)可能会从这种数据管理方法中获益匪浅,而不会被特定领域带来的额外负担所困扰。

Dud 的提交必须始终显式调用;它们绝不是副作用。

对于 Dud 和 DVC 来说,将数据提交到缓存都是每个工具执行的最昂贵的操作之一(无论是在运行时间还是 I/O 方面)。因此,Dud 让用户完全控制何时提交数据。在 Dud 中,提交只在你运行 dud commit 时发生。

相比之下,DVC 经常作为其他命令的副作用自动代表你提交(例如,在 dvc adddvc repro 期间)。虽然 DVC 试图提供帮助,但这些隐式提交通常是意外提交。例如,如果你正在快速迭代一个管道,你可能会在开发时反复运行 dvc reprodvc run。然而,DVC 每次运行 dvc reprodvc run 时都会自动提交结果——即使你只是在调试或调整代码。这种意外提交代价高昂;它们将"快速开发"变成了"开发",并且会使你的缓存膨胀。(你可以使用 --no-commit 标志禁用 DVC 的隐式提交,但你必须每次都记得输入它,而且 DVC 不支持默认启用此标志,例如通过配置文件。)

Dud 默认将文件检出为符号链接。

当 Dud 将缓存的文件检出到工作区时,默认使用符号链接(又称为 symlinks)。符号链接有许多优点,使其成为检出的绝佳选择。首先,创建符号链接需要很少的 I/O,因此 dud checkout 通常几乎瞬间完成。其次,符号链接透明地重定向到缓存的文件本身,所以数据不会在工作区和缓存之间重复,你的存储空间得到有效利用。最后但同样重要的是,符号链接使检查文件是否最新变得非常简单(通过检查链接目标),因此 dud status 也可以非常快速。

默认情况下,DVC 将文件检出为硬拷贝。(从技术上讲,DVC 在使用拷贝之前尝试使用 reflinks,但很少有文件系统支持 reflinks,所以拷贝更可能是默认选项。)使用硬拷贝,上面列出的效率都无法实现,所以默认情况下检出和状态检查效率低下。值得称赞的是,DVC 的缓存可以配置为使用符号链接,但可以说 DVC 的默认缓存配置对于任何规模较大的项目都不太合理。

运行 Dud 管道从不隐式改变阶段的产物。

当你在 DVC 中运行管道时,DVC 会在运行管道的命令之前删除所有管道输出。虽然这有助于确保管道的可重复性,但这是另一个用户必须考虑的隐式行为,它阻止了用户决定何时可以安全地重用阶段输出。 如果你不想让DVC自动为你删除输出,你需要明确告诉它你想保留的每个输出。然而,通过告诉DVC保留一个输出,DVC可能会执行一种新的且不同的自动行为。如果你使用符号链接(或硬链接)进行检出(这通常是个好主意;见上文),DVC会"取消保护"所有输出链接,用缓存中的硬拷贝替换它们。这种行为不仅令人惊讶,而且在运行时间和存储方面都非常昂贵。

DVC这两种行为的结果意味着,在一个合理的配置中,阶段simply无法高效地重用输出;用户几乎别无选择,只能接受DVC的限制。

当你运行Dud管道时,Dud不会对现有文件进行任何隐式修改。Dud将工作空间文件的所有修改推迟给用户。如果你想要特定的行为,你应该将其编码到你的阶段命令中。例如,如果你想在阶段运行之前清除所有输出,你可以在命令脚本的开头删除任何输出。如果你想重用输出,你可以在脚本中检查预先存在的输出,并选择不重新创建它们。Dud的极简方法导致阶段的命令完全掌控其自身的可重复性;这个责任不会尴尬地在阶段和工具之间共享。

Dud将远程缓存管理委托给Rclone。

Rclone是一个非常流行的命令行工具,它将自己描述为"云存储的瑞士军刀"。在撰写本文时,Rclone在Github上拥有超过28,000颗星。Rclone支持几乎所有你可能听说过的云存储提供商。(S3、GCS、Dropbox、Backblaze等等。)这一切都是为了说明:Rclone是在互联网上移动数据的顶级选择。

Dud内部调用Rclone来实现所有的远程缓存功能,比如dud fetchdud push。但Dud并没有完全隐藏Rclone抽象。Dud暴露了它的Rclone配置文件,预期并鼓励用户直接使用Rclone来配置远程存储或与他们的远程数据交互。通过使用Rclone,Dud的远程缓存接口立即获得了多年开源开发和丰富、文档完善的CLI的好处。这是Dud如何拥抱UNIX哲学和单一焦点工具组合的一个例子,如上所述。

相比之下,DVC将各种Python包缝合在一起,以支持适度的云存储选项。在撰写本文时,DVC 2.6支持十一个云存储提供商,而Rclone 1.56支持超过五十个。但云存储选项的数量并不是DVC方法的关键劣势。(Dud和DVC都支持最大的玩家,如S3和GCS。)DVC的关键劣势是他们必须自己开发和维护大部分远程数据管理堆栈。如果Rclone是任何迹象的话,云数据传输是一个非常困难的问题,DVC有很多工作要做。

总之,Dud利用Rclone开发者的深厚知识和努力,提供了一个强大和熟悉的远程缓存体验。DVC自行规划他们的路线,在这样做时产生了巨大的开发成本。

Dud不使用分析。(而且永远不会。)

默认情况下,DVC启用嵌入式分析。我强烈反对这种做法,尤其是在免费和开源软件中。我永远不会在Dud中嵌入分析。

贡献

请参阅CONTRIBUTING.md

许可证

BSD-3-Clause。请参阅LICENSE

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多