4.56M
Category: softwaresoftware

Создание приложений интеграция в ИТ ландшафт

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 Zoo
29

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

37.

do.bmstu.ru
English     Русский Rules