ゼファーネットのロゴ

インクルージョンのためのイノベーション: Amazon SageMaker を使用した Hack.The.Bias | アマゾン ウェブ サービス

日付:

この投稿は、チューリッヒ工科大学の AWS 学生ハッカソン チームの参加者である Daniele Chiappalupi との共著です。

を使用して、誰でも簡単に機械学習 (ML) を始めることができます。 Amazon SageMaker ジャンプスタート。 この投稿では、大学のハッカソン チームが SageMaker JumpStart を使用して、ユーザーが偏見を特定して除去するのに役立つアプリケーションを迅速に構築した方法を紹介します。

「Amazon SageMaker は私たちのプロジェクトに貢献してくれました。 これにより、Flan の事前トレーニングされたインスタンスのデプロイと管理が容易になり、アプリケーションの強固な基盤が提供されました。 その自動スケーリング機能は、トラフィックが多い時期に非常に重要であることが判明し、アプリの応答性を維持し、ユーザーが安定した迅速なバイアス分析を確実に受けられるようにしました。 さらに、Flan モデルのクエリという重いタスクをマネージド サービスにオフロードできるようにすることで、アプリケーションを軽量かつ高速に保ち、さまざまなデバイスにわたるユーザー エクスペリエンスを向上させることができました。 SageMaker の機能のおかげで、ハッカソンでの時間を最大限に活用できるようになり、モデルのパフォーマンスやインフラストラクチャの管理ではなく、プロンプトとアプリの最適化に集中できるようになりました。」

– Daniele Chiappalupi 氏、チューリッヒ工科大学の AWS 学生ハッカソン チームの参加者。 

ソリューションの概要

ハッカソンのテーマは、AI技術で国連の持続可能な目標に貢献すること。 次の図に示すように、ハッカソンで構築されたアプリケーションは、公平性を促進するためにユーザーがテキストから偏見を特定して削除するのを支援することで、持続可能な開発目標の XNUMX つ (質の高い教育、性別に基づく差別のターゲット、不平等の削減) に貢献します。そして包括的な言語。

次のスクリーンショットに示すように、テキストを入力すると、アプリケーションは人種、民族、性別の偏見のない新しいバージョンを生成します。 さらに、バイアスの各カテゴリに関連する入力テキストの特定の部分が強調表示されます。

次の図に示すアーキテクチャでは、ユーザーはテキストを 反応する-ベースの Web アプリ。トリガーします。 アマゾンAPIゲートウェイ、次に、 AWSラムダ ユーザーテキストのバイアスに応じて機能します。 Lambda 関数は SageMaker JumpStart の Flan モデルエンドポイントを呼び出します。これにより、同じルートを介して偏りのないテキスト結果がフロントエンドアプリケーションに返されます。

アプリケーション開発プロセス

このアプリケーションの開発プロセスは反復的であり、ユーザー インターフェイスと ML モデルの統合という XNUMX つの主要な領域に重点が置かれていました。

フロントエンド開発に React を選択したのは、その柔軟性、拡張性、およびインタラクティブなユーザー インターフェイスを作成するための強力なツールが理由です。 ユーザー入力を処理し、洗練された結果を表示するというアプリケーションの性質を考慮すると、React のコンポーネントベースのアーキテクチャが理想的であることがわかりました。 React を使用すると、ページを定期的に更新することなく、ユーザーがテキストを送信して偏りのない結果を確認できる単一ページ アプリケーションを効率的に構築できました。

ユーザーが入力したテキストは、バイアスを精査するために強力な言語モデルによって処理される必要がありました。 堅牢性、効率性、拡張性の特性を考慮して Flan を選択しました。 Flan を利用するには、次のスクリーンショットに示すように、SageMaker JumpStart を使用しました。 アマゾンセージメーカー これにより、Flan の事前トレーニングされたインスタンスのデプロイと管理が容易になり、モデルのパフォーマンスやインフラストラクチャの管理ではなく、プロンプトやクエリの最適化に集中できるようになりました。

Flan モデルをフロントエンド アプリケーションに接続するには、堅牢で安全な統合が必要でしたが、これは Lambda と API Gateway を使用して実現されました。 Lambda を使用して、SageMaker モデルと直接通信するサーバーレス関数を作成しました。 次に、API Gateway を使用して、React アプリが Lambda 関数を呼び出すための、安全でスケーラブルですぐにアクセスできるエンドポイントを作成しました。 ユーザーがテキストを送信すると、アプリはゲートウェイへの一連の API 呼び出しをトリガーしました。まずバイアスが存在するかどうかを特定し、次に必要に応じて、バイアスを特定、特定、無力化するための追加のクエリを実行します。 これらのリクエストはすべて Lambda 関数を通じてルーティングされ、その後 SageMaker モデルにルーティングされました。

開発プロセスの最後のタスクは、言語モデルをクエリするためのプロンプトの選択でした。 ここで、CrowS-Pairs データセットは、偏ったテキストの実際の例を提供し、リクエストを微調整するために利用したため、重要な役割を果たしました。 このデータセット内のバイアス検出の精度を最大化することを目的として、反復プロセスによってプロンプトを選択しました。

プロセスをまとめると、完成したアプリケーションでシームレスな操作フローが観察されました。 このプロセスは、ユーザーが分析用のテキストを送信することから始まり、そのテキストは POST リクエストを介して安全な API Gateway エンドポイントに送信されます。 これにより Lambda 関数がトリガーされ、SageMaker エンドポイントと通信します。 その結果、Flan モデルは一連のクエリを受け取ります。 最初のチェックでは、テキスト内にバイアスが存在するかどうかをチェックします。 バイアスが検出された場合、追加のクエリが展開されて、これらのバイアスされた要素を特定、識別し、無力化します。 結果は同じパスを通じて返されます。最初は Lambda 関数に、次に API ゲートウェイを経由して、最終的にユーザーに返されます。 元のテキストにバイアスが存在する場合、ユーザーは、人種、民族、性別など、検出されたバイアスの種類を示す包括的な分析を受け取ります。 これらのバイアスが見つかったテキストの特定のセクションが強調表示され、ユーザーに加えられた変更が明確に表示されます。 この分析と並行して、彼らのテキストのバイアスを軽減した新しいバージョンが提示され、潜在的にバイアスがかかっている入力をより包括的な物語に効果的に変換します。

次のセクションでは、このソリューションを実装する手順について詳しく説明します。

React 環境をセットアップする

私たちは、React の開発環境をセットアップすることから始めました。 最小限の構成で新しい React アプリケーションをブートストラップするために、create-react-app を使用しました。

npx create-react-app my-app

ユーザーインターフェースを構築する

React を使用して、送信ボタン、リセット ボタン、処理結果が利用可能になったときに表示するオーバーレイ表示を備えた、ユーザーがテキストを入力するためのシンプルなインターフェイスを設計しました。

SageMaker で Flan モデルを開始する

SageMaker を使用して、リアルタイム推論用のエンドポイントを備えた Flan 言語モデルの事前トレーニング済みインスタンスを作成しました。 このモデルは、次のような JSON 構造のペイロードに対して使用できます。

payload = { text_inputs: "text_inputs", max_length: <max_length>, num_return_sequences: <num_return_sequences>, top_k: <top_k>, top_p: <top_p>, do_sample: <do_sample>, num_beams: <num_beams>, seed: <seed>, };

Lambda関数を作成する

SageMaker エンドポイントと直接対話する Lambda 関数を開発しました。 この関数は、次のコードに示すように、ユーザーのテキストを含むリクエストを受信し、それを SageMaker エンドポイントに転送し、洗練された結果を返すように設計されました (ENDPOINT_NAME SageMaker インスタンスのエンドポイントとして設定されました):

import os
import io
import boto3
import json
import csv # grab environment variables
ENDPOINT_NAME = os.environ['ENDPOINT_NAME']
runtime= boto3.client('runtime.sagemaker') def lambda_handler(event, context): data = json.loads(json.dumps(event)) payload = json.dumps(data['data']).encode('utf-8') query_response = runtime.invoke_endpoint( EndpointName=ENDPOINT_NAME, ContentType='application/json', Body=payload) response_dict = json.loads(query_response['Body'].read()) return response_dict['generated_texts']

APIゲートウェイの設定

API Gateway で新しい REST API を構成し、Lambda 関数にリンクしました。 この接続により、React アプリケーションが API Gateway に HTTP リクエストを送信できるようになり、その後 Lambda 関数がトリガーされました。

React アプリを API と統合する

送信ボタンがクリックされたときに、リクエストの本文がユーザーのテキストである POST リクエストを API ゲートウェイに作成するように React アプリケーションを更新しました。 API 呼び出しの実行に使用した JavaScript コードは次のとおりです (REACT_APP_AWS_ENDPOINT Lambda 呼び出しにバインドされた API Gateway エンドポイントに対応します):

const makeAWSApiCall = ( textInputs, maxLength, numReturnSequences, topK, topP, doSample, numBeams ) => { const axiosRequestUrl = `${process.env.REACT_APP_AWS_ENDPOINT}`; const requestData = { text_inputs: textInputs, max_length: maxLength, num_return_sequences: numReturnSequences, top_k: topK, top_p: topP, do_sample: doSample, num_beams: numBeams, seed: 8, }; return axios.post(axiosRequestUrl, { data: requestData }); };

プロンプトの選択を最適化する

バイアス検出の精度を向上させるために、CrowS-Pairs データセットに対してさまざまなプロンプトをテストしました。 この反復プロセスを通じて、最も高い精度が得られるプロンプトを選択しました。

Vercel で React アプリをデプロイしてテストする

アプリケーションを構築した後、それを Vercel にデプロイして、一般にアクセスできるようにしました。 ユーザー インターフェイスから言語モデルからの応答に至るまで、アプリケーションが期待どおりに機能することを確認するために広範なテストを実施しました。

これらの手順は、テキストを分析してバイアスを除去するためのアプリケーションを作成するための基礎を築きました。 プロセスは本質的に複雑ですが、SageMaker、Lambda、API Gateway などのツールを使用することで開発が合理化され、テキスト内のバイアスを特定して排除するというプロジェクトの中核目標に集中できるようになりました。

まとめ

SageMaker JumpStart は、SageMaker の機能を探索する便利な方法を提供します。 厳選されたワンステップ ソリューション、サンプル ノートブック、展開可能な事前トレーニング済みモデルが提供されます。 これらのリソースを使用すると、SageMaker をすぐに学習して理解することができます。 さらに、特定のニーズに応じてモデルを微調整し、展開するオプションもあります。 JumpStart へのアクセスは、以下から利用できます。 Amazon SageMakerスタジオ または、SageMaker API を使用してプログラム的に。

この投稿では、学生ハッカソン チームが SageMaker JumpStart を使用して短期間でソリューションを開発した方法を学びました。これは、小規模なチームや個人でも、高度な AI ソリューションの迅速な開発とデプロイを可能にする AWS と SageMaker JumpStart の可能性を示しています。

SageMaker JumpStart の使用方法の詳細については、以下を参照してください。 Amazon SageMaker Jumpstart を使用した FLAN T5 XL の命令の微調整 & Amazon SageMaker JumpStart での Flan-T5 基盤モデルのゼロショット プロンプト.

ETH Analytics Club は、チューリッヒ工科大学、チューリッヒ大学、EPFL から 150 名以上の参加者が集まる AI/ML ハッカソン「ETH データソン」を主催しました。 このイベントでは、業界リーダーによるワークショップ、24 時間のコーディング チャレンジ、学生仲間や業界の専門家との貴重なネットワーキングの機会が提供されます。 ETH ハッカソン チームの Daniele Chiappalupi 氏、Athana Nisioti 氏、Francesco Ignazio Re 氏、および残りの AWS 組織チームのメンバー : Alice Morano 氏、Demir Catovic 氏、Iana Peix 氏、Jan Oliver Seidenfuss 氏、Lars Nettemann 氏、Markus Winterholer 氏に多大な感謝を申し上げます。

この投稿の内容と意見はサードパーティの作成者のものであり、AWSはこの投稿の内容または正確性について責任を負いません。


著者について

ジャン・ジュン はチューリッヒを拠点とするソリューション アーキテクトです。 彼は、スイスの顧客がビジネスの可能性を達成するためのクラウドベースのソリューションを設計するのを支援しています。 彼は持続可能性に情熱を持っており、現在の持続可能性の課題をテクノロジーで解決しようと努めています。 彼は大のテニスファンでもあり、ボードゲームをよく楽しんでいます。

モハン・ゴウダ AWS スイスの機械学習チームを率いています。 彼は主に自動車顧客と協力して、次世代車両向けの革新的な AI/ML ソリューションとプラットフォームを開発しています。 AWS で働く前は、モハンは戦略と分析に重点を置くグローバル経営コンサルティング会社で働いていました。 彼の情熱はコネクテッドカーと自動運転にあります。

食べ物ティアス・エグリ スイスの教育長を務めています。 彼は、事業開発、販売、マーケティングにおける幅広い経験を持つ、熱心なチームリーダーです。

張克蒙 チューリッヒを拠点とする ML エンジニアです。 彼女は、世界中の顧客が ML ベースのアプリケーションを設計、開発、拡張し、デジタル機能を強化してビジネス収益を増やし、コストを削減できるよう支援しています。 彼女は、行動科学の知識を活用して人間中心のアプリケーションを作成することにも非常に情熱を持っています。 彼女はウォーター スポーツをすることと犬の散歩が好きです。

ダニエレ・チアパルピ チューリッヒ工科大学を最近卒業したばかりです。 彼は、設​​計から実装、展開からメンテナンスまで、ソフトウェア エンジニアリングのあらゆる側面を楽しんでいます。 彼は AI に対して深い情熱を持っており、この分野の最新の進歩を探索、利用し、貢献することに熱心に取り組んでいます。 自由時間には、寒い季節にはスノーボードをし、暖かくなったらピックアップ バスケットボールをするのが大好きです。

スポット画像

最新のインテリジェンス

スポット画像