翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
デバッガーの高度なデモと視覚化
次のデモでは、デバッガーを使用した高度なユースケースと視覚化スクリプトを具体的に説明します。
トピック
Amazon SageMaker Experiments とデバッガーを使ってモデルをトレーニングおよびチューニングする
Dr. Nathalie RauschmaTAK、 AWS 適用サイエンティスト | 長さ: 49 分 26 秒
Amazon SageMaker Experiments とデバッガーがトレーニングジョブの管理を簡素化する方法について説明します。Amazon SageMaker Debugger は、トレーニングジョブを透過的に可視化し、トレーニングメトリクスを Amazon S3 バケットに保存します。 SageMaker Experiments を使用すると、 SageMaker Studio を通じてトレーニング情報をトライアルとして呼び出し、トレーニングジョブの可視化をサポートします。これにより、重要度のランクに基づいて重要度の低いパラメータを減らしながら、モデルの品質を高く維持できます。
この動画では、モデル精度の高い標準を維持しながら、事前トレーニング済みの 50 モデルと モデルをより軽量で安価にするモデルプルーニング手法を紹介します。 ResNet AlexNet
SageMaker 推定器は、 Deep Learning Containers with PyTorch フレームワークの PyTorch AWS モデルゾーンから提供されたアルゴリズムをトレーニングし、デバッガーはトレーニングプロセスからトレーニングメトリクスを抽出します。
この動画では、プルーニングされたモデルの精度を監視し、精度がしきい値に達したときに Amazon CloudWatch イベントと AWS Lambda 関数をトリガーし、冗長な反復を避けるためにプルーニングプロセスを自動的に停止するようにデバッガーカスタムルールを設定する方法も示しています。
学習目標は次のとおりです。
-
を使用して ML モデルトレーニング SageMaker を高速化し、モデル品質を向上させる方法について説明します。
-
入力パラメータ、設定、結果を自動的にキャプチャして、 SageMaker 実験でトレーニングの反復を管理する方法を理解します。
-
畳み込みニューラルネットワークの重み、勾配、アクティベーション出力などのメトリクスからリアルタイムテンソルデータを自動的にキャプチャすることで、デバッガーがトレーニングプロセスを透過的にする方法を発見する。
-
デバッガーが問題を検出したときに Lambda をトリガー CloudWatch するために使用します。
-
SageMaker Experiments とデバッガーを使って SageMaker トレーニングプロセスをマスターします。
このビデオで使用されているノートブックとトレーニングスクリプトは、SageMaker 「デバッガー 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 分布型確率的近傍埋め込み法 (t-SNE) などのクラスタリングアルゴリズムのパフォーマンスを強化します。
このノートブックの例では、次のアニメーションに示すように、デバッガーを使って潜在変数を視覚化する方法を示しています。また、t-SNE アルゴリズムが潜在変数を 10 個のクラスターに分類し、それらを 2 次元空間に投影する方法も示しています。図の右側にある散布図の配色は、BERT モデルと t-SNE アルゴリズムが潜在変数をクラスターにどの程度適切に整理しているかを示す真の値を反映しています。
SageMaker デバッガーを使用して BERT モデルトレーニングのアテンションをモニタリングする
Transformer による双方向エンコード表現 (BERT) は、言語表現モデルです。モデルの名前が表すように、BERTモデルは、自然言語処理 (NLP) のための転送学習と Transformer モデルに基づいて構築されます。
BERT モデルは、文中の欠けている単語を予測したり、前の文に自然に続く次の文を予測するなどの教師なしタスクでに事前トレーニングされています。トレーニングデータには、Wikipedia や電子書籍などのソースから、33 億語 (トークン) の英文が含まれています。簡単な例として、BERT モデルは対象トークンから適切な動詞トークンまたは代名詞トークンに高いアテンションを付与することができます。
事前トレーニング済みの BERT モデルは、追加の出力レイヤーで微調整して、質問への自動応答、テキスト分類など、NLP タスクでの state-of-the-art モデルトレーニングを実現できます。
デバッガーは、微調整プロセスからテンソルを収集します。NLP のコンテキストでは、ニューロンの重みはアテンションと呼ばれます。
このノートブックでは、StanTAK 質問と回答データセットで GluonNLP モデルズーの事前トレーニング済み BERT モデル
クエリとキーベクトルにアテンションスコアと個々のニューロンをプロットすると、誤ったモデル予測の原因を特定するのに役立ちます。 SageMaker デバッガーを使用すると、テンソルを取得し、トレーニングの進行に合わせてアテンションヘッドビューをリアルタイムでプロットして、モデルが学習していることを把握できます。
次のアニメーションは、ノートブックの例で提供されているトレーニングジョブにおける 10 個の反復に対する最初の 20 個の入力トークンのアテンションスコアを示しています。
SageMaker デバッガーを使用して畳み込みニューラルネットワーク (CNNs) のクラスアクティベーションマップを視覚化する
このノートブックでは、 SageMaker デバッガーを使用して、畳み込みニューラルネットワーク (CNNs) で画像の検出と分類のためのクラスアクティベーションマップをプロットする方法を示します。深層学習では、畳み込みニューラルネットワーク (CNN または ConvNet) は、ビジュアルイメージの分析に最も一般的に適用される深層ニューラルネットワークのクラスです。クラスアクティベーションマップを採用した用途の 1 つに自動運転車があり、交通標識、道路、障害物などのイメージの瞬時の検出と分類が必須とされます。
このノートブックでは、 PyTorch ResNet モデルはドイツの Traffic Sign Dataset
トレーニングプロセス中に、 SageMaker デバッガーはテンソルを収集してクラスアクティベーションマップをリアルタイムでプロットします。アニメーションイメージに示すように、クラスアクティベーションマップ (顕著性マップとも呼ばれます) は、アクティベーションの高い領域を赤色で強調表示します。
デバッガーによってキャプチャされたテンソルを使うと、モデルトレーニング中にアクティベーションマップがどのように進化するかを視覚化できます。モデルは、トレーニングジョブの開始時に左下隅のエッジを検出することから始まります。トレーニングが進むにつれ、焦点が中央にシフトして制限速度標識を検出し、97% の信頼度でクラス 3 (制限速度 60km/h 標識のクラス) として入力イメージを予測することに成功します。