- Обзор курса
- Линейные модели машинного обучения
- Градиентный спуск
- Модели машинного обучения и кейсы их применения
- Метрики машинного обучения
- Кроссвалидация
- Язык Scala и среда разработки
- Базовые конструкции, функциональные и ООП-элементы
- Математические и ML библиотеки в Scala
- Градиентный спуск на MapReduce
- Плюсы и минусы массивно-параллельного и распределенного подхода
- Что такое линейная масштабируемость и как она теряется
- Уровни изоляции (по задачам в Спарке, по контейнерам-процессам в YARN, по докер-контейнерам в KubeFlow)
- Spark On Yarn
- Принципы управления стандартными ресурсами (RAM+CPU)
- GPU в рамках YARN
- HDFS/S3
- NoSQL, аналитические хранилища
- Эволюция форматов хранения от SequenceFile и Avro-файлов к Parquet
- Преимущества и возможности колоночных форматов хранения. Концепция Object Store
- RDD API, задачи, этапы, даги, шаффлы и броадкасты
- SQL API – датафреймы и датасеты, работа оптимизатора
- Тестирование кода на Спарке
- Виды параллелизма при переносе МЛ (по данным, по модели, по задаче) в распределенную среду
- Распараллеленный по данным алгоритм
- Гибрид с параллелизмом и по данным, и по модели (блочное СВД)
- Концепция сервера параметров и какие есть альтернативы для Спарка. Параллелизм по задаче на примере кросс-валидации
- Эволюция ML API в Spark
- Концепция ML пайплайнов, работа с основными блоками
- Обзор имеющихся возможостей SparkML
- Расширение функционала SparkML своими алгоритмами
- Тестирование кода
- Advanced Spark: broadcast, all reduce, ассumulators
- XGBoost
- AzureML
- PravdaML
- MXNet. Параметр серверы (AngelPS)
- Постановка задачи подбора гиперпараметров в распределенных решениях
- Оптимизация гиперпараметров с помощью PravdaML
- Анализ данных в потоке. Kafka
- Лямбда и Каппа архитектуры
- Построение DAG-ов стримовых задач
- Основы стриминга в Spark: сорцы и синки, партиционирование, оконные функции, управление состоянием, чекпоинты
- Внутренняя и внешняя стыковка задач
- Структурный стриминг для подключения SQL и ML к стримам
- Особенности работы оптимизатора в стримовом случае
- Continous streaming как один из вариантов организации сервинга Spark ML
- Flink
- Kafka Streams
- Samza
- NiFi
- Особенности stream-first решений
- Цели МЛ проектов: краткосрочные/долгосрочные, инертные/динамичные.
- Цель – онлайн-метрика – оффлайн-метрика – функция потерь.
- Инструменты ad-hock аналитики: Zeppelin с плагином для IDEA, Polynote.
- Проблема correlation vs. causation
- Формирование критерия оттекших/удержавшихся пользователей
- Инжиниринг фичей
- Тренировка и интерпретация модели
- Формулировка набора гипотез
- Введение в А/Б тесты
- Доверительные интервалы и статистические гипотезы.
- Формулировка целей, дизайн теста, определение времени и объема аудитории.
- Множественное тестирование в теории и на практике, снижение FDR. Гетерогенный эффект.
- Counterfactual reasoning на примере оффлайн А/Б тестривания ML моделей рекомендательных систем (в том числе как метод коррекции смещения в обучении)
- Дизайн синтетических метрик для оффлайн и онлайн тестов
- Пакетный, потоковый, и онлайн (асинхронный и синхронный) паттерны и их комбинации
- Организация пакетной части - от кронтаба к триггерным системам
- Airflow, Oozie, Luidgi
- Организация мониторинга
- Воспроизводимость в Spark ML
- DvC, MLFlow
- Трансформация прототипа в пром решение (тесты, метрики, семафоры)
- Вычисление модели в режиме онлайн: пакеты MLeap и JPMML
- Дублирование кода, continous streaming и Azure ML Spark Serving
- Доставка до моделей фичей и параметров
- Способы декомпозиции модели для онлайн-инференса. Перенос больших бинарных файлов с моделями
- Мониторинг, тестирование, постепенные выкатки
- Асинхронный NRT паттерн
- Усиление онлайн части подготовкой свежих признаков (CTR)
- Ускорение пакетной части за счет размазывания нагрузки в течении дня
- Интеграция с другими технологическими платформами (Python)
- Мониторинг потоковых процессов
- Встраивание Python в экосистему
- Паттерн “кластер + большая тачка”
- Выставление обученных моделей через REST или как со-процесс с JVM.
- GraalVM
- Dusk
- KubeFlow
- Seldon Core
- H2O
- Особенности эксплуатации гетерогенных систем в проме
- Вид production кода для задач классификации и регрессии
- Packaging кода с помощью python библиотек
- Использование репозиториев модулей pypi и gemfury
- Основы и примеры REST архитектуры
- Flask и его использование
- Построение REST Endpoint на основе ML модели
- Локальное тестирование POST запросов в Postman
- Docker и его структура
- Использование Docker контейнеров для packaging кода
- Применение Docker для работы на AWS - деплой с использованием AWS ECS и EMR
- Использование специализированных сервисов ML на AWS - Amazon Sagemaker
- Использование “нативного” Sagemaker, комбинирование Sagemaker с sklearn, написание собственных Docker images
- Пример реализации endpoint для ML модели
- Разработка сервиса на Amazon Sagemaker на примере Deep Learning задачи - image classification.
- Docker + Jenkins + AWS Code Build + AWS ECR + Endpoint + AWS Lambda + Api Gateway
- Основные понятия и архитектуры, примеры на MXNet и Gluon
- Зачем нужен GPU/TPU и когда он не нужен
- Платформа Horovod и интеграция с фреймворками
- Добавление GPU как ресурса Hadoop и Spark
- DL over Spark. Инференс нейросетей в Spark через Scala/Java байндинги
- Адаптация асинхронного патерна и интеграция с Python для инференса нейронок
- Теория градиентного бустинга и пример адаптации в XGBoost
- Интеграция XGBoost в Spark
- LightGBM в Azure ML как альтернатива бустингу в Spark. Дообучение в LightGBM
- Интерпретация моделей градиентного бустинга
- Общие понятия обучения с подкреплением и его преимущества относительно обучения с учителем
- Многорукие бандиты как один из подходов
- Сэмплер Томпсона и LinUCB
- Интеграция с нейронками и NeuralLinear бандиты, реализация с использованием потоковых фреймворков.
Домашнeе заданиe № 8: Обучение сложных моделей машинного обучения с помощью распределенных инструментов
Выпускной проект: реализация задачи по выбранной тематике в реальном времени с применением парадигмы в виде pipeline (Kafka, Spark, Hadoop экосистема) и визуализация результатов.
Список возможных тем проектов будет предложен. Также можно взять задачу "с работы" или близкого себе проекта.
Слушатели курса смогут определиться с темой проекта (выбрать из предложенного списка или привнести задачу из деятельности своей компании), получить понимание какие ресурсы им необходимо использовать для работы.
Слушатели курса получат комментарии относительно прогресса проектной работы, ответы на вопросы, рекомендации по реализации.
По окончании занятия слушатели курса получат разбор проектов, комментарии и оценку своей работы.