
實踐中的資料集版本控制:訓練資料的 Git
您對代碼進行版本控制。您對模型進行版本控制。但您對訓練資料進行版本控制嗎?資料集版本控制——資料集的差異比較、分支和回滾——是成熟 AI 團隊維護可重現性的方式。
您用 Git 對代碼進行版本控制。您用模型登錄表對模型進行版本控制。但當有人問「什麼資料訓練了目前生產環境中的模型?」時——典型的回答是尷尬的沉默,然後有人去查四個月前的 Slack 線索。
這個差距不只是不方便。每次出現問題時,它就是一個可重現性、調試和合規失敗,耗費團隊數週的返工。
資料集版本控制——將代碼版本控制中的分支、差異比較、標籤和回滾概 念應用於訓練資料——是成熟 AI 團隊填補這一差距的方式。以下是它在實踐中的樣子。
為什麼資料集版本控制很重要
正確地對訓練資料進行版本控制後,四個問題就消失了。
可重現性
「重新創建訓練了模型 v2.3 的確切資料集。」沒有版本控制,這個請求會觸發一次法證調查:哪些腳本運行了,應用了哪些過濾器,當時的標籤是什麼,哪些資料被排除了。有了版本控制,這只是一個簽出命令。
可重現性不是學術問題。當模型在生產環境中行為異常時,第一個調試步驟是檢查訓練資料。如果您無法精確重新創建那個資料集,您就是在盲目調試。
調試
模型 v3.1 在特定文件類型上的性能比 v3.0 差 8%。什麼改變了?如果您有版本化的資料集,您可以差異比較兩個版本,看到在它們之間添加、刪除或修改了哪些示例。沒有版本控制,調查需要數天,往往以「我們不確定」結束。
在我們見過的一個案例中,一個團隊花了兩週時間調查一個性能退化,結果是由 47 個在資料集版本之間添加的錯誤標記示例引起的。有了適當的差異比較,他們 20 分鐘就能找到它。
合規
歐盟 AI 法案要求組織記錄用於訓練 AI 系統的資料。第 10 條特別規定資料治理涵蓋「相關設計選擇、資料收集過程、資料準備操作,如標注、資料清理和資料豐富」。GDPR 的解釋權創造了類似的要求。
資料集版本控制提供了監管機構期望的審計追蹤:使用了什麼資料、何時收集的、如何轉換的,以及哪個模型在哪個版本上訓練。沒有這個,展示合規需要從碎片中重建歷史——審計員對此持有理由的懷疑。
回滾
您的團隊更新了標記指南並重新標記了 2,000 個示例。重新訓練的模型表現更差。有了資料集版本控制,您回滾到之前的資料集版本並重新訓練。沒有它,您嘗試手動撤銷標記更改——一個引入新錯誤的過程。
回滾能力將資料準備錯誤從災難變成小挫折。能夠回滾的團隊更自由 地實驗,從而更快地得到更好的資料集。
資料集版本控制的當前方法
幾個工具實現了資料集版本控制,各有不同的權衡。
DVC(資料版本控制)
採用最廣泛的工具。DVC 用大文件支持擴展 Git——您用 DVC 追蹤資料文件,同時用 Git 追蹤元資料(哈希值、管道定義)。資料存儲在遠端存儲(S3、GCS、Azure Blob)中,而 Git 存儲輕量級指針文件。
優勢: Git 原生工作流,強大的社群,適用於任何存儲後端。劣勢: 需要命令列熟練度,差異比較大型資料集很慢,沒有資料集更改的內建可視化。
lakeFS
直接在資料湖上進行類 Git 操作。lakeFS 為存儲在對象存儲中的資料提供分支、提交和合併。它在存儲層工作,所以對從 S3 兼容端點讀取的工具是透明的。
優勢: 可擴展到 PB 級別,零複製分支(分支不複製資料),與現有資料湖工具一起使用。劣勢: 需要基礎設施設置,針對資料湖而非結構化資料集優化。
Pachyderm
將資料版本控制與管道編排相結合。每個資料轉換都自動版本化,從原始資料到處理輸出創建完整的來源圖。
優勢: 自動來源追蹤、管道感知版本控制、Kubernetes 原生。劣勢: 更重的基礎設施要求、更陡峭的學習曲線,對於只需要版本控制的團隊來說過於複雜。
手動版本控制(時間戳文件夾)
大多數團隊開始的方式:dataset_v1/、dataset_v2/、dataset_20260115/。易於理解,易於實現。
劣勢: 沒有差異比較能力,沒有分支,沒有合併衝突解決,存儲效率低(完整副本),命名慣例在規模上崩潰,沒有關於什麼改變或為什麼的元資料。這種方法在 3 到 5 個版本時有效。在 20 個以上版本時失敗。
要版本控制什麼
並非所有資料工件都需要相同級別的版本控制嚴格性。以下是優先順序:
始終版本控制:
- 標記的資料——模型訓練的直接輸入。每次更改都很重要。
- 匯出配置——決定標記資料如何成為訓練資料的設置(格式、分割、過濾規則)。
- 標記指南——定義每個標籤含義的文件。這裡的更改使先前的標籤無效。
實際可行時版本控制:
- 清理後的資料——後處理、預標記。對調試清理管道很有用。
- 原始資料