Amazon SageMakerの自動モデルチューニングにおいて学習ジョブの早期停止機能がサポートされました – Amazon SageMaker Advent Calendar 2018

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、大阪DI部の大澤です。 この記事は「クラスメソッド Amazon SageMaker Advent Calendar」の19日目の記事です。

今回は先日(12/13)対応された、Amazon SageMakerの自動モデルチューニングにおける学習ジョブの早期停止(early stopping)機能についてご紹介します。

自動モデルチューニング(ハイパーパラメータチューニング)

機械学習においてハイパーパラメータをどうするかというのは難しい問題です。ハイパーパラメータにはエポック数から最適化関数の種類、最適化関数のパラメータ、内部のネットワークの種類、レイヤー数やノード数などなど、アルゴリズムの種類に応じて様々なものがあります。ものによってはこういう時にはこんな感じでいいだろうと決めれるものもありはしますが、そうではなく、データの特性に応じて試行錯誤を繰り返さないといけないパラメータもあります。

自動モデルチューニングはそういった試行錯誤を自動的に繰り返し、モデルの評価指標の値が良くなるハイパーパラメータを探し出すことができます。

ハイパーパラメータや自動モデルチューニングについては以下の記事が詳しいです。よければご参照ください。

自動モデルチューニングにおける学習ジョブの早期停止(early stopping)機能

自動モデルチューニングジョブで実行される学習ジョブの評価指標があまり良くない場合に、その学習ジョブを自動的に終了させることが出来るという機能です。

SageMakerの組み込みアルゴリズムによっては早期停止機能を持つものもありますが、それらとは異なったものになります。組み込みアルゴリムでの早期停止機能は実行している1つの学習ジョブの中で評価指標の値のエポックごとの変化量によって停止するか判断するものになります。自動モデルチューニングにおける学習ジョブの早期停止機能はチューニングジョブで実行したその他の学習ジョブの評価指標の値との比較によって停止するかを判断するものになります。判定方法に関する詳しい内容についてはドキュメントをご覧ください。

何が嬉しいのか

ジョブの実行時間と費用を抑えることが出来ることです。

データやアルゴリズム、ハイパーパラメータ、計算リソースなどによって大きく変わりますが、機械学習モデルの一回の学習ジョブは数秒から数十分、数時間、さらには数日かかることもあります。 自動モデルチューニングで20個の学習ジョブを実行する設定であれば、20倍の時間と費用がかかることになります。(並列ジョブ数を増やせば時間は減らせます。) また、自動モデルチューニングで実行される学習ジョブ全てで評価指標の値が良い結果となる訳ではありません。場合によっては全然評価指標の値が良くならなかったりすることもあります。

早期停止機機能によって、そういった評価指標の値が良くならない学習ジョブを学習の途中で見切りをつけて終了させることができます。 その結果、停止させた学習ジョブが停止させていなかった場合に回し続けていた時間分だけ節約できます。

対応しているアルゴリズム

以下の組み込みアルゴリズムに対応しています。(2018年12月13日時点)

  • Linear Learner
  • objective_lossを評価指標(objective metric)にした場合のみサポート
  • XGBoost Algorithm
  • Image Classification Algorithm (画像分類)
  • Object Detection Algorithm (物体検出)
  • Sequence to Sequence
  • IP Insights Algorithm

また、組み込みアルゴリズム以外もエポック毎に評価指標を出力するようにすることで早期停止機能を有効化できます。詳細についてはドキュメントをご覧ください。

どうやって有効化できるのか

自動モデルチューニングジョブの設定時にTrainingJobEarlyStoppingTypeという項目で"Auto"と設定することで、自動モデルチューニングにおける学習ジョブの早期停止を有効化出来ます。

やってみる

マネジメントコンソールのSageMakerのページから自動モデルチューニングジョブを作成します。

ジョブの名前やアルゴリズム、チューニングしたいハイパーパラメータの幅などといった各設定項目を入力します。 2ページ目の中でEarly stoppingという項目を"Auto"と設定することで、早期停止機能を有効化できます。

そのほかの設定項目を入力し、チューニングジョブの作成が完了すると自動的に学習ジョブが立ち上がります。

全ての学習ジョブが終了すると以下のような感じで、各学習ジョブの結果を見ることができます。Stoppedというステータスに早期停止のジョブが含まれると思われます。今回のケースでは1件のみでしたが、これは回すジョブの数やチューニングするパラメータの種類や範囲などによって変わるものと思われます。

さいごに

今回は 「クラスメソッド Amazon SageMaker Advent Calendar」 の19日目として、 SageMakerの自動モデルチューニングにおける学習ジョブの早期停止機能についてお伝えしました。早期停止機能によって自動モデルチューニングにおける、評価指標に対する効果の弱いパラメータ設定の学習ジョブを早い段階で停止することができます。自動モデルチューニングジョブの時間短縮かつ費用最適化に繋がる、良さそうな機能です。今後モデルチューニングジョブを使う際には試してみてはいかがでしょうか。

お読みくださりありがとうございました〜!明日もお楽しみに〜!