Home Машинное обучение Инновации для инклюзивности: Hack.The.Bias с Amazon SageMaker | DeepTech

Инновации для инклюзивности: Hack.The.Bias с Amazon SageMaker | DeepTech

0
Инновации для инклюзивности: Hack.The.Bias с Amazon SageMaker
 | DeepTech

Этот пост был написан в соавторстве с Даниэле Кьяппалупи, участником команды студенческого хакатона AWS в ETH Zürich.

Каждый может легко начать работу с машинным обучением (ML) с помощью Amazon SageMaker JumpStart. В этом посте мы покажем вам, как команда университетского хакатона использовала SageMaker JumpStart для быстрого создания приложения, которое помогает пользователям выявлять и устранять предвзятости.

«Amazon SageMaker сыграл важную роль в нашем проекте. Это упростило развертывание предварительно обученного экземпляра Flan и управление им, предоставив нам прочную основу для нашего приложения. Его функция автоматического масштабирования оказалась решающей в периоды высокой посещаемости, гарантируя, что наше приложение останется отзывчивым, а пользователи получат стабильный и быстрый анализ систематических ошибок. Кроме того, позволив нам переложить тяжелую задачу запроса модели Flan на управляемый сервис, мы смогли сохранить наше приложение легким и быстрым, улучшая взаимодействие с пользователем на различных устройствах. Функции SageMaker позволили нам максимально эффективно использовать время на хакатоне, позволив нам сосредоточиться на оптимизации наших подсказок и приложения, а не на управлении производительностью модели и инфраструктурой».

– Даниэле Кьяппалупи, участник студенческой команды хакатона AWS в ETH Zürich.

Обзор решения

Тема хакатона — внести вклад в достижение устойчивых целей ООН с помощью технологий искусственного интеллекта. Как показано на следующем рисунке, приложение, созданное на хакатоне, способствует достижению трех целей устойчивого развития (качественное образование, борьба с гендерной дискриминацией и сокращение неравенства), помогая пользователям выявлять и устранять предвзятости из их текста, чтобы способствовать справедливому и инклюзивный язык.

Как показано на следующем снимке экрана, после предоставления текста приложение создает новую версию, свободную от расовых, этнических и гендерных предубеждений. Кроме того, он выделяет конкретные части входного текста, относящиеся к каждой категории предвзятости.

В архитектуре, показанной на следующей диаграмме, пользователи вводят текст в поле Реагироватьвеб-приложение, которое запускает Amazon API Gateway, который, в свою очередь, вызывает функцию AWS Lambda в зависимости от предвзятости пользовательского текста. Функция Lambda вызывает конечную точку модели Flan в SageMaker JumpStart, которая возвращает несмещенный текстовый результат по тому же маршруту обратно в интерфейсное приложение.

Процесс разработки приложения

Процесс разработки этого приложения был итеративным и сосредоточен на двух основных областях: пользовательский интерфейс и интеграция модели машинного обучения.

Мы выбрали React для фронтенд-разработки из-за его гибкости, масштабируемости и мощных инструментов для создания интерактивных пользовательских интерфейсов. Учитывая характер нашего приложения — обработку ввода пользователя и представление уточненных результатов — компонентная архитектура React оказалась идеальной. С помощью React мы могли эффективно создать одностраничное приложение, которое позволяло пользователям отправлять текст и видеть объективные результаты без необходимости постоянного обновления страниц.

Текст, введенный пользователем, должен был быть обработан мощной языковой моделью для проверки на предмет предвзятости. Мы выбрали Flan из-за его надежности, эффективности и масштабируемости. Чтобы использовать Flan, мы использовали SageMaker JumpStart, как показано на следующем снимке экрана. Amazon SageMaker упростил развертывание и управление предварительно обученным экземпляром Flan, что позволило нам сосредоточиться на оптимизации подсказок и запросов, а не на управлении производительностью модели и инфраструктурой.

Подключение модели Flan к нашему интерфейсному приложению потребовало надежной и безопасной интеграции, которая была достигнута с помощью Lambda и API Gateway. С помощью Lambda мы создали бессерверную функцию, которая напрямую взаимодействует с нашей моделью SageMaker. Затем мы использовали API Gateway для создания безопасной, масштабируемой и легкодоступной конечной точки для нашего приложения React для вызова функции Lambda. Когда пользователь отправлял текст, приложение запускало серию API-вызовов к шлюзу — сначала для определения наличия предвзятости, а затем, при необходимости, дополнительных запросов для выявления, обнаружения и нейтрализации предвзятости. Все эти запросы были перенаправлены через функцию Lambda, а затем в нашу модель SageMaker.

Нашей последней задачей в процессе разработки был выбор подсказок для запроса языковой модели. Здесь набор данных CrowS-Pairs сыграл важную роль, поскольку предоставил нам реальные примеры предвзятого текста, которые мы использовали для точной настройки наших запросов. Мы выбрали подсказки с помощью итеративного процесса с целью максимизировать точность обнаружения систематических ошибок в этом наборе данных.

Подводя итоги процесса, мы наблюдали плавную работу готового приложения. Процесс начинается с того, что пользователь отправляет текст для анализа, который затем отправляется через POST-запрос на нашу защищенную конечную точку API-шлюза. Это активирует функцию Lambda, которая взаимодействует с конечной точкой SageMaker. Следовательно, модель Флана получает серию запросов. Первым проверяется наличие каких-либо искажений в тексте. Если обнаруживаются предвзятости, запускаются дополнительные запросы для обнаружения, идентификации и нейтрализации этих предвзятых элементов. Затем результаты возвращаются по тому же пути — сначала в функцию Lambda, затем через шлюз API и, в конечном итоге, обратно пользователю. Если в исходном тексте присутствовала какая-либо предвзятость, пользователь получает комплексный анализ с указанием типов обнаруженных предубеждений, будь то расовая, этническая или гендерная. Конкретные разделы текста, в которых были обнаружены эти предубеждения, выделены, что дает пользователям четкое представление о внесенных изменениях. Наряду с этим анализом представлена ​​новая, объективная версия их текста, эффективно преобразующая потенциально предвзятую информацию в более инклюзивное повествование.

В следующих разделах мы подробно описываем шаги по реализации этого решения.

Настройте среду React

Мы начали с настройки среды разработки для React. Для загрузки нового приложения React с минимальной конфигурацией мы использовали create-react-app:

npx create-react-app my-app

Создайте пользовательский интерфейс

Используя React, мы разработали простой интерфейс для ввода текста пользователями с кнопкой отправки, кнопкой сброса и наложенными дисплеями для представления обработанных результатов, когда они будут доступны.

Запустите модель Flan в SageMaker.

Мы использовали 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. Функция была разработана для получения запроса с текстом пользователя, пересылки его в конечную точку 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-шлюз

Мы настроили новый REST API в API Gateway и связали его с нашей функцией Lambda. Это соединение позволило нашему приложению React отправлять HTTP-запросы к шлюзу API, что впоследствии запускало функцию Lambda.

Интегрируйте приложение React с API

Мы обновили приложение React, чтобы оно отправляло POST-запрос к шлюзу API при нажатии кнопки отправки, при этом тело запроса представляло собой текст пользователя. Код JavaScript, который мы использовали для выполнения вызова API, выглядит следующим образом (REACT_APP_AWS_ENDPOINT соответствует конечной точке API-шлюза, привязанной к вызову Lambda):

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. В ходе этого итеративного процесса мы выбрали подсказки, которые обеспечили нам максимальную точность.

Развертывание и тестирование приложения React на Vercel

После создания приложения мы развернули его на Vercel, чтобы сделать его общедоступным. Мы провели обширные тесты, чтобы убедиться, что приложение работает должным образом — от пользовательского интерфейса до ответов языковой модели.

Эти шаги заложили основу для создания нашего приложения для анализа и устранения искажений текста. Несмотря на присущую этому процессу сложность, использование таких инструментов, как SageMaker, Lambda и API Gateway, упростило разработку, позволив нам сосредоточиться на основной цели проекта — выявлении и устранении искажений в тексте.

Заключение

SageMaker JumpStart предлагает удобный способ изучить функции и возможности SageMaker. Он предоставляет тщательно подобранные одноэтапные решения, примеры блокнотов и развертываемые предварительно обученные модели. Эти ресурсы позволят вам быстро изучить и понять SageMaker. Кроме того, у вас есть возможность точно настроить модели и развернуть их в соответствии с вашими конкретными потребностями. Доступ к JumpStart доступен через Amazon SageMaker Studio или программно с использованием API-интерфейсов SageMaker.

В этом посте вы узнали, как студенческая команда хакатона за короткое время разработала решение с помощью SageMaker JumpStart, которое показывает потенциал AWS и SageMaker JumpStart в обеспечении быстрой разработки и развертывания сложных решений искусственного интеллекта даже небольшими командами или отдельными людьми.

Дополнительные сведения об использовании SageMaker JumpStart см. в инструкциях по тонкой настройке FLAN T5 XL с помощью Amazon SageMaker Jumpstart и подсказках Zero-shot для базовой модели Flan-T5 в Amazon SageMaker JumpStart.

Клуб ETH Analytics провел «ETH Datathon», хакатон по искусственному интеллекту и машинному обучению, в котором приняли участие более 150 участников из ETH Zurich, Цюрихского университета и EPFL. Мероприятие включает в себя семинары под руководством лидеров отрасли, круглосуточное соревнование по программированию и ценные возможности для налаживания связей с сокурсниками и профессионалами отрасли. Огромное спасибо команде хакатона ETH: Даниэле Кьяппалупи, Афине Нисиоти и Франческо Игнацио Ре, а также остальным членам команды организаторов AWS: Алисе Морано, Демиру Катовичу, Яне Пейкс, Яну Оливеру Зайденфуссу, Ларсу Неттеманну и Маркусу Винтерхолеру.

Содержание и мнения в этом сообщении принадлежат стороннему автору, и AWS не несет ответственности за содержание или точность этого сообщения.


Об авторах

Цзюнь Чжан — архитектор решений из Цюриха. Он помогает швейцарским клиентам разрабатывать облачные решения для реализации их бизнес-потенциала. У него есть страсть к устойчивому развитию, и он стремится решать текущие проблемы устойчивого развития с помощью технологий. Он также большой поклонник тенниса и очень любит играть в настольные игры.

Мохан Гауда возглавляет группу машинного обучения в AWS в Швейцарии. Он работает в основном с клиентами из автомобильной отрасли над разработкой инновационных решений и платформ искусственного интеллекта и машинного обучения для автомобилей следующего поколения. До работы в AWS Мохан работал в компании Global Management Consulting, специализирующейся на стратегии и аналитике. Его страсть — подключенные транспортные средства и автономное вождение.

МатТиас Эгли является руководителем образования в Швейцарии. Он энергичный руководитель группы с обширным опытом в развитии бизнеса, продажах и маркетинге.

Кемэн Чжан — инженер ML из Цюриха. Она помогает клиентам по всему миру проектировать, разрабатывать и масштабировать приложения на основе машинного обучения, чтобы расширить их цифровые возможности, увеличить доходы бизнеса и снизить затраты. Она также очень увлечена созданием приложений, ориентированных на человека, используя знания из поведенческой науки. Ей нравится заниматься водными видами спорта и гулять с собаками.

Даниэле Чиаппалупи недавний выпускник ETH Zürich. Ему нравятся все аспекты разработки программного обеспечения: от проектирования до реализации и от развертывания до обслуживания. Он страстно увлечен искусственным интеллектом и с нетерпением ожидает изучения, использования и внесения вклада в последние достижения в этой области. В свободное время он любит кататься на сноуборде в холодные месяцы и играть в баскетбол, когда становится теплее.

LEAVE A REPLY

Please enter your comment!
Please enter your name here