OtusTeam / Bigdata-ML

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


Занятие 1. Градиентный спуск и линейные модели.

  • Обзор курса
  • Линейные модели машинного обучения
  • Градиентный спуск

Занятие 2. Обзор основных методов и метрик машинного обучения.

  • Модели машинного обучения и кейсы их применения
  • Метрики машинного обучения
  • Кроссвалидация

Занятие 3. Основы программирования на Scala

  • Язык Scala и среда разработки
  • Базовые конструкции, функциональные и ООП-элементы
  • Математические и ML библиотеки в Scala

Занятие 4. Эволюция параллельных алгоритмов

  • Градиентный спуск на MapReduce
  • Плюсы и минусы массивно-параллельного и распределенного подхода
  • Что такое линейная масштабируемость и как она теряется

Занятие 5. Менеджеры ресурсов в распределенных системах

  • Уровни изоляции (по задачам в Спарке, по контейнерам-процессам в YARN, по докер-контейнерам в KubeFlow)
  • Spark On Yarn
  • Принципы управления стандартными ресурсами (RAM+CPU)
  • GPU в рамках YARN

Занятие 6. Распределенные хранилища

  • HDFS/S3
  • NoSQL, аналитические хранилища
  • Эволюция форматов хранения от SequenceFile и Avro-файлов к Parquet
  • Преимущества и возможности колоночных форматов хранения. Концепция Object Store

Занятие 7. Основы Apache Spark

  • RDD API, задачи, этапы, даги, шаффлы и броадкасты
  • SQL API – датафреймы и датасеты, работа оптимизатора
  • Тестирование кода на Спарке

Занятие 8. Перенос МЛ алгоритмов в распределенную среду

  • Виды параллелизма при переносе МЛ (по данным, по модели, по задаче) в распределенную среду
  • Распараллеленный по данным алгоритм
  • Гибрид с параллелизмом и по данным, и по модели (блочное СВД)
  • Концепция сервера параметров и какие есть альтернативы для Спарка. Параллелизм по задаче на примере кросс-валидации

Занятие 9. ML в Apache Spark

  • Эволюция ML API в Spark
  • Концепция ML пайплайнов, работа с основными блоками
  • Обзор имеющихся возможостей SparkML

Занятие 10. Разработка собственных блоков для SparkML

  • Расширение функционала SparkML своими алгоритмами
  • Тестирование кода
  • Advanced Spark: broadcast, all reduce, ассumulators

Занятие 11. Сторонние библиотеки, для использования со Spark

  • XGBoost
  • AzureML
  • PravdaML
  • MXNet. Параметр серверы (AngelPS)

Занятие 12. Оптимизация гиперпараметров и AutoML

  • Постановка задачи подбора гиперпараметров в распределенных решениях
  • Оптимизация гиперпараметров с помощью PravdaML

Занятие 13. Потоковая обработка данных

  • Анализ данных в потоке. Kafka
  • Лямбда и Каппа архитектуры
  • Построение DAG-ов стримовых задач

Занятие 14. Spark Streaming

  • Основы стриминга в Spark: сорцы и синки, партиционирование, оконные функции, управление состоянием, чекпоинты
  • Внутренняя и внешняя стыковка задач

Занятие 15. Структурный и непрерывный стриминг в Spark

  • Структурный стриминг для подключения SQL и ML к стримам
  • Особенности работы оптимизатора в стримовом случае
  • Continous streaming как один из вариантов организации сервинга Spark ML

Занятие 16. Альтернативные потоковые фреймворки

  • Flink
  • Kafka Streams
  • Samza
  • NiFi
  • Особенности stream-first решений

Занятие 17. Определение цели МЛ проекта и предварительный анализ

  • Цели МЛ проектов: краткосрочные/долгосрочные, инертные/динамичные.
  • Цель – онлайн-метрика – оффлайн-метрика – функция потерь.
  • Инструменты ad-hock аналитики: Zeppelin с плагином для IDEA, Polynote.

Занятие 18. Долгосрочные ML цели на примере задачи уменьшения оттока.

  • Проблема correlation vs. causation
  • Формирование критерия оттекших/удержавшихся пользователей
  • Инжиниринг фичей
  • Тренировка и интерпретация модели
  • Формулировка набора гипотез

Занятие 19. А/Б тестирование

  • Введение в А/Б тесты
  • Доверительные интервалы и статистические гипотезы.
  • Формулировка целей, дизайн теста, определение времени и объема аудитории.
  • Множественное тестирование в теории и на практике, снижение FDR. Гетерогенный эффект.

Занятие 20. Дополнительные темы

  • Counterfactual reasoning на примере оффлайн А/Б тестривания ML моделей рекомендательных систем (в том числе как метод коррекции смещения в обучении)
  • Дизайн синтетических метрик для оффлайн и онлайн тестов

Занятие 21. Подходы к выводу ML решений в продакшн.

  • Пакетный, потоковый, и онлайн (асинхронный и синхронный) паттерны и их комбинации
  • Организация пакетной части - от кронтаба к триггерным системам
  • Airflow, Oozie, Luidgi
  • Организация мониторинга

Занятие 22. Версионирование, воспроизводимость и мониторинг

  • Воспроизводимость в Spark ML
  • DvC, MLFlow
  • Трансформация прототипа в пром решение (тесты, метрики, семафоры)

Занятие 23. Онлайн-сервинг моделей

  • Вычисление модели в режиме онлайн: пакеты MLeap и JPMML
  • Дублирование кода, continous streaming и Azure ML Spark Serving
  • Доставка до моделей фичей и параметров
  • Способы декомпозиции модели для онлайн-инференса. Перенос больших бинарных файлов с моделями
  • Мониторинг, тестирование, постепенные выкатки

Занятие 24. Паттерны ассинхронного потокового ML и ETL

  • Асинхронный NRT паттерн
  • Усиление онлайн части подготовкой свежих признаков (CTR)
  • Ускорение пакетной части за счет размазывания нагрузки в течении дня
  • Интеграция с другими технологическими платформами (Python)
  • Мониторинг потоковых процессов

Занятие 25. Если надо Python

  • Встраивание Python в экосистему
  • Паттерн “кластер + большая тачка”
  • Выставление обученных моделей через REST или как со-процесс с JVM.
  • GraalVM

Занятие 26. Альтернативные фреймворки с поддержкой Python и область применимости

  • Dusk
  • KubeFlow
  • Seldon Core
  • H2O
  • Особенности эксплуатации гетерогенных систем в проме

Занятие 27. Production Code на Python. Организация и Packaging кода

  • Вид production кода для задач классификации и регрессии
  • Packaging кода с помощью python библиотек
  • Использование репозиториев модулей pypi и gemfury

Занятие 28. REST-архитектура: Flask API

  • Основы и примеры REST архитектуры
  • Flask и его использование
  • Построение REST Endpoint на основе ML модели
  • Локальное тестирование POST запросов в Postman

Занятие 29. Docker: Структура, применение, деплой

  • Docker и его структура
  • Использование Docker контейнеров для packaging кода
  • Применение Docker для работы на AWS - деплой с использованием AWS ECS и EMR

Занятие 30. Amazon Sagemaker

  • Использование специализированных сервисов ML на AWS - Amazon Sagemaker
  • Использование “нативного” Sagemaker, комбинирование Sagemaker с sklearn, написание собственных Docker images
  • Пример реализации endpoint для ML модели

Занятие 31. AWS ML Service

  • Разработка сервиса на Amazon Sagemaker на примере Deep Learning задачи - image classification.
  • Docker + Jenkins + AWS Code Build + AWS ECR + Endpoint + AWS Lambda + Api Gateway

Занятие 32. Нейросети

  • Основные понятия и архитектуры, примеры на MXNet и Gluon
  • Зачем нужен GPU/TPU и когда он не нужен

Занятие 33. Распределенное обучение и инференс нейросетей

  • Платформа Horovod и интеграция с фреймворками
  • Добавление GPU как ресурса Hadoop и Spark
  • DL over Spark. Инференс нейросетей в Spark через Scala/Java байндинги
  • Адаптация асинхронного патерна и интеграция с Python для инференса нейронок

Занятие 34. Градиентный бустинг на деревьях

  • Теория градиентного бустинга и пример адаптации в XGBoost
  • Интеграция XGBoost в Spark
  • LightGBM в Azure ML как альтернатива бустингу в Spark. Дообучение в LightGBM
  • Интерпретация моделей градиентного бустинга

Занятие 35. Обучение с подкреплением

  • Общие понятия обучения с подкреплением и его преимущества относительно обучения с учителем
  • Многорукие бандиты как один из подходов
  • Сэмплер Томпсона и LinUCB
  • Интеграция с нейронками и NeuralLinear бандиты, реализация с использованием потоковых фреймворков.

Выпускной проект: реализация задачи по выбранной тематике в реальном времени с применением парадигмы в виде pipeline (Kafka, Spark, Hadoop экосистема) и визуализация результатов.

Список возможных тем проектов будет предложен. Также можно взять задачу "с работы" или близкого себе проекта.

Занятие 36. Вводное занятие по проектной работе

Слушатели курса смогут определиться с темой проекта (выбрать из предложенного списка или привнести задачу из деятельности своей компании), получить понимание какие ресурсы им необходимо использовать для работы.

Занятие 37. Консультация по проектной работе

Слушатели курса получат комментарии относительно прогресса проектной работы, ответы на вопросы, рекомендации по реализации.

Занятие 38. Защита проектной работы

По окончании занятия слушатели курса получат разбор проектов, комментарии и оценку своей работы.

About


Languages

Language:Jupyter Notebook 100.0%