Debugger を使用したモデル解析結果の Amazon SageMaker Studio 視覚化 - Amazon SageMaker

Debugger を使用したモデル解析結果の Amazon SageMaker Studio 視覚化

Amazon SageMaker 実験と Debugger を使用したモデルのトレーニングと調整

Nathalie Rauschmayr 博士、AWS 応用科学者 | 長さ: 49 分 26 秒

Amazon SageMaker 実験と Debugger により、トレーニングジョブの管理がどのように簡単になるかについて説明します。Amazon SageMaker Debugger では、トレーニングジョブが透過的に可視化され、トレーニングメトリクスが Amazon S3 バケットに保存されます。Amazon SageMaker 実験では、Amazon SageMaker Studioを通じてトレーニング情報をトライアルとして呼び出すことができます。また、トレーニングジョブの可視化がサポートされます。これにより、重要度のランクに基づいて重要度の低いパラメータを減らしながら、モデルの品質を維持できます。

このビデオでは、高いモデル精度基準を維持しながら、事前トレーニング済みの RESNet50 および AlexNet モデルをより軽く手頃にするモデルプルーニング手法について紹介します。

Amazon SageMaker Estimator は、PyTorch フレームワークを使用した AWS Deep Learning Containers 内の PyTorch Model Zoo から提供されたアルゴリズムをトレーニングし、Debugger はトレーニングプロセスからトレーニングメトリクスを抽出します。

また、このビデオでは、プルーニングされたモデルの精度を監視する Debugger カスタムルールを設定する方法、精度がしきい値に達したときに AWS CloudWatch イベントと Lambda 関数をトリガーする方法、冗長な反復を避けるためにプルーニングプロセスを自動的に停止する方法についても説明します。

学習目標は次のとおりです。

  • Amazon SageMaker を使用して ML モデルのトレーニングにかかる時間を短縮し、モデルの品質を向上する方法について説明します。

  • 入力パラメータ、設定、結果を自動的にキャプチャして、Amazon SageMaker 実験を使用してトレーニングの反復を管理する方法について説明します。

  • 畳み込みニューラルネットワークの重み、グラデーション、アクティベーション出力などのメトリクスからリアルタイムテンソルデータを自動的にキャプチャすることで、Debugger がトレーニングプロセスを透明化する方法をご覧ください。

  • Debugger が問題を検出した場合に Lambda をトリガーするには、CloudWatch を使用します。

  • Amazon SageMaker 実験と Debugger を使用して Amazon SageMaker トレーニングプロセスを習得します。

このビデオで使用されているノートブックとトレーニングスクリプトは、「SageMaker Debugger PyTorch Iterative Model Pruning」にあります。

次の図は、反復モデルのプルーニングプロセスが、アクティベーション出力とグラデーションによって評価される重要度ランクに基づいて、下位 100 個のフィルターを切り取って AlexNet のサイズを縮小する方法を示しています。

プルーニングプロセスにより、最初は 5,000 万個のパラメータが 1,800 万個に削減されました。また、推定モデルサイズが 201MB から 73MB に縮小されました。


                モデルのプルーニング結果出力の可視化を含む図

モデルの精度も追跡する必要があります。次の図では、モデルのプルーニングプロセスをプロットして、Amazon SageMaker Studio のパラメータ数に基づいてモデルの精度の変化を可視化する方法を示しています。


                Amazon SageMaker Studio で Debugger を使用したテンソル可視化の図

Amazon SageMaker Studio インターフェイスの [実験] タブで、プルーニングプロセスから Debugger によって保存されたテンソルのリストを選択し、[トライアルコンポーネントリスト] パネルを作成します。10 個の反復をすべて選択し、[グラフの追加] を選択してトライアルコンポーネントグラフを作成します。デプロイするモデルを決定したら、トライアルコンポーネントを選択してドロップダウンメニューを開くか、[モデルのデプロイ] を選択します。

注記

このノートブックの例を使用して Amazon 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')

畳み込み式オートエンコーダモデルトレーニングのモニタリングに Amazon SageMaker Debugger を使用する

このノートブックでは、Amazon SageMaker Debugger が手書き数字の MNIST イメージデータセット上で、教師なし (または自己教師あり) 学習プロセスからテンソルを可視化する方法を示します。

このノートブックのトレーニングモデルは、MXNet フレームワークを使用した畳み込み式オートエンコーダです。畳み込みオートエンコーダは、エンコーダ部分とデコーダ部分からなるボトルネック型の畳み込みニューラルネットワークを持っています。

この例のエンコーダには、入力イメージの圧縮表現 (潜在変数) を生成するために、2 つの畳み込みレイヤーがあります。この場合、エンコーダは、サイズ (28、28) の元の入力イメージからサイズ (1、20) の潜在変数を生成し、トレーニングのデータサイズを 40 分の 1 まで大幅に縮小します。

デコーダは 2 つの畳み込み解除レイヤーを持ち、潜在変数が出力イメージを再構築することによって重要な情報を保持することを保証します。

畳み込みエンコーダは、クラスタリングアルゴリズムに、より小さな入力データサイズに加えて、k-means、k-NN、t 分布型確率的近傍埋め込み法 (t-SNE) などのクラスタリングアルゴリズムの性能を提供します。

このノートブックの例では、次のアニメーションに示すように、Debugger を使用して潜在変数を可視化する方法を示します。また、t-SNE アルゴリズムが潜在変数を 10 個のクラスターに分類し、それらを 2 次元空間に投影する方法も示しています。図の右側にある散布図の配色は、BERT モデルと t-SNE アルゴリズムが潜在変数をクラスターにどの程度適切に整理しているかを示す真の値を反映しています。


                畳み込みオートエンコーダの概念図

BERT モデルトレーニングでのアテンションのモニタリングに Amazon SageMaker Debugger を使用する

Transformer による双方向エンコード表現 (BERT) は、言語表現モデルです。モデルの名前が表すように、BERTモデルは、自然言語処理 (NLP) のための転送学習Transformer モデルに基づいて構築されます。

BERT モデルは、文中の欠けている単語を予測したり、前の文に自然に続く次の文を予測するなどの教師なしタスクでに事前トレーニングされています。トレーニングデータには、Wikipedia や電子書籍など、33 億語 (トークン) の英文が含まれています。簡単な例として、BERT モデルは対象トークンから適切な動詞トークンまたは代名詞トークンに高いアテンションを付与することができます。

事前トレーニングされた BERT モデルは、追加の出力レイヤーを使用して微調整することができ、質問への自動応答、テキスト分類など、NLP タスクにおける最先端のモデルトレーニングを実現します。

Debugger は、微調整プロセスからテンソンを収集します。NLP のコンテキストでは、ニューロンの重みはアテンションと呼ばれます。

このノートブックでは、Stanford Question and Answering データセットで GluonNLP Model Zoo から事前トレーニングされた BERT モデルを使用する方法と、トレーニングジョブをモニタリングするように Amazon SageMaker Debugger をセットアップする方法を示します。

クエリとキーベクトルにアテンションスコアと個々のニューロンをプロットすると、誤ったモデル予測の原因を特定するのに役立ちます。Amazon SageMaker Debugger を使用すると、テンソルを簡単に取得し、トレーニングの進行に応じてリアルタイムでアテンションヘッドビューをプロットし、モデルが学習している内容を理解できます。

次のアニメーションは、ノートブックの例で提供されているトレーニングジョブにおける 10 個の反復に対する最初の 20 個の入力トークンのアテンションスコアを示しています。


                アテンションスコアのアニメーション

Amazon SageMaker Debugger を使用して畳み込みニューラルネットワークでクラスアクティベーションマップを可視化する

このノートブックでは、Amazon SageMaker Debugger を使用してイメージの検出と分類のためのクラスアクティベーションマップをプロットする方法について説明します。クラスアクティベーションマップを採用した用途の 1 つに自動運転車があります。自動運転車では、交通標識、道路、障害物などのイメージを瞬時に検出および分類する必要があります。

このノートブックでは、PyTorch RESnet モデルを German Traffic Sign Dataset データセットでトレーニングします。このデータセットには、交通関連オブジェクトが 40 クラス以上、イメージが 50,000 件以上の含まれています。


                CNN クラスアクティベーションマップのアニメーション

トレーニングプロセス中、Amazon SageMaker Debugger はテンソルを収集し、クラスアクティベーションマップをリアルタイムでプロットします。アニメーションイメージに示すように、クラスアクティベーションマップ (顕著性マップとも呼ばれます) は、アクティベーションの高い領域を赤色で強調表示します。

Debugger によってキャプチャされたテンソルを使用すると、モデルトレーニング中にアクティベーションマップがどのように変化するかを可視化できます。モデルは、トレーニングジョブの開始時に左下隅のエッジを検出することから始まります。トレーニングが進むにつれ、焦点が中央にシフトして制限速度標識を検出し、97% の信頼度でクラス 3 (制限速度 60km/h 標識のクラス) として入力イメージを予測することに成功します。

Amazon SageMaker Debugger と Studio を使用してテンソルを可視化する

Amazon SageMaker Studio には、Debugger によってキャプチャされたテンソル出力を解釈するための可視化が用意されています。

トレーニング中の損失曲線

次のスクリーンショットは、トレーニングの損失曲線の視覚化を示しています。トレーニングは進行中です。


                    トレーニングトライアル可視化を含むイメージ

トレーニングジョブの分析: 複数のジョブにわたる損失曲線の比較

Amazon SageMaker Studio は、複数のジョブ間で簡単な比較を可能にします (この場合は損失の比較)。これは、最もパフォーマンスの高いトレーニングジョブを特定するのに役立ちます。


                    損失曲線の比較を示すイメージ

ルールトリガーとジョブのログ

異常な条件でルールがトリガーされると、Amazon SageMaker Studio に失敗したルールのログが表示され、条件の原因を簡単に分析できます。


                    トリガーされたルールを示す図