
如果說到深度學習中訓練資料的記錄工具,最先想到應該是TensorBoard(或者TensorBoardX)。不過,相比較TensorBoard而言,Wandb更加的強大,主要展現在以下的幾個方面:
-
複現模型:Wandb更有利于複現模型。
這是因為Wandb不僅記錄名額,還會記錄超參數和代碼版本。
-
自動上傳雲端:
如果你把項目交給同僚或者要去度假,Wandb可以讓你便捷地檢視你制作的所有模型,你就不必花費大量時間來重新運作舊實驗。
-
快速、靈活的內建:
隻需5分鐘即可把Wandb加到自己的項目。
下載下傳Wandb免費的開源Python包,然後在代碼中插入幾行,以後你每次運作模型都會得到記錄完備的名額和記錄。
-
集中式訓示闆:
Wandb提供同樣的集中式訓示闆。不管在哪裡訓練模型,不管是在本地機器、實驗室叢集還是在雲端執行個體;
這樣就不必花時間從别的機器上複制TensorBoard檔案。
-
強大的表格:
對不同模型的結果進行搜尋、篩選、分類和分組。
可以輕而易舉地檢視成千上萬個模型版本,并找到不同任務的最佳模型。
而TensorBoard本身不适合大型項目。
1 Wandb
1.1 功能
- 儲存訓練運作中使用的超參數
- 搜尋、比較和可視化訓練的運作
- 在運作的同時分析系統硬體的情況如:CPU和GPU使用率
- 在團隊中分享訓練資料
- 永遠儲存可用的實驗記錄
1.2 提供的工具
- Dashboard:記錄實驗過程、将結果可視化;
- Reports:儲存和分享可複制的成果/結論;
- Sweeps:通過改變超參數來優化模型;
- Artifacts:可以自己搭建pipline實作儲存儲存資料集和模型以及評估結果的流程。
1.3 将會上傳哪些内容?Wandb記錄的全部資料都儲存在本地機器上,位于一個wandb路徑,然後同步到雲端。(1)自動記錄
- 系統名額:處理器和GPU使用率、網絡等。由指令nvidia-smi得出這些名額,這些名額位于運作頁“系統”頁籤。
- 指令行:記錄标準輸出和标準錯誤,并顯示于運作頁“日志”頁籤。
- git送出:記錄最近的git送出,并顯示于運作頁“概況”頁籤。
- 檔案:requirements.txt檔案,以及用于運作項并儲存在wandb路徑的全部檔案,将被上傳并顯示于運作頁“檔案”頁籤。
(2)有明确調用才記錄 當涉及資料和模型名額時,你可以明确決定要記錄哪些東西。
- 資料集:你必須明确記錄圖像或其它資料集樣本,這樣才能儲存到權阈。
- PyTorch梯度:加入wandb.watch(模型),即可在界面中看到權值的梯度直方圖。
- 配置(config):記錄超參數、資料集連結以及所使用的架構名稱,并作為config的參數,傳值方式如下:wandb.init(config=your_config_dictionary)
- 名額:用wandb.log()記錄模型的參數。如果你記錄的是訓練循環内的名額,如準确率、損失,就可以在界面中看到實時更新的圖表。
2 Wandb的五行代碼使用法
Wandb 基本接口如下:
wandb.init — 在訓練腳本開頭初始化一個新的運作項;
wandb.config — 跟蹤超參數;
wandb.log — 在訓練循環中持續記錄變化的名額;
wandb.save — 儲存運作項相關檔案,如模型權值;
wandb.restore — 運作指定運作項時,恢複代碼狀态。
對于Any framework,使用wandb的代碼如下:
# Flexible integration for any Python script
import wandb
# 1. Start a W&B run
wandb.init(project='gpt3')
# 2. Save model inputs and hyperparameters
config = wandb.config
config.learning_rate = 0.01
# Model training here
# 3. Log metrics over time to visualize performance
wandb.log({"loss": loss})