Amazon SageMaker での TensorFlow 画像分類モデルの転移学習

アマゾンセージメーカー のスイートを提供します 組み込みアルゴリズム, 事前トレーニング済みモデル, 構築済みのソリューションテンプレート データサイエンティストと機械学習(ML)の実践者が、MLモデルのトレーニングと展開を迅速に開始できるように支援します。 これらのアルゴリズムとモデルは、教師あり学習と教師なし学習の両方に使用できます。 表形式、画像、テキストなど、さまざまな種類の入力データを処理できます。

本日より、SageMaker は画像分類用の新しい組み込みアルゴリズムを提供します。 画像分類 – TensorFlow. で利用可能な多くの事前トレーニング済みモデルの転移学習をサポートする教師あり学習アルゴリズムです。 TensorFlowハブ. 画像を入力として受け取り、各クラス ラベルの確率を出力します。 大量のトレーニング画像が利用できない場合でも、転移学習を使用してこれらの事前トレーニング済みモデルを微調整できます。 SageMaker から入手できます 組み込みアルゴリズム だけでなく、 SageMaker ジャンプスタート UI 内部 Amazon SageMakerスタジオ. 詳細については、そのドキュメントを参照してください 画像分類 – TensorFlow と例のノートブック SageMaker TensorFlow の紹介 – 画像分類.

SageMaker の TensorFlow を使用した画像分類は、TensorFlow Hub で利用可能な多くの事前トレーニング済みモデルで転移学習を提供します。 トレーニング データ内のクラス ラベルの数に応じて、事前トレーニング済みの TensorFlow Hub モデルに分類レイヤーが追加されます。 分類層は、ドロップアウト層と、ランダムな重みで初期化された 2 ノルム正則化器を備えた全結合層である密層で構成されます。 モデルのトレーニングには、ドロップアウト層のドロップアウト率と高密度層の L2 正則化係数のハイパーパラメーターがあります。 次に、事前トレーニング済みのモデルを含むネットワーク全体、または最上位の分類レイヤーのみを新しいトレーニング データで微調整できます。 この転移学習モードでは、より小さなデータセットでもトレーニングを実現できます。

新しい TensorFlow 画像分類アルゴリズムの使用方法

このセクションでは、TensorFlow 画像分類アルゴリズムを SageMaker Python SDK. Studio UI からの使用方法については、 SageMaker ジャンプスタート.

このアルゴリズムは、にリストされている事前トレーニング済みモデルの転移学習をサポートしています。 TensorFlow ハブ モデル. 各モデルは一意の model_id. 次のコードは、によって識別される MobileNet V2 1.00 224 を微調整する方法を示しています。 model_id tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4 カスタム トレーニング データセットで。 それぞれについて model_id、SageMaker トレーニングジョブを起動するために、 推定量 SageMaker Python SDK のクラスを使用するには、SageMaker で提供されるユーティリティ関数を使用して、Docker イメージ URI、トレーニング スクリプト URI、事前トレーニング済みモデル URI をフェッチする必要があります。 トレーニング スクリプト URI には、データ処理、事前トレーニング済みモデルの読み込み、モデル トレーニング、推論用のトレーニング済みモデルの保存に必要なすべてのコードが含まれています。 事前トレーニング済みモデルの URI には、事前トレーニング済みモデル アーキテクチャの定義とモデル パラメーターが含まれています。 Docker イメージ URI とトレーニング スクリプト URI は、すべての TensorFlow イメージ分類モデルで同じであることに注意してください。 事前トレーニング済みのモデル URI は、特定のモデルに固有です。 事前トレーニング済みのモデル tarball は、TensorFlow Hub から事前にダウンロードされ、適切なモデル シグネチャとともに .xml に保存されています。 Amazon シンプル ストレージ サービス (Amazon S3) バケット。トレーニング ジョブがネットワーク分離で実行されるようにします。 次のコードを参照してください。

from sagemaker import image_uris, model_uris, script_uris
from sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4", "*"
training_instance_type = "ml.p3.2xlarge"

# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)

# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")

# Retrieve the pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-ic-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

これらのモデル固有のトレーニング アーティファクトを使用して、 推定量 クラス:

# Create SageMaker Estimator instance
tf_ic_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,
)

次に、カスタム データセットでの転移学習のために、トレーニング ハイパーパラメーターのデフォルト値を変更する必要がある場合があります。 ハイパーパラメータ. これらのハイパーパラメータの Python ディクショナリをデフォルト値で取得するには、次を呼び出します。 hyperparameters.retrieve_default必要に応じて更新し、Estimator クラスに渡します。 一部のハイパーパラメータのデフォルト値は、モデルによって異なることに注意してください。 大きなモデルの場合、デフォルトのバッチ サイズは小さく、 train_only_top_layer ハイパーパラメータが設定されています True. ハイパーパラメータ Train_only_top_layer 微調整プロセス中にどのモデル パラメータが変化するかを定義します。 もしも train_only_top_layer is True、分類レイヤーのパラメーターが変更され、残りのパラメーターは微調整プロセス中に一定のままです。 一方、 train_only_top_layer is False、モデルのすべてのパラメーターが微調整されています。 次のコードを参照してください。

from sagemaker import hyperparameters
# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)

# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

次のコードは、S3 バケットでホストされるデフォルトのトレーニング データセットを提供します。 私たちは、 tf_flowers モデルを微調整するためのデフォルトのデータセットとしてデータセット。 データセットは、XNUMX 種類の花の画像で構成されています。 データセットはからダウンロードされました TensorFlowApache2.0ライセンス.

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/tf_flowers/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

最後に、モデルを微調整するための SageMaker トレーニング ジョブを起動するには、次のように呼び出します。 .fit Estimator クラスのオブジェクトで、トレーニング データセットの S3 の場所を渡します。

# Launch a SageMaker Training job by passing s3 path of the training data
tf_ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

カスタム データセットでの転移学習に新しい SageMaker TensorFlow 画像分類アルゴリズムを使用する方法の詳細については、微調整されたモデルをデプロイし、デプロイされたモデルで推論を実行し、最初の微調整を行わずに事前トレーニング済みのモデルをそのままデプロイします。カスタム データセットについては、次のノートブックの例を参照してください。 SageMaker TensorFlow の紹介 – 画像分類.

TensorFlow 画像分類アルゴリズムの入出力インターフェース

にリストされている事前トレーニング済みの各モデルを微調整できます。 TensorFlow ハブ モデル 任意の数のクラスに属する画像を含む任意のデータセットに。 目的は、入力データの予測誤差を最小限に抑えることです。 微調整によって返されたモデルは、推論のためにさらに展開できます。 モデルへの入力用にトレーニング データをフォーマットする方法の手順は次のとおりです。

  • 入力 – クラスの数と同じ数のサブディレクトリを持つディレクトリ。 各サブディレクトリには、そのクラスに属する画像が .jpg、.jpeg、または .png 形式である必要があります。
  • 出力 – 推論用にデプロイできる、または増分トレーニングを使用してさらにトレーニングできる、微調整されたモデル。 前処理と後処理の署名が微調整されたモデルに追加され、生の .jpg 画像を入力として受け取り、クラスの確率を返します。 クラス インデックスをクラス ラベルにマッピングするファイルは、モデルと共に保存されます。

トレーニング データに XNUMX つのクラスの画像が含まれている場合、入力ディレクトリは次の例のようになります。 roses & dandelion. S3 パスは次のようになります。 s3://bucket_name/input_directory/。 末尾に注意してください / 必要とされている。 フォルダの名前と roses, dandelion、および .jpg ファイル名は何でもかまいません。 トレーニング済みのモデルとともに S3 バケットに保存されるラベル マッピング ファイルは、フォルダ名 roses と tandelion を、モデルが出力するクラス確率のリストのインデックスにマッピングします。 マッピングは、フォルダ名のアルファベット順に従います。 次の例では、モデル出力リストのインデックス 0 が対応します。 dandelion、およびインデックス 1 に対応します。 roses.

input_directory
    |--roses
        |--abc.jpg
        |--def.jpg
    |--dandelion
        |--ghi.jpg
        |--jkl.jpg

TensorFlow 画像分類アルゴリズムによる推論

生成されたモデルは、推論のためにホストでき、エンコードされた .jpg、.jpeg、および .png 画像形式を application/x-image コンテンツ タイプ。 入力画像は自動的にリサイズされます。 出力には、JSON 形式でエンコードされた、確率値、すべてのクラスのクラス ラベル、および確率が最も高いクラス インデックスに対応する予測ラベルが含まれます。 TensorFlow 画像分類モデルは、リクエストごとに XNUMX つの画像を処理し、JSON で XNUMX 行のみを出力します。 JSON での応答の例を次に示します。

accept: application/json;verbose

 {"probabilities": [prob_0, prob_1, prob_2, ...],
  "labels":        [label_0, label_1, label_2, ...],
  "predicted_label": predicted_label}

If accept に設定されています application/jsonの場合、モデルは確率のみを出力します。 トレーニングと推論の詳細については、サンプル ノートブックを参照してください。 SageMaker TensorFlow の紹介 – 画像分類.

JumpStart UI を介して SageMaker 組み込みアルゴリズムを使用する

JumpStart UI から数回クリックするだけで、SageMaker TensorFlow 画像分類やその他の組み込みアルゴリズムを使用することもできます。 JumpStart は SageMaker の機能であり、組み込みアルゴリズムと事前トレーニング済みのモデルをさまざまな ML フレームワークとモデル ハブからグラフィカル インターフェイスを介してトレーニングおよびデプロイできるようにします。 また、ML モデルと他のさまざまな AWS サービスを組み合わせて、対象となるユースケースを解決する本格的な ML ソリューションをデプロイすることもできます。 チェックアウト TensorFlowHubモデルとHuggingFaceモデルを使用して、AmazonSageMakerJumpStartでテキスト分類を実行します JumpStart を使用して、数回のクリックでアルゴリズムまたは事前トレーニング済みのモデルをトレーニングする方法を確認します。

まとめ

この投稿では、SageMaker TensorFlow 画像分類組み込みアルゴリズムのリリースを発表しました。 このアルゴリズムを使用して、TensorFlow Hub の事前トレーニング済みモデルを使用して、カスタム データセットで転移学習を行う方法のサンプル コードを提供しました。 詳細については、こちらをご覧ください ドキュメントサンプルノート.


著者について

Amazon SageMaker PlatoBlockchain Data Intelligence の TensorFlow 画像分類モデルの転移学習。垂直検索。あい。アシッシュ・ケタン博士 の上級応用科学者です AmazonSageMakerの組み込みアルゴリズム 機械学習アルゴリズムの開発を支援します。 イリノイ大学アーバナシャンペーン校で博士号を取得。 彼は機械学習と統計的推論の活発な研究者であり、NeurIPS、ICML、ICLR、JMLR、ACL、および EMNLP カンファレンスで多くの論文を発表しています。

Amazon SageMaker PlatoBlockchain Data Intelligence の TensorFlow 画像分類モデルの転移学習。垂直検索。あい。ヴィヴェック・マダン博士 応用科学者であり、 AmazonSageMakerJumpStartチーム. 彼はイリノイ大学アーバナ シャンペーン校で博士号を取得し、ジョージア工科大学で博士研究員を務めました。 彼は機械学習とアルゴリズム設計の活発な研究者であり、EMNLP、ICLR、COLT、FOCS、および SODA カンファレンスで論文を発表しています。

Amazon SageMaker PlatoBlockchain Data Intelligence の TensorFlow 画像分類モデルの転移学習。垂直検索。あい。ジョアンモウラ アマゾン ウェブ サービスの AI/ML スペシャリスト ソリューション アーキテクトです。 彼は主に NLP のユース ケースに焦点を当てており、顧客が深層学習モデルのトレーニングと展開を最適化するのを支援しています。 また、ローコード ML ソリューションと ML に特化したハードウェアの積極的な支持者でもあります。

Amazon SageMaker PlatoBlockchain Data Intelligence の TensorFlow 画像分類モデルの転移学習。垂直検索。あい。ラジュペンマッチャ AWS のシニア AI/ML スペシャリストソリューションアーキテクトです。 彼は、教育機関、政府機関、非営利団体のお客様と協力して、機械学習や人工知能関連のプロジェクトに取り組み、AWS を使用したソリューションの構築を支援しています。 顧客の役に立てないときは、新しい場所に旅行するのが好きです。

タイムスタンプ:

より多くの AWS機械学習