の 2 つの新機能を発表できることを嬉しく思います。 Amazon SageMakerスタジオ 機械学習 (ML) 実践者向けの反復開発を加速します: ローカル モードと Docker のサポート。 ML モデルの開発では、開発者がコーディング、トレーニング、デプロイを切り替えるため、反復サイクルが遅くなることがよくあります。各ステップでは、リモート コンピューティング リソースが起動するまで待機する必要があるため、実装の検証や変更に関するフィードバックの取得が遅れます。
ローカル モードを使用すると、開発者は、リモート コンピューティング リソースを起動することなく、SageMaker Studio ノートブック インスタンス上でモデルのトレーニングとテスト、コードのデバッグ、エンドツーエンドのパイプラインの検証を直接行うことができるようになりました。これにより、反復サイクルが数分から数秒に短縮され、開発者の生産性が向上します。 SageMaker Studio ノートブックでの Docker サポートにより、開発者は Docker コンテナを簡単に構築し、事前に構築されたコンテナにアクセスできるため、チーム全体に一貫した開発環境が提供され、時間のかかるセットアップや依存関係の管理が不要になります。
ローカル モードと Docker のサポートにより、SageMaker Studio ノートブック上で実行されるローカル コンテナを使用して、コードの変更を検証し、モデルのプロトタイプを作成するための合理化されたワークフローが提供されます。
実例。この投稿では、SageMaker Studio でローカル モードを設定し、サンプル トレーニング ジョブを実行し、モデルをデプロイする方法を説明します。 アマゾンセージメーカー SageMaker Studio ノートブックからのエンドポイント。
SageMaker Studio ローカル モード
SageMaker Studio にはローカル モードが導入されており、リモート コンピューティング リソースを必要とせずに、JupyterLab、コード エディター、または SageMaker Studio Classic ノートブック インスタンス上で SageMaker トレーニング、推論、バッチ変換、ジョブの処理を直接実行できるようになります。ローカル モードを使用する利点は次のとおりです。
- 統合開発環境 (IDE) 内でのワークフローの即時検証とテスト
- 小規模ジョブのローカル実行による反復の高速化により、出力を検査し、問題を早期に特定します
- リモート トレーニング ジョブの待ち時間をなくすことで、開発とデバッグの効率が向上しました。
- クラウドで完全なジョブを実行する前に、コード変更に関する即時フィードバック
次の図は、SageMaker のローカル モードを使用したワークフローを示しています。
ローカルモードを使用するには、次のように設定します。 instance_type='local'
トレーニングや推論などの SageMaker Python SDK ジョブを実行するとき。これにより、クラウド リソースをプロビジョニングする代わりに、SageMaker Studio IDE によって使用されるインスタンス上でそれらが実行されます。
分散トレーニングなどの特定の機能はクラウドでのみ利用できますが、ローカル モードを使用すると、迅速な反復のためにコンテキストを切り替える必要がなくなります。 SageMaker の能力とスケールを最大限に活用する準備ができたら、クラウドでワークフローをシームレスに実行できます。
SageMaker Studio での Docker サポート
SageMaker Studio では、SageMaker Studio ノートブック インスタンス上でローカルに Docker コンテナを構築して実行できるようになりました。この新機能により、SageMaker のトレーニングと推論に使用する前に、SageMaker Studio で Docker イメージを構築して検証できるようになります。
次の図は、SageMaker Studio 内の高レベルの Docker オーケストレーション アーキテクチャを示しています。
SageMaker Studio の Docker サポートにより、次のことが可能になります。
- 統合されたモデルと依存関係を含む Docker コンテナを SageMaker Studio 内で直接構築します
- 外部の Docker ビルド プロセスの必要性を排除し、イメージの作成を簡素化します。
- モデルを実稼働環境にデプロイする前に、コンテナーをローカルで実行して機能を検証します。
- トレーニングとホスティングのために SageMaker にデプロイするときにローカル コンテナを再利用する
この記事の執筆時点では、マルチコンテナーやカスタム ネットワークなどの一部の高度な Docker 機能はサポートされていませんが、コアのビルドおよび実行機能は、Bring Your Own Container (BYOC) ワークフローのコンテナー開発を加速するために利用できます。
前提条件
SageMaker Studio アプリケーションでローカル モードを使用するには、次の前提条件を満たしている必要があります。
- 画像を取得する場合 Amazon エラスティック コンテナ レジストリ (Amazon ECR)、ECR イメージをホストするアカウントは、ユーザーのアクセス許可を提供する必要があります。 アイデンティティおよびアクセス管理 (IAM) の役割。ドメインのロールでは、Amazon ECR アクセスも許可する必要があります。
- ローカル モードと Docker 機能を有効にするには、
EnableDockerAccess
ドメインのパラメータを true に設定しますDockerSettings
AWSコマンドラインインターフェイス (AWS CLI)。これにより、ドメイン内のユーザーはローカル モードと Docker 機能を使用できるようになります。デフォルトでは、ローカル モードと Docker は SageMaker Studio で無効になっています。 Docker サービスの更新を有効にするには、既存の SageMaker Studio アプリを再起動する必要があります。以下は、SageMaker Studio ドメインを更新するための AWS CLI コマンドの例です。
- できるようにするには、SageMaker IAM ロールを更新する必要があります。 Dockerイメージをプッシュする Amazon ECR へ:
ローカル モードを使用して SageMaker Studio スペースで Python ファイルを実行する
SageMaker Studio JupyterLab およびコード エディター (ベース) Code-OSS、Visual Studio Code – オープンソース) は SageMaker Studio を拡張し、人気の軽量 IDE を使用して分析コードと ML コードを作成、テスト、デバッグ、実行できるようにします。 SageMaker Studio IDE の使用を開始する方法の詳細については、以下を参照してください。 Amazon SageMaker Studio での生産性の向上: JupyterLab Spaces と生成 AI ツールの紹介 & 新機能 – Code-OSS VS Code オープンソースに基づくコードエディターが Amazon SageMaker Studio で利用可能になりました。 次の手順を実行します。
- 新しいターミナルを作成します。
- 次の手順に従って、Docker CLI と Docker Compose プラグインをインストールします。 GitHubレポ。連鎖したコマンドが失敗した場合は、コマンドを一度に 1 つずつ実行します。
SageMaker SDK を最新バージョンに更新する必要があります。
- ラン
pip install sagemaker -Uq
ターミナルで。
コード エディターの場合のみ、現在のターミナルで実行されるように Python 環境を設定する必要があります。
- コード エディターで、 ファイルメニュー¸選ぶ 環境設定 & 設定.
- 検索して選択します ターミナル: ファイルディレクトリで実行.
- コード エディターまたは JupyterLab で、
scikit_learn_script_mode_local_training_and_serving
フォルダを実行し、scikit_learn_script_mode_local_training_and_serving.py
ファイルにソフトウェアを指定する必要があります。
を選択してスクリプトを実行できます。 ラン コード エディターで、または JupyterLab ターミナルで CLI を使用して。 モデルがローカルでどのようにトレーニングされるかを確認できます。次に、モデルをローカルの SageMaker エンドポイントにデプロイし、二乗平均平方根誤差を計算します (RMSE
).
ローカル モードを使用して SageMaker Studio Classic でトレーニングと推論をシミュレートする
SageMaker Studio Classic のノートブックを使用して、小規模なトレーニング ジョブを実行することもできます。 CIFAR10
ローカル モードを使用して、モデルをローカルにデプロイし、推論を実行します。
ノートブックをセットアップする
ノートブックをセットアップするには、次の手順を実行します。
- SageMaker Studio Classic を開き、以下のクローンを作成します。 GitHubレポ.
- Video Cloud Studioで
pytorch_local_mode_cifar10.ipynb notebook in blog/pytorch_cnn_cifar10
.
- 画像、選択する
PyTorch 2.1.0 Python 3.10 CPU Optimized
.
ノートブックに正しいインスタンスとカーネルの選択が表示されていることを確認します。
- を選択してターミナルを開きます ターミナルの起動 現在の SageMaker イメージ内。
- 次の手順に従って、Docker CLI と Docker Compose プラグインをインストールします。 GitHubレポ.
SageMaker Studio Classic の Docker を使用しているため、ターミナルは既にスーパーユーザーで実行されているため、コマンドを実行するときに sudo を削除します。 SageMaker Studio Classic の場合、インストール コマンドは SageMaker Studio アプリ イメージ OS によって異なります。たとえば、DLC ベースのフレームワーク イメージは Ubuntu ベースであり、次の手順で機能します。ただし、DataScience イメージのような Debian ベースのイメージの場合は、次の手順に従う必要があります。 GitHubレポ。連鎖したコマンドが失敗した場合は、コマンドを一度に 1 つずつ実行します。 Docker のバージョンが表示されるはずです。
- ターミナル ウィンドウを開いたままにして、ノートブックに戻り、セルごとに実行を開始します。
必ずセルを実行してください pip install -U sagemaker
SageMaker Python SDK の最新バージョンを使用していることになります。
現地研修
ローカルの SageMaker トレーニング ジョブの実行を開始すると、次のログ行が表示されます。
これは、トレーニングが Docker を使用してローカルで実行されていることを示します。
しばらくお待ちください。 pytorch-training:2.1-cpu-py310
Dockerイメージがプルされます。サイズが大きい (5.2 GB) ため、数分かかる場合があります。
Docker イメージは、SageMaker Studio アプリ インスタンスのルート ボリュームに保存されますが、エンドユーザーはアクセスできません。 Docker イメージにアクセスして操作する唯一の方法は、公開された Docker API 操作を介することです。
ユーザーの機密性の観点から、SageMaker Studio プラットフォームはユーザー固有の画像にアクセスしたり保存したりすることはありません。
トレーニングが完了すると、次の成功ログ行が表示されるようになります。
局所的な推論
次の手順を完了します。
- SageMaker Local Mode を使用して SageMaker エンドポイントをデプロイします。
しばらくお待ちください。 pytorch-inference:2.1-cpu-py310
Dockerイメージがプルされます。サイズが大きい (4.32 GB) ため、数分かかる場合があります。
- テスト イメージを使用して、ローカルにデプロイされた SageMaker エンドポイントを呼び出します。
予測されたクラス: カエル、船、車、飛行機が表示されます。
- SageMaker Local エンドポイントはまだ稼働しているため、開いているターミナル ウィンドウに戻り、実行中のコンテナを一覧表示します。
docker ps
走行中の様子が見られます pytorch-inference:2.1-cpu-py310
SageMaker エンドポイントをバックアップするコンテナ。
- 一度に 1 つのローカル エンドポイントしか実行できないため、SageMaker ローカル エンドポイントをシャットダウンして実行中のコンテナを停止するには、クリーンアップ コードを実行します。
- Docker コンテナが停止していることを確認するには、開いているターミナル ウィンドウに移動し、docker ps を実行して、実行中のコンテナがないことを確認します。
- 実行中のコンテナが表示されたら、実行します
docker stop <CONTAINER_ID>
それを停止する。
SageMaker ローカル モードを使用するためのヒント
SageMaker を初めて使用する場合は、以下を参照してください。 機械学習モデルをトレーニングする。 SageMaker を使用した推論用のモデルのデプロイの詳細については、以下を参照してください。 推論用のモデルをデプロイする.
次の推奨事項に留意してください。
- データセットとモデルの読み込みを理解するために、入力ファイルと出力ファイルとフォルダーを印刷します。
- 迅速なテストには 1 ~ 2 エポックと小さなデータセットを使用します
- Dockerfile に依存関係を事前インストールして環境セットアップを最適化する
- デバッグのためにエンドポイントでシリアル化コードを分離する
Docker インストールをライフサイクル構成として構成する
Docker インストール プロセスをライフサイクル構成 (LCC) スクリプトとして定義して、新しい SageMaker Studio スペースが開始されるたびにセットアップを簡素化できます。 LCC は、スペース作成などのイベント中に SageMaker が実行するスクリプトです。を参照してください。 ジュピターラボ, コードエディターまたは SageMaker スタジオ クラシック LCC セットアップ (使用 ドッカーインストールcli 参考として)詳細をご覧ください。
SageMaker Studio スペースでカスタム Docker イメージを構築してテストする
このステップでは、JupyterLab (またはコード エディター) アプリ スペース内に Docker をインストールし、Docker を使用して SageMaker Studio スペースでカスタム Docker イメージを構築、テスト、公開します。スペースは、一部の SageMaker Studio アプリケーションのストレージとリソースのニーズを管理するために使用されます。各スペースは、アプリケーションのインスタンスと 1:1 の関係を持ちます。サポートされている作成されたすべてのアプリケーションには、独自のスペースが与えられます。 SageMaker スペースの詳細については、以下を参照してください。 Amazon SageMaker Studio での生産性の向上: JupyterLab Spaces と生成 AI ツールの紹介。 Docker イメージとアーティファクトに十分なストレージを確保できるように、少なくとも 30 GB のストレージを備えた新しいスペースを必ずプロビジョニングしてください。
スペース内に Docker をインストールする
Docker CLI および Docker Compose プラグインを JupyterLab スペース内にインストールするには、次のコマンドを実行します。 GitHubレポ。 SageMaker スタジオ Docker バージョン 20.10.X のみをサポートします.
Dockerイメージを構築する
Docker がインストールされ、JupyterLab スペース内で動作していることを確認するには、次のコードを実行します。
JupyterLab (またはコード エディター) スペース内でカスタム Docker イメージを構築するには、次の手順を実行します。
- 空の Dockerfile を作成します。
touch Dockerfile
- 次のコマンドを使用して Dockerfile を編集します。これにより、ホストされているベースの python:3.10.13-bullseye イメージから単純な flask Web サーバー イメージが作成されます。 Dockerハブ:
次のコードは、フラスコ アプリケーション ファイルの例の内容を示しています。 app.py
:
さらに、参照 Dockerfile コマンドを更新して、選択したパッケージとアーティファクトを含めることができます。
- 参照 Dockerfile を使用して Docker イメージを構築します。
docker build --network sagemaker --tag myflaskapp:v1 --file ./Dockerfile .
含める --network
docker build コマンドに sagemaker を追加しないと、ビルドが失敗します。コンテナーは、Docker のデフォルト ブリッジまたはカスタム Docker ネットワークでは実行できません。コンテナは、SageMaker Studio アプリケーション コンテナと同じネットワーク内で実行されます。ユーザーはネットワーク名として sagemaker のみを使用できます。
- ビルドが完了したら、イメージが存在するかどうかを確認します。ビルドを ECR イメージとして再タグ付けしてプッシュします。権限の問題が発生した場合は、aws ecr get-login-password… コマンドを実行し、Docker のプッシュ/プルを再実行してみてください。
Docker イメージのテスト
Docker を JupyterLab (またはコード エディター) SageMaker Studio スペース内にインストールすると、事前に構築されたまたはカスタムの Docker イメージをコンテナー (またはコンテナー化されたアプリケーション) としてテストできます。このセクションでは、docker run コマンドを使用して SageMaker Studio スペース内に Docker コンテナをプロビジョニングし、REST Web サービスや Python スクリプトなどのコンテナ化されたワークロードをテストします。次の手順を実行します。
- テスト イメージが存在しない場合は、 docker pull を実行してイメージをローカル マシンにプルします。
sagemaker-user@default:~$ docker pull 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
- 認証の問題が発生した場合は、次のコマンドを実行します。
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
- ワークロードをテストするためのコンテナーを作成します。
docker run --network sagemaker 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
これにより、新しいコンテナ インスタンスが起動され、Docker の ENTRYPOINT を使用して定義されたアプリケーションが実行されます。
- Web エンドポイントがアクティブかどうかをテストするには、次の URL に移動します。
https://<sagemaker-space-id>.studio.us-east-2.sagemaker.aws/jupyterlab/default/proxy/6006/
.
次のスクリーンショットのような JSON 応答が表示されるはずです。
クリーンアップ
不必要な料金が発生しないようにするには、この投稿の例の実行中に作成したリソースを削除してください。
- SageMaker Studio ドメインで、 スタジオクラシック ナビゲーションペインで、を選択します Force Stop.
- SageMaker Studio ドメインで、 ジュピターラボ or コードエディター ナビゲーションペインでアプリを選択し、 Force Stop.
まとめ
SageMaker Studio のローカル モードと Docker のサポートにより、開発者はワークスペースを離れることなく、ML 実装をより迅速に構築、テスト、反復できるようになります。これらの機能は、テスト環境と出力への即時アクセスを提供することで、ワークフローを最適化し、生産性を向上させます。 SageMaker Studio のローカル モデルと Docker のサポートを、 クイックオンボード機能、これにより、数分以内に単一ユーザー用の新しいドメインをスピンアップできます。 コメントセクションであなたの考えを共有してください!
著者について
シュエタシン は、AWS の Amazon SageMaker Machine Learning (ML) プラットフォーム チームのシニアプロダクトマネージャーであり、SageMaker Python SDK を主導しています。彼女は 5 年以上、Amazon でいくつかの製品の役割を果たしてきました。彼女はニューヨーク大学でコンピュータ エンジニアリングの理学士号と金融工学の理学修士号を取得しています。
エイタンセラ AWS のジェネレーティブ AI および機械学習スペシャリスト ソリューション アーキテクトです。彼は AWS の顧客と協力してガイダンスと技術支援を提供し、AWS での生成 AI および機械学習ソリューションの構築と運用を支援しています。余暇には、ジョギングをしたり、最新の機械学習の記事を読んだりするのが趣味です。
プラナフ・ムルティ AWS の AI/ML スペシャリスト ソリューション アーキテクトです。 彼は、顧客が機械学習 (ML) ワークロードを構築、トレーニング、デプロイし、SageMaker に移行できるよう支援することに重点を置いています。 以前は半導体業界で、最先端の ML 技術を使用して半導体プロセスを改善するための大規模コンピューター ビジョン (CV) および自然言語処理 (NLP) モデルの開発に従事していました。 自由時間には、チェスをしたり、旅行を楽しんでいます。 プラナフは次のサイトで見つけることができます LinkedIn.
ムファダル・ロハワラ AWS のソフトウェア エンジニアです。彼は、Amazon SageMaker の SageMaker Python SDK ライブラリに取り組んでいます。余暇には、旅行やアウトドア活動を楽しんでおり、サッカーファンでもあります。
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- PlatoData.Network 垂直生成 Ai。 自分自身に力を与えましょう。 こちらからアクセスしてください。
- プラトアイストリーム。 Web3 インテリジェンス。 知識増幅。 こちらからアクセスしてください。
- プラトンESG。 カーボン、 クリーンテック、 エネルギー、 環境、 太陽、 廃棄物管理。 こちらからアクセスしてください。
- プラトンヘルス。 バイオテクノロジーと臨床試験のインテリジェンス。 こちらからアクセスしてください。
- 情報源: https://aws.amazon.com/blogs/machine-learning/accelerate-ml-workflows-with-amazon-sagemaker-studio-local-mode-and-docker-support/