Amazon SageMaker Studioから利用できる機能についてまとめてみた

記事タイトルとURLをコピーする

こんにちは、10月に入社し、現在インターナルエデュケーション課(IE課)で修行中の山永です。

最近、Amazon SageMaker Studioがの大幅なアップデートがあり、これを機にSageMakerについて再調査しました。

イントロダクション:Amazon SageMaker

次の図は、機械学習モデルを作成するための典型的なワークフローを示しています。

機械学習モデルは、データ準備、モデル開発、本番環境へのデプロイというプロセスを繰り返し行うことで、新たに収集したデータを使ってモデルを再トレーニングし、精度を向上させます。

SageMakerはこれらのプロセスを全面的に管理するサービスを提供し、さまざまな用途に合わせた機械学習モデルの構築、トレーニング、デプロイを簡素化します。

SageMaker Studioについて

SageMaker Studioは、Amazon SageMakerの様々な機能を一つに統合した開発環境を提供するサービスです。 左側にあるナビゲーションバーから、これらの機能に簡単にアクセスできます。

SageMaker Studioの機能一覧

SageMaker Studioで利用できるサービスを、機械学習モデル開発の各プロセスに沿って分類しました。

この分類により、サービスが個別に分けられることが困難であり、どのサービスも実際の運用を念頭に置いて設計されていると考えられます。

アプリ JupyterLab JupyterLabが使用可能
Code Editor VS Codeと同等の機能を持つエディタが使用可能
RStudio R言語の統合開発環境であるRstudioが使用可能
Canvas コーディング不要で機械学習モデルを構築可能
SageMaker Studio Classic SageMaker Studioの旧バージョン
データ準備 Data Wrangler データの集約、探索、変換をノーコードで実装可能
Feature Store 機械学習モデルの特徴量を保存・管理し、アプリケーション間での再利用を促進
Amazon EMR Clusters Amazon EMRを使用し、大規模な分散データ処理ジョブを実行可能
モデル開発 Autopilot データに基づき、最適な機械学習モデルを自動構築、トレーニング、およびチューニング
Experiments 機械学習における様々な試行を記録し、整理・可視化して効率的に管理
Training Jobs 作成した機械学習モデルを管理
Model Evaluation SageMaker Clarifyを使用したモデルの評価
デプロイ・運用 Pipelines 機械学習ワークフローを自動化するMLOpsツール
Models モデルの作成、登録、デプロイなどの管理
JumpStart 事前トレーニング済みモデルのデプロイ、調整、評価
Inference recommender モデルをSageMaker上でデプロイするためのインスタンスタイプと設定を最適化
Endpoints デプロイしたモデルへの推論リクエストを処理するエンドポイントを管理
その他SageMakerの基盤となるサービス

以下に挙げるのは、SageMakerの基盤となるサービスです。 これらはAWSマネジメントコンソールから直接利用できるほか、他のサービスに統合されて使用可能です。

データ準備 SageMaker Ground Truth データセットにラベルを付け、高品質なトレーニングデータを作成するための支援
モデル開発 Notebook Instances Jupyter Notebookを実行するためのコンピューティングインスタンス
AWS Marketplace 第三者によって事前に構築されたアルゴリズムやモデルが利用可能
SageMaker Clarify モデルのバイアス検出と、解釈性及び公平性の評価を提供
SageMaker Debugger トレーニング中のモデルのデバッグを支援(SDK経由で利用可能)
デプロイ・運用 SageMaker Neo エッジデバイスにおける機械学習モデルの推論を最適化
Augmented AI 機械学習による予測結果の人間によるレビュー
SageMaker Model Monitor デプロイされたモデルの品質を監視

SageMaker Studio試してみた

SageMaker Studioを利用するには、まずプロジェクト管理用のドメインを構築し、それに加えて各ユーザーのプロファイルを作成する必要があります。

SageMakerドメインは機械学習プロジェクトを管理する環境であり、組織内のエンジニアチームが共有する作業スペースです。 ドメイン内にユーザープロファイルを作成することで、ユーザーは様々なSageMakerサービスを利用することが可能になります。

SageMakerドメインの構築

AWSマネジメントコンソールからSageMakerと検索してSageMakerのトップページを開きます。 リージョンごとに利用可能なサービスが異なるため、今回は対応サービスが豊富な「バージニア北部リージョン」にて構築を進めます。

左側のメニューからドメインの管理画面に移動するので、「ドメインを作成」をクリックします。

今回は「シングルユーザー向けの設定(クイックセットアップ)」を選択し、「設定」をクリックします。

クイックセットアップでは以下のリソースが自動的に構築されます。 VPC・サブネットは既存のリソースから自動的に選択され、その上でセキュリティーグループやEFSが自動作成されます。 そのため、簡単に試す場合を除きSageMaker専用のVPC・サブネットを構築し、「組織向けの設定」から手動でこれらを選択してドメイン構築することを推奨します。(機会があれば別記事にて紹介します。)

  • ドメイン
  • ユーザープロファイル ×1
  • IAMロール
  • S3バケット
  • VPC
  • セキュリティーグループ
  • EFS

しばらくすると作成したドメインのステータスが「InService」となり、利用可能な状態となります。

作成したドメインをクリックすると、詳細画面よりユーザープロファイルが一つ作成されていることが確認できます。

SageMaker Studioの起動

左側のメニューから「Studio」を選択すると、SageMaker Studioの起動画面に移動します。 先ほど作成したドメインとユーザープロファイルを選択した上で「Studioを開く」をクリックすると、SageMaker Studioを起動できます。

SageMaker Studioのトップページです。左側のメニューから各種アプリやサービスが利用できます。

JupyterLabの起動

まずはJupyterLabを起動してみます。 SageMaker Studioではスペースという単位でインスタンスタイプ・ストレージ容量などを管理するため、左上の「Create JupyterLab space」をクリックしてスペースを作成します。

「Name」を入力して「Create space」をクリックします。

しばらくすると作成したスペースが利用可能となります。スペースの画面からインスタンスタイプや起動イメージの選択が可能です。

「Open JupyterLab」からJupyterLabが起動できます。

JupyterLabの起動画面です。ローカルに構築した環境と変わらない操作感でJupyterLabを利用できます。 一般的な機械学習ライブラリもインストール済みのためすぐに開発が初められます。

Code Editorの起動

次に、新しく追加されたCode Editorを起動してみます。 まずJupyterLabと同じ方法でスペースを作成し、それによりCode Editorアプリが利用できるようになります。

スペースの「Name」を設定します。

次に、インスタンスタイプとイメージを選択し、「Run space」ボタンをクリックします。

そして、「Open CodeEditor」を選択してCode Editorを開きます。

ブラウザベースですが、VS Codeとほぼ同等の機能が利用可能です。

VS Codeで利用可能な拡張機能も導入できるので、自分の好みに合わせた開発環境を構築することが可能です。

Jupyter Extensionも利用できますので、VS CodeでJupyter Notebookファイルを実行することもできます。 個人的には、SageMaker StudioのJupyterLabアプリよりも、VS Code上でJupyterファイルを編集し、ターミナルを実行する機能とVS Codeのさまざまな拡張機能を使えるCode Editorの方が、開発作業に適していると感じています。

起動したインスタンスの停止

SageMaker Studioは、インスタンスの起動時間に基づいた従量課金制です。 そのため、利用していない時は、こまめにインスタンスを停止することでコストを削減できます。

左側のメニューで「Running Instances」を選ぶと、起動中のインスタンスが一覧表示されます。 「Stop」ボタンをクリックして、不要なインスタンスを停止しましょう。

おわりに

以上、大幅にアップデートされたSageMaker Studioの新機能一覧と、主要なアプリケーションであるJupyterLabとCodeEditorの使用方法についての紹介でした。 私個人としては、使い慣れたVS Codeを用いた開発が可能なCode Editorの導入により、機械学習モデルの開発を行うお客様にとっても、SageMakerの採用を促すきっかけになるのではないかと思っています。

今後も、実際の機械学習モデル構築プロセスに沿ったSageMakerの使い方や、Canvasを含むその他のアプリケーションについてもご紹介していく予定です。

最後までお読みいただき、ありがとうございました。

山永 功二(執筆記事の一覧)

インターナルデュケーション課

パン作りにはまってます。