AWS re:Invent 2023 で発表されたAmazon SageMakerに関するアップデートや記事をまとめてみた #AWSreInvent

これはもう Amazon SageMaker V2 と言っても良いのでは!?
2023.12.04

こんちには。

データアナリティクス事業本部 機械学習チームの中村です。

AWS re:Invent 2023では連日様々なアップデートが発表されました。その中でAmazon SageMakerも多数のアップデートがありましたが、控えめに言って良アップデートが満載です!!

今回は機械学習のサービスであるAmazon SageMakerについてそのアップデートをまとめます。

キーノートでの発表

Amaozn Sagemaker HyperpodがGA

本来困難な大規模言語モデルなどの基盤モデルのトレーニングを簡易に実現するサービスで、SageMaker上であらかじめ準備されている分散トレーニングライブラリを使って、学習クラスタのスケーリングや監視、チェックポイントの作成、リカバリなどを実現するものとなっています。

公式ブログでもTrn1インスタンスを使ったLlama 2 7Bモデルの学習する例が紹介されていますので、ご興味があればそちらもご覧ください。

Amazon SageMaker Studio内の新しいIDEとなるCode EditorがGA

こちらはSageMaker Studioの中で、Code-OSS(Visual Studio Code - Open Source)ベースのコードエディタが使用可能となったアップデートです。

従来SageMaker Studioはデータサイエンティストがよく使用するノートブック環境による開発を主にサポートしていましたが、今回VSCodeがSageMaker Studioの中で使用可能となったことにより、生のpyファイルを使った開発も効率的にできるようになり、個人的にもかなりアツいアップデートとなっています。従来でもpyファイルの編集自体は使えましたが、ローカルのVSCode環境ほどのIDEの恩恵は受けられなかったですので、今後の開発がかなり効率的になりそうな予感がします。

キーノートではCode Editorに着目された発表がありましたが、SageMaker Studio自体のUIや階層構造、裏側でのインスタンスの起動トリガなどが大幅にリニューアルしており、かなり開発体験が向上するものとなっています。従来のものはSageMaker Studio Classicという扱いとなるようです。なお新しいSageMaker Studio上で、Studio Classic Spaceという形で元々のSageMaker Studioに近いUIを立ち上げることも可能になっています。

使用する際は、SageMaker Studio Domainを新規作成する必要がありますのでご注意ください。

SageMaker Studio関連

SageMaker Studioの大幅リニューアル

Code Editorの項でも説明しましたが、SageMaker Studioが大幅リニューアル公式されました。(What's Newでは別となっていたため別項目にしています)

新しいSageMaker Studioでは以下のような特徴があります。

  • 非常に高速な起動
    • Studio起動時にJupyterServerなどの起動が不要となったため非常に高速
  • 多様なアプリケーション環境
    • 前述の通り新発表されたCode Editorが使用できますが、それ以外にJupyterLab、RStudio(要ライセンス)、Canvas(SageMaker Canvas)、Studio Classicをアプリケーション環境として使用可能
  • プレーンなJupyterLab環境
    • 従来のSageMaker Studio Classicのノートブックと異なり素のJupyterLab環境が使用可能
  • 起動インスタンスの一覧表示
    • 起動済みのアプリケーション環境の一覧表示が可能で、インスタンスの止め忘れを防止しやすく
  • トレーニングジョブやエンドポイントの詳細表示
    • 従来はマネジメントコンソールで確認する必要があったトレーニングジョブやエンドポイントの詳細を、SageMaker Studio側で表示可能に
  • ストレージの変更
    • SageMaker Studio ClassicはEFSボリュームを使用していましたが、新しいSageMaker StudioはEBSにファイルを保存
    • Classicの場合はEFSがドメイン内で共有されていたが、EBSはアプリケーション毎に作成されるため、共有には工夫が必要

Studio ClassicからのマイグレーションについてはDeveloper Guideにいくつか説明があります。

以下も参照ください。

SageMaker Studio Domainのセットアップ画面がリニューアル

こちらはSageMaker Studio Domainを作成するためのセットアップ画面が新しくなりました。元々は「クイックセットアップ」と「標準セットアップ」という2つですが、こちらがそれぞれ「シングルユーザー向けの設定(クイックセットアップ)」と「組織向けの設定」という呼称となりました。そもそも全面的にリニューアルされているため設定できる項目が変わっていますが、基本的な位置づけは同じとなっている印象です。

「組織向けの設定」はより適切なセキュリティガードレールでセットアップをカスタマイズするものとなります。Code Editorはどちらでも使用することが可能です。

JupyterLab環境の追加

こちらも先ほどから出てきている話ですが、JupyterLab環境がIDEとして使えるようになりました。Code Editorのレイヤと同じでStudioで扱えるアプリケーション環境の1つです。

SageMaker DistributionがCode Editorや新しいJupyterLab環境にも対応

以前からSageMaker Distributionという機械学習の様々なライブラリを含むDockerイメージが利用可能となっていましたが、こちらが新しいCode EditorやJupyterLabなどのアプリケーション環境にも対応しています。

独自のEFSボリュームを利用可能に

こちらも全体的なリニューアルと関連する話ですが、SageMaker Studio Domainに紐づけられるEFSがなくなり、逆に独自のEFSボリュームを持ち込むことが可能となりました。 新しいSageMaker Studioはデフォルトではアプリケーション環境毎に個別のEBSを持つ形ですが、アプリケーション環境間でファイルを共有する場合は、独自のEFSボリュームを使用することで可能となりそうです。

SageMaker Canvas関連

SageMaker Canvasが自然言語による指示をサポート

モデル構築準備のためのデータ準備(Data Preparation)に、Bedrockを活用することで自然言語による指示が可能となる機能が発表されました。 データ品質レポートの作成の依頼や、特徴量の分布の可視化プロット、データのフィルタリングなどが自然言語処理で可能となります。 要するにAmazon Q in SageMaker Canvasと言っても良い機能かもしれません。

またこの機能はSageMaker Canvas内のSageMaker Data Wranglerに対して機能するものとなっており、Data Wrangler自体も新しいSageMaker StudioとなってからCanvasに内包される機能となったように見えます。(正式アナウンスが見当たりませんでしたが、見落としているのかもしれません)

SageMaker Canvas上で基盤モデルのファインチューニングがサポート

SageMaker Canvas上で、基盤モデルに対して独自データを用いたファインチューニングをして、比較評価することが可能となりました。 元々10月ごろにBedrockやJumpStartの基盤モデルをCanvas上で利用することが可能となっていたのですが、今回さらにファインチューニングも実施することができるようになったものです。

上記以外

TensorRT-LLMをサポートしたLMI DLC 0.25.0を発表

こちらはNVIDIA社のTensorRT-LLMをサポートした大規模モデル推論(LMI) Deep Learning Container(DLC) 0.25.0の発表となります。TensorRT-LLMを使用することにより大規模言語モデル(LLM)のレイテンシやスループットを向上させることが可能なようです。HyperPodは学習時のお話でしたが、こちらは推論処理をモデル並列化技術により複数のGPUに分散する技術の話で、従来でもいくつかのライブラリで実現していましたが、今回こちらにTensorRT-LLMを追加されたというアップデートとなっています。

SageMaker Clarifyが基盤モデルの評価をサポート (Preview)

Clarifyは元々、バイアス検出や説明可能性を処理する機能でしたが、今回基盤モデルの評価もサポートしました。これにより精度、堅牢性、創造性、事実知識、バイアス、毒性などのメトリクスに基づいて、数分で基盤モデルを比較評価し、選択できるようになりました。基盤モデルと説明されていますが、現実としてはLLM(大規模言語モデル)の評価を主に指しているようです。自動評価だけでなく人手による評価もサポートしています。

「Clarifyが」という発表ではあるのですが、現在のところSageMaker SDKのClarifyとは関係なく別のレポジトリで管理されているようです。

まだPreviewではあるので今後統合される可能性がありますが、現在のところはClarifyとは別ライブラリであるということにご留意ください。

SageMaker Notebook JobがSageMaker PipelineからのAPI実行をサポート

SageMaker Pipelines が提供するAPIを使用して、ジョブとしてNotebookをプログラムから実行できる機能が発表されました。このAPIを使用することで、複数の依存するノートブックを持つ複数ステップのMLワークフローを作成できます。 具体的にはSageMaker Pipelineに組み込めるStep TypeとしてNotebook Jobが追加された形となります。

以下によれば、APIからNotebook Jobを実行したい場合は必ずPipelineのNotebook Job Stepから呼び出すこととなりそうです。

To create a notebook job with the SageMaker Python SDK, you create a pipeline with a Notebook Job step and initiate an on-demand run or optionally use the pipeline scheduling feature to schedule future runs.

詳細は以下もご参照ください。

SageMaker Pipelinesが改良されたPython SDKを提供

Python SDK(SageMaker SDK)が改良され、カスタムステップとして@stepデコレータを使ったstepの構築が可能となりました。また前述の通り、Notebook Job用のstepも追加となっています。 @stepデコレータはかなり興味深いアップデートでして、パイプラインに組み込みたい関数にデコレータを付与するだけで、従来の記述よりかなり簡素化した表現でpipelinesに組み込むことが可能そうな機能となっています。

詳細はサンプルのノートブックや公式ドキュメントを参照ください

SDKのアップデートによりモデルデプロイ手順を改善

SageMaker Python SDK の新しいクラスを使用してデプロイエクスペリエンスを改善できます。具体的にはModelBuilderSchemaBuilderなどを使い、サンプルの入出力からモデルの入出力を自動で判断し、ローカル実行により実行時エラーを検証後に、デプロイするなどが可能となります。 またデプロイ前に最適なモデルサービング構成を見つけるために、ローカルベンチマークを実行するtuneメソッドも準備されており、デプロイ前に最適な構成を発見することが可能です。 ModelBuilderは、PyTorch、TensorFlow、XGBoostなどの異なるフレームワークを使用して構築する場合に統一的なインターフェースを提供します。JumpStartで使用できるモデルも同様にModelBuilderでデプロイできます。

また、上記に加えてGUIを用いたモデルデプロイも可能となっています。JumpStartモデルだけでなく、独自に学習したモデルもGUIを通じた事前検証のテストやデプロイを行うことができます。

モデル学習に新しいsmart sifting機能を追加 (Preview)

smart siftingは、学習データをその場で自動的に検査・評価し、学習に有益なサンプルだけを選択的に学習することで、モデルの学習時間とコストを最大35%削減する機能となっています。 具体的には損失に影響の少ないサンプルを自動的に破棄して学習するようにふるまうようです。PyTorchのDataLoaderとしてSiftingDataLoaderを使用することで実現できます。

推論エンドポイントに with InferenceComponentsが追加

新しい推論エンドポイントのタイプとしてSageMaker inference endpoint with InferenceComponentsが追加されました。個のエンドポイントは単一のエンドポイントに対して複数のモデルをデプロイすることが可能です。

元々からMulti-Model Endpoints(MMEs)というエンドポイントがありましたが、MMEsはコンテナを共有しており、InferenceComponentsはコンテナを共有しないため、異なるフレームワークであっても同じエンドポイントにデプロイすることが可能です。 またMMEsは単一GPUのインスタンスに対応していましたが、InferenceComponentsは複数のGPU、Inferentiaにも対応しているため、大規模なモデルをデプロイする場合はInferenceComponentsが選択肢となるようです。 かなり柔軟性が増したアップデートとなっていますね。

まとめ

AWS re:Invent 2023の期間中に発表されたAmazon SageMakerのアップデートついてご紹介しました。

本記事がAmazon SageMakerをお使いの方の参考になれば幸いです。