偵錯工具進階示範和視覺化 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

偵錯工具進階示範和視覺化

下列示範將逐步引導您使用偵錯工具完成進階使用案例和視覺化指令碼。

使用 Amazon SageMaker 實驗和調試器訓練和調整您的模型

AWS 應用科學家娜塔莉·羅舒馬爾博士 | 長度:49 分 26 秒

了解 Amazon SageMaker 實驗和除錯器如何簡化訓練任務的管理。Amazon SageMaker 偵錯工具提供訓練任務的透明度,並將訓練指標儲存至 Amazon S3 儲存貯體。 SageMaker 實驗使您可以通過 SageMaker Studio 調用培訓信息作為驗,並支持培訓任務的可視化。這可協助您維持模型的高品質,同時根據重要性排名減少較不重要的參數。

本影片示範模型修剪技術,讓預先訓練的 ResNet 50 個模型和模 AlexNet 型更輕且價格實惠,同時保持模型精確度的高標準。

SageMaker 估算器會在具有 PyTorch 架構的 AWS Deep Learning Containers 中訓練從 PyTorch 模型動物園提供的演算法,而偵錯工具會從訓練程序擷取訓練指標。

影片也示範如何設定偵錯工具自訂規則來觀察已修剪模型的準確性、在準確度達到閾值時觸發 Amazon CloudWatch 事件和 AWS Lambda 函數,以及如何自動停止修剪程序以避免多餘的迭代。

學習目標如下:

  • 了解如何使用 SageMaker 來加速 ML 模型訓練並改善模型品質。

  • 透過自動擷取輸入參數、組態和結果,瞭解如何使用「 SageMaker 實驗」管理訓練反覆項目。

  • 探索偵錯工具如何從加權、批度和卷積神經網路的啟用輸出等指標自動擷取即時張量資料,以讓訓練程序透明化。

  • 用 CloudWatch 於在偵錯工具發現問題時觸發 Lambda。

  • 使用 SageMaker 實驗和調試器掌握 SageMaker 培訓過程。

您可以從SageMaker 調試器 PyTorch 迭代模型修剪中找到此視頻中使用的筆記本和培訓腳本。

下圖顯示迭代模型修剪程序如何根據啟動輸出和漸層評估的 AlexNet 重要性等級,切除 100 個最不重要的濾鏡來減少的大小。

刪減程序已將最初的 5000 萬個參數縮減為 1800 萬個參數。它也已將預估模型大小從 201 MB 縮減為 73 MB。

包含模型刪減結果輸出視覺效果的影像

您還需要追蹤模型精確度,下圖顯示如何繪製模型修剪過程,以根據 SageMaker Studio 中的參數數目視覺化模型精度的變化。

在 SageMaker Studio 中使用調試器的張量可視化圖像

在 SageMaker Studio 中,選擇 [實驗] 索引標籤,從修剪程序中選取由偵錯工具儲存的張量清單,然後撰寫試用元件清單面板。將十個反覆運算全選,然後選擇新增圖表,以建立試驗元件圖表。決定要部署的模型之後,請選擇試驗元件和要執行動作的功能表,或選擇部署模型

注意

若要使用下列筆記本範例透過 SageMaker Studio 部署模型,請在train.py指令碼中的train函式結尾新增一行。

# In the train.py script, look for the train function in line 58. def train(epochs, batch_size, learning_rate): ... print('acc:{:.4f}'.format(correct/total)) hook.save_scalar("accuracy", correct/total, sm_metric=True) # Add the following code to line 128 of the train.py script to save the pruned models # under the current SageMaker Studio model directory torch.save(model.state_dict(), os.environ['SM_MODEL_DIR'] + '/model.pt')

使用 SageMaker 偵錯工具來監視卷積自動編碼器模型訓練

本筆記本示範 SageMaker 除錯器如何在手寫數字的 MNIST 影像資料集上,視覺化來自無監督 (或自我監督) 學習程序的張量。

此筆記本中的訓練模型是具有 MXNet 架構的卷積自動編碼器。此卷積自動編碼器具有瓶頸成形的卷積神經網路,其中包含一個編碼器部分和一個解碼器部分。

此範例中的編碼器有兩個卷積層,可產生輸入影像的壓縮表示法 (隱含變數)。在此案例中,編碼器會從大小 (28、28) 的原始輸入影像產生大小 (1、20) 的隱含變數,並大幅縮減訓練的資料大小 (高達 40 次)。

解碼器具有兩個非卷積層,而且可以重新建構輸出影像,以確保隱含變數保留重要資訊。

卷積編碼器可透過較小的輸入資料大小為叢集演算法提供技術,以及提供 k-means、k-NN 和 t-Distributed Stochastic Neighbor Embedding (t-SNE) 等叢集演算法的效能。

此筆記本範例示範如何使用偵錯工具視覺化隱含變數,如下列動畫所示。它也示範 t-SNE 演算法如何將隱含變數分類為十個叢集,並將它們投影到 2D 空間中。影像右側的散佈圖色彩結構呈現真正的值,說明 BERT 模型和 t-SNE 演算法將隱含變數整理為叢集的情況是否良好。

卷積自動編碼器的概念圖

使用 SageMaker 偵錯工具監視 BERT 模型訓練中的注意力

來自轉換器的雙向編碼表示法 (BERT) 是一種語言表示法模型。正如此模型的名稱所示,BERT 模型建置於適用於自然語言處理 (NLP) 的轉換學習轉換器模型

BERT 模型會在非監督式任務上預先訓練,例如預測句子中的遺失單字或預測自然接著上一句的下一個句子。訓練資料包含 33 億個英文文字的單字 (字符),來源為 Wikipedia 和電子書等。若為簡單範例,BERT 模型可將高注意力提供給來自主詞字符的適當動詞字符或代名詞字符。

預先訓練的 BERT 模型可以使用額外的輸出層進行微調,以實現 NLP 任務中的 state-of-the-art 模型訓練,例如自動回應問題、文字分類等。

偵錯工具從微調程序收集張量。在 NLP 的內容中,神經元的權重稱為注意力

本筆記本示範如何使用來自 GluonNLP 模型動物園的預先訓練過的 BERT 模型,以及如何設定 SageMaker 偵錯工具來監控訓練工作。

在查詢和關鍵向量中繪製注意力分數 和個別神經元,可協助您識別不正確模型預測的原因。使用 SageMaker調試器,您可以檢索張量並在培訓進行時實時繪製注意頭視圖,並了解模型正在學習的內容。

下列動畫顯示筆記本範例提供的訓練任務中,十個反覆運算的前 20 個輸入字符的注意力分數。

注意力分數的動畫

使用 SageMaker 調試器可視化卷積神經網絡(CNN)中的類激活映射

本筆記本示範如何使用 SageMaker 偵錯工具繪製類別啟動映射,以便在卷積神經網路 (CNN) 中進行影像偵測和分類。在深度學習中,卷積神經網絡(CNN 或 ConvNet)是一類深度神經網絡,最常用於分析視覺圖像。自動駕駛車輛是採用分類啟用地圖的其中一個應用程式,這需要影像的立即偵測和分類,例如交通號誌、道路和障礙物。

在這本筆記本中,該 PyTorch ResNet 模型是根據德國交通標誌數據集進行培訓,該數據集包含 40 多種與流量相關的對象和總計超過 50,000 張圖像。

CNN 類別啟用地圖的動畫

在培訓過程中, SageMaker 調試器會收集張量以實時繪製類激活映射。如此動畫影像所示,類別啟用地圖 (也稱為顯著性地圖) 會以紅色突顯高度啟用的區域。

您可以使用偵錯工具擷取的張量,視覺化啟用地圖如何在模型培訓期間進化。首先,模型會在訓練任務開始時偵測左下角的邊緣。在訓練繼續進行的同時,焦點會移動到中央並偵測速度限制號誌,而模型成功地將輸入影像預測為類別 3,這是速度限制 60km/h 號誌的類別,具有 97% 的信賴度。