m3dev/gokart

Gokart solves reproducibility, task dependencies, constraints of good code, and ease of use for Machine Learning Pipeline.

解決的問題

Gokart 簡化了可重現性機器學習流程的建立。它解決了機器學習開發中的常見挑戰,例如管理任務依賴關係、透過固定隨機種子確保結果一致性,以及透過鼓勵遵循 SOLID 原則來維持程式碼庫的整潔。

工作原理

Gokart 作為 Luigi 的封裝器建構,將機器學習工作流程組織為一系列任務。它會自動追蹤每個任務的元資料——包括輸出資料、模組版本、處理時間以及隨機種子——並儲存在帶有雜湊值的獨立 pickle 檔案中。當任務參數變更時,流程會自動重新執行受影響的部分。為降低記憶體使用量,中間結果透過檔案交換,系統也支援將 GCS 和 S3 作為這些結果的雲端儲存。它還內建支援在 I/O 時對 pandas DataFrame 欄位進行檢查,並使用 Redis 在平行執行時鎖定任務。

適用對象

需要強大且可重現環境進行批次處理與團隊開發的機器學習工程師與資料科學家。

主要亮點

  • 自動可重現性:自動固定 numpy 和 random 的種子,並追蹤所有模組版本與參數。
  • 智慧重執行:當任務參數變更時,自動觸發流程重執行。
  • 雲端整合:原生支援 S3 和 GCS 作為中間結果的資料儲存。
  • 類型安全性:支援類型註解與 mypy 插件,確保流程穩健性並防止任務間的類型錯誤。
  • 記憶體高效:透過中間檔案在任務間交換資料,而非將所有內容保留在記憶體中。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案