以下針對 Staging stage
的重點部分作說明。
Staging stage 的重點在於測試 ML pipeline 的程式碼,確保它可以準備好進入 Production 環境。所有的 ML pipeline 程式碼都會在這個階段進行測試,包含了模型訓練、特徵工程、推論等等。
ML 工程師建立了一個 CI pipeline 來實作這個階段的單元測試與整合測試。Staging stage 的結果會是一個 release branch,並且觸發 CI/CD 系統來開始 Production stage。
如上圖所示,
Merge request
當 ML 工程師建立了一個 merge request 到 staging branch (通常是 main branch) 時,CI/CD 系統就會被觸發。
Unit tests
CI/CD 系統會自動建立程式碼,並且觸發單元測試。如果測試失敗,merge request 就會被拒絕。單元測試不會與資料或其他服務互動。
Integration tests (CI)
CI/CD 系統會執行整合測試,確保所有的 pipeline (包含了特徵工程、模型訓練、推論與監控) 可以正確的運作。Staging 環境應該要盡可能的接近 Production 環境。
為了減少整合測試的時間,模型訓練的步驟可以在準確度與速度之間做取捨。例如:使用小的資料集或是減少訓練的迭代次數。依照模型的使用情境,你可能會在這個階段進行Full-scale 的負載測試 (load testing)。
當整合測試通過之後,程式碼就可以進入 Production 環境。
也可以定期在 staging branch 上進行整合測試。如果 staging branch 經常被不同的使用者更新,這是一個很好的做法。