Реализация проекта машинного обучения от A до Я на примере приложения для обобщения текста
000
ОтложитьЧитал
Введение
В эпоху стремительного развития технологий искусственного интеллекта всё больше компаний и разработчиков пытаются применить машинное обучение в своих продуктах и проектах. Однако зачастую процесс создания работающего продукта на основе моделей машинного обучения представляет собой «черный ящик» для новичков в этой сфере.
Эта книга ставит своей целью максимально подробно и пошагово рассказать о том, как создать полноценный проект в сфере искусственного интеллекта – от исследования идеи до готового веб-приложения с моделью машинного обучения. Мы возьмем за основу конкретный проект по текстовому обобщению (рафинированию) – это процесс создания более короткой версии длинного текста или диалога и увидим, как он был реализован от начала и до конца.
Эта книга станет настоящей «библией» для всех, кто хочет разобраться в прикладном применении машинного обучения и понять весь процесс от А до Я.
После ее прочтения вы получите бесценные знания о том, как подходить к разработке подобных проектов, что позволит вам:
Структурировать код проекта с использованием передовых практик
Организовать процесс исследования и поиска решения
Разрабатывать и обучать эффективные модели машинного обучения
Создавать тренировочные и прогнозирующие конвейеры
Развертывать модели в виде готовых веб-приложений
Автоматизировать процесс непрерывной интеграции и доставки моделей
Книга содержит реальный код, примеры и шаги по созданию проекта от начала до конца. Это позволит вам не только изучить, но и применить на практике паттерны и подходы разработки проектов в сфере ИИ.
После прочтения вы сможете использовать полученные знания как шаблон для создания собственных приложений и сервисов с машинным обучением.
Начало проекта по
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-контейнер. Это обеспечит портативность, масштабируемость и надежность при развертывании решения.
Разворачивание контейнера на облачной инфраструктуре заказчика:
После тестирования и упаковки решения в Docker-контейнер, оно должно быть развернуто на облачной инфраструктуре заказчика, обеспечив тем самым доступность для конечных пользователей.
Эти этапы являются ключевыми для успешного перехода от прототипа к полноценному продакшен-решению, способному обслуживать множество пользователей и интегрироваться с другими системами заказчика.
Шаг 1. Подготовка проекта
Подготовка проекта включает в себя ряд действий, направленных на настройку инфраструктуры и кода для обеспечения качественной и надежной разработки. Это важный этап в жизненном цикле проекта, который помогает избежать ошибок и сложностей на последующих этапах.
Все необходимые шаги, которые необходимо выполнить перед тем как приступить к модульному кодированию проекта, подробно со скриншотами кода, представлены в следующих разделах.
Настройка и клонирование репозитория GitHub на ПК
Первым делом в разработке любого проекта должно стать создание его «дома» – репозитория на GitHub. Эта платформа позволит нам не только хранить и версионировать код, но и настроить процесс непрерывной интеграции.
Мы задаем имя репозитория, совпадающее с названием нашего будущего проекта. Это поможет коллегам сразу понять его суть и назначение. Далее определяемся с уровнем доступа – сделать репозиторий публичным или приватным.
Как только репозиторий создан, добавляем в него файл README.md – это своего рода «паспорт» проекта с описанием его функционала и инструкциями по запуску.
Также важный шаг – добавление .gitignore и указание там Python как языка разработки. Это позволит исключить лишние промежуточные файлы из репозитория.
Завершающим аккордом станет выбор лицензии. Для открытых проектов отлично подходит лаконичная и ненавязчивая MIT – она позволит любому использовать код, указав авторство разработчиков.
Теперь у нашего проекта есть дом с просторными кодовыми хранилищами, настроен охранник в лице .gitignore и определены правила проживания благодаря выбранной лицензии.
Можно приступать к активной фазе – наполнению репозитория полезным кодом!
Получив доступ к репозиторию, созданному на GitHub, мы можем приступить к его клонированию – процессу создания полной локальной копии удаленного репозитория. Это позволит нам в дальнейшем работать с кодом на своем компьютере с последующей синхронизацией изменений обратно в удаленный репозиторий.
Для клонирования репозитория необходимо выполнить следующие действия:
Шаг1: перейти на страницу созданного репозитория на GitHub.
Шаг2: нажать на кнопку "Code", после чего скопировать предложенную ссылку в формате HTTPS. Эта ссылка указывает на расположение репозитория.
Шаг3: в директории на локальном компьютере, куда необходимо поместить клонируемый репозиторий, открыть окно терминала, набрав команду cmd в адресной строке.
Шаг4: выполнить команду git clone <ссылка>. Git использует указанную ссылку для скачивания всех файлов и данных репозитория.
После завершения клонирования в выбранной директории появится полная копия репозитория со всеми файлами и версиями на вашем диске.
Теперь репозиторий готов к использованию в локальной разработке. Все изменения можно будет синхронизировать обратно в удаленный репозиторий с помощью команд git push и git pull.
Создали директорию project_1 на рабочем столе и открыли терминал в этой же директории
Клонируем ранее созданный репозиторий на GitHub на локальный компьютер. В результате копирования на компьютере создаётся новая папка с названием репозитория.
Запускаем VSC (Visual studio code) среды разработки – для последующей работы над нашим проектом
Открыв VSC, в проводнике мы видим все наши файлы, которые мы клонировали с репозитория. Теперь приступаем к шагу 2: созданию скрипта на Python, содержащего будущую структуру папок и файлов нашего проекта.