如何使用 gitlab 缓存来存储 ML 管道的模型权重?
How to use gitlab cache to store model weights for an ML pipeline?
我正在使用 gitlab 来托管 python-机器学习管道。管道包括一些我不想存储在 git 中的模型的训练权重。权重存储在管道在 运行 执行其作业时自动提取的一些远程数据存储中。
这行得通,但是我在使用此设置尝试 运行 一些端到端自动 CI 测试时遇到问题。我不想每次触发我的 CI 时都从远程下载模型权重(因为这会变得很昂贵)。事实上,出于安全原因,我想在所有 CI 测试中完全屏蔽我的互联网连接(例如通过在我的 conftest.py
中配置套接字)。
如果我这样做,显然我无法访问存储我的模型权重的位置。我知道我可以模拟模型的结果进行测试,但我实际上想测试模型的权重是否合理。所以嘲笑是不可能的。
我发布了一个 我得到的解决方案之一是利用 gitlab 的缓存机制来存储模型权重。
但是,我不知道该怎么做。根据我对缓存的理解,如果我启用它,gitlab 将从互联网下载必要的文件一次,并在以后的管道中重用它们。但是,我正在寻找的解决方案看起来像这样 -
- 手动将文件上传到 gitlab。
- 我的所有 CI 作业都可以访问此文件,但是,未 被 git 跟踪。
- 当文件过时(因为我创建了一个新模型),我手动上传更新的文件。
- 使用缓存工作流,据我所知,如果我想更新文件,我将不得不在测试套件中启用互联网,让管道自动下载新的权重集,然后禁用设置新缓存后再次上网。这感觉很老套而且不安全(不安全,因为我从不想在测试期间启用互联网)。
这个问题有好的解决办法吗?
一个可能的解决方案,但可能不够灵活,将模型文件保存在 GitLab CI 变量中,并在步骤中放入正确的路径。 GitLab CI 也支持二进制文件作为变量。
我正在使用 gitlab 来托管 python-机器学习管道。管道包括一些我不想存储在 git 中的模型的训练权重。权重存储在管道在 运行 执行其作业时自动提取的一些远程数据存储中。
这行得通,但是我在使用此设置尝试 运行 一些端到端自动 CI 测试时遇到问题。我不想每次触发我的 CI 时都从远程下载模型权重(因为这会变得很昂贵)。事实上,出于安全原因,我想在所有 CI 测试中完全屏蔽我的互联网连接(例如通过在我的 conftest.py
中配置套接字)。
如果我这样做,显然我无法访问存储我的模型权重的位置。我知道我可以模拟模型的结果进行测试,但我实际上想测试模型的权重是否合理。所以嘲笑是不可能的。
我发布了一个
但是,我不知道该怎么做。根据我对缓存的理解,如果我启用它,gitlab 将从互联网下载必要的文件一次,并在以后的管道中重用它们。但是,我正在寻找的解决方案看起来像这样 -
- 手动将文件上传到 gitlab。
- 我的所有 CI 作业都可以访问此文件,但是,未 被 git 跟踪。
- 当文件过时(因为我创建了一个新模型),我手动上传更新的文件。
- 使用缓存工作流,据我所知,如果我想更新文件,我将不得不在测试套件中启用互联网,让管道自动下载新的权重集,然后禁用设置新缓存后再次上网。这感觉很老套而且不安全(不安全,因为我从不想在测试期间启用互联网)。
这个问题有好的解决办法吗?
一个可能的解决方案,但可能不够灵活,将模型文件保存在 GitLab CI 变量中,并在步骤中放入正确的路径。 GitLab CI 也支持二进制文件作为变量。