Этот пост был написан в соавторстве с Даниэле Кьяппалупи, участником команды студенческого хакатона 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, например:
Создайте лямбда-функцию
Мы разработали функцию Lambda, которая напрямую взаимодействовала с нашей конечной точкой SageMaker. Функция была разработана для получения запроса с текстом пользователя, пересылки его в конечную точку SageMaker и возврата уточненных результатов, как показано в следующем коде (ENDPOINT_NAME
был настроен как конечная точка экземпляра SageMaker):
Настройте API-шлюз
Мы настроили новый REST API в API Gateway и связали его с нашей функцией Lambda. Это соединение позволило нашему приложению React отправлять HTTP-запросы к шлюзу API, что впоследствии запускало функцию Lambda.
Интегрируйте приложение React с API
Мы обновили приложение React, чтобы оно отправляло POST-запрос к шлюзу API при нажатии кнопки отправки, при этом тело запроса представляло собой текст пользователя. Код JavaScript, который мы использовали для выполнения вызова API, выглядит следующим образом (REACT_APP_AWS_ENDPOINT
соответствует конечной точке API-шлюза, привязанной к вызову Lambda):
Оптимизировать быстрый выбор
Чтобы повысить точность обнаружения систематической ошибки, мы протестировали различные подсказки на основе набора данных 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. Ему нравятся все аспекты разработки программного обеспечения: от проектирования до реализации и от развертывания до обслуживания. Он страстно увлечен искусственным интеллектом и с нетерпением ожидает изучения, использования и внесения вклада в последние достижения в этой области. В свободное время он любит кататься на сноуборде в холодные месяцы и играть в баскетбол, когда становится теплее.