検索 - Amazon SageMaker

検索

機械学習モデルの開発には、通常、さまざまなデータセット、アルゴリズム、ハイパーパラメータ値を使用した広範な実験が必要です。数千におよぶ機械学習モデルの実験を管理するには、Amazon SageMaker の検索機能を使用します。

SageMaker 検索を使用すると、次のことができます。

  • プロパティ、ハイパーパラメータ、パフォーマンスメトリクス、その他のメタデータを使用してトレーニングジョブを整理、検索、評価する

  • トレーニングジョブやモデルのメトリクス (トレーニングの損失や検証の正確さなど) を確認して、最良のパフォーマンスモデルを見つける

  • トレーニングジョブやその関連リソース (トレーニングデータセットなど) までのモデルの系統を追跡する

このトピックでは、SageMaker コンソールと SageMaker API からの検索について説明します。Amazon SageMaker Studioでの検索については、「トライアルの比較と評価」を参照してください。

ML 実験を管理するためのサンプルノートブック

Amazon SageMaker モデル追跡機能を使用して ML 実験を管理するサンプルノートブックについては、「Amazon SageMaker モデル追跡機能を使用した ML エクスペリエンスの管理」を参照してください。

SageMaker でサンプルを実行するために使用できる Jupyter ノートブックインスタンスを作成してアクセスする方法については、「Amazon SageMaker ノートブックインスタンスの使用」を参照してください。ノートブックインスタンスを作成して開いた後、[SageMaker Examples (SageMaker サンプル)] タブを選択して、すべての SageMaker サンプルのリストを表示します。ML 実験を管理するノートブックは、[高度な機能] セクションにあります。ノートブックを開くには、その [Use (使用)] タブを選択し、[Create copy (コピーを作成)] を選択します。ご質問がある場合は、 Amazon Machine Learning 開発者フォーラムに投稿してください。

トレーニングジョブを整理、検索、評価する (コンソール)

トレーニングジョブを整理するには、それらに 1 つ以上のタグを割り当てます。

特定のトレーニングジョブ、モデル、またはリソースを見つけるには、モデル追跡を使用して、検索可能なアイテムに割り当てられたキーワードを検索します。検索可能なアイテムには、トレーニングジョブ、モデル、ハイパーパラメータ、メタデータ、タグ、および URL が含まれます。追跡結果を絞り込むには、複数の条件を使用して検索します。

デプロイに最適なモデルを選択するには、1 つ以上のメトリクスについてすべてのモデルのパフォーマンスを評価します。モデル追跡の結果を使用して、実験でモデルのパフォーマンスを一覧表示、ソート、および評価することができます。

タグを使用してトレーニングジョブを追跡する (コンソール)

トレーニングジョブをグループ化するには、わかりやすいキーと値でタグを作成します。たとえば、プロジェクト、所有者、顧客、および業界のタグキーを作成します。

トレーニングジョブにタグを追加する (コンソール)

  1. Amazon SageMaker コンソールを開きます。

  2. ナビゲーションペインで、[トレーニングジョブ]、[トレーニングジョブの作成] の順に選択します。

  3. ページの下部までスクロールし、タグのキーと値を入力します。

  4. 別のタグを追加するには、[タグの追加] を選択し、別のキーと値のペアを追加します。

トレーニングジョブの検索 (コンソール)

トレーニングジョブは、さまざまなジョブ属性を使用して検索できます。一部の検索パラメータは、その属性でトレーニングジョブを作成した場合にのみ表示されます。たとえば、[Tags] は、トレーニングジョブにタグを追加した場合にのみ表示されます。

トレーニングジョブを検索するには (コンソール)

  1. Amazon SageMaker コンソールを開きます。

  2. ナビゲーションペインで、[Search (検索)] を選択します。

  3. [パラメータ] を追加します。

    1. 検索ボックスにパラメータを入力し、パラメータタイプ (TrainingJobName など) を選択します。

    2. 条件付きオペレーションを選択します。数値については、is equals tolesser thanor greater than などの演算子を使用します。テキストベースの値については、equals tocontains などの演算子を使用します。

    3. パラメータの値を入力します。

  4. (オプション) 検索を絞り込むには、検索条件を追加します。[行を追加] を選択し、パラメータ値を入力します。

  5. [検索] を選択します。

モデルの評価 (コンソール)

モデルのパフォーマンスを評価するには、そのメタデータ、ハイパーパラメータ、メトリクスを確認します。メトリクスをハイライトするには、表示を調整して、メトリクスと重要なハイパーパラメータのみを表示します。

モデルを評価するには (コンソール)

  1. Amazon SageMaker コンソールを開きます。

  2. ナビゲーションペインで、[検索] を選択し、該当するパラメータを指定してトレーニングジョブを検索します。結果がテーブルに表示されます。

  3. 検索結果テーブルの設定アイコンを選択して、設定ウィンドウを開きます。

  4. ハイパーパラメータまたはメトリクスの表示/非表示を切り替えるには、[ハイパーパラメータ] または [メトリクス] を選択してオン/オフにします。

  5. 必要な変更を行い、[Update view (表示の更新)] を選択します。

  6. メトリクスと重要なハイパーパラメータが表示されると、結果を比較し、違いを示すことができます。さらに、ホストする最適なモデルを選択したり、パフォーマンスが低いモデルを調査したりすることができます。

トレーニングジョブの検索と評価 (API)

トレーニングジョブを検索および評価したり、実験で使用される検索可能なアイテムの候補を取得したりするには、Search API を使用できます。

トレーニングジョブの検索 (API)

トレーニングジョブを検索するには、search_params パラメータを使用して検索パラメータを作成します。次に、AWS SDK for Python (Boto3) の smclient サブプロセスで検索関数を使用します。

次の例は、Search API を使用してトレーニングジョブを検索する方法を示しています。

import boto3 search_params={ "MaxResults": 10, "Resource": "TrainingJob", "SearchExpression": { "Filters": [{ "Name": "Tags.Project", "Operator": "Equals", "Value": "Project_Binary_Classifier" }]}, "SortBy": "Metrics.train:binary_classification_accuracy", "SortOrder": "Descending" } smclient = boto3.client(service_name='sagemaker') results = smclient.search(**search_params)

モデルの評価 (API)

モデルを評価するには、「SDK for Python (Boto3)」の説明に従って検索を実行し、モデルのメトリクスを確認します。次に、AWS トレーニングジョブの検索 (API) を使用してテーブルを作成してプロットします。

次の例は、モデルを評価して、その結果をテーブルに表示する方法を示しています。

import pandas headers=["Training Job Name", "Training Job Status", "Batch Size", "Binary Classification Accuracy"] rows=[] for result in results['Results']: trainingJob = result['TrainingJob'] metrics = trainingJob['FinalMetricDataList'] rows.append([trainingJob['TrainingJobName'], trainingJob['TrainingJobStatus'], trainingJob['HyperParameters']['mini_batch_size'], metrics[[x['MetricName'] for x in metrics].index('train:binary_classification_accuracy')]['Value'] ]) df = pandas.DataFrame(data=rows,columns=headers) from IPython.display import display, HTMLdisplay(HTML(df.to_html()))

検索候補の取得 (API)

検索候補を取得するには、GetSearchSuggestions API を使用します。

次に示す AWS SDK for Python (Boto3) の例は、「"linear".」を含むアイテムに対する get_search_suggestions リクエストを示しています。

search_suggestion_params={ "Resource": "TrainingJob", "SuggestionQuery": { "PropertyNameQuery": { "PropertyNameHint": "linear" } } }

get_search_suggestions リクエストのレスポンスの例を次に示します。

{ 'PropertyNameSuggestions': [{'PropertyName': 'hyperparameters.linear_init_method'}, {'PropertyName': 'hyperparameters.linear_init_value'}, {'PropertyName': 'hyperparameters.linear_init_sigma'}, {'PropertyName': 'hyperparameters.linear_lr'}, {'PropertyName': 'hyperparameters.linear_wd'}] }

検索候補を取得したら、プロパティ名のいずれかを検索で使用できます。

トレーニングジョブで使用されたデータセットを確認する

モデル追跡機能を使用して、トレーニングで使用されたデータセット、提示されたデータセットの使用場所、その他のトレーニングジョブに関する詳細を確認できます。たとえば、モデル追跡機能を使用して、監査のトレーニングジョブで特定のデータセットが使用されたことを確認したり、コンプライアンスを検証したりできます。

特定のデータセットがトレーニングジョブで使用されたかどうかを確認するには、Amazon Simple Storage Service (Amazon S3) で、その場所の URL を検索します。モデル追跡機能は、指定したデータセットが使用されたトレーニングジョブを返します。検索結果がデータセットを返さない (結果が空) 場合、データセットはトレーニングジョブで使用されていません。空の結果では、たとえばホールドアウトデータセットが使用されていないことを確認できます。

モデル系統のトレース

モデル追跡を使用して、トレーニングジョブの系統に関する情報と、それに使用されたモデルリソース (使用されたデータセット、アルゴリズム、ハイパーパラメータ、メトリクスなど) を取得できます。たとえば、ホストされたモデルのパフォーマンスが低下していることが判明した場合、そのトレーニングジョブと使用されたリソースを確認して、問題の原因を判断できます。

モデル系統のトレース (コンソール)

モデルの系統をトレースするには (コンソール)

  1. Amazon SageMaker コンソールを開きます。

  2. ナビゲーションペインで [エンドポイント] を選択し、該当するエンドポイントを選択します。

  3. [エンドポイント設定の指定] セクションまでスクロールします。このセクションには、エンドポイントにデプロイされたすべてのモデルバージョンと、それぞれを作成したトレーニングジョブへのハイパーリンクが一覧表示されます。

モデル系統のトレース (API)

モデルの系統をトレースするには、モデルの名前を取得し、それを使用してトレーニングジョブを検索します。

次の例は、API を使用してモデルの系統をトレースする方法を示しています。

# Get the name of model deployed at endpoint endpoint_config = smclient.describe_endpoint_config(EndpointConfigName=endpointName) model_name = endpoint_config['ProductionVariants'][0]['ModelName'] # Get the model's name model = smclient.describe_model(ModelName=model_name) # Search the training job by the location of model artifacts in Amazon S3 search_params={ "MaxResults": 1, "Resource": "TrainingJob", "SearchExpression": { "Filters": [ { "Name": "ModelArtifacts.S3ModelArtifacts", "Operator": "Equals", "Value": model['PrimaryContainer']['ModelDataUrl'] }]}, } results = smclient.search(**search_params)

トレーニングジョブを見つけたら、モデルのトレーニングに使用されたリソースを確認できます。