Данная работа посвящена созданию высокопроизводительной системы для обучения и развертывания моделей машинного обучения, интегрированной с СУБД PostgreSQL. Основная цель проекта — обеспечить эффективное взаимодействие между реляционными базами данных и современными ML-алгоритмами, сократив время разработки и упростив процесс внедрения в промышленные решения.
В рамках проекта разработаны: расширение PostgreSQL для выполнения ML-запросов напрямую из СУБД, микросервисная архитектура на FastAPI и PyTorch для обработки сложных ML-задач, механизмы сериализации моделей с поддержкой версионирования и воспроизводимости, оптимизированные пайплайны обработки изображений для задач классификации.
Реализованный функционал протестирован на трех типах датасетов: распознавание рукописных цифр (MNIST), классификация кошек и собак, диагностика болезней яблок.
Разработанное решение может быть использовано в промышленных системах компьютерного зрения, автоматизированной диагностики и других областях, требующих интеграции ML с базами данных. Проект включает 21 функцию, 3 таблицы в PostgreSQL и более 1500 строк кода, демонстрируя эффективность предложенного подхода.
СОДЕРЖАНИЕ
ВВЕДЕНИЕ..............................................................................................................9
ГЛАВА 1. ОБЗОР ПРЕДМЕТНОЙ ОБЛАСТИ...................................................11
1.1. Интеграция машинного обучения в СУБД...............................................11
1.1.1. MADlib: ML прямо в SQL...................................................................11
1.1.2. PL/Python..............................................................................................13
1.2 Облачные ML-платформы..........................................................................20
1.2.1 Google BigQuery ML............................................................................20
1.2.2 AWS SageMaker....................................................................................20
1.3 ETL+ML пайплайны....................................................................................22
1.4 Итоги главы..................................................................................................24
ГЛАВА 2. РАЗРАБОТКА ФУНКЦИОНАЛА.......................................................26
2.1 Системная архитектура (ядро решения)....................................................26
2.2 ML-микросервис (FastAPI).........................................................................29
2.3 Docker-оркестрация.....................................................................................33
2.3 Детали реализации ключевых компонентов.............................................36
2.4 Работа с данными........................................................................................38
2.5 Модель и обучение......................................................................................42
2.6 Технические особенности реализации......................................................44
2.7 Управление состоянием..............................................................................46
2.8 Фоновые задачи...........................................................................................49
2.8 Протокол взаимодействия компонентов....................................................51
2.8.1 Последовательность операций при обучении....................................51
2.8.2 Поток данных при предсказании........................................................54
2.9 Сравнение с альтернативными подходами................................................57
2.9.1 Производительность: Оптимальное распределение ресурсов.........57
2.9.2 Безопасность: Многоуровневая защитная модель............................57
2.9.3. Гибкость: Полноценная ML-экосистема...........................................58
2.10 Компромиссы реализации.........................................................................59
ГЛАВА 3. РЕЗУЛЬТАТЫ РАБОТЫ......................................................................63
Итоги работы..........................................................................................................74
Заключение.............................................................................................................76
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ.............................................77
ПРИЛОЖЕНИЕ 1. ПРИМЕР КОНФИГУРАЦИИ DOCKER-COMPOSE.........79
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1.Гудфеллоу Я. Глубокое обучение / Я. Гудфеллоу, И. Бенджио, А. Курвиль; пер. с англ. А. А. Слинкина. — М.: ДМК Пресс, 2022. — 652 с.
2.Чоллет Ф. Глубокое обучение на Python / Ф. Чоллет; пер. с англ. А. Киселева. — СПб.: Питер, 2021. — 400 с.
3.Новиков Б. А. PostgreSQL 15 изнутри / Б. А. Новиков, Е. В. Рогов. — М.: ДМК Пресс, 2023. — 720 с.
4.Лутц М. Изучаем Python / М. Лутц; пер. с англ. С. Чикова. — СПб.: Символ-Плюс, 2022. — 1648 с.
5.Педрегоса Ф. Машинное обучение с использованием Python / Ф. Педрегоса, А. Гризель; пер. с англ. В. Яценкова. — М.: ДМК Пресс, 2021. — 480 с.
6.Керимов Т. Э. Современные подходы к интеграции баз данных и машинного обучения // Информационные технологии. 2023. № 4. С. 45-52.
7.Смирнов А. В. Оптимизация производительности PostgreSQL для задач компьютерного зрения // Программные системы и вычислительные методы. 2022. № 3. С. 78-89.
всего 19 источников