ゼファーネットのロゴ

AmazonSageMakerでAWSStepFunctionsとAutoGluonを使用してAutoMLワークフローを管理します

日付:

クラウドで機械学習(ML)実験を実行すると、多くのサービスやコンポーネントにまたがることができます。 ML実験を構造化、自動化、追跡する機能は、MLモデルの迅速な開発を可能にするために不可欠です。 自動機械学習(AutoML)の分野、つまりMLプロセスの自動化に特化したMLの分野における最新の進歩により、MLに関する深い知識がなくても、正確な意思決定モデルを構築できます。 この投稿では、数行のPythonで正確なMLモデルを構築できるオープンソースのAutoMLフレームワークであるAutoGluonについて説明します。

AWSは、MLワークフローを管理および実行するための幅広いサービスを提供しており、スキルとアプリケーションに基づいてソリューションを選択できます。 たとえば、すでに使用している場合 AWSステップ関数 分散アプリケーションのコンポーネントを調整するために、同じサービスを使用してMLワークフローを構築および自動化できます。 AWSが提供するその他のMLOpsツールには次のものがあります AmazonSageMakerパイプライン、でMLモデルを構築できます Amazon SageMakerスタジオ MLOps機能(CI / CD互換性、モデルモニタリング、モデル承認など)を備えています。 などのオープンソースツール ApacheAirflow-AWSで利用可能 ApacheAirflowのAmazonマネージドワークフロー-そして キューブフロー、およびハイブリッドソリューションもサポートされています。 たとえば、SageMakerパイプラインを使用してMLモデルをトレーニングおよびデプロイしながら、ステップ関数を使用してデータの取り込みと処理を管理できます。

この投稿では、MLの専門知識がない開発者でも、AutoGluonを使用して最先端のMLモデルを簡単に構築および維持できることを示します。 アマゾンセージメーカー ワークフローコンポーネントを調整するためのステップ関数。

AutoGluonアルゴリズムの概要を説明した後、ワークフローの定義を例と コードチュートリアル 自分のデータに適用できること。

オートグルオン

AutoGluonはオープンソースのAutoMLフレームワークであり、数行のPythonコードで正確なMLモデルをトレーニングすることで、MLの採用を加速します。 この投稿は表形式のデータに焦点を当てていますが、AutoGluonを使用すると、画像分類、オブジェクト検出、およびテキスト分類のための最先端のモデルをトレーニングすることもできます。 AutoGluon表形式は、さまざまなモデルを作成および組み合わせて、最適なソリューションを見つけます。

AWSのAutoGluonチームは これは、ライブラリを構成する原則を示しています。

  • 単純 –データを分析したり、特徴エンジニアリングを実行したりすることなく、生データから直接分類モデルと回帰モデルを作成できます
  • 堅牢性 –個々のモデルの一部が失敗した場合でも、全体的なトレーニングプロセスは成功するはずです
  • 予測可能なタイミング –トレーニングに投資したい時間内に最適な結果を得ることができます
  • フォールトトレランス –トレーニングを停止して再開することができます。これにより、プロセスがクラウド内のスポット画像で実行される場合のコストが最適化されます。

アルゴリズムの詳細については、以下を参照してください。 AWSのAutoGluonチームによってリリースされました。

インストール後 AutoGluonパッケージ モデルのトレーニングは、XNUMX行のコードを記述するのと同じくらい簡単です。

from autogluon.tabular import TabularDataset, TabularPredictor

train_data = TabularDataset('s3://my-bucket/datasets/my-csv.csv')
predictor = TabularPredictor(label="my-label", path="my-output-folder").fit(train_data)

AutoGluonチームは、複数のKaggleコンテストでトップ10のリーダーボードに到達することで、フレームワークの強さを証明しました。

ソリューションの概要

ステップ関数を使用して、トレーニング、評価、デプロイをカバーするMLワークフローを実装します。 パイプラインの設計により、実行時にパイプラインに入力する入力パラメーターを変更することで、高速で構成可能な実験が可能になります。

次のようなさまざまなワークフローを実装するようにパイプラインを構成できます。

  • この時点でデプロイが必要ない場合は、新しいMLモデルをトレーニングし、SageMakerモデルレジストリに保存します
  • 事前にトレーニングされたMLモデルを、オンライン(SageMakerエンドポイント)またはオフライン(SageMakerバッチ変換)推論
  • 完全なパイプラインを実行して、MLモデルを最初からトレーニング、評価、デプロイします

ソリューションは、一般的なもので構成されています 状態機械 (次の図を参照)これは、入力パラメーターのセットに基づいて実行されるアクションのセットを調整します。

ステートマシンの手順は次のとおりです。

  1. 最初の一歩 IsTraining 事前にトレーニングされたモデルを使用するか、モデルを最初からトレーニングするかを決定します。 事前にトレーニングされたモデルを使用している場合、ステートマシンはステップ7にスキップします。
  2. 新しいMLモデルが必要な場合、 TrainSteps 必要なすべてのアクションを実行し、結果を現在のステートマシンに返すXNUMX番目のステートマシンをトリガーします。 次のセクションでは、トレーニングステートマシンの詳細について説明します。
  3. トレーニングが終了したら、 PassModelName トレーニングジョブ名をステートマシンコンテキストの指定された場所に格納し、次の状態で再利用します。
  4. 評価フェーズが選択されている場合、 IsEvaluation ステートマシンを評価ブランチにリダイレクトします。 それ以外の場合は、ステップ7にスキップします。
  5. 次に、評価フェーズは、 AWSラムダ によって呼び出される関数 ModelValidation ステップ。 Lambda関数は、テストセットのモデルパフォーマンスを取得し、入力パラメーターで指定されたユーザー設定可能なしきい値と比較します。 次のコードは、評価結果の例です。
    "Payload":{
       "IsValid":true,
       "Scores":{
          "accuracy":0.9187,
          "balanced_accuracy":0.7272,
          "mcc":0.5403,
          "roc_auc":0.9489,
          "f1":0.5714,
          "precision":0.706,
          "recall":0.4799
       }
    }

  6. モデル評価の場合 EvaluationResults 成功すると、ステートマシンは最終的な展開手順を続行します。 モデルがユーザー定義の基準を下回って実行されている場合、ステートマシンは停止し、展開はスキップされます。
  7. 展開が選択されている場合、 IsDeploy を介してXNUMX番目のステートマシンを起動します DeploySteps、この投稿の後半で説明します。 デプロイメントが必要ない場合、ステートマシンはここで停止します。

入力パラメータサンプルのセットは、 GitHubレポ.

トレーニングステートマシン

AutoGluonを使用して新しいMLモデルをトレーニングするためのステートマシンは、次の図に示すようにXNUMXつのステップで構成されています。 最初のステップは、モデルを作成するSageMakerトレーニングジョブです。 XNUMXつ目は、SageMakerモデルレジストリにエントリを保存します。

これらのステップは、メインステートマシンの一部として自動的に実行することも、スタンドアロンプ​​ロセスとして実行することもできます。

デプロイメントステートマシン

次に、展開フェーズ専用のステートマシンを見てみましょう(次の図を参照)。 前述のように、アーキテクチャはオンラインとオフラインの両方の展開をサポートします。 前者はSageMakerエンドポイントのデプロイで構成され、後者はSageMakerバッチ変換ジョブを実行します。

実装手順は次のとおりです。

  1. ChoiceDeploymentMode 入力パラメーターを調べて、必要なデプロイメントモードを定義し、ステートマシンを対応するブランチに向けます。
  2. エンドポイントが選択された場合、 EndpointConfig stepはその構成を定義し、 CreateEndpoint 必要なコンピューティングリソースを割り当てるプロセスを開始します。 この割り当てには数分かかることがあるため、ステートマシンはで一時停止します。 WaitForEndpoint Lambda関数を使用してエンドポイントステータスをポーリングします。
  3. エンドポイントの構成中、 ChoiceEndpointStatusWaitForEndpoint それ以外の場合は、 DeploymentFailed or DeploymentSucceeded.
  4. オフラインデプロイメントが選択されている場合、ステートマシンはSageMakerバッチ変換ジョブを実行し、その後ステートマシンは停止します。

まとめ

この投稿では、AutoMLワークフローを調整し、クラウドでの高速実験を可能にする使いやすいパイプラインを紹介します。これにより、高度なML知識を必要とせずに正確なMLソリューションを実現できます。

一般的なパイプラインと、必要に応じてトレーニングと展開を別々に実行できるXNUMXつのモジュラーパイプラインを提供します。 さらに、このソリューションはSageMakerと完全に統合されており、その機能と計算リソースの恩恵を受けています。

これから始めましょう コードチュートリアル この投稿に示されているリソースをAWSアカウントにデプロイし、最初のAutoML実験を実行します。


著者について

フェデリコ・ピチニーニ は、Amazon Machine LearningSolutionsLabのディープラーニングアーキテクトです。 彼は機械学習、説明可能なAI、MLOpsに情熱を注いでいます。 彼はAWSのお客様向けのMLパイプラインの設計に焦点を当てています。 仕事以外では、彼はスポーツとピザを楽しんでいます。

パオロ・イレラ はAmazonMachineLearning Solutions Labのデータサイエンティストであり、MLおよびクラウド機能を使用して顧客がビジネス上の問題に対処するのを支援しています。 彼は、パリのTelecomParisTechでコンピュータービジョンの博士号を取得しています。

スポット画像

最新のインテリジェンス

スポット画像

私たちとチャット

やあ! どんな御用でしょうか?