MLOps 工具介紹(二):常見的資料管理工具
為什麼需要資料管理工具
隨著開發過程持續推進,通常會產生大量版本的程式碼,並需要使用版本控制工具追蹤這些程式碼,以利後續維護。除了程式碼,訓練資料也需要進行版本控制,主要原因有以下兩點:
- 儲存空間管理:多數的資料管理工具都可以搭配雲端儲存體與自建的的資料庫一起使用,方便開發團隊管理資料空間、存取與搜索。
- 機器學習實驗:在機器學習實驗階段,建立特徵或分析時,會產生很多種的資料版本;且演算法開發與多演算法比較時,也會發展出很多的資料版本。這麼多的版本如果沒有被確實紀錄,往往會造成開發團隊回溯的困擾。
我們通常不會直接使用 Git 來管理資料,而是使用針對資料的版本控制工具。他們通常能追蹤結構化(例如表格類型的資料)與非結構化資料(像是圖片),滿足絕大多數的專案,以下我們將介紹幾種常見的工具。
常見的資料管理工具
目前市面上能見度較高的產品有 DagsHub、DVC、Dolt、Git LFS、LakeFS、Neptune、HPE MLDM、Delta Lake,本文主要分享最多人使用與討論度較高的兩個工具 DagsHub 與 DVC。
- DagsHub
在巨量資料的環境中進行機器學習實驗,傳統作法會事先將此巨量資量下載至訓練主機後才進行訓練。這個方法較耗時也消耗硬體資源,因此,DagsHub 提供 Direct Data Access (DDA),讓使用者不需要下載全部訓練資料,而是將部分資料先放在訓練主機的 RAM 當中,這批資料訓練完後,再拿取下一批的資料。可以節省巨量資料的下載時間並減少硬體設備的儲存空間。優缺點如下:
- 類似 GitHub 的 UI 平台,但在大型資料管理上優於 GitHub。
- 需要搭配 DVC 一起使用。
- 如果資料使用超過 20 GB,需要額外付費。
建立好專案之後,按照提示輸入以下指令就能將專案複製到本地端:
git clone https://dagshub.com/siang.wu/my-first-repo.git
從使用者介面可以看出 DagsHub 整合了資料、程式碼、實驗,這些環節都能在同一個平台上,也支援多人協作,並能以多種方式存取資料。介面上的鋪陳和 GitLab 或 GitHub 都有幾分神似,對於各項功能大多輔以簡單的文字說明,短時間需要上手的話是理想的選擇。如果已經熟悉 GitHub,再加上 MLflow 這類工具的使用經驗,幾乎可以直接流暢地使用,這是 DagsHub 的一大優勢。不過如果團隊超過 3 人,或資料量超過 20 GB,就無法使用免費方案,必須購買每人每月 99 元的方案。
- DVC
DVC 在使用上雖然沒有像 DagsHub 可以高度整合,但也夠用於多數開發情境中。除了對資料進行版本控制,也能將整個實驗流程(Pipeline)重現和比較不同實驗結果。較適合用於發表論文,假使多年後突然需要重現某個實驗,就能輕鬆將特定超參數的訓練結果呈現出來。優缺點如下:
- 除了資料版本管理,還提供機器學習模型版本管理、程式碼版本管理。
- 提供版本間的視覺化節點圖。
- 資料流程管理,可以使開發人員清楚知道每個流程所需的資料與程式碼。
- DVC 綁定 Git 工具,就開發者而言較為友善,只要使用過 Git 就能快速上手。
- 要注意使用 DVC 管理巨量資料,就相對沒有 DagsHub 友善,不論是機器學習使用上還是傳統資料儲存方式,或是將資料重新 hash 編碼後的檔案,都會消耗不少的儲存成本
我該如何選擇呢?
市面上的資料管理工具百百種,彼此之間都有不同的功能特色,除了以上兩個以外還有眾多開源工具。還有先前介紹過的 HPE MLDM,強調自動擴展且能夠將工作流程視覺化,並做到資料有差異時,自動運行前處理的程式。使用上,DVC 簡單好上手,只要會用 Git 就會用 DVC;而 DagsHub 則進一步整合 DVC 以及 MLflow,囊括資料和模型的版本控制,一切都能在類似 GitHub 的圖形化介面中操作。然而彼此的操作、介面風格以及儲存方式都略有差異,其實很難有完美的選擇,建議可多方嘗試,尋求最適合的方案。
參考資料
- Best 8 Data Version Control Tools for Machine Learning 2023 https://dagshub.com/blog/best-data-version-control-tools/
- DagsHub Documentation https://dagshub.com/docs/index.html
- Data Version Control https://dvc.org/