快速入門DVC(三):資料與模型版本管理
這是我參與2022首次更文挑戰的第8天,活動詳情檢視:2022首次更文挑戰
資料和模型版本控制是 DVC 的基礎層用於管理大型檔案、資料集和機器學習模型。使用常規的 Git 工作流程,但不要在 Git 庫中儲存大檔案。 大資料檔案單獨儲存,來實現高效共享。想象一下,讓 Git 以與處理小程式碼檔案相同的效能來處理任意大的檔案和目錄,該有多酷?例如,使用git clone
並在工作區檢視資料檔案和機器學習模型。或者使用 git checkout
在不到一秒的時間內切換到 100Gb
檔案的不同版本。
DVC 的基礎由一些命令組成,通過與 Git 一起執行以跟蹤大檔案、目錄或 ML 模型檔案。 簡而言之,DVC 就是“用於管理資料的Git”。
在我的上一篇文章快速入門DVC(二):安裝及初始化中建立了一個Git專案,並進行了初始化。現在,我們使用dvc add
來跟蹤檔案或目錄。
下載檔案(dvc get
)
跟蹤檔案之前,我們使用dvc get
預先下載資料檔案。
```bash
進入到之前初始化好的專案目錄下
$ cd example-get-started
$ dvc get http://github.com/iterative/dataset-registry \ get-started/data.xml -o data/data.xml
```
跟蹤檔案(dvc add
)
接下來,跟蹤檔案。
dvc add data/data.xml
通過以上命令,DVC 將關於新增的檔案(或目錄)的資訊儲存在名為 data/data.xml.dvc
的特殊 .dvc
檔案中(這是一個人類可讀格式的小文字檔案)。這個元資料檔案是原始資料檔案的佔位符,這樣就可以像使用 Git 的原始碼一樣輕鬆地進行版本控制。同時,原始資料檔案會被放在 .gitignore
檔案中。
``` $ cat data/.gitignore
/data.xml ```
將元資料檔案新增到Git中進行跟蹤。
$ git add data/data.xml.dvc data/.gitignore
$ git commit -m "Add raw data"
dvc add
會將資料移動到專案的快取中,並將其連結回工作區。
```bash $ tree .dvc/cache
../.dvc/cache └── a3 └── 04afb96060aad90176268345e10355 ```
我們剛剛新增的data.xml
檔案的hash值(a304afb...
)決定了上面的快取路徑。
如果你檢查 data/data.xml.dvc
,你也會在這裡發現它:
```
$ cat data/data.xml.dvc
outs:
- md5: a304afb96060aad90176268345e10355
path: data.xml
```
儲存資料檔案到遠端儲存庫(dvc push
)
您可以使用 dvc push
上傳 DVC 跟蹤的資料或模型檔案,以便安全地遠端儲存它們。 這也意味著後面您可以使用 dvc pull
在其他環境中恢復它們。
首先,我們需要設定一個遠端儲存庫的地址,DVC 支援許多遠端儲存型別,包括 Amazon S3
、SSH
、Google Drive
、Azure Blob Storage
和 HDFS
,從上圖我們也可以看到,程式碼與模型和資料檔案是分開儲存的。
```bash
配置遠端Git倉庫
$ git remote add origin http://gitee.com/xxxx/dvc-samples.git
配置遠端資料儲存庫(注:簡單起見,這裡我用的是本地的其他資料夾作為遠端儲存庫,不推薦)
$ mkdir -p /home/lgd/dvc/local_remote_data_register $ dvc remote add -d local_remote /home/lgd/dvc/local_remote_data_register
檢視配置
$ cat .dvc/config
[core] remote = local_remote ['remote "local_remote"'] url = /home/lgd/dvc/local_remote_data_register
新增dvc配置檔案到本地Git倉庫
$ git add .dvc/config $ git commit -m "Configure local remote storage"
或者使用以下命令代替上面兩條命令
git commit .dvc/config -m "Configure local remote"
```
DVC 遠端可讓您將 DVC 跟蹤的資料副本儲存在本地快取之外(通常是雲端儲存服務)。
注意: 我這裡Demo使用的是“本地遠端”,雖然“本地遠端”看起來似乎自相矛盾,但其實並非必須如此。 “本地”指的是檔案位置為本地檔案系統中的另一個資料夾。 “遠端”就是我們所說的 DVC 專案的遠端儲存。 它本質上是一個本地資料備份。
然後,我們使用dvc push
將本地快取的資料複製到我們之前設定的遠端儲存中。
bash
$ dvc push
您可以使用以下命令檢查資料是否已儲存在 DVC 遠端儲存庫中:
```bash $ ls -R /home/lgd/dvc/local_remote_data_register
/home/lgd/dvc/local_remote_data_register/: a3
/home/lgd/dvc/local_remote_data_register/a3: 04afb96060aad90176268345e10355 ```
通常,我們也需要 git commit
和 git push
對應的 .dvc
檔案,將.dvc
元資料檔案提交本地倉庫並推送到Git遠端倉庫,示例如下:
bash
$ git push origin main
下載與恢復資料(dvc pull
)
將 DVC 跟蹤的資料和模型檔案儲存在遠端倉庫之後,我們可以在需要時使用 dvc pull
將其下載到該專案的其他副本中。 通常,我們在 git clone
和 git pull
之後執行它。
在其他環境下載專案的資料,示例如下:
```bash $ git clone http://gitee.com/xxxx/dvc-samples.git
$ cd dvc-samples
$ git pull origin main
$ dvc pull ```
在本專案中恢復資料,示例如下: ```bash $ cd example-get-started
假設我們刪除了本地快取的資料
$ rm -rf .dvc/cache $ rm -f data/data.xml
恢復資料
$ dvc pull origin main ```
修改資料檔案
當您對檔案或資料夾進行更改時,再次執行 dvc add
以跟蹤最新版本。
```bash
通過將資料集加倍來模擬修改資料
$ cp data/data.xml /tmp/data.xml $ cat /tmp/data.xml >> data/data.xm
跟蹤最新版本
dvc add data/data.xml
``
通常情況下,我們還需要執行
git commit和
dvc push` 來儲存更改。
bash
$ git commit data/data.xml.dvc -m "Dataset updates"
$ dvc push
在版本之間進行切換(dvc checkout
)
通常的工作流程是先使用git checkout
(切換分支或切換.dvc
檔案版本),然後執行dvc checkout
以同步資料。
```bash
首先,獲取資料集的先前一個版本,讓我們回到資料的原始版本
$ git checkout HEAD~1
同步資料
$ dvc checkout ```
之後,讓我們提交.dvc
檔案到本地Git倉庫(這次不需要做 dvc push
,因為這個原始版本的資料集已經儲存在本地快取和遠端儲存庫了)。
```bash $ git commit data/data.xml.dvc -m "Revert dataset updates"
$ git push origin main ```
總結
其實,從技術上來講,DVC 甚至不是版本控制系統! .dvc
元資料檔案內容定義了資料檔案的版本,本質上是通過 Git 來提供版本控制。 DVC 反過來建立這些 .dvc
檔案,然後更新它們,並有效地同步工作空間中 DVC 跟蹤的資料以匹配它們。
- 2022年終總結:路雖遠,行則將至
- 監控生產環境中的機器學習模型
- 監控模型在生產環境的效能(Arize)
- DVC 使用案例(二):共享資料與模型檔案
- 純乾貨!構建Dockfile映象的十三個最佳實踐點
- 無程式碼 AI 概覽(Levity)
- 無程式碼人工智慧平臺:成功的基石(Noogata)
- 我們為什麼建立無程式碼 AI 平臺 Noogata
- 無程式碼人工智慧:它是什麼,它為什麼重要?(Noogata)
- 快速入門DVC(三):資料與模型版本管理
- 以資料為中心的人工智慧應該如何實施(Valohai)
- 如何將 MLOps 用於物聯網和邊緣裝置(Valohai)
- 無程式碼 AI 和 MLOps:無程式碼 AI 僅用於不會程式碼的終端使用者(Valohai)
- 用於 MLOps 的最佳訓練編排工具(Aporia)
- 如何理解機器學習中的偏見和公平(Aporia)
- 機器學習模型監控(Aporia)
- Arize AI 對頂級 ML 團隊調查得出的 3 個結論
- MLflow 快速入門
- Algorithmia 執行長 Diego Oppenheimer 談從研發到人工智慧的投資回報率
- 淺析Linux中的五種IO模型