Amazon Personalizeでハイパーパラメータのチューニング結果を取得できるようになりました!

2020.03.23

Amazon Personalizeではハイパーパラメータ最適化(HPO)もしくは、AutoMLによってデータとレシピに合わせた、ハイパーパラメータのチューニングが可能です。しかしながらこれまではチューニングを実行しても、どのパラメータはどの値が最も良かったのかを取得する手段がありませんでした。そんな中、先日、チューニングの結果最も良かったパラメータが取得できるようになりました。これによって、AutoMLやHPOで求めたハイパーパラメータを他のジョブで活用できるようになりました。小さなアップデートのようで、かなり便利なアップデートです。

今回はマネジメントコンソールからとBoto3からそれぞれで、AutoML機能を有効化して過去に作成したソリューションでのチューニング結果を確認してみます。

マネジメントコンソール

ソリューションバージョンの確認画面からハイパーパラメータのチューニング結果、良かったパラメータの名前と値が表示されます。

HPOもしくはAutoMLを有効化していないソリューションの場合は、今まで通り、何も表示されません。

Boto3

まずは最新のAPIに対応するためにBoto3をアップデートします。

pip install -U boto3

Boto3のdescribe_batch_inference_jobを使って、ソリューションバージョンの情報を取得します。その中にハイパーパラメータのチューニング結果が含まれています。

import boto3
personalize = boto3.client('personalize')
solution_version_arn = 'arn:aws:personalize:{region}:{account_id}:solution/{solution_name}/{version}'
personalize.describe_solution_version(solutionVersionArn=solution_version_arn)

Boto3からでもマネジメントコンソールと同様にHPOもしくはAutoMLを有効化していないソリューションの場合は、今まで通り、tunedHPOParamsキーは存在しません。

さいごに

Amazon PersonalizeでのAutoMLもしくはHPOを有効化したソリューションでのハイパーパラメータのチューニング結果を確認する方法についてお伝えしました。HPOやAutoMLを有効化したソリューションでソリューションバージョンを作成する場合、都度ハイパーパラメータチューニングが実行されるため、コスト的に非効率的でした。チューニング結果が確認できるようになったことで、とりあえずデータを入れて、AutoMLを有効化したソリューションでソリューションバージョンを作成し、その結果求まったハイパーパラメータとレシピを使って新しくソリューションを作成するという流れも可能となります。ただし、データによって最適なハイパーパラメータは変化するため、新たなメタデータを追加する場合や時間が経ってデータの傾向が変わっている可能性がある場合は再度HPOやAutoMLを試してみた方が良さそうです。

参考