簡體   English   中英

如何使用 gitlab 緩存來存儲 ML 管道的 model 權重?

[英]How to use gitlab cache to store model weights for an ML pipeline?

我正在使用 gitlab 來托管 python 機器學習管道。 該管道包括一些 model 的訓練權重,我不想將其存儲在 git 中。 權重存儲在一些遠程數據存儲中,管道在運行其作業時會自動提取這些數據。

這可行,但是在嘗試使用此設置運行一些端到端自動 CI 測試時我遇到了問題。 每次觸發我的 CI 時,我不想從遙控器下載 model 權重(因為這可能會變得昂貴)。 事實上,出於安全原因,我想在所有 CI 測試中完全阻止我的互聯網連接(例如,通過在我的conftest.py中配置套接字)。

如果我這樣做,顯然我無法訪問存儲我的 model 權重的位置。 我知道我可以模擬 model 的結果進行測試,但我實際上想測試 model 的權重是否合理。 所以 mocking 是不可能的。

之前發布了一個類似的問題,我得到的解決方案之一是利用 gitlab 的緩存機制來存儲 model 權重。

但是,我無法弄清楚如何准確地做到這一點。 根據我對緩存的了解,如果我啟用它,gitlab 將從 Internet 下載必要的文件一次,並在以后的管道中重復使用它們。 但是,我正在尋找的解決方案看起來像這樣 -

  • 手動上傳文件到 gitlab。
  • 我的所有 CI 作業都可以訪問此文件,但是 git跟蹤此文件。
  • 當文件過時(因為我創建了一個新模型),我手動上傳更新的文件。
  • 使用緩存工作流程,據我了解,如果我想更新文件,我必須在測試套件中啟用互聯網,讓管道自動下載新的權重集,然后在新的權重集再次禁用互聯網緩存設置好了。 這感覺很不安全(不安全,因為我從不想在測試期間啟用互聯網)。

這個問題有好的解決方案嗎?

一種可能的解決方案,但可能不夠靈活,是將 model 文件保留在 GitLab CI 變量中,並在步驟中放入正確的路徑。 GitLab CI 也支持二進制文件作為變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM