專注Python、AI、大數(shù)據(jù),請關注公眾號七步編程!
人工智能方向的項目,和數(shù)據(jù)可視化是緊密相連的。
模型訓練過程中梯度下降過程是什么樣的?損失函數(shù)的走向如何?訓練模型的準確度怎么變化的?
清楚這些數(shù)據(jù),對我們模型的優(yōu)化至關重要。
由于人工智能項目往往伴隨著巨大數(shù)據(jù)量,用肉眼去逐個數(shù)據(jù)查看、分析是不顯示的。這時候就需要用到數(shù)據(jù)可視化和日志分析報告。
TensorFlow自帶的Tensorboard在模型和訓練過程可視化方面做得越來越好。但是,也越來越臃腫,對于初入人工智能的同學來說有一定的門檻。
人工智能方面的項目變得越來越規(guī)范化,以模型訓練、數(shù)據(jù)集準備為例,目前很多大公司已經發(fā)布了各自的自動機器學習平臺,讓工程師把更多精力放在優(yōu)化策略上,而不是在準備數(shù)據(jù)、數(shù)據(jù)可視化方面。
本文,就來給大家介紹一款新型的機器學習可視化IDE,能夠讓人工智能研發(fā)過程變得更加簡單明了。
wandb
wandb是Weights & Biases的縮寫,這款工具能夠幫助跟蹤你的機器學習項目。它能夠自動記錄模型訓練過程中的超參數(shù)和輸出指標,然后可視化和比較結果,并快速與同事共享結果。
通過wandb,能夠給你的機器學習項目帶來強大的交互式可視化調試體驗,能夠自動化記錄Python腳本中的圖標,并且實時在網頁儀表盤展示它的結果,例如,損失函數(shù)、準確率、召回率,它能夠讓你在最短的時間內完成機器學習項目可視化圖片的制作。
總結而言,wandb有4項核心功能:
- 看板:跟蹤訓練過程,給出可視化結果
- 報告:保存和共享訓練過程中一些細節(jié)、有價值的信息
- 調優(yōu):使用超參數(shù)調優(yōu)來優(yōu)化你訓練的模型
- 工具:數(shù)據(jù)集和模型版本化
也就是說,wandb并不單純的是一款數(shù)據(jù)可視化工具。它具有更為強大的模型和數(shù)據(jù)版本管理。此外,還可以對你訓練的模型進行調優(yōu)。
wandb另外一大亮點的就是強大的兼容性,它能夠和Jupyter、TensorFlow、Pytorch、Keras、Scikit、fast.ai、LightGBM、XGBoost一起結合使用。
因此,它不僅可以給你帶來時間和精力上的節(jié)省,還能夠給你的結果帶來質的改變。
舉幾個例子:
驗證數(shù)據(jù)可視化
wandb會自動選取一部分驗證數(shù)據(jù),然后把它展示到面板上。例如,手寫體預測的結果、目標識別的包圍盒。
自然語言
使用自定義圖表可視化基于NLP注意力的模型
這里只給出2個示例,除了這些,它目前還有更多實用有價值的功能。而且,它還不斷在增加新功能。
使用教程
官方稱wandb為IDE,但是它更像TensorFlow、Pytorch一樣,是一款高級Python第三方工具包。它的安裝、使用都和Python其他工具包大同小異。
安裝
wandb的使用需要Python3,安裝非常簡單,直接通過pip命令即可安裝:
$ pip install wandb
登錄網站
使用wandb需要登錄wandb網站,你可以創(chuàng)建一個新賬號,也可以用GitHub或者google賬號進行登錄。
登錄之后,你會發(fā)現(xiàn)它像很多其他的web版IDE一樣,可以創(chuàng)建項目,而且每個項目下都會有各種看板、報告。
API Keys
登錄之后,點擊右上角頭像,進入User Settings,可以看到有API Keys。這個API Keys主要用于登錄,用于連接桌面項目和wandb后臺系統(tǒng)。
回到自己電腦桌面,打開終端,使用API Keys進行登錄:
$ wandb login <YOUR API KEYS>
記得,<YOUR API KEYS>要替換成你自己的API Keys。
訓練腳本
到此為止,工具層面的配置已經完成了,你需要的就是準備好你的訓練腳本。
訓練腳本的準備和正常情況完全一樣,像導入其他工具包一樣導入wandb,在wandb可以定義配置參數(shù)、dropout、日志監(jiān)控等。
這里,給一個簡單的示例,寫一個名為train.py的腳本:
# Init wandb
import wandb
wandb.init(project="demo")
# Model instantiation code ...
# Log metrics with wandb
for _ in range(num_epochs):
train_model()
loss = calulate_loss()
wandb.log({"Loss": loss})
# Save model to wandb
np.save("weights", weights)
wandb.save("weights.npy")
可以發(fā)現(xiàn),它和Tensorboard的使用有一些相通之處,直接可以在代碼中定義初始化、上傳日志、保持模型。
開始訓練
工具配置完了,訓練腳本也準備完了,下面開始訓練模型即可。
$ python train.py
這些步驟都是在本地終端下完成的,一定不要忘記前面第3步,用API Keys登錄。
這樣的話,執(zhí)行訓練之后,它會在網頁端wandb項目管理界面自動添加一個對應的項目,點擊進入這個項目,就可以看到看板、報告等內容。