Amazon Web Services ブログ

Amazon SageMaker でモデルトレーニング中にメトリクスを簡単にモニタリングして視覚化する

データサイエンティストおよび開発者は、Amazon SageMaker で機械学習モデルをトレーニングしながら計算されたメトリクスにすばやく簡単にアクセスし、モニタリングし、可視化することができるようになりました。追跡するメトリクスは、Amazon SageMaker の AWS マネジメントコンソールを使用するか、Amazon SageMaker Python SDK API を使用して指定できます。モデルのトレーニングが開始されると、Amazon SageMaker は指定されたメトリクスを自動的にモニタリングして、リアルタイムで Amazon CloudWatch コンソールにストリームし、損失曲線や精度曲線などの時系列曲線を可視化します。また、Amazon SageMaker Python SDK API を使用して、プログラムでメトリクスにアクセスすることもできます。

モデルのトレーニングとは、トレーニングデータセットの例を提示することによって、モデルに予測を習得させる反復的なプロセスです。通常、トレーニングアルゴリズムでは、訓練誤差や予測精度など複数のメトリクスを計算します。これは、モデルがきちんと学習しているかの診断に役立ちます。また、十分に正則化することにより、未観測のデータに対する予測ができるようにもなります。この診断は、モデルのハイパーパラメータを調整するときや、モデルが本番環境にデプロイする可能性を備えているかどうかを評価するときに特に役立ちます。

それでは、いくつかの例を見て、Amazon SageMaker でこれらのメトリクスをモニタリングおよび可視化する方法について学びましょう。

Amazon SageMaker アルゴリズムによるメトリクスの組み込みサポートの提供

Amazon SageMaker の組み込みアルゴリズムはすべて、さまざまなモデルのトレーニング、評価、および検証メトリクスを自動で計算して発行します。たとえば、Amazon SageMaker Object2Vec アルゴリズムは、validation:cross_entropy メトリクスを発行します。Object2Vec は、単語、フレーズ、センテンスなど高次元オブジェクトの低次元高密度埋め込みを学習できる教師あり学習アルゴリズムです。類似した 2 つの埋め込みがベクトル空間上にどのように配置されるかについても学習します。これは、テキスト内の特定の文章のペアが類似しているかどうかを評価する応用性を持つ技術です。アルゴリズムによって発行された validation:cross_entropy メトリクスは、モデルによって行われた予測が検証データセットの実際のラベルと乖離している程度を測定します。モデルが十分に学習していれば、cross_entropy はモデルのトレーニングの進行に応じて減少するはずです。

次に、AWS マネジメントコンソールについて段階的に見ていきましょう。サンプルノートブックのコードスニペットを Amazon SageMaker Object2Vec モデルのトレーニングに使用する方法についても説明します。

ステップ 1: Amazon SageMaker でトレーニングジョブを開始する

サンプルノートブックには、トレーニングジョブを作成するための手順が示されています。トレーニングアルゴリズムによって発行されたすべてのメトリクスは、AWS マネジメントコンソールで確認できます。コンソールで Amazon SageMaker コンソールを開き、左側のナビゲーションペインに表示される [トレーニングジョブ] を選択します。 次に、トレーニングジョブ名を選択して、トレーニングジョブの詳細ページを開きます。

トレーニングジョブの詳細ページで、メトリクスセクションまでスクロールして、トレーニングアルゴリズムによって Amazon CloudWatch Logs および Amazon CloudWatch メトリクスのストリームに公開されたすべてのメトリクスを検索します。各メトリクスの横に表示される正規表現パターンを使用すると、Amazon SageMaker によって作成された Amazon CloudWatch ログファイルのメトリクス値をすばやく解析してフィルタリングすることができます。

次の手順では、ログファイルの手動での解析を回避し、Amazon CloudWatch メトリクスダッシュボードで直接メトリクスをモニタリングする方法について説明します。

ステップ 2: Amazon CloudWatch メトリクスダッシュボードにアクセスしてメトリクスをモニタリングおよび可視化する

トレーニングジョブの詳細ページに、トレーニングアルゴリズムによって発行されたメトリクス向けの Amazon CloudWatchメトリクスダッシュボードへの直接リンクが追加されました。

このリンクを選択して Amazon CloudWatch メトリクスダッシュボードに移動します。このダッシュボードを使用して、グラフ化および可視化のための validation:cross_entropy メトリクスを選択します。

ステップ 3: Amazon SageMaker Python SDK API を使用してメトリクスを可視化する

Amazon SageMaker Python SDK API を使用して、Amazon SageMaker Jupyter ノートブックのインラインでメトリクスを可視化することもできます。以下にコードスニペットの例を示します。

%matplotlib inline
from sagemaker.analytics import TrainingJobAnalytics

training_job_name = '<insert job name>'
metric_name = 'validation:cross_entropy'

metrics_dataframe = TrainingJobAnalytics(training_job_name=training_job_name,metric_names=[metric_name]).dataframe()
plt = metrics_dataframe.plot(kind='line', figsize=(12,5), x='timestamp', y='value', style='b.', legend=False)
plt.set_ylabel(metric_name);

ステップ 4: DescribeTrainingJob API アクションを使用する

実行中のメトリクスの値を視覚化するのに加えて、DescribeTrainingJob API アクションを使用してメトリクスの最終値にアクセスすることも可能です。

独自のトレーニングアルゴリズムのメトリクスをモニタリングおよび視覚化する

TensorFlow または PyTorch コンテナ等の組み込みの深層学習フレームワークコンテナのいずれかを使用するか、または独自のアルゴリズムコンテナを実行するかして、Amazon SageMaker でモデルトレーニングを行っている場合、Amazon SageMaker でモニタリングしたり Amazon CloudWatch メトリクスダッシュボードへ発行したりするメトリクスを、簡単に指定できるようになりました。

Amazon SageMaker コンソールを使用する

コンソールでモデルトレーニングジョブを作成中、アルゴリズムまたはモデルトレーニングスクリプトがログに発行するメトリクスの正規表現パターンを指定できるようになりました。Amazon SageMaker はメトリクスをログから自動的に解析し、Amazon CloudWatch メトリクスダッシュボードに発行してグラフ化および視覚化します。

AWS SDK を使用する

また、CreateTrainingJob API アクションを使用してトレーニングジョブを作成中に追跡するメトリクスに MetricsDefinition を追加できます。

trainingJobParams = {
   "AlgorithmSpecification": { 
      "TrainingImage": "string",
      "TrainingInputMode": "string"
   },
...............
...............
MetricDefinitions: [
  {
   "Name": "validation:rmse",
   "Regex": ".*\\[[0-9]+\\].*#011validation-rmse:(\\S+)"
  },
  {
   "Name": "validation:auc",
   "Regex": ".*\\[[0-9]+\\].*#011validation-auc:(\\S+)"
  },
  {
   "Name": "train:auc",
   "Regex": ".*\\[[0-9]+\\]#011train-auc:(\\S+).*"
  }
 ]
...............
...............
}

さらに多くの例と開発者用サポートを利用して開始する

Amazon SageMaker でメトリクスをモニタリングおよび視覚化する方法の例を見てきました。以降は、上述のサンプルノートブックを試したり、独自のトレーニングアルゴリズムにメトリクスの視覚化を追加したりできます。組み込みの Amazon SageMaker アルゴリズムによってコンピューティングされたメトリクスの一覧はdeveloper guideを参照してください。質問はdeveloper forumにお寄せください。モデリングをお楽しみください!


著者について

Sifei Li は Amazon AI のソフトウェアエンジニアとして Amazon Machine Learning プラットフォームの構築に携わっています。以前は Amazon SageMaker ローンチチームの一員でした。

 

 

 

Sumit Thakur は AWS Machine Learning プラットフォームのシニアプロダクトマネージャーで、クラウドで容易に機械学習を開始できる製品を開発することに情熱を燃やしています。彼は、Amazon SageMaker と AWS Deep Learning AMI のプロダクトマネージャーです。余暇には、自然との触れ合いや SF テレビドラマの視聴を楽しんでいます。

 

 

 

Andrew Packer は Amazon AI のソフトウェアエンジニアで、大衆向けのスケーラブルな分散機械学習インフラストラクチャの構築に夢中です。余暇には、ギターの演奏や太平洋岸北西部の探訪を楽しんでいます。