В эпоху стремительного развития технологий искусственного интеллекта всё больше компаний и разработчиков пытаются применить машинное обучение в своих продуктах и проектах. Однако зачастую процесс создания работающего продукта на основе моделей машинного обучения представляет собой «черный ящик» для новичков в этой сфере.
Эта книга ставит своей целью максимально подробно и пошагово рассказать о том, как создать полноценный проект в сфере искусственного интеллекта – от исследования идеи до готового веб-приложения с моделью машинного обучения. Мы возьмем за основу конкретный проект по текстовому обобщению (рафинированию) – это процесс создания более короткой версии длинного текста или диалога и увидим, как он был реализован от начала и до конца.
Эта книга станет настоящей «библией» для всех, кто хочет разобраться в прикладном применении машинного обучения и понять весь процесс от А до Я.
После ее прочтения вы получите бесценные знания о том, как подходить к разработке подобных проектов, что позволит вам:
Структурировать код проекта с использованием передовых практик
Организовать процесс исследования и поиска решения
Разрабатывать и обучать эффективные модели машинного обучения
Создавать тренировочные и прогнозирующие конвейеры
Развертывать модели в виде готовых веб-приложений
Автоматизировать процесс непрерывной интеграции и доставки моделей
Книга содержит реальный код, примеры и шаги по созданию проекта от начала до конца. Это позволит вам не только изучить, но и применить на практике паттерны и подходы разработки проектов в сфере ИИ.
После прочтения вы сможете использовать полученные знания как шаблон для создания собственных приложений и сервисов с машинным обучением.
Начало проекта по
Data
Science
Бизнес-постановка – основа любого коммерческого проекта по Data science
В 90% случаев коммерческие проекты по Data science начинаются с бизнес-постановки от заказчика. Это означает, что заказчик четко определяет, какую задачу необходимо решить с помощью данных.
Бизнес-постановка включает в себя следующие элементы:
Цель проекта. Что заказчик хочет достичь с помощью данных?
Задачи проекта. Какие шаги необходимо предпринять для достижения цели?
Данные. Какие данные необходимы для выполнения проекта?
Ожидаемые результаты. Что заказчик ожидает получить в результате проекта?
Дано:
Заказчик обратился с потребностью автоматически суммаризировать большие объемы текста, в особенности длинные диалоги. Основная цель состояла в том, чтобы пользователи могли быстро понять основное содержание предоставленного текста без необходимости читать его полностью. Это особенно актуально для быстрого анализа новостей, длинных документов или корпоративных диалогов.
Кроме того, заказчик предоставил специфические данные для обучения, чтобы модель лучше понимала и адаптировалась к уникальной специфике и структуре диалогов в компании заказчика.
Ожидание заказчика – Web API интерфейс для решения задач по суммаризации текста
Заказчик ожидает, что исполнитель предоставит Web API интерфейс для решения задач по суммаризации текста. Этот интерфейс должен соответствовать следующим требованиям:
Легкость использования. Интерфейс должен быть простым и понятным в использовании. Он должен быть доступен через стандартные методы HTTP, такие как POST, GET и PUT.
Производительность. Интерфейс должен быть производительным. Он должен обеспечивать быстрое и эффективное выполнение запросов.
Надежность. Интерфейс должен быть надежным. Он должен поддерживать высокую доступность и отказоустойчивость.
Цели заказчика:
Эффективность:
Сократить время, затрачиваемое на анализ и понимание больших объемов текста, предоставляя краткие и точные резюме.
Адаптация к специфике:
Улучшить качество и точность суммаризации, адаптируя модель к уникальным особенностям и структуре диалогов в компании заказчика.
Интеграция:
Возможность легко интегрировать решение в существующие корпоративные системы для автоматизации процесса суммаризации.
Улучшение взаимодействия:
Помочь сотрудникам быстрее и эффективнее взаимодействовать с информацией, улучшая таким образом коммуникации и принятие решений в компании.
Данные:
Для наглядности обсуждения примем ситуацию, где заказчик предоставил, среди прочего, размеченный датасет для дополнительного обучения нашей предстоящей модели.
В целях демонстрации, мы взяли обучающий датасет с платформы Hugging Face. После получения всей необходимой информации от заказчика, включая данные, исполнитель переходит к этапу прототипирования решения. Если прототип удовлетворяет требованиям заказчика, следуют действия по внедрению решения в рабочую среду. Данный процесс будет описан в деталях в нашей книге.
Прототип решения задачи по обобщению текста
Предположим, что исполнитель успешно справился с реализацией представленной бизнес-постановки. В качестве результата работы он предоставил прототип решения задачи по обобщению текста в формате Jupyter Notebook. (см. Приложение №1)
Основные этапы работы, представленные в файле Jupyter Notebook:
Подготовка рабочей среды:
Установка всех необходимых библиотек и пакетов, проверка доступности графического процессора для ускоренных вычислений.
Загрузка данных:
Импорт предоставленных заказчиком данных и их предварительная обработка.
Выбор и загрузка модели:
Выбрана модель PEGASUS из библиотеки Hugging Face's Transformers для задачи обобщения.
Дообучение модели:
Используя предоставленные заказчиком данные, произведено дообучение модели для лучшей адаптации к специфике диалогов заказчика.
Оценка качества:
Проведена валидация и оценка качества модели на отложенной выборке.
Демонстрация работы:
Представлены примеры обобщения различных текстов с использованием обученной модели.
Этот Jupyter Notebook служит как детальное руководство по реализации решения, так и демонстрацией его эффективности.
Приложение №1 Прототип по обобщению текста в формате Jupyter Notebook
Пошаговая инструкция по запуску в реализацию проекта
По итогам предоставления прототипа заказчиком принято решение о запуске данного решения в продакшен.
Это открывает новый этап работы для исполнителя.
Модульное кодирование:
Необходимо структурировать код из Jupyter Notebook, разделив его на модули и функции, что облегчит последующую интеграцию, тестирование и поддержку решения.
Создание Web-API интерфейса:
Разработка пользовательского интерфейса, который позволит конечным пользователям легко и удобно использовать решение для обобщения текстов.
Контейнеризация:
Все компоненты решения, включая зависимости, модель и интерфейс, необходимо упаковать в Docker-контейнер. Это обеспечит портативность, масштабируемость и надежность при развертывании решения.