エッジでの視覚品質検査のためのエンド・ツー・エンドMLOpsパイプラインの構築-パート2

エンド・ツー・エンドMLOpsパイプラインでのエッジの視覚品質検査の構築-パート2

このシリーズのPart 1では、エッジでの視覚品質検査のためのエンドツーエンドのMLOpsパイプラインのアーキテクチャを作成しました。このパイプラインは、データのラベリングからモデルのトレーニングおよびエッジでの展開まで、機械学習(ML)プロセス全体の自動化を行うように設計されています。マネージドおよびサーバーレスサービスに焦点を当てることで、パイプラインのインフラ運用の必要性を低減し、すばやく開始することができます。

この記事では、パイプラインのラベリング、モデルの構築、トレーニングの部分について詳しく説明します。もしアーキテクチャのエッジ展開に特に興味がある場合は、Part 3に進むこともできます。また、自身で展開して試すためのGitHubリポジトリも提供しています。

ソリューションの概要

このシリーズで使用するサンプルユースケースは、製造プロセスの一部として展開される金属タグの欠陥を検出する視覚品質検査ソリューションです。以下の図は、このシリーズの最初で定義したMLOpsパイプラインのハイレベルなアーキテクチャを示しています。まだ読んでいない場合は、Part 1を確認することをおすすめします。

アーキテクチャ図

データラベリングの自動化

データラベリングは、人間(ラベラー)によるデータのラベリングを伴う労働集約型のタスクです。ユースケースでは、ラベリングは各欠陥に対してバウンディングボックスを描画することを意味します。これは簡単に聞こえるかもしれませんが、次のようなことに注意を払う必要があります。

  • ラベラーがバウンディングボックスを描画するためのツールを提供する
  • ラベラーのワークフォースを管理する
  • 良好なラベル品質を確保する
  • データとラベルを管理およびバージョン管理する
  • プロセス全体をオーケストレーションする
  • CI/CDシステムに統合する

AWSサービスを使用してこれらすべてを実現することができます。ラベリングを容易にし、ワークフォースを管理するために、Amazon SageMaker Ground Truthというデータラベリングサービスを使用します。このサービスでは、独自のデータラベリングワークフローとワークフォースを構築および管理することができます。独自のラベラーワークフォースを管理するか、Amazon Mechanical Turkやサードパーティのプロバイダを介して外部のラベラーの力を利用することもできます。

さらに、AWS SDKを使用して、CI/CDパイプラインの一部としてラベリングワークフローをオーケストレーションするために、プロセス全体を構成および管理できます。

ラベリングジョブは、ラベリングワークフローを管理するために使用されます。SageMaker Ground Truthでは、バウンディングボックスの描画など、さまざまなラベリングタスクタイプのための即座に利用可能なテンプレートを提供しています。バウンディングボックスタスクのラベリングジョブの設定方法の詳細については、Streamlining data labeling for YOLO object detection in Amazon SageMaker Ground Truthをご覧ください。ユースケースでは、バウンディングボックスタスクのためのタスクテンプレートを適応し、デフォルトではMechanical Turkが提供する人間の注釈付け者を使用してイメージにラベルを付けます。次のスクリーンショットは、注釈付け者がイメージに取り組んでいるときに表示されるものです。

ラベリングUI

次にラベルの品質について話しましょう。ラベルの品質は、MLモデルの品質に影響を与えます。Mechanical Turkのような外部の人力労働者を使用して画像のラベリングを自動化する際には、ドメインの専門知識の欠如により、良好かつ一貫したラベルの品質を確保することは難しいです。時には、ドメインの専門家による専用の人力労働者が必要です。ただし、私たちのサンプルソリューションでは、画像の自動ラベリングのためにMechanical Turkを使用しています。

良好なラベルの品質を確保するための方法はいくつかあります。より詳細な情報については、AWS re:Invent 2019の講演「Amazon SageMaker Ground Truthを使用した正確なトレーニングデータセットの構築」を参照してください。このサンプルソリューションの一環として、私たちは以下に焦点を当てることにしました:

最後に、ラベルを後でトレーニングに再利用し、使用されたモデルトレーニングデータのトレース性を可能にするために、どのようにラベルを格納するか考える必要があります。SageMaker Ground Truthのラベリングジョブの出力は、ラベルと追加のメタデータを含むJSON-Lines形式のファイルです。私たちは、ラベルを格納するためにオフラインストアAmazon SageMaker Feature Storeを使用することにしました。ラベルを単にAmazon Simple Storage Service(Amazon S3)に格納することと比べると、次のようないくつかの利点があります:

  • 時点クエリと組み合わせた特徴値の完全な履歴を格納します。これにより、データセットのバージョン管理とトレース性の確保が容易になります。
  • 中央の特徴ストアとして、データの再利用と可視性を促進します。

SageMaker Feature Storeの紹介については、Amazon SageMaker Feature Storeの入門を参照してください。SageMaker Feature Storeでは、表形式で特徴を格納できます。私たちの例では、各ラベル付き画像について以下の特徴を格納しています:

  • Amazon S3に保存されている画像の場所
  • 画像の寸法
  • バウンディングボックスの座標とクラス値
  • トレーニングで使用するために承認されたかどうかを示すステータスフラグ
  • ラベルの作成に使用されたラベリングジョブ名

次のスクリーンショットは、特徴ストアの典型的なエントリの例を示しています。

Feature store

この形式で特徴ストアを簡単にクエリでき、Pandasのような便利なツールを使用して後でトレーニングに使用するためのデータセットを構築できます。

データラベリングを組織化する

最後に、ラベリングパイプラインの各ステップを自動化して組織化する時がきました!そのために、私たちはAWS Step Functionsを使用して各ステップをサーバーレスのワークフローサービスで自動化し、視覚化するAPI統合を提供しています。また、より複雑なステップにはAWS Lambda関数のセットも使用しています。具体的には、以下のような手順です:

  • Amazon S3でラベリングが必要な新しい画像があるかどうかをチェックする
  • 必要な入力形式でデータを準備し、ラベリングジョブを開始する
  • 必要な入力形式でデータを準備し、ラベル検証ジョブを開始する
  • 最終的なラベルセットを特徴ストアに書き込む

次の図は、完全なStep Functionsラベリングステートマシンの外観を示しています。

ラベリングStepFunction

ラベリング:インフラストラクチャの展開とCI/CDへの統合

最後のステップは、Step FunctionsワークフローをCI/CDシステムに統合し、必要なインフラストラクチャを展開することです。このタスクを達成するために、AWS Cloud Development Kit(AWS CDK)を使用して、Lambda関数やStep Functionsワークフローなどの必要なインフラストラクチャを作成します。AWS CDKのモジュールであるCDK Pipelinesを使用すると、AWS CodePipelineで変更を展開し、Step Functionsワークフローを開始するための別のパイプラインをトリガーします。CodePipeline内のStep Functionsの統合により、このタスクは非常に簡単に行われます。また、パイプラインがスケジュールに基づいてトリガーされるようにするために、Amazon EventBridgeやCodePipelineのソースアクションを使用します。

次の図は、ラベリングのためのCI/CDアーキテクチャの詳細な外観を示しています。

ラベリングCDK

データラベリングの自動化を振り返る

これで、SageMaker Ground Truthを使用して金属タグの未ラベル画像から自動的にラベルを作成するパイプラインが動作しています。画像はAmazon S3から取得され、SageMaker Ground Truthのラベリングジョブに供給されます。画像がラベル付けされた後、ラベル検証ジョブを使用して品質チェックを行います。最後に、ラベルはSageMaker Feature Storeの特徴グループに保存されます。この動作する例を試してみたい場合は、関連するGitHubリポジトリをチェックしてください。次に、モデルの構築を自動化する方法を見てみましょう!

モデルの自動化構築

ラベリングと同様に、モデル構築パイプラインの詳細を見てみましょう。最低限以下のステップを組み合わせる必要があります:

  • 特徴ストアから最新の特徴を取得します。
  • モデルトレーニングのためにデータを準備します。
  • モデルをトレーニングします。
  • モデルのパフォーマンスを評価します。
  • モデルをバージョン管理し、保存します。
  • パフォーマンスが受け入れ可能であれば、デプロイのためのモデルを承認します。

モデル構築プロセスは通常、データサイエンティストによって駆動され、ノートブックやPythonコードを使用して行われる一連の実験の結果です。次の単純な3ステッププロセスに従って、実験を完全に自動化されたMLOpsパイプラインに変換できます:

  1. 既存の前処理、トレーニング、評価コードをコマンドラインスクリプトに変換します。
  2. モデル構築をオーケストレートするためのSageMakerパイプラインの定義を作成します。ステップ1で作成したスクリプトを処理およびトレーニングステップの一部として使用します。
  3. パイプラインをCI/CDワークフローに統合します。

この3ステッププロセスは汎用的であり、選択したモデルアーキテクチャとMLフレームワークに対して使用することができます。ステップ1から始めて、次のスクリプトを作成しましょう:

  • preprocess.py – これは、SageMaker Feature Storeからラベル付きの画像を取得し、データセットを分割して、モデルトレーニングに必要な形式に変換するスクリプトです。この場合、YOLOv8の入力形式です。
  • train.py – これは、Ultralytics YOLOv8物体検出モデルを使用して、金属タグの画像上の傷を検出するためのPyTorchを使用して、モデルのトレーニングを行います。

モデル構築のオーケストレーション

Step 2では、これらのスクリプトをトレーニングと処理のジョブにまとめ、最終的なSageMakerパイプラインを定義します。以下の図のようになります。

SageMakerパイプライン

これは以下のステップで構成されています:

  1. SageMaker Feature Storeから最新の特徴量をロードするProcessingStep。データセットをトレーニング、検証、テストセットに分割し、トレーニング用のtarボールとしてデータセットを保存します。
  2. トレーニング、検証、テストデータセットを使用してモデルをトレーニングし、平均適合率(mAP)メトリックをエクスポートするTrainingStep。
  3. トレーニングされたモデルのmAPメトリック値が設定したしきい値を上回るかどうかを評価するConditionStep。該当する場合、上記のステップでトレーニングされたモデルをSageMaker Model Registryに登録するRegisterModelステップが実行されます。

詳細なパイプラインコードに興味がある場合は、私たちのサンプルリポジトリにあるパイプライン定義をチェックしてください。

トレーニング:インフラストラクチャのデプロイとCI / CDへの統合

さあ、Step 3に進みましょう:CI / CDワークフローへの統合です。CI / CDパイプラインは、以前に紹介したラベリングセクションと同じパターンに従います。必要なパイプラインをCodePipelineからAWS CDKを使用してデプロイします。唯一の違いは、Step Functionsの代わりにAmazon SageMaker Pipelinesを使用することです。SageMakerパイプラインの定義は、CodePipelineのCodeBuildアクションの一部として構築およびトリガーされます。

Training CDK

結論

SageMakerを使用した完全に自動化されたラベリングおよびモデルトレーニングワークフローが完成しました。実験コードからコマンドラインスクリプトを作成しました。そして、SageMaker Pipelinesを使用して、モデルトレーニングワークフローの各ステップをオーケストレーションしました。コマンドラインスクリプトはトレーニングと処理のステップの一部として統合されました。パイプラインの終わりには、トレーニングされたモデルがバージョン管理され、SageMaker Model Registryに登録されます。

このシリーズの第3部で次のステップについて詳しく見ていきます。それは、AWS IoT Greengrassを使用してモデルをエッジデバイスにコンパイルおよびデプロイするパイプラインを作成することです!

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AIニュース

OpenAIを使用してカスタムチャットボットを開発する

はじめに チャットボットは自動化されたサポートと個別の体験を提供し、ビジネスが顧客とつながる方法を革新しました。人工知...

データサイエンス

「ZoomがAIトレーニングのために顧客データを使用することで法的ジレンマに直面」

新たな出来事の展開により、人気のあるビデオ会議プラットフォームであるZoomが、顧客データを人工知能(AI)モデルのトレー...

AIニュース

「Google Bardの拡張機能を無料で使用する方法」

「Bard拡張機能を使用すると、Google Maps、YouTube、およびGmailをより効果的に利用できます」

データサイエンス

「確信せよ、ただし検証せよ」

非決定的なソフトウェアの開発、テスト、および監視の課題を理解することこれは、可観測性のための新しいかつ重要な課題です ...

AI研究

「GoogleはDeepfakeへの対策として、AIによって生成された画像にウォーターマークを付けます」

誤解を招くコンテンツの急増に対抗する重要な一歩として、Googleは革新的なソリューションを導入し、ディープフェイクに対す...

人工知能

「ディープマインドのアルファコードの力を解き放つ:コードライティングの革命」

導入 プログラミングの常に進化し続ける世界では、先を行くことが成功への鍵です。DeepMindのAlphaCodeは、革新的なAIパワー...