Sagemaker Ground TruthのPrivate WorkforceをCognitoで作成してみた

2024.04.09

NTT東日本の中村です。

Sagemaker Ground Truthのlabeling Workforceを、Cognitoと連携し作成してみました。

Ground TruthのWorkforceの概要

SagemakerはAI・機械学習モデルの構築・トレーニング・サービスのデプロイを行うサービスです。 構築・トレーニングを行う時は、教師データが必要になることがあります。

Sagemaker Ground Truthは、教師データを効率良く作成するサービスです。数百、数千に及ぶ教師データを作成する際、複数のWorker(作業者)を割り当てると、ブラウザを経由して、Annotation(教師データ)の作成・レビュー・評価を行うことができます。

Workforceは、そのWorkerのグループを定義するものです。 実際にラベリングの作業を割り当てる時は、WorkforceのメンバーからからWorkerを選定し(WorkTeam)、ラベリングのジョブを割り当てます。

Workforceの種類

  • Amazon Mechanical Turk(クラウドソーシング)
  • vendor(AWS Marketplaceから、作業者を選定)
  • private(Amazon Cognito及びOIDCプロバイダの登録者から選定)

また、より包括的なAmazon SageMaker Ground Truth Plus というサービスでは、Amazonが提携しているエキスパートワークフォースでアノテーションを行うことができます。

今回はCognitoと連携する仕組みなので、privateを利用します。

構築イメージ

手元には、既にS3HostingのReact(SPA)のWebアプリケーションがあり、Cognitoでの認証と、S3へ動画のアップロードの機能が備わっています。

ここにGround Truthの機能を追加します。プライベートワークフォースの認証に、Webアプリケーションで使われているCognitoを使うことで、2つの機能の認証を一元化します。

なお、Cognitoではユーザグループの管理を行っており、「Admin」ユーザグループに所属しているメンバーのみ、ラベリングに参加できる仕組みとします。

Workforceの作成

Groud Truthにアクセスする前に、Cogntoのドメインを作成します。

次に、Cognitoが存在するリージョンで、Ground Truth → ラベリングワークフォースを選択しました。 3種類のワークフォースのうち、プライベートを選択します。

ちなみに、そのリージョンで存在できるプライベートワークフォースは1つだけのようです。

プライベートなワークフォースの定義と、チームの作成を同時に行います。 なお、ワークフォースに対し、複数のチームを作成できます。

既存のCognitoユーザープールを選択します。 アプリクライアントは、Client Secretが存在するものを指定するか、この場で新規作成を行います。

Cognitoユーザーグループを指定できます。 予めCognitoではラベリング対象者をAdminグループに登録しているので、ここでAdminを設定しておきます。

完了しました。 「ラベリングポータルのサインインURL」が、ラベリングを行うためのログイン画面です。

CognitoのApplicationクライアントを確認すると、Sagemaker用のクライアントが作成されていました。

Gyazo

Ground Truthに戻ります。

ワークチームには、Adminグループに登録されているユーザ全てが登録されています。 もしチームメンバーを変更したい場合、一覧からチームメンバーを追加・削除が可能です。

Gyazo

Groudn Truthのジョブを作成し、ワークスチームに割り当てを行うと

チーム概要で、適用されているジョブを確認できます。

サインインURLで、Webアプリケーションと同じ認証でアクセスを行います。

Gyazo

ログインに成功すると、割り当てられているジョブが確認できました。 ここから、ラベリングを開始できます。

Gyazo

今回は動画のラベリング(オブジェクトの検出・バウンディングボックス)です。ジョブの作成方法や、ラベリングツールのイメージは下記の記事がそのまま参考になります。

最後に

既存のCognitoを再利用することで、認証を一元化し、Webアプリケーションの利用ユーザをスムーズにラベリングに誘導することができました。