제퍼넷 로고

포용을 위한 혁신: Amazon SageMaker를 통한 Hack.The.Bias | 아마존 웹 서비스

시간

이 게시물은 ETH Zürich의 AWS 학생 Hackathon 팀 참가자인 Daniele Chiappalupi와 공동으로 작성되었습니다.

누구나 쉽게 머신러닝(ML)을 시작할 수 있습니다. Amazon SageMaker 점프스타트. 이 게시물에서는 대학 Hackathon 팀이 SageMaker JumpStart를 사용하여 사용자가 편견을 식별하고 제거하는 데 도움이 되는 애플리케이션을 신속하게 구축한 방법을 보여줍니다.

“Amazon SageMaker는 우리 프로젝트에서 중요한 역할을 했습니다. 이를 통해 사전 훈련된 Flan 인스턴스를 쉽게 배포하고 관리할 수 있게 되었으며, 이는 우리 애플리케이션을 위한 견고한 기반을 제공했습니다. 자동 크기 조정 기능은 트래픽이 많은 기간 동안 매우 중요한 것으로 입증되어 앱이 응답성을 유지하고 사용자가 꾸준하고 빠른 편향 분석을 받을 수 있도록 했습니다. 또한 Flan 모델을 쿼리하는 무거운 작업을 관리형 서비스로 오프로드함으로써 애플리케이션을 가볍고 신속하게 유지하여 다양한 장치에서 사용자 경험을 향상시킬 수 있었습니다. SageMaker의 기능 덕분에 우리는 해커톤에서 시간을 최대화할 수 있었고, 모델의 성능과 인프라를 관리하는 대신 프롬프트와 앱을 최적화하는 데 집중할 수 있었습니다.”

– ETH Zürich의 AWS 학생 Hackathon 팀 참가자인 Daniele Chiappalupi. 

솔루션 개요

해커톤의 주제는 AI 기술을 통해 UN의 지속 가능한 목표에 기여하는 것입니다. 다음 그림에서 볼 수 있듯이 Hackathon에서 구축된 애플리케이션은 공정한 교육을 촉진하기 위해 사용자가 텍스트에서 편견을 식별하고 제거하도록 도움으로써 지속 가능한 개발 목표 중 XNUMX가지(양질의 교육, 성차별 대상화, 불평등 감소)에 기여합니다. 그리고 포괄적인 언어.

다음 스크린샷에 표시된 것처럼 텍스트를 제공하면 애플리케이션은 인종, 민족, 성별 편견이 없는 새 버전을 생성합니다. 또한 각 편향 카테고리와 관련된 입력 텍스트의 특정 부분을 강조표시합니다.

다음 다이어그램에 표시된 아키텍처에서 사용자는 반응트리거하는 기반 웹 앱 아마존 API 게이트웨이, 이는 차례로 AWS 람다 사용자 텍스트의 편향에 따라 기능합니다. Lambda 함수는 SageMaker JumpStart에서 Flan 모델 엔드포인트를 호출합니다. 이는 동일한 경로를 통해 편견 없는 텍스트 결과를 다시 프런트엔드 애플리케이션으로 반환합니다.

애플리케이션 개발 프로세스

이 애플리케이션을 개발하는 프로세스는 반복적이었고 사용자 인터페이스와 ML 모델 통합이라는 두 가지 주요 영역에 중점을 두었습니다.

우리는 유연성, 확장성 및 대화형 사용자 인터페이스를 생성하기 위한 강력한 도구 때문에 프런트 엔드 개발을 위해 React를 선택했습니다. 사용자 입력을 처리하고 정제된 결과를 제시하는 애플리케이션의 특성을 고려할 때 React의 구성 요소 기반 아키텍처는 이상적인 것으로 입증되었습니다. React를 사용하면 사용자가 지속적으로 페이지를 새로 고칠 필요 없이 텍스트를 제출하고 편향되지 않은 결과를 볼 수 있는 단일 페이지 애플리케이션을 효율적으로 구축할 수 있었습니다.

사용자가 입력한 텍스트는 편견을 면밀히 조사하기 위해 강력한 언어 모델로 처리되어야 했습니다. 우리는 견고성, 효율성 및 확장성 속성 때문에 Flan을 선택했습니다. Flan을 활용하기 위해 다음 스크린샷과 같이 SageMaker JumpStart를 사용했습니다. 아마존 세이지 메이커 사전 훈련된 Flan 인스턴스를 쉽게 배포하고 관리할 수 있게 되면서 모델의 성능과 인프라를 관리하는 대신 프롬프트와 쿼리를 최적화하는 데 집중할 수 있게 되었습니다.

Flan 모델을 프런트엔드 애플리케이션에 연결하려면 강력하고 안전한 통합이 필요했으며 이는 Lambda 및 API 게이트웨이를 사용하여 달성되었습니다. Lambda를 사용하여 SageMaker 모델과 직접 통신하는 서버리스 함수를 만들었습니다. 그런 다음 API 게이트웨이를 사용하여 React 앱이 Lambda 함수를 호출할 수 있도록 안전하고 확장 가능하며 쉽게 액세스할 수 있는 엔드포인트를 만들었습니다. 사용자가 텍스트를 제출하면 앱은 게이트웨이에 대한 일련의 API 호출을 트리거했습니다. 먼저 편견이 있는지 식별한 다음, 필요한 경우 편견을 식별하고 찾아 무력화하기 위한 추가 쿼리를 실행했습니다. 이러한 모든 요청은 Lambda 함수를 통해 라우팅된 다음 SageMaker 모델로 라우팅되었습니다.

개발 프로세스의 마지막 작업은 언어 모델을 쿼리하기 위한 프롬프트를 선택하는 것이었습니다. 여기에서 CrowS-Pairs 데이터세트는 요청을 미세 조정하는 데 활용한 편향된 텍스트의 실제 예를 제공했기 때문에 중요한 역할을 했습니다. 우리는 이 데이터세트 내 편향 탐지의 정확성을 최대화한다는 목표로 반복 프로세스를 통해 프롬프트를 선택했습니다.

프로세스를 마무리하면서 완성된 애플리케이션에서 원활한 작업 흐름을 관찰했습니다. 프로세스는 사용자가 분석을 위해 텍스트를 제출하는 것으로 시작되며, 이 텍스트는 POST 요청을 통해 보안 API 게이트웨이 엔드포인트로 전송됩니다. 그러면 SageMaker 엔드포인트와 통신하는 Lambda 함수가 트리거됩니다. 결과적으로 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 함수를 개발했습니다. 이 함수는 다음 코드(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 게이트웨이에 HTTP 요청을 할 수 있었고 이후에 Lambda 함수가 트리거되었습니다.

React 앱을 API와 통합

제출 버튼을 클릭하면 API 게이트웨이에 POST 요청을 하도록 React 애플리케이션을 업데이트했습니다. 요청 본문은 사용자의 텍스트입니다. API 호출을 수행하는 데 사용한 JavaScript 코드는 다음과 같습니다(REACT_APP_AWS_ENDPOINT Lambda 호출에 바인딩된 API 게이트웨이 엔드포인트에 해당합니다):

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에 대한 액세스는 다음을 통해 제공됩니다. 아마존 세이지 메이커 스튜디오 또는 프로그래밍 방식으로 SageMaker API를 사용합니다.

이 게시물에서는 학생 Hackathon 팀이 SageMaker JumpStart를 사용하여 짧은 시간에 솔루션을 개발한 방법을 배웠습니다. 이는 소규모 팀이나 개인이라도 정교한 AI 솔루션을 신속하게 개발하고 배포할 수 있는 AWS 및 SageMaker JumpStart의 잠재력을 보여줍니다.

SageMaker JumpStart 사용에 대해 자세히 알아보려면 다음을 참조하십시오. Amazon SageMaker Jumpstart로 FLAN T5 XL에 대한 명령 미세 조정Amazon SageMaker JumpStart의 Flan-T5 기반 모델에 대한 제로샷 프롬프트.

ETH Analytics Club은 ETH Zurich, University of Zurich 및 EPFL에서 150명 이상의 참가자가 참여하는 AI/ML 해커톤인 'ETH Datathon'을 주최했습니다. 이 이벤트에는 업계 리더가 진행하는 워크숍, 24시간 코딩 챌린지, 동료 학생 및 업계 전문가와의 귀중한 네트워킹 기회가 포함됩니다. ETH Hackathon 팀(Daniele Chiappalupi, Athina Nisioti, Francesco Ignazio Re)과 나머지 AWS 조직 팀인 Alice Morano, Demir Catovic, Iana Peix, Jan Oliver Seidenfuss, Lars Nettemann 및 Markus Winterholer에게 큰 감사를 드립니다.

이 게시물의 내용과 의견은 제 XNUMX 자 작성자의 것이며 AWS는이 게시물의 내용이나 정확성에 대해 책임을지지 않습니다.


저자 소개

장준 취리히에 본사를 둔 솔루션 아키텍트입니다. 그는 스위스 고객이 비즈니스 잠재력을 달성할 수 있도록 클라우드 기반 솔루션을 설계하도록 돕습니다. 그는 지속 가능성에 대한 열정을 가지고 있으며 기술을 통해 현재의 지속 가능성 문제를 해결하려고 노력합니다. 그는 또한 열렬한 테니스 팬이며 보드 게임을 많이 즐깁니다.

모한 고우다 AWS 스위스의 기계 학습 팀을 이끌고 있습니다. 그는 주로 자동차 고객과 협력하여 차세대 차량을 위한 혁신적인 AI/ML 솔루션과 플랫폼을 개발합니다. AWS에서 일하기 전에 Mohan은 전략 및 분석에 중점을 둔 글로벌 경영 컨설팅 회사에서 일했습니다. 그의 열정은 연결된 차량과 자율주행에 있습니다.

음식티아스 에글리 스위스 교육부장입니다. 그는 비즈니스 개발, 영업 및 마케팅 분야에서 폭넓은 경험을 보유한 열정적인 팀 리더입니다.

케멩 장 취리히에 거주하는 ML 엔지니어입니다. 그녀는 전 세계 고객이 ML 기반 애플리케이션을 설계, 개발, 확장하여 디지털 역량을 강화하여 비즈니스 수익을 늘리고 비용을 절감하도록 돕습니다. 그녀는 또한 행동 과학의 지식을 활용하여 인간 중심 애플리케이션을 만드는 데 매우 열정적입니다. 그녀는 수상 스포츠와 개 산책을 좋아합니다.

다니엘 치아팔루피 최근 ETH Zürich를 졸업했습니다. 그는 설계부터 구현, 배포부터 유지 관리까지 소프트웨어 엔지니어링의 모든 측면을 즐깁니다. 그는 AI에 대한 깊은 열정을 갖고 있으며 해당 분야의 최신 발전을 탐구하고, 활용하고, 기여하기를 간절히 기대합니다. 여가 시간에는 추운 계절에는 스노보드를 즐기고, 날씨가 따뜻해지면 농구를 즐깁니다.

spot_img

최신 인텔리전스

spot_img