VisualDL是百度飛槳為廣大深度學(xué)習(xí)開(kāi)發(fā)者訂制的功能完備的可視化分析工具。它可以幫助深度學(xué)習(xí)開(kāi)發(fā)者了解訓(xùn)練過(guò)程中模型參數(shù)的變化趨勢(shì)、 網(wǎng)絡(luò)層對(duì)數(shù)據(jù)特征的提取情況、網(wǎng)絡(luò)結(jié)構(gòu)應(yīng)該如何調(diào)整、精度與召回是否達(dá)到了理想的平衡等,從而實(shí)現(xiàn)有方向性的錯(cuò)誤排查,實(shí)現(xiàn)高效的模型調(diào)優(yōu)。

早在2017年VisualDL 1.0就已推出,隨著飛槳開(kāi)源深度學(xué)習(xí)平臺(tái)3年深入產(chǎn)業(yè)實(shí)踐的不斷打磨,VisualDL本次也完成了2.0版本的全新蛻變!相較VisualDL 1.0,新版本的API設(shè)計(jì)更加簡(jiǎn)潔易用、與框架銜接更為順暢、功能更豐富,界面設(shè)計(jì)也全面進(jìn)行了升級(jí),致力為老用戶帶來(lái)全新體驗(yàn),為新用戶帶來(lái)使用上的驚喜。

VisualDL 2.0能做什么?

當(dāng)前,VisualDL 2.0共有五大可視化功能。

1、標(biāo)量(Scalar)

標(biāo)量可以通過(guò)圖表的形式展示Loss、Accuracy、Learning Rate等參數(shù)指標(biāo)在訓(xùn)練過(guò)程中的變化趨勢(shì),幫助開(kāi)發(fā)者了解其是否朝著理想的方向優(yōu)化,便于發(fā)現(xiàn)異常情況,及時(shí)排查并修復(fù)問(wèn)題;另外,通過(guò)對(duì)比多組實(shí)驗(yàn)的訓(xùn)練參數(shù),開(kāi)發(fā)者們能深入探究參數(shù)對(duì)模型效果的影響,加速模型的調(diào)優(yōu)。

實(shí)現(xiàn)代碼:

2、數(shù)據(jù)樣本分析(Sample)

數(shù)據(jù)樣本分析可以在多種深度學(xué)習(xí)任務(wù)中發(fā)揮重要作用。例如在計(jì)算機(jī)視覺(jué)任務(wù)中,該功能不僅可以查看每個(gè)訓(xùn)練批次中的指定的樣本圖片,也可以展示圖像數(shù)據(jù)的在訓(xùn)練過(guò)程中間階段的提取特征情況,便于開(kāi)發(fā)者們觀察圖片數(shù)據(jù)在訓(xùn)練過(guò)程中的狀態(tài),進(jìn)而深入了解訓(xùn)練過(guò)程及效果。

實(shí)現(xiàn)代碼:

在語(yǔ)音識(shí)別或合成任務(wù)中,數(shù)據(jù)樣本分析功能可以幫助開(kāi)發(fā)者實(shí)時(shí)獲取訓(xùn)練過(guò)程中的音頻數(shù)據(jù),評(píng)估語(yǔ)音識(shí)別或合成的效果,挑選最優(yōu)的訓(xùn)練模型。

實(shí)現(xiàn)代碼:

3、模型結(jié)構(gòu)(Graph)

模型結(jié)構(gòu)功能支持一鍵可視化模型網(wǎng)絡(luò)結(jié)構(gòu)。開(kāi)發(fā)者們可查看模型屬性、節(jié)點(diǎn)信息、節(jié)點(diǎn)輸入輸出等,并支持節(jié)點(diǎn)搜索功能,協(xié)助開(kāi)發(fā)者們快速分析模型結(jié)構(gòu)并了解數(shù)據(jù)流向。

當(dāng)前支持如下兩種操作方式:

模型文件拖拽上傳

在命令行加入?yún)?shù)–model并指定模型文件路徑(非文件夾路徑),運(yùn)行命令后即可啟動(dòng):

4、直方圖(Histogram)

直方圖可以展示Tensor(weight、bias、gradient等)數(shù)據(jù)在訓(xùn)練過(guò)程中的變化趨勢(shì),深入了解模型各層效果,幫助開(kāi)發(fā)者精準(zhǔn)調(diào)整模型結(jié)構(gòu)。

實(shí)現(xiàn)代碼:

5、PR曲線(PRCurve)

PR曲線可以展示每一分類在不同閾值下的精度(Precision)-召回率(Recall)曲線,幫助開(kāi)發(fā)者權(quán)衡模型精度和召回率之間的平衡,設(shè)定最佳閾值。精度是指正樣本的數(shù)量除以所有被選中樣本的數(shù)量,而召回率是指所有正樣本中被推理正確的比例,由此可見(jiàn)精度越高,召回率越高,我們的模型就越好。但是很多情況下,魚(yú)和熊掌不可兼得,無(wú)法同時(shí)保證精度和召回率都是最高,此時(shí)需要通過(guò)PR曲線,權(quán)衡精度與召回率,確定最佳閾值。

實(shí)現(xiàn)代碼:

為了便于大家更好的了解VisualDL,我們結(jié)合一個(gè)簡(jiǎn)單的實(shí)際模型例子來(lái)更直觀的看下這幾個(gè)功能,那就是深度學(xué)習(xí)中的“Hello World”,手寫(xiě)數(shù)字識(shí)別。

VisualDL 2.0怎么用?

假設(shè)在一個(gè)風(fēng)和日麗的早晨,作為深度學(xué)習(xí)愛(ài)好者的你,想要建立一個(gè)簡(jiǎn)單的LeNet模型進(jìn)行手寫(xiě)數(shù)字識(shí)別,在辛苦完成模型搭建后,進(jìn)入模型訓(xùn)練時(shí),卻看到了如下一幕:

你心里一沉,這精度怎么抖得那么厲害啊。訓(xùn)練中哪里出現(xiàn)問(wèn)題了呢?到底誰(shuí)是“兇手”?可是連問(wèn)題出在哪都不知道,模型優(yōu)化和修復(fù)更是無(wú)從下手。這時(shí)你想起幾日前偶然發(fā)現(xiàn)的深度學(xué)習(xí)可視化分析工具——VisualDL,心中頓時(shí)升起希望,因?yàn)樵谟?xùn)練之前,已經(jīng)把下面的代碼添加到訓(xùn)練腳本中了。

接下來(lái)就執(zhí)行下面的命令來(lái)開(kāi)始奇幻的破案(調(diào)優(yōu))之旅吧!

執(zhí)行命令后,即可得到這樣一個(gè)網(wǎng)址http://localhost:8080/,打開(kāi)瀏覽器輸入這個(gè)網(wǎng)址即可查看究竟發(fā)生了什么。首先來(lái)看看案發(fā)現(xiàn)場(chǎng)。。

點(diǎn)擊“標(biāo)量數(shù)據(jù)”頁(yè)簽查看模型的Loss和Accuracy整體變化趨勢(shì),也就是把剛才的日志信息通過(guò)圖形直觀的展示出來(lái)。這部分對(duì)應(yīng)的代碼如下所示:

一眼望去,這哪是Loss和Accuracy的變化曲線啊,這明顯是心率不齊啊,讓人有打120叫救護(hù)車的沖動(dòng)了!

顯而易見(jiàn),Accuracy一直在10%左右徘徊,Loss一直無(wú)法下降,由此我們開(kāi)始逐個(gè)查看問(wèn)題出在哪個(gè)環(huán)節(jié)。首先看看模型結(jié)構(gòu)的實(shí)際樣子,是否是結(jié)構(gòu)設(shè)計(jì)出了問(wèn)題。

點(diǎn)擊“網(wǎng)絡(luò)結(jié)構(gòu)”頁(yè)簽,將保存在“./model”目錄下的模型文件拖進(jìn)頁(yè)面即可看到模型的結(jié)構(gòu)。

通過(guò)觀察模型結(jié)構(gòu)、節(jié)點(diǎn)屬性、模型屬性、數(shù)據(jù)流向,咱們可以直觀的發(fā)現(xiàn)整體結(jié)構(gòu)是符合預(yù)期的,也就是說(shuō)模型網(wǎng)絡(luò)本身是清白的,那么是否是模型“吃進(jìn)”的數(shù)據(jù)有問(wèn)題呢?

點(diǎn)擊“樣本數(shù)據(jù)”查看訓(xùn)練中的樣本數(shù)據(jù)。這部分對(duì)應(yīng)的代碼如下所示:

通過(guò)查看每批次數(shù)據(jù)的第一張圖片,發(fā)現(xiàn)輸入數(shù)據(jù)也是沒(méi)有問(wèn)題的。那么咱們?cè)賮?lái)“回放錄像”,看看每一時(shí)間步的參數(shù)變化情況吧。

點(diǎn)擊“直方圖”頁(yè)簽,查看訓(xùn)練過(guò)程中每一時(shí)間步權(quán)重和偏差的變化情況,就如同回放整個(gè)訓(xùn)練過(guò)程的監(jiān)控錄像一樣,讓訓(xùn)練過(guò)程中參數(shù)變化不正常的問(wèn)題無(wú)所遁形!這部分對(duì)應(yīng)的代碼如下所示:

通過(guò)查看后發(fā)現(xiàn),每一層的權(quán)重和偏差的變化正常。由此證明不是特定層的初始參數(shù)配置出現(xiàn)問(wèn)題,排除了模型結(jié)構(gòu)、數(shù)據(jù)樣本、每層網(wǎng)絡(luò)參數(shù)配置后,還剩下超參數(shù)的配置,因此決定嘗試不同的學(xué)習(xí)率(0.001,0.03,0.05,0.08,0.1),并通過(guò)VisualDL的多實(shí)驗(yàn)對(duì)比功能,來(lái)觀察學(xué)習(xí)率對(duì)模型訓(xùn)練效果的影響情況。

啟動(dòng)多實(shí)驗(yàn)對(duì)比功能非常的簡(jiǎn)單,只需要在訓(xùn)練腳本中參考如下代碼實(shí)現(xiàn)同一個(gè)目錄下記錄多份不同學(xué)習(xí)率的訓(xùn)練日志文件,并啟動(dòng)相應(yīng)訓(xùn)練即可。接著啟動(dòng)VisualDL,就會(huì)得到多組實(shí)驗(yàn)記錄對(duì)比圖了。

你終于發(fā)現(xiàn)了問(wèn)題所在了,原來(lái)是學(xué)習(xí)率設(shè)置的過(guò)大了,導(dǎo)致Loss無(wú)法下降收斂,根據(jù)“標(biāo)量數(shù)據(jù)”展示的效果,當(dāng)學(xué)習(xí)率為0.001時(shí)(深藍(lán)色線條),Loss呈現(xiàn)優(yōu)美的下降趨勢(shì)且后續(xù)漸漸收斂,Accuracy呈現(xiàn)逐漸上升并趨于平穩(wěn),因此你將學(xué)習(xí)率設(shè)置為0.001,使得模型呈現(xiàn)最佳效果。

但是你還不滿足于現(xiàn)狀,想要選擇一個(gè)最佳閾值,使得模型的精準(zhǔn)度和召回率都達(dá)到最優(yōu),于是又開(kāi)始使用“PR曲線”功能。

點(diǎn)擊“PR曲線”頁(yè)簽,權(quán)衡精確度與召回間的關(guān)系,確定最佳閾值。這部分對(duì)應(yīng)的代碼如下所示:

以上圖為例,該圖是手寫(xiě)數(shù)字識(shí)別任務(wù)中類別7對(duì)應(yīng)的PR曲線,從圖中可以看出,當(dāng)閾值為0.10、0.15或0.20時(shí),準(zhǔn)確率和召回率同時(shí)達(dá)到最高值,因此選擇上述中的任意閾值,模型都可達(dá)到最佳效果。

最終,在VisualDL的幫助下,你確定了模型閾值為0.15,學(xué)習(xí)率為0.001,至此,一個(gè)效果理想的手寫(xiě)數(shù)字識(shí)別模型搭建完成。

寫(xiě)在最后

看到這里,相信大家已經(jīng)對(duì)VisualDL 2.0有了一個(gè)比較全面的了解,也發(fā)現(xiàn)它是真的又有用,又好用吧?然而這還不夠,飛槳團(tuán)隊(duì)還為它增加了諸多軟實(shí)力:

1、高兼容性:全面支持飛槳、ONNX、Caffe等市面主流模型結(jié)構(gòu)可視化,廣泛支持各類用戶實(shí)現(xiàn)可視化分析。

2、生態(tài)支持全面:與飛槳的多個(gè)套件、工具組件以及AI學(xué)習(xí)和實(shí)訓(xùn)社區(qū)AI Studio全面打通,為開(kāi)發(fā)者們?cè)陲w槳生態(tài)系統(tǒng)中提供最佳使用體驗(yàn)。

在未來(lái),VisualDL將會(huì)持續(xù)加入新的功能組件,致力于為開(kāi)發(fā)者們提供簡(jiǎn)單易用、功能豐富、性能強(qiáng)大的可視化分析工具,助力模型的優(yōu)化過(guò)程。

分享到

zhangnn

相關(guān)推薦