Amazon SageMaker JumpStart PlatoBlockchainDataIntelligenceを使用して自動モデルチューニングを実行します。 垂直検索。 愛。

AmazonSageMakerJumpStartを使用して自動モデルチューニングを実行する

2020年XNUMX月、AWS 発表の の一般的な可用性 Amazon SageMaker ジャンプスタート、の機能 アマゾンセージメーカー これにより、機械学習(ML)をすばやく簡単に開始できます。 2022年XNUMX月、私たちも 発表の JumpStartでのAPIのサポート。 JumpStartは、一般的なMLタスク全体で事前にトレーニングされたさまざまなモデルのワンクリック微調整と展開、および一般的なビジネス上の問題を解決するエンドツーエンドのソリューションの選択を提供します。 これらの機能により、MLプロセスの各ステップの負担が軽減され、高品質のモデルの開発が容易になり、展開までの時間が短縮されます。

この投稿では、JumpStartを使用して自動モデルチューニングを実行する方法を示します。

SageMaker自動モデル調整

従来、MLエンジニアは試行錯誤の方法を実装して、適切なハイパーパラメータのセットを見つけていました。 試行錯誤では、実験の実行に必要なリソースをプロビジョニングしながら、複数のジョブを順次または並行して実行します。

SageMaker自動モデル調整、MLエンジニアとデータサイエンティストは、モデルを最適化するという時間のかかるタスクをオフロードし、SageMakerに実験を実行させることができます。 SageMakerは、AWSプラットフォームの弾力性を利用して、データセットに対して複数のトレーニングシミュレーションを効率的かつ同時に実行し、モデルに最適なハイパーパラメーターを見つけます。

SageMakerの自動モデルチューニングは、アルゴリズムを使用してデータセットで多くのトレーニングジョブを実行することにより、モデルの最適なバージョンを見つけます。 範囲 指定するハイパーパラメータの数。 次に、によって測定された、最高のパフォーマンスを発揮するモデルをもたらすハイパーパラメータ値を選択します。 メトリック あなたが選ぶこと。

自動モデルチューニングは、 ベイジアン (デフォルト)または ランダム ハイパーパラメータの最適な値を見つけるための検索戦略。 ベイジアン検索は、ハイパーパラメータ調整を次のように扱います。 回帰 問題。 次のトレーニングジョブに最適なハイパーパラメータを選択するとき、これまでに問題について知っているすべてのことを考慮し、アルゴリズムが最もよく知られている結果を利用できるようにします。

この投稿では、デフォルトのベイジアン検索戦略を使用して、JumpStartを使用した自動モデル調整の実行に関連する手順を示します。 ライトGBM モデル。

JumpStartは現在、自動モデル調整を備えた10のサンプルノートブックをサポートしています。 また、表形式のデータモデリングのためのXNUMXつの一般的なアルゴリズムもサポートしています。 タスクとサンプルノートブックへのリンクを次の表に要約します。

仕事 事前トレーニング済みモデル カスタムデータセットをサポート サポートされているフレームワーク ノートブックの例
画像分類 はい はい PyTorch、TensorFlow JumpStartの概要–画像分類
オブジェクト検出 はい はい PyTorch、TensorFlow、MXNet JumpStartの概要–オブジェクト検出
セマンティックセグメンテーション はい はい MXNet JumpStartの概要–セマンティックセグメンテーション
テキスト分類 はい はい TensorFlow JumpStartの概要–テキスト分類
文のペアの分類 はい はい TensorFlow、Hugging Face JumpStartの概要–文のペアの分類
質問応答 はい はい パイトーチ JumpStartの概要–質問応答
表形式の分類 はい はい LightGBM、CatBoost、XGBoost、Linear Learner JumpStartの概要–表形式の分類– LightGBM、CatBoost
JumpStartの概要–表形式の分類– XGBoost、線形学習者
表形式の回帰 はい はい LightGBM、CatBoost、XGBoost、Linear Learner JumpStartの概要–表形式の回帰– LightGBM、CatBoost
JumpStartの概要–表形式の回帰– XGBoost、線形学習者

ソリューションの概要

この技術ワークフローでは、JumpStartモデルを自動的に調整するために必要なAmazonSagemakerのさまざまな機能と手順の概要を説明します。

Amazon SageMaker JumpStart PlatoBlockchainDataIntelligenceを使用して自動モデルチューニングを実行します。 垂直検索。 愛。

次のセクションでは、LightGBMアルゴリズムを使用してJumpStartで自動モデルチューニングを実行する方法のステップバイステップのウォークスルーを提供します。 付属品をご用意しております ノート このウォークスルーのために。

次の高レベルの手順を実行します。

  1. JumpStartの事前トレーニング済みモデルと画像コンテナを取得します。
  2. 静的ハイパーパラメータを設定します。
  3. 調整可能なハイパーパラメータ範囲を定義します。
  4. 自動モデルチューニングを初期化します。
  5. チューニングジョブを実行します。
  6. 最適なモデルをエンドポイントにデプロイします。

JumpStartの事前トレーニング済みモデルと画像コンテナを取得します

このセクションでは、微調整のためにLightGBM分類モデルを選択します。 モデルが実行されるml.m5.xlargeインスタンスタイプを使用します。 次に、トレーニングDockerコンテナー、トレーニングアルゴリズムソース、および事前トレーニング済みモデルを取得します。 次のコードを参照してください。

training_instance_type = "ml.m5.xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve(
    region=None,
    framework=None,
    model_id=train_model_id,
    model_version=train_model_version,
    image_scope=train_scope,
    instance_type=training_instance_type,
)
# Retrieve the training script
train_source_uri = script_uris.retrieve(
    model_id=train_model_id, model_version=train_model_version, script_scope=train_scope
)
# Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(
    model_id=train_model_id, model_version=train_model_version, model_scope=train_scope
)

静的ハイパーパラメータを設定する

ここで、JumpStartによって事前構成された、このLightGBMモデルのデフォルトのハイパーパラメーターを取得します。 また、 num_boost_round カスタム値を持つハイパーパラメータ。

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)
# [Optional] Override default hyperparameters with custom values

調整可能なハイパーパラメータ範囲を定義する

次に、ハイパーパラメータ範囲を次のように定義します 自動モデルチューニングにより最適化。 モデルで期待されるハイパーパラメータ名を定義してから、このハイパーパラメータに対して試行される値の範囲を定義します。 自動モデルチューニングはサンプルを描画します( max_jobs パラメータ)ベイズ検索と呼ばれる手法を使用して、ハイパーパラメータの空間から。 描画されたハイパーパラメータサンプルごとに、チューナーはその構成でモデルを評価するためのトレーニングジョブを作成します。 次のコードを参照してください。

hyperparameter_ranges = {
    "learning_rate": ContinuousParameter(1e-4, 1, scaling_type="Logarithmic"),
    "num_boost_round": IntegerParameter(2, 30),
    "early_stopping_rounds": IntegerParameter(2, 30),
    "num_leaves": IntegerParameter(10, 50),
    "feature_fraction": ContinuousParameter(0, 1),
    "bagging_fraction": ContinuousParameter(0, 1),
    "bagging_freq": IntegerParameter(1, 10),
    "max_depth": IntegerParameter(5, 30),
    "min_data_in_leaf": IntegerParameter(5, 50),
}

自動モデルチューニングを初期化します

を作成することから始めます 推定量 事前トレーニング済みモデル、トレーニングイメージ、トレーニングスクリプトなど、トレーニングジョブを定義するすべての必要なアセットを含むオブジェクト。 次に、 ハイパーパラメータチューナー SageMakerハイパーパラメータチューニングAPIと対話するオブジェクト。

  HyperparameterTuner Estimatorオブジェクト、ハイパーパラメーターの最適なセットが決定されるターゲットメトリック、トレーニングジョブの総数をパラメーターとして受け入れます(max_jobs)ハイパーパラメータ調整ジョブを開始し、実行する最大並列トレーニングジョブ(max_parallel_jobs)。 トレーニングジョブは、LightGBMアルゴリズム、および最小のハイパーパラメータ値を使用して実行されます mlogloss メトリックが選択されます。 自動モデル調整の構成の詳細については、を参照してください。 ハイパーパラメータ調整のベストプラクティス.

# Create SageMaker Estimator instance
tabular_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,
) tuner = HyperparameterTuner(
    estimator=tabular_estimator,
    objective_metric_name="multi_logloss",
    hyperparameter_ranges=hyperparameter_ranges,
    metric_definitions=[{"Name": "multi_logloss", "Regex": "multi_logloss: ([0-9\.]+)"}],
    strategy="Bayesian",
    max_jobs=10,
    max_parallel_jobs=2,
    objective_type="Minimize",
    base_tuning_job_name=training_job_name,
)

上記のコードでは、最大10回の実験を実行するようにチューナーに指示しています(max_jobs)および一度にXNUMXつの同時実験のみ(max_parallel_jobs)。 これらのパラメータは両方とも、コストとトレーニング時間を管理します。

チューニングジョブを実行します

SageMakerチューニングジョブを起動するには、ハイパーパラメータチューナーオブジェクトのfitメソッドを呼び出し、 Amazon シンプル ストレージ サービス (Amazon S3)トレーニングデータのパス:

tuner.fit({"training": training_dataset_s3_path}, logs=True)

自動モデルチューニングが最適なハイパーパラメータを検索している間、SageMakerコンソールまたはでそれらの進行状況を監視できます アマゾンクラウドウォッチ。 トレーニングが完了すると、最適なモデルの微調整されたアーティファクトが、トレーニング構成で指定されたAmazonS3出力の場所にアップロードされます。

最適なモデルをエンドポイントにデプロイする

チューニングジョブが完了すると、最適なモデルが選択され、AmazonS3に保存されます。 これで、のdeployメソッドを呼び出すことでそのモデルをデプロイできます。 HyperparameterTuner オブジェクトを作成し、作成されたエンドポイントに使用されるインスタンスの数、それらのタイプ、デプロイされるイメージ、実行するスクリプトなどの必要なパラメーターを渡します。

tuner.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    entry_point="inference.py",
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    endpoint_name=endpoint_name,
    enable_network_isolation=True
)

これで、推論リクエストを行うことで、作成されたエンドポイントをテストできます。 付随するプロセスの残りの部分に従うことができます ノート.

まとめ

SageMakerの自動モデルチューニングでは、サポートされているアルゴリズムのXNUMXつを使用して、提供されたデータセットでトレーニングジョブを実行することにより、モデルの最適なバージョンを見つけることができます。 自動モデル調整を使用すると、指定したハイパーパラメータ範囲内で最適なハイパーパラメータ構成を自動的に検索することで、モデルの調整時間を短縮できます。

この投稿では、SageMakerAPIを使用してJumpStartの事前トレーニング済みモデルで自動モデルチューニングを実行することの価値を示しました。 LightGBMアルゴリズムを使用し、最大10のトレーニングジョブを定義しました。 また、JumpStartモデルの最適化をサポートするMLフレームワークを紹介するサンプルノートブックへのリンクも提供しました。

自動モデル調整を使用してJumpStartモデルを最適化する方法の詳細については、例を参照してください。 ノート.


著者について

Amazon SageMaker JumpStart PlatoBlockchainDataIntelligenceを使用して自動モデルチューニングを実行します。 垂直検索。 愛。ダグ・ムバヤ は、データと分析に重点を置いたシニアパートナーソリューションアーキテクトです。 DougはAWSパートナーと緊密に連携し、データと分析ソリューションをクラウドに統合するのを支援しています。

Amazon SageMaker JumpStart PlatoBlockchainDataIntelligenceを使用して自動モデルチューニングを実行します。 垂直検索。 愛。クルティ・ジャヤシマ ラオ は、Scale-PSAチームのパートナーソリューションアーキテクトです。 Kruthiは、パートナーの技術的検証を実施し、パートナーパスでの進歩を可能にします。

Amazon SageMaker JumpStart PlatoBlockchainDataIntelligenceを使用して自動モデルチューニングを実行します。 垂直検索。 愛。ジャンニス・ミトロプロス SageMakerのソフトウェア開発エンジニアです 自動モデル調整.

Amazon SageMaker JumpStart PlatoBlockchainDataIntelligenceを使用して自動モデルチューニングを実行します。 垂直検索。 愛。アシッシュ・ケタン博士 の上級応用科学者です Amazon SageMaker ジャンプスタート および AmazonSageMakerの組み込みアルゴリズム 機械学習アルゴリズムの開発に役立ちます。 彼は機械学習と統計的推論の活発な研究者であり、NeurIPS、ICML、ICLR、JMLR、およびACL会議で多くの論文を発表しています。

タイムスタンプ:

より多くの AWS機械学習