アルゴリズムを使用してハイパーパラメータ調整ジョブを実行する - Amazon SageMaker

アルゴリズムを使用してハイパーパラメータ調整ジョブを実行する

次のセクションでは、アルゴリズムリソースを使用して Amazon SageMaker でハイパーパラメータチューニングジョブを実行する方法について説明します。ハイパーパラメータ調整ジョブは、指定したアルゴリズムとハイパーパラメータの範囲を使用して、データセットに対して多数のトレーニングジョブを実行することにより、モデルの最適なバージョンを見つけます。さらに、選択したメトリクスでの測定に基づいて、最もパフォーマンスの高いモデルになるハイパーパラメータ値を選択します。詳細については、「SageMaker の自動モデルチューニング」を参照してください。

アルゴリズムリソースを使用してハイパーパラメータチューニングジョブを作成するには、Amazon SageMaker コンソール、低レベルの Amazon SageMaker API、または Amazon SageMaker Python SDK を使用します。

アルゴリズムを使用してハイパーパラメータ調整ジョブを実行する (コンソール)

アルゴリズムを使用してハイパーパラメータ調整ジョブを実行するには (コンソール)
  1. https://console.aws.amazon.com/sagemaker/ で SageMaker コンソールを開きます。

  2. [Algorithms (アルゴリズム)] を選択します。

  3. [My algorithms (マイアルゴリズム)] タブのリストから作成したアルゴリズムを選択するか、[AWS Marketplace subscriptions (AWS Marketplace サブスクリプション)] タブでサブスクライブしたアルゴリズムを選択します。

  4. [ハイパーパラメータ調整ジョブの作成] を選択します。

    選択したアルゴリズムが自動的に選択されます。

  5. [ハイパーパラメータ調整ジョブの作成] ページで、以下の情報を指定します。

    1. [Warm start (ブート)] では、以前のハイパーパラメータ調整ジョブの情報をこのハイパーパラメータ調整ジョブの開始点として使用する場合に [Enable warm start (ウォームスタートを有効にする)] を選択します。詳細については、「ウォームスタートのハイパーパラメータ調整ジョブを実行する」を参照してください。

      1. 入力データがこのハイパーパラメータ調整ジョブの親ジョブの入力データと同じである場合は、[Identical data and algorithm (同一データとアルゴリズム)] を選択します。また、このハイパーパラメータ調整ジョブに追加または異なる入力データを使用するには、[Transfer learning (転移学習)] を選択します。

      2. [Parent hyperparameter tuning job(s) (親ハイパーパラメータ調整ジョブ)] では、このハイパーパラメータ調整ジョブの親として使用するハイパーパラメータ調整ジョブを最大 5 つ選択します。

    2. [調整ジョブ名] には、調整ジョブの名前を入力します。

    3. [IAM role] (IAM ロール) では、SageMaker でのハイパーパラメータチューニングジョブの実行に必要な許可を持つ IAM ロールを選択するか、[Create a new role] (新しいロールを作成) を選択して、AmazonSageMakerFullAccess 管理ポリシーがアタッチされたロールの作成を SageMaker に許可します。詳細については、SageMaker 実行ロールの使用方法 を参照してください。

    4. [VPC] では、チューニングジョブが起動するトレーニングジョブにアクセス権を付与する Amazon VPC を選択します。詳細については、「Amazon VPC のリソースへのアクセス権を SageMaker トレーニングジョブに付与する」を参照してください。

    5. [Next] を選択します。

    6. [Objective metric (メトリクス名)] では、ハイパーパラメータ調整ジョブがハイパーパラメータの最適な組み合わせを決定するために使用するメトリクスを選択し、このメトリクスを最小化するか最大化するかを選択します。詳細については、「最善のトレーニングジョブを確認する」を参照してください。

    7. [ハイパーパラメータ設定] では、調整ジョブの検索対象として調整可能なハイパーパラメータの範囲を選択し、ハイパーパラメータ調整ジョブが開始するすべてのトレーニングジョブで一定のままにする必要のあるハイパーパラメータの静的な値を設定します。詳細については、「ハイパーパラメータの範囲を定義する」を参照してください。

    8. [Next] を選択します。

    9. [入力データ設定] では、ハイパーパラメータ調整ジョブに使用する入力データのチャネルごとに以下の値を指定します。アルゴリズムの [Algorithm summary] (アルゴリズムの概要) ページの [Channel specification] (チャネル仕様) セクションでは、ハイパーパラメータチューニングのサポートに使用しているアルゴリズムのチャネル、コンテンツタイプ、サポートされる圧縮タイプ、サポートされる入力モードを確認できます。

      1. [チャネル名] には、入力チャネルの名前を入力します。

      2. [コンテンツタイプ] には、アルゴリズムがチャネルに期待するデータのコンテンツタイプを入力します。

      3. [圧縮タイプ] では、使用するデータ圧縮タイプがあればそれを選択します。

      4. [レコードラッパー] では、アルゴリズムで RecordIO 形式のデータが必要な場合に [RecordIO] を選択します。

      5. [S3 データタイプ]、[S3 データディストリビューションタイプ]、および [S3 の場所] には、適切な値を指定します。これらの値の意味については、S3DataSourceを参照してください。

      6. [入力モード] では、プロビジョニングされた ML ストレージボリュームからデータをダウンロードし、ディレクトリを Docker ボリュームにマウントする場合に [ファイル] を選択します。Amazon S3 からコンテナに直接データをストリーミングする場合は [Pipe (パイプ)] を選択します。

      7. 別の入力チャネルを追加するには、[チャネルの追加] を選択します。入力チャネルの追加が完了したら、[完了] を選択します。

    10. [出力] 場所には、以下の値を指定します。

      1. [S3 出力パス] では、このハイパーパラメータ調整ジョブが起動するトレーニングジョブがモデルアーティファクトなどの出力を保存する S3 の場所を選択します。

        注記

        この場所に保存されているモデルアーティファクトを使用して、このハイパーパラメータ調整ジョブからモデルまたはモデルパッケージを作成します。

      2. [Encryption key] (暗号化キー) には、SageMaker が AWS KMS キーを使用して S3 の場所に保管中の出力データを暗号化する場合は、そのキーを指定します。

    11. [リソース設定] では、以下の情報を指定します。

      1. [インスタンスタイプ] では、ハイパーパラメータ調整ジョブが起動する各トレーニングジョブに使用するインスタンスのタイプを選択します。

      2. [インスタンス数] には、ハイパーパラメータ調整ジョブが起動する各トレーニングジョブに使用する ML インスタンスの数を入力します。

      3. [インスタンスあたりのボリュームサイズ (GB)] には、ハイパーパラメータ調整ジョブが起動する各トレーニングジョブをプロビジョニングする ML ストレージボリュームのサイズを入力します。ML ストレージボリュームには、モデルアーティファクトと増分ステートが保存されます。

      4. [暗号化キー] では、AWS Key Management Service キーを使用してトレーニングインスタンスにアタッチされている ML ストレージボリューム内のデータを暗号化するように Amazon SageMaker に指示する場合に、キーを指定します。

    12. [リソースの制限] では、以下の情報を指定します。

      1. [トレーニングジョブの最大数] では、ハイパーパラメータ調整ジョブで起動するトレーニングジョブの最大数を指定します。ハイパーパラメータ調整ジョブは、最大 500 個のトレーニングジョブを起動できます。

      2. [最大並行トレーニングジョブ] では、ハイパーパラメータ調整ジョブが同時に起動できるトレーニングジョブの最大数を指定します。ハイパーパラメータ調整ジョブは、最大 10 個のトレーニングジョブを同時に起動することができます。

      3. [停止条件] には、ハイパーパラメータ調整ジョブが起動する各トレーニングジョブの最大実行時間を秒数、分数、時間数、または日数で指定します。

    13. [タグ] には、ハイパーパラメータ調整ジョブを管理するためのタグを 1 つ以上指定します。各タグは、キー、および値 (オプション) で構成されます。タグキーはリソースごとに一意である必要があります。

    14. [ジョブの作成] を選択して、ハイパーパラメータ調整ジョブを実行します。

アルゴリズムを使用してハイパーパラメータ調整ジョブを実行する (API)

アルゴリズムを使用してハイパーパラメータ調整ジョブを実行する際に、SageMaker API を使用するには、CreateHyperParameterTuningJob に渡す AlgorithmSpecification オブジェクトの AlgorithmName フィールドとしてアルゴリズムの名前または Amazon リソースネーム (ARN) を指定します。SageMaker でのハイパーパラメータチューニングについては、「SageMaker の自動モデルチューニング」を参照してください。

アルゴリズムを使用してハイパーパラメータチューニングジョブを実行する (Amazon SageMaker Python SDK)

AWS Marketplace で作成またはサブスクライブしたアルゴリズムを使用してハイパーパラメータ調整ジョブを作成し、AlgorithmEstimator オブジェクトを作成して、algorithm_arn 引数の値として Amazon リソースネーム (ARN) またはアルゴリズムの名前を指定します。その後、estimator 引数の値として作成した AlgorithmEstimator を使用して、HyperparameterTuner オブジェクトを初期化します。最後に AlgorithmEstimatorfit メソッドを呼び出します。例:

from sagemaker import AlgorithmEstimator from sagemaker.tuner import HyperparameterTuner data_path = os.path.join(DATA_DIR, 'marketplace', 'training') algo = AlgorithmEstimator( algorithm_arn='arn:aws:sagemaker:us-east-2:764419575721:algorithm/scikit-decision-trees-1542410022', role='SageMakerRole', instance_count=1, instance_type='ml.c4.xlarge', sagemaker_session=sagemaker_session, base_job_name='test-marketplace') train_input = algo.sagemaker_session.upload_data( path=data_path, key_prefix='integ-test-data/marketplace/train') algo.set_hyperparameters(max_leaf_nodes=10) tuner = HyperparameterTuner(estimator=algo, base_tuning_job_name='some-name', objective_metric_name='validation:accuracy', hyperparameter_ranges=hyperparameter_ranges, max_jobs=2, max_parallel_jobs=2) tuner.fit({'training': train_input}, include_cls_metadata=False) tuner.wait()