翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
デバッガーの高度なデモと視覚化
次のデモでは、デバッガーを使用した高度なユースケースと視覚化スクリプトを具体的に説明します。
トピック
Amazon SageMaker Experiments とデバッガーを使用したモデルのトレーニングとプルーニング
Nathalie Rauschmayr 博士、 AWS 応用科学者 | 長さ: 49 分 26 秒
Amazon SageMaker Experiments とデバッガーがトレーニングジョブの管理を簡素化する方法を説明します。Amazon SageMaker Debugger は、トレーニングジョブを透過的に可視化し、トレーニングメトリクスを Amazon S3 バケットに保存します。 SageMaker Experiments では SageMaker 、Studio を通じてトレーニング情報をトライアルとして呼び出し、トレーニングジョブの視覚化をサポートします。これにより、重要度のランクに基づいて重要度の低いパラメータを減らしながら、モデルの品質を高く維持できます。
このビデオでは、事前トレーニング済みの ResNet50 および AlexNet モデルをより軽量で手頃な価格にしながら、モデルの精度の高い基準を維持するモデルプルーニング手法を示します。
SageMaker Estimator は PyTorch 、フレームワークを使用して Deep Learning Containers の PyTorch モデル動物園から提供されたアルゴリズムを AWS トレーニングし、デバッガーはトレーニングプロセスからトレーニングメトリクスを抽出します。
このビデオでは、プルーニングされたモデルの精度をモニタリングし、精度がしきい値に達したときに Amazon CloudWatch イベントと AWS Lambda 関数をトリガーし、冗長反復を避けるためにプルーニングプロセスを自動的に停止するようにデバッガーカスタムルールを設定する方法も示しています。
学習目標は次のとおりです。
-
SageMaker を使用して ML モデルトレーニングを加速し、モデル品質を向上させる方法について説明します。
-
入力パラメータ、設定、結果を自動的にキャプチャすることで、 SageMaker Experiments でトレーニングの反復を管理する方法を理解します。
-
畳み込みニューラルネットワークの重み、勾配、アクティベーション出力などのメトリクスからリアルタイムテンソルデータを自動的にキャプチャすることで、デバッガーがトレーニングプロセスを透過的にする方法を発見する。
-
デバッガーが問題を検出するときに Lambda をトリガー CloudWatch するために使用します。
-
SageMaker Experiments と Debugger を使用して SageMaker トレーニングプロセスをマスターします。
このビデオで使用するノートブックとトレーニングスクリプトは、SageMaker Debugger PyTorch 反復モデルプルーニング
次の図は、アクティベーション出力と勾配によって評価された重要度ランクに基づいて重要度の低いフィルターを 100 個切り出す AlexNet ことで、反復モデルプルーニングプロセスが のサイズを縮小する方法を示しています。
プルーニングプロセスにより、最初は 5,000 万個のパラメータが 1,800 万個に削減されました。また、推定モデルサイズが 201MB から 73MB に縮小されました。
また、モデルの精度を追跡する必要があり、次の図は、 SageMaker Studio のパラメータ数に基づいてモデルの精度の変化を視覚化するためにモデルプルーニングプロセスをプロットする方法を示しています。
SageMaker Studio で Experiments タブを選択し、プルーニングプロセスからデバッガーによって保存されたテンソルのリストを選択し、トライアルコンポーネントリストパネルを作成します。10 個の反復をすべて選択し、[Add chart] (グラフを追加) を選択してトライアルコンポーネントグラフを作成します。デプロイするモデルを決定したら、トライアルコンポーネントを選択し、アクションを実行するメニューを選択するか、[Deploy model] (モデルをデプロイ) を選択します。
注記
次のノートブック例を使用して 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フレームワークを備えた畳み込みオートエンコーダーです。畳み込みオートエンコーダは、エンコーダ部分とデコーダ部分からなるボトルネック型の畳み込みニューラルネットワークを持っています。
この例のエンコーダには、入力イメージの圧縮表現 (潜在変数) を生成するために、2 つの畳み込みレイヤーがあります。この場合、エンコーダは、サイズ (28、28) の元の入力イメージからサイズ (1、20) の潜在変数を生成し、トレーニングのデータサイズを 40 分の 1 まで大幅に縮小します。
デコーダは 2 つの畳み込み解除レイヤーを持ち、潜在変数が出力イメージを再構築することによって重要な情報を保持することを保証します。
畳み込みエンコーダーは、入力データサイズが小さく、k-means、k-NN、t-Distributed Stochastic Neighbor Embedding (t-) などのクラスターアルゴリズムのパフォーマンスでクラスター化アルゴリズムを強化しますSNE。
このノートブックの例では、次のアニメーションに示すように、デバッガーを使って潜在変数を視覚化する方法を示しています。また、t-SNE アルゴリズムが潜在的な変数を 10 個のクラスターに分類し、2 次元空間に投影する方法も示します。画像の右側にある散布図の配色は、BERTモデルと t-SNE アルゴリズムが潜在的な変数をクラスターにどの程度うまく整理しているかを示す真の値を反映しています。
SageMaker デバッガーを使用してBERTモデルトレーニングの注意をモニタリングする
トランスフォーマー (BERT) からの双方向エンコード表現は、言語表現モデルです。モデルの名前が反映されると、BERTモデルは転送学習と自然言語処理用のトランスフォーマーモデル () に基づいて構築されますNLP。
このBERTモデルは、文章内の欠落した単語の予測や、前の文に自然に従う次の文の予測など、教師なしのタスクに対して事前トレーニングされています。トレーニングデータには、Wikipedia や電子書籍などのソースから、33 億語 (トークン) の英文が含まれています。簡単な例を挙げると、BERTモデルは、サブジェクトトークンから適切な動詞トークンまたは代名詞トークンに高い注意を向けることができます。
事前トレーニング済みBERTモデルは、追加の出力レイヤーで微調整して、質問への自動応答、テキスト分類など、NLPタスクでモデルトレーニングを実現 state-of-the-artできます。
デバッガーは、微調整プロセスからテンソルを収集します。ではNLP、ニューロンの重みは注意と呼ばれます。
このノートブックでは、スタンフォード質問と回答データセットの GluonNLP モデル動物園から事前トレーニングされたBERTモデル
クエリとキーベクトルにアテンションスコアと個々のニューロンをプロットすると、誤ったモデル予測の原因を特定するのに役立ちます。 SageMaker デバッガーを使用すると、テンソルを取得して、トレーニングの進行に応じて注意頭ビューをリアルタイムでプロットし、モデルが学習していることを理解できます。
次のアニメーションは、ノートブックの例で提供されているトレーニングジョブにおける 10 個の反復に対する最初の 20 個の入力トークンのアテンションスコアを示しています。
SageMaker デバッガーを使用して畳み込みニューラルネットワーク内のクラスアクティベーションマップを視覚化する (CNNs)
このノートブックでは、 SageMaker デバッガーを使用して、畳み込みニューラルネットワーク () の画像検出と分類のクラスアクティベーションマップをプロットする方法を示しますCNNs。深層学習では、畳み込みニューラルネットワーク (CNN または ConvNet) は、ビジュアルイメージの分析に最も一般的に適用されるディープニューラルネットワークのクラスです。クラスアクティベーションマップを採用した用途の 1 つに自動運転車があり、交通標識、道路、障害物などのイメージの瞬時の検出と分類が必須とされます。
このノートブックでは、 PyTorch ResNet モデルはドイツのトラフィック署名データセット
トレーニングプロセス中、 SageMaker デバッガーはテンソルを収集してクラスアクティベーションマップをリアルタイムでプロットします。アニメーションイメージに示すように、クラスアクティベーションマップ (顕著性マップとも呼ばれます) は、アクティベーションの高い領域を赤色で強調表示します。
デバッガーによってキャプチャされたテンソルを使うと、モデルトレーニング中にアクティベーションマップがどのように進化するかを視覚化できます。モデルは、トレーニングジョブの開始時に左下隅のエッジを検出することから始まります。トレーニングが進むにつれ、焦点が中央にシフトして制限速度標識を検出し、97% の信頼度でクラス 3 (制限速度 60km/h 標識のクラス) として入力イメージを予測することに成功します。