我正在开发需要相当大的训练模型文件才能运行的机器学习存储库。这些文件不是 git remote 的一部分,而是由 DVC 跟踪并保存在单独的远程存储中。当我尝试在 CI 管道中为需要这些模型文件进行预测的函数运行单元测试时,我遇到了问题。由于我无法在 git 远程访问它们,因此无法测试它们。
人们在这种情况下通常做的最佳实践是什么?我能想到几个选择——
- 从 CI 管道内的 DVC 远程拉取模型。我不想这样做,因为每次你想运行 push 一些代码时下载模型会很快耗尽我的 CI 使用时间,而且是一个昂贵的选择。
- 用于
unittest.mock
模拟模型预测的输出并测试我的代码的其他部分。这就是我现在正在做的事情,但是对于 unittest 的模拟功能来说有点痛苦。据我所知,该模块并没有真正考虑到 ML 开发。它缺少(或很难找到)一些我真正喜欢的功能。有没有专门针对 ML 的好工具来做这件事? - 对函数定义进行奇怪的重新格式化,使我基本上可以执行选项 2,但没有模拟模块。也就是只测试周边逻辑,不用担心模型输出。
- 只需将模型文件放入 git 远程并完成它。仅使用 DVC 跟踪数据。
人们在这种情况下通常会做什么?