Amazon SageMaker ツールキットの多面性
著者:ヴィケシュ・パンディ
Amazon SageMaker には、SageMaker 上でトレーニング/推論コンテナとコードを実行するプロセスをより簡単にする8 つの異なる「ツールキット」が提供されていることをご存知ですか? SageMaker が提供するコンテナを使用している場合でも、独自のコンテナの構築 (BYOC) を使用している場合でも、これらのツールキットは非常に重要な役割を果たします。
SageMaker を使用している場合、これらのツールキットの理解は次のいずれかのカテゴリに分類される可能性があります。
1. 聞いたこともありません。
2. 聞いたことはあっても、それがどのような目的で使われるのかは知りません。
3. あなたは、これらのツールキットを深く掘り下げるという特別な努力を払い、自分を専門家と呼ぶのに十分な知識を身につけました:)
このブログは主に最初の 2 つのカテゴリーの読者を対象としています。
それについて知ることがなぜ重要ですか?
これらのツールキットについて知っておくべき理由は主に 2 つあります。
1. トレーニングおよび/または推論コンテナーとコードのエラーのデバッグがはるかに簡単になります。
2. どの環境変数にアクセスできるか、すべてのライブラリ (およびそのバージョン) がトレーニング/推論コンテナなどに含まれるか、SageMaker がコンテナとコードを結び付けるためにどのような実装を行ったかを知ることで、SageMaker をより効率的に (そして迅速に) 使用できるようになります。一緒。
このブログでは、これらのツールキットの世界をさらに深く掘り下げ、次の質問に答えます。
- ツールキットにはどのようなものがありますか?
- なぜそれらが必要なのでしょうか?
- これらのツールキットを使用しない場合はどうなりますか?
- なぜそんなにたくさんあるのでしょうか?
- どちらを使用するかを選択するにはどうすればよいですか?
- ツールキットが ML フレームワーク/ライフサイクル全体で一貫していないのはなぜですか? (これについては後のセクションで詳しく説明します)
SageMaker は、SageMaker での作業に役立つ 8 つの (はい、正しく読みました!) 異なるツールキットを提供します。これらは主にトレーニングと推論のステップに対応します。以下の図を使用して、階層内でそれらがどのように相互に重なり合うかを理解してみましょう。
ご覧のとおり、ツールキットは 2 つのセクション (トレーニングと推論) に分かれています。技術的には、これらのツールキットは Python パッケージであり、 Dockerfile のpip経由でインストールできます。
注:上の図には、huggingface-training-toolkit と tensorflow-inference-toolkit が欠落していることにお気付きでしょうか。ブログを最後まで読み続ければ、この謎の答えも見つかるでしょう :)。ここでは、これらのツールキットについてもう少し理解しましょう。
1. トレーニングツールキット
これらは、コンテナをトレーニング目的で SageMaker 上で実行できるようにするために Dockerfile に追加する必要があるパッケージです。
- SageMaker トレーニング ツールキット(親)
- SageMaker TensorFlow トレーニング ツールキット(sagemaker-training-toolkit を拡張)
- SageMaker PyTorch トレーニング ツールキット(sagemaker-training-toolkit を拡張)
- SageMaker MXNet トレーニング ツールキット(sagemaker-training-toolkit を拡張)
これらは、推論目的で SageMaker 上で実行できるようにコンテナーの互換性を持たせるために Dockerfile に追加する必要があるパッケージです。
- SageMaker Inference Toolkit (親)
- SageMaker PyTorch 推論ツールキット(sagemaker-inference-toolkit を拡張)
- SageMaker MXNet Inference Toolkit (sagemaker-inference-toolkit を拡張)
- SageMaker Huggingface Inference Toolkit (sagemaker-inference-toolkit を拡張)
SageMaker では、入力データ、設定、モデル、ログなどを保存するコンテナー内に特定のフォルダー構造が存在する必要があります。もう 1 つ重要なことは、トレーニング コードとコンテナーでの SageMaker 環境変数の使用です。
これらの環境変数を使用すると、トレーニング コードが入力データの場所、モデルの出力場所、設定の場所などにアクセスできるようになります。詳細については、「トレーニング データセット、チェックポイント、モデル アーティファクト、および出力用の Amazon SageMaker トレーニング ストレージ フォルダー」を参照してください。
これらのツールキットをコンテナ内にインストールするだけの場合、すべてのフォルダー構造がコンテナに正しくマウントされ、トレーニング コードがアクセスできるようにすべての SageMaker 環境変数が有効になります。詳細については、「SageMaker トレーニングおよび推論ツールキットの使用」を参照してください。
要約すると、コンテナーの開発を簡素化したい場合、これらのツールキットは必須です。そしてはい、SageMaker が提供するコンテナにもこれらのツールキットがプリインストールされています。
これらのツールキットを使用しない場合はどうなりますか?
コンテナを SageMaker 上で実行できるように互換性を持たせることは可能です。手作業が増えるだけです。動作させるには、Dockerfile でWORKDIR変数とENV変数を手動で使用する必要があります。
なぜそんなにたくさんあるのでしょうか?
それらが非常に多い理由は次のとおりです。
- トレーニング コンテナーの要件は、推論コンテナーとは異なります。例: トレーニング コンテナーには Web サーバーは必要ありませんが、推論コンテナーには Web サーバーが必要です。これが、ツールキットが 2 つの階層に編成されている理由です。
- TensorFlow、PyTorch などのさまざまなフレームワークには、デフォルトをオーバーライドしたり、トレーニングおよび推論機能を調整したりするための構成や設定が異なります。
- これは、ソフトウェア開発業界の単一責任原則に基づいています。パッケージは 1 つのことだけを実行し、それを正しく実行する必要があります。SageMaker は、そこにあるすべてのものを含む単一のモノリス コンテナーを作成することもできましたが、そのコンテナーを管理してパッチを適用するのは悪夢のような作業になるでしょう。
sagemaker-training-toolkitとsagemaker-inference-toolkit は、コンテナ内で使用する予定のフレームワークまたはライブラリで使用できる基本ツールキットです。これらのツールキットは、SageMaker でコンテナを実行するために必要なすべての SageMaker 機能を提供します。
一方、独自の TensorFlow、PyTorch、Huggingface、または MxNet コンテナを構築する予定がある場合は、SageMaker が提供するそれぞれのツールキットを使用して、基本的なトレーニングおよび推論ツールキットをスキップできます。これは、フレームワーク固有のツールキットが基本ツールキットから拡張されているため、基本ツールキットのすべての機能も利用できるためです。
たとえば、 sagemaker-tensorflow-training-toolkitを使用する場合、次のような環境変数を設定できます。
— SAGEMAKER_PARAMETER_SERVER_ENABLED、
— SAGEMAKER_DISTRIBUTED_DATAPARALLEL_ENABLED
— SAGEMAKER_MULTI_WORKER_MIRRORED_STRATEGY_ENABLED
同様に、sagemaker-pytorch-training-toolkitを使用すると、次のような環境変数にアクセスできます
。
注: 前述のフレームワーク固有の構成/チューニングを使用する予定がない場合は、ベース ツールキットのみを使用して独自のフレームワーク コンテナを構築することも選択できます。
ツールキットが ML フレームワーク/ライフサイクル全体で一貫していないのはなぜですか?
tensorflow-inference-toolkitやhackgingface-training-toolkitがないことにお気付きでしょう。その理由は何でしょうか?フレームワークごとに分類してみましょう。
なぜtensorflow-inference-toolkitがないのでしょうか?
これは主に、TensorFlow が提供メカニズムとしてTensorFlow Serving を使用しており、このライブラリをインストールするだけで必要に応じて調整できるためです。SageMaker がこれらの調整オプションを提供する必要はありません。
ただし、Dockerfile にはsagemaker-inference-toolkit が必要なので、SageMaker 固有の設定がすべてコンテナに自動的に適用されます。
なぜハグフェイストレーニングツールキットがないのでしょうか?
ハグフェイスは独自のモデル実装を提供せず、PyTorch と TensorFlow 固有の実装を提供するためです。
したがって、huggingface モデルをトレーニングしたい場合は、 huggingface を操作するために選択したフレームワークに応じて、tensorflow-training-toolkitまたはpytorch-training-toolkitを使用するだけです。したがって、ハグフェイストレーニングツールキットは必要ありません。
ただし、 HF_TASKやHF_MODEL_IDなどの ハグフェイス固有の環境変数を提供するため、ハグフェイス推論ツールキットが必要になります。
結論
要約すると、これらのツールキットは、すぐに使用できる多くの設定を提供するため、モデル開発プロセスを簡素化する優れた方法です。BYOC をいつ行うか、どのように行うかについて詳しく知りたい場合は、私のブログ「Amazon SageMaker に独自のコンテナを持ち込む理由とその正しいやり方」を参照してください。
読んだ内容が気に入ったら、遠慮なくネットワークで共有してください。

![とにかく、リンクリストとは何ですか?[パート1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































