Amazon Web Services ブログ
Amazon SageMaker を使用した fastai モデルの構築、トレーニング、およびデプロイ
深層学習は世界を変えています。しかし、コンテナの構築など、その基礎的な作業の多くでは、多くの時間がかかる場合があります。この記事では、fastai モデルを Amazon SageMaker トレーニングとホスティングに構築、トレーニング、デプロイする方法を説明します。この場合は、Amazon SageMaker Python SDK および PyTorch ベースイメージを使用します。このことにより、自分のコンテナを構築するための追加手順を行わずに済みます。
Amazon SageMaker は、フルマネージドの機械学習 (ML) サービスです。これにより、データ科学者と開発者は、低コストで、素早く ML モデルを構築、トレーニングし、本番稼働にデプロイできるようになります。Amazon SageMaker Python SDK は、ML モデルのトレーニングとホスティングのためのオープンソースライブラリです。TensorFlow、MXNet、PyTorch、および Chainer などの一般的な深層学習フレームワークを容易に使用し、互換性を持たせることができます。AWS は最近 fastai ライブラリを基本の PyTorch コンテナに追加しました。これにより、自分自身おコンテナを提供する代わりに、Amazon SageMaker で fastai 深層学習モデルを利用することができるようになります。
最新のベストプラクティスを使用して、fastai ライブラリは数行のコードだけで、高度な深層学習モデルを作成するときに役立ちます。これには、コンピュータビジョン、自然言語処理、構造化データ、または協調フィルタリングなどのドメインが含まれます。
組織の fast.ai は fastai ライブラリを開発して維持します。これは、一般的な深層学習オープンソース PyTorch パッケージと共に動作します。組織は最近、DAWNBench Competitionで優位な地位を得ました。また、一般的な オンラインコースを提供して、そのモデルを使って ML のバックグラウンドも経験もない開発者のトレーニングさえもしています。
環境のセットアップ
fastai ライブラリをインストールした上で新しい Amazon SageMaker ノートブックインスタンスをセットアップするためには、[Launch Stack] を選択してください。
AWS CloudFormation テンプレートは、このウォークスルーに必要なすべての AWS リソースをプロビジョニングします。[I acknowledge that AWS CloudFormation might create IAM resources with custom names (AWS CloudFormation がカスタム名で IAM リソースを作成する場合があることに同意します)] を選択します。最後に [Createstack] を選択します。
スタックが正常に完了すると、AWS CloudFormation はスタックの CREATE_COMPLETE 状態を通知します。
Amazon SageMaker コンソールで、[ノートブックインスタンス] を選択します。
これで、AWS CloudFormation スタックから作成された fastaiというラベルのノートブックインスタンスが表示されます。[Open Juypter] を選択して、マネージド型 Juypter 環境を回します。ここに自分の Python コードを書き込んでモデルを構築することができます。
この記事のために、SageMaker Examples、高度な機能、fastai_lesson1_sagemaker_example.ipynb の下で IPython ノートブックを示します。このノートブックのコピーを作成して、モデルを構築、トレーニングして、Amazon SageMaker にデプロイします。
デモンストレーションの目的で、犬種を祝別するための Oxford IIIT Pet dataset を使用します。
fastai ライブラリは PyTorch 上に構築するため、Amazon SageMaker Python SDK を使用して、PyTorch モデルをトレーニングすることができます。PyTorch モデルのトレーニングは、2 段階プロセスです。
- PyTorch トレーニングスクリプトを作成します。
- Amazon SageMaker でトレーニングジョブを作成します。
PyTorch トレーニングスクリプトを作成します。
トレーニングコードを書き込む _train() 関数を定義します。代表的なトレーニングスクリプトが入力チャンネルからのデータを読み込み、ハイパーパラメータでトレーニングを構成し、モデルを model_dir に保存して、後でホストします。詳細な例については、fastai_oxford_pets GitHub repo にある pets.py ファイルを参照してください。
ベーシックトレーニングコードは、次のとおりです。
この例では、トレーニングコードと推論コードを1つのスクリプトにまとめます。Amazon SageMaker が誤ってトレーニングコードを実行の誤った場所で実行しないように、トレーニングコードを必ずメインガード (__name __ ==’__main__’) に入れてください。トレーニングスクリプトに argparse.ArgumentParserを使用して取得できる pass ハイパーパラメータを配置することもできます。以下のコードスニペットは、passing ハイパーパラメータ―を使用しています。
Amazon SageMaker でトレーニングジョブを作成する
エンドツーエンドのトレーニングとホスティングを取り扱う PyTorch ベースイメージと PyTorch SageMaker Estimator を使用して、Amazon SageMaker で PyTorch モデルをトレーニングしホストすることができます。
entry_point
引数は _train() 関数を含むトレーニングスクリプトを取ります。train_instance_type
引数はモデルトレーニングするインスタンスタイプを取ります。このパラメータを「local」として設定する場合、モデルは Amazon SageMaker ノートブックインスタンスで Docker コンテナとしてトレーニングします。
ローカルモードのトレーニングを使用するには、Docker Compose だけではなく、GPU でトレーニングする場合は、NVIDIA-Docker もインストールします。モデルを Amazon SageMaker でトレーニングするには、ml.p3.2xlarge や ml.p2.xlarge など、GPU 最適化インスタンスタイプの値を渡します。
Amazon SageMaker は、インスタンスの寿命をトレー二ング時間に基づいて示します。Amazon SageMaker はトレーニングを完了すると、モデルアーティファクトを Amazon S3 にアップロードし、インスタンスを終了します。
トレーニングスクリプトには、モデルの定義と、エンドポイントでモデルを再構築するために必要なサービス機能が含まれています。モデルとコードのバージョニングが一致する限り、コードが書かれるか、モデルが作成するときを制限することはありません。
Amazon SageMaker のモデルのデプロイ
Amazon SageMaker Python SDK を使用して、PyTorch 推定子から PyTorchModel オブジェクトを作成します。モデルオブジェクトの deploy () メソッドは、リアルタイムで予測要求を処理する Amazon SageMaker エンドポイントを作成します。
Amazon SageMaker エンドポイントは、Amazon SageMaker が提供する PyTorch モデルサーバーを実行jします。これは、fit
をコールした後でトレーニングスクリプトが生成するモデルをホストします。これは、model_dir
に保存されたモデルでした。
推論スクリプトを作成します。
推論を実行するには、推論スクリプトの 4 つの関数を定義してください。この例では、トレーニングと推論に対して同じスクリプトを使用します。_train() と呼ばれるトレーニング関数と共に次の関数を定義します。
- model_fn(model_dir)—モデルを Amazon SageMaker PyTorch モデルサーバーに読み込みます。
- input_fn(request_body,request_content_type)—データを推論のオブジェクトに逆シリアル化します。
- predict_fn(input_object,model)—逆シリアル化されたデータは、読み込まれたモデルに対して推論を実行します。
- output_fn(prediction,content_type)—応答コンテンツタイプに従って推論をシリアル化します。
詳細な例については、fastai_oxford_pets GitHub repo にある pets.py ファイルを参照してください。
モデルのデプロイ後に、predict () メソッドを使用して推論を実行します。このメソッドでは、モデル対する推論の結果が返されます。
クリーンアップ
ノートブックインスタンスを停止し、Amazon SageMaker エンドポイントを削除して、追加料金を避けるようにしてください。
結論
この記事では、PyTorch ベースイメージと Amazon SageMaker Python SDK を使用して fastai モデルをトレーニングしてホストするために Amazon SageMaker を使用する方法を示します。このアプローチにより、 Amazon SageMaker で容易に素早く fastai モデルを構築、トレーニング、デプロイするために、bring-your-own-container アプローチがなくなります。
はじめに、AWS マネジメントコンソールにログインし、AWS CloudFormation テンプレート をデプロイします。新規ユーザーの場合は、アカウントを作成する必要があります。また、Amazon SageMaker で fastai モデルを構築する方法について詳しくは、この GitHub リンク も参照してください。
著者について
Amit Mukherjee は AWS のパートナーソリューションアーキテクトです。パートナーがクラウドで成功できるように、アーキテクチャの指針を提供します。深層学習分野に興味をもっています。余暇の楽しみは家族と充実した過ごしています。
Matt McClean は AWS のパートナーソリューションアーキテクトです。 彼は、機械学習のスペシャリストで、EMEA リージョンのテクノロジーパートナーと協力して、AWS テクノロジーを使用したソリューションを開発するための指針を示しています。余暇には、スキーとサイクリングをとても楽しんでいます。