Similar presentations:
Создание приложений интеграция в ИТ ландшафт
1.
Создание приложений,интеграция в ИТ
ландшафт
Пересунько Евгения Олеговна
2.
Структуразанятия
1
2
3
4
5
2
Создание приложений на Python
Особенности создания приложений в области ИИ
Внедрение ML-моделей в приложения
Инструменты разработки
Виды проектов в области ИИ
3.
Создание приложений наPython
Виды приложений на Python:
3
Web-приложения
Desktop-приложения
Консольные приложения
Исследования (как правило, в формате Jupyter Notebook)
4.
Web-приложенияВеб-приложение — клиент-серверное приложение, в котором клиент
взаимодействует с веб-сервером при помощи браузера.
Библиотеки для «универсальных» веб-приложений:
• Django
• Flask
• FastAPI
Библиотеки для создания приложений визуализации и анализа
данных:
• Dash
• Streamlit
4
5.
Процесс создания webприложенияОсновные задачи:
• Разработка базы данных (выбор СУБД)
• Разработка API: описание взаимодействия всех частей системы
• Разработка frontend-части: необходимы знания JavaScript и
фреймворков (React / Angular / и др.)
• Разработка backend-части: для Python – знание Django (DRF) / FastAPI
/ и др.
• Тестирование (нагрузочное, интеграционное и другие)
Как следствие, требуется широкий набор знаний и много ресурсов
5
6.
Когда обоснован описанныйпроцесс?
• Проект направлен на автоматизацию сложного бизнес-процесса
• Имеется достаточное количество ресурсов (временных,
финансовых, человеческих и других)
• Предполагается широкое применение разработанной системы
(интернет-магазины, социальные сети и так далее)
6
7.
Разработка приложений длявизуализации
• Приложение для визуализации
данных
• Используемая библиотека:
Streamlit
• Преимущества: не требуются
глубокие знания веб-разработки
7
8.
Desktop-приложения• Desktop-приложения (или настольные) – это программы,
которые нуждаются в операционной системе компьютера для
своей работы
• Устанавливаются в систему через специальный инсталлятор
• Используют для работы ресурсы компьютера
8
9.
Библиотеки для создания desktop-приложений• Tkinter
• PyQt
9
10.
Консольные приложения• Консольные приложения и приложения с интерфейсом
командной строки не имеют графического интерфейса
пользователя
• Принцип работы заключается в запуске приложения с
заданными параметрами и/или текстовым интерфейсом
10
11.
Особенности создания приложений в областиИИ
• Приложения в области ИИ направлены на интеллектуальную
обработку каких-либо данных.
• Разработка программного обеспечения – важный шаг в
применении результатов машинного обучения.
• Специалист по машинному обучению – это не только учёный, но
и программист.
11
12.
Основные задачи в ИИ-проектеФормулировка проблемы
Работа с данными
• Сбор и разметка
• Предобработка
Разработка моделей
• Проектирование
• Разработка
• Обучение
• Тестирование
Применение
12
13.
Сбор требований к системе ИИТребования к программному обеспечению
• Функции (функциональные требования)
• Свойства и характеристики (нефункциональные
требования)
Требования к процессу машинного
обучения
• Скорость работы
• Точность и качество
• Входные и выходные данные
13
14.
Основные проблемы припроектировании
Акцент на модели без конкретизации требований к ПО
Отсутствие требований к модели и данным
Нереалистичные или плохо интерпретируемые метрики
качества
Метрики, не соответствующие предметной области
Отсутствие плана разработки ПО в целом
• Как будет работать приложение?
• Как будет интегрироваться модель?
14
15.
Основные проблемы приразработке
Возможные проблемы при разработке приложения с моделями
машинного обучения:
• Команда состоит только из инженеров по машинному обучению
• Нехватка времени на разработку полноценного веб-приложения
• Отсутствие необходимости разработки веб-приложения
15
16.
Варианты приложений длядемонстрации
Создание отчета
16
Приложение с CLI
Можно сделать в любом удобном
формате (презентация, Jupyter
notebook, текстовый документ)
Возможен интерактив
Не требует специализированных
знаний
Текстовый интерфейс
Нет взаимодействия с
разработанной моделью
Ограниченная визуализация
17.
Варианты приложений длядемонстрации
Чат-бот
17
Приложениедашборд
Большое число библиотек для
Python
(и не только)
Большое число библиотек для
создания приложения из готовых
компонентов
Возможность создания без
программирования
Интерактивная визуализация
Ограниченная визуализация
Приложение менее гибкое, чем
«полноценный» веб-сайт
18.
Внедрение моделей в приложения• Модель как зависимость (Model-as-Dependency)
• Модель по запросу (Model-on-Demand)
• Модель как услуга или сервис (Model-as-Service)
• Предварительный расчет (Precompute)
18
19.
Модель как зависимостьНаиболее простой способ
упаковать модель
Пример: приложение
использует ML-модель как
обычную зависимость от
файла, вызывая метод
прогнозирования и передавая
значения.
Возвращаемое значение:
прогноз от предварительно
обученной ML-модели.
19
20.
Модель по запросуМодель – зависимость,
доступная во время
выполнения.
Отличие от шаблона «Модель
как зависимость» - имеется
собственный цикл выпуска
(публикуется независимо)
Обычно используется брокер
сообщений (Apache Kafka /
RabbitMQ и т. д.)
20
21.
Модель как услугаЗаключение ML-модели и интерпретатора в выделенную вебслужбу
Запросы - через REST API или удаленный вызов процедур (RPC,
Remote Procedure Call).
Паттерн пригоден для различных рабочих процессов машинного
обучения, от пакетного прогнозирования до онлайн-обучения
модели в потоковом режиме.
21
22.
Предварительный расчетПрогнозы предварительно вычисляются с использованием уже
обученной ML-модели для входящего пакета данных и
сохраняются в базе.
Обращение к базе при любом входном запросе, чтобы получить
результат
22
23.
Библиотеки для разработки моделейСтатистика и математика
• NumPy
• SciPy
• Statsmodel
Визуализация данных
• Matplotlib
• Plotly
Построение ML-моделей
• Scikit-learn
Искусственные нейронные сети
• TensorFlow
• PyTorch
23
24.
Инструменты для улучшения качестваИнструменты для ускорения моделей
ONNX runtime
Tensorflow lite
OpenCV
Подходы к ускорению моделей
Квантизация
Прунинг
Core ML
Дистилляция
Для iOS-разработки
Для веб-приложений на JavaScript
TensorFlowJS
24
TensorRT
Кластеризация
весов
Create ML
25.
Что еще можно использовать дляреального проекта?
Docker – это программная платформа для быстрой разработки, тестирования
и развертывания приложений.
Docker упаковывает ПО в стандартизованные блоки, которые называются
контейнерами.
Каждый контейнер включает все необходимое для работы приложения:
• библиотеки
• системные инструменты
• код
• среду исполнения.
25
26.
Преимущества Docker• Быстрая поставка программного обеспечения
• Поставка приложений в небольших контейнерах упрощает процесс
развертывания, обнаружения проблем и отката для их устранения к
прошлым версиям.
• Приложения на основе контейнеров Docker можно эффективно
переносить с локальных машин, на которых ведется разработка,
например, в AWS для рабочего развертывания.
26
27.
Структура проекта27
28.
Проблемы в ML-проекте безиспользования VCS
28
29.
Зоопарк моделей – Model Zoo29
30.
Контроль версийПроблема:
Если с кодом все уже привычно и понятно - создаем репозиторий и ведем
себя как разработчики ПО, то что делать с моделями и данными?
30
31.
Версии наборов данныхОсновные особенности хранения версий данных.
1. Для датасета, состоящего из картинок, сохранение различных
конфигураций датасета может привести к быстрому увеличению
занимаемого места. Одно из популярных решений: хранение всех
картинок в одном месте (сервер, облако и т.д.), а для работы с
версиями использовать имена файлов
2. Для датасета, состоящего из текстовых файлов и таблиц можно как
хранить каждую новую версию (т.к. они, как правило, занимают мало
места), так и хранить только сами изменения.
31
32.
Версии моделей и гиперпараметровНеобходимость хранения версий моделей обусловлена тем, что в процессе
разработки решения возникают различные варианты взаимозаменяемых
архитектур.
В то же время, для каждой модели рассматриваются разные наборы
гиперпараметров и выбирается наиболее привлекательная комбинация.
32
33.
Структура блокнота JupyterТак как данная среда позволяет писать не
только код, но и блоки текста, можно
иметь несколько экспериментов с
поясняющей информацией.
Однако это применимо только для
небольшого числа моделей
и их гиперпараметров.
33
34.
Применение Git дляверсионирования экспериментов
Одним из распространенных решений с использованием Git является
создание под каждый эксперимент своей ветки.
Недостатки:
-
большое количество веток, что усложняет структуру репозитория
конфликты при слиянии (особенно в случае необходимости сравнения
нескольких решений)
Преимущества:
-
34
возможность быстро переключаться между версиями моделей
35.
Git и версии данныхНедостатки:
-
большой объем данных, дублирование при создании резервных копий;
-
системы контроля версий, как правило, предполагают сохранение не самих
файлов, а изменений.
Пример: при изменении одной строчки кода будет сохраняться не новый
файл с кодом, а информация об этом изменении. В случае с картинками и
т.п. это не имеет смысла, поэтому будут создаваться копии.
35
36.
Data version control• DVC работает поверх Git,
использует его
инфраструктуру и имеет
похожий синтаксис.
• В процессе работы DVC
создает мета-файлы для
описания пайплайнов и
версионируемых
файлов, которые
необходимо сохранять в
Git историю проекта.
36