- Sun 22 January 2023
- обучение
- #mlsystemdesign
Осенью 2022 года прочитал курс по дизайну систем машинного обучения (ML System Design).
Курс читался двум потокам:
- очно 4-му курса бакалавриата НГУ
- открытый видео-курс на площадке ods.ai
Очные лекции не записывались, но по содержанию были максимально близки к лекциям открытого курса.
Требования к предварительной подготовке:
- Основы статистики https://stepik.org/course/76/info или любой курс по статистике ВУЗа.
- Python - основы и применение https://stepik.org/course/512/promo или любой курс по программированию ВУЗа, включающий python.
- Введение в машинное обучение - серия статей на Habr https://habr.com/ru/company/ods/blog/322626/ или любой курс ВУЗа по машинному обучению.
- The Missing Semester of Your CS Education https://missing.csail.mit.edu/ или практический опыт промышленной разработки программного обеспечения на python под Linux.
В лекции открытого курса вошли две лекции Ирины Голощаповой про интеграцию систем машинного обучения в бизнес-процессы большой компании и составление ML System Design документа. В открытый доступ на GitHub был выложен шаблон дизайн документа по проектированию ML-систем.
В рамках курса студенты строили системы машинного обучения. Проекты студентов курировал Артем Карасюк.
Съемку и обработку видео делал Михаил Симков. Коммуникация с университетом легла на плечи Евгении Сотниковой. Татьяна Архипова и Любовь Бабушкина размещали курс на площадке ods.ai. Слайды вычитывали всем миром, но большую часть правок по слайдам и текстовой расшифровке сделала Екатерина Колодезева. Все это стало возможным благодаря поддержке Алексея Окунева (НГУ) и Алексея Натекина (ODS.AI).
О курсе мы рассказывали в телеграм-канале #Reliable ML.
У меня ушло чуть больше 200 часов на создание этого курса. Учитывая количество участников проекта, общие трудозатраты на курс можно оценить снизу как 400 часов. Мы выложили все, что можно, в открытый доступ.
Материалы курса устарели сразу как только мы их опубликовали - такая у нас отрасль. Мы планируем переработать материалы в серию статей на habr, все анонсы будут в канале #Reliable ML
В сентябре 2023 года будет новый запуск курса, с переработанным материалом.
Лекции:
1. Машинное обучение на практике.
Делать ML-модели легко, трудно делать полезные ML-модели. В первой лекции дается определение “дизайна систем машинного обучения”, разбираются предположения ML-систем, их традиционные области применения и отличия академического и промышленного машинного обучения.
Дополнительные материалы:
- Rules of ml
- Hidden Technical Debt in Machine Learning Systems
- How to avoid machine learning pitfalls
2. Основы проектирования ML-систем.
Дизайн - это работа с ограничениями, и во второй лекции мы разбираем источники этих ограничений, постановку задачи, метрики и бейзлайны.
Дополнительные материалы:
- The Netflix Recommender System: Algorithms, Business Value, and Innovation
- Trustworthy Online Controlled Experiments: Five Puzzling Outcomes Explained
- Top Challenges from the first Practical Online Controlled Experiments Summit
3. Обучающие данные.
Машинное обучение основано на данных, и в этой лекции мы обсудим проблемы разметки и подготовки данных, проблему дисбаланса классов и сэмплирование.
Дополнительные материалы:
- Practice of Effective Fishing Data Collection via Crowdsourcing at Large Scale.
- Bayesian active learning for production, a systematic study and a reusable library
- A General-Purpose Crowdsourcing Computational Quality Control Toolkit for Python
- Can I use this publicly available dataset to build commercial AI software? Most likely not
- A Survey on Programmatic Weak Supervision
4. Подготовка и отбор признаков.
Задача подготовки данных - упростить обучение модели. Обсуждаем аугментацию для разных типов данных, использование синтетических данных, работу с выбросами и пропущенными значениями, масштабирование, конструирование и отбор признаков. Отдельно мы разговариваем о даталиках - данных, доступных при обучении, но недоступных при использовании модели.
Дополнительные материалы:
- Albumentations: Fast and Flexible Image Augmentations
- MEMO: Test Time Robustness via Adaptation and Augmentation
- EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks
5. Выбор и обучение ML-модели.
Сердце ML-системы - модель (или несколько моделей) машинного обучения. Нужно начинать с простого, проверять предположения модели и аккуратно сравнивать разные подходы. Обсуждаем ансамбли, распределенное обучение, гадаем по графикам лосс-функции и калибруем вероятности.
Дополнительные материалы:
- A Recipe for Training Neural Networks by Andrej Karpathy
- Model Evaluation, Model Selection, and Algorithm Selection in Machine Learning by Sebastian Raschka
6. Оценка качества модели.
Важно не только качество ML-модели, но и качество системы целиком. Обсуждаем качество интерфейса, данных и самой модели. Строим простые бейзлайны. Проверяем качество модели на пьяницах-спортсменах, тестируем модель на устойчивость и вспоминаем парадокс Симпсона. Единственная лекция, в которой есть хоть какие-то примеры кода.
Дополнительные материалы:
- Reducing Pipeline Depth with Great Expectations
- Effective testing for machine learning systems
- Microsoft Error Analysis Toolkit
- RAI Toolbox
7. Развертывание.
Архитектура развертывания модели определяет, где будет работать модель, когда будет производится инференс, как модель получит запрос пользователя и как пользователь получит ответ модели. Предсказания можно делать на лету, по запросу, а можно сделать заранее и отдавать готовые по мере необходимости. Что-то лучше считать все в облаке, а что-то прямо на устройстве клиента. Можно ускорить инференс нейронной сети с помощью ONNX или ENOT.AI, раскидать нейронку на несколько GPU с помощью Accelerate и использовать оптимизированные CUDA-ядра DeepSpeed. Главное - не запутаться.
Дополнительные материалы:
- Introduction to streaming for data scientists
- MLPerf Inference Benchmark
- MLPerf Inference Results
- How We Scaled Bert To Serve 1+ Billion Daily Requests on CPUs
8. Диагностика ошибок и отказов.
Обсуждаем естественную и отложенную разметку, прокси-метрики и петлю обратной связи. Разбираем примеры, где деньги - плохая метрика, википедию жарят, а метки зависят от временного горизонта. Рассматриваем специфичные для ML-систем отказы и ошибки, выбросы, крайние случаи, сравнение распределений, мониторинг, усталость от алертов и устройство SLA.
Дополнительные материалы:
- Adversarial Validation Approach to Concept Drift Problem in User Targeting Automation Systems at Uber
- Degenerate Feedback Loops in Recommender Systems
- Addressing Delayed Feedback for Continuous Training with Neural Networks in CTR prediction
- Beyond NDCG: behavioral testing of recommender systems with RecList
9. Потоковые данные.
Шаблоны обмена данными, асинхронные взаимодействия, издатели, подписчики, Kafra, RabbitMQ, Pub/Sub - вот краткий список того, о чем невозможно рассказать в одной лекции. Но мы попробовали.
Дополнительные материалы:
- Postgres: a better message queue than Kafka?
- RabbitMQ tutorials
- Introduction to Apache Kafka
- Example of using Yandex Message Queue in Python
10. Жизненный цикл модели.
Есть разные модели жизненного цикла ML-систем, но все они сходятся в одном - модель, скорее всего, придется неоднократно переделывать. Новые версии модели нужно будет сравнить со старыми, и решить - какие лучше. Разберем тестирование моделей на живых пользователях, data-centric подход и непрерывное переобучение моделей.
Дополнительные материалы:
- Automated Canary Analysis at Netflix with Kayenta
- Online Learning for Recommendations at Grubhub
- Overcoming Catastrophic Forgetting with Hard Attention to the Task
- Overcoming Catastrophic Forgetting with Unlabeled Data in the Wild
11. Эксперименты и версионирование.
Краткое введение в версионирование данных, реестры моделей и обзор типичных проблем воспроизводимости.
Дополнительные материалы:
12. Временные ряды и графы.
Технологии работы с временными рядами: особенности работы с значениями времени, технологии и проблемы хранения данных, шаблоны построения пайплайнов, временной ряд как текст. Работа с графовыми данными - сбор, хранение, анализ, process mining.
Дополнительные материалы:
- Temporal Fusion Transformers for Interpretable Multi-horizon Time Series Forecasting
- TS2Vec: Towards Universal Representation of Time Series
- A Symbolic Representation of Time Series, with Implications for Streaming Algorithms
13. Непредвзятость. Безопасность. Карточки моделей.
Карточки моделей как товарная этикетка для ML-моделей. Безопасность ML-систем, угрозы, атаки, анализ и управление рисками. Обеспечение безопасности как непрерывный процесс на протяжении всего жизненного цикла системы. Введение в этику машинного обучения, псевдозакономерности и неприятные ошибки на подвыборках.
Дополнительные материалы:
14. ML инфраструктура и платформы.
Что такое инфраструктура и сколько ее нужно. Чем процессоры отличаются друг от друга, сколько vCPU в одном ядре и почему одно ядро с гипертредингом считают за два. Сколько стартапы тратят на облака. Чем планировщик отличается от оркестратора, где хранить признаки и нужны ли нам большие сервера для больших данных.
Дополнительные материалы:
- You Do Not Need a Bigger Boat
- The ML Test Score: A Rubric for ML Production Readiness and Technical Debt Reduction
- Operationalizing Machine Learning Models: A Systematic Literature Review
- Serverless on Machine Learning: A Systematic Mapping Study
- DAG Card is the new Model Card
15. Интеграция в бизнес-процессы.
Бизнес-процессы и системы, в которых они выполняются. Сложности интеграции, управление изменениями, смежные и обеспечивающие системы, контролируемая деградация и контрольные списки.
Дополнительные материалы:
- Designing Graceful Degradation in Software Systems
- Machine Learning Canvas
- Data project checklist
- How to Write Design Docs for Machine Learning Systems
- ML System Design Doc
16. Reliable ML - Интеграция в бизнес-процессы
Что стоит предусмотреть на этапе дизайна ML системы для того, чтобы последующая интеграция разработанного решения в бизнес-процессы произошла наиболее гладко - и главное, в итоге принесла положительную финансовую прибыль компании. Дополнение к лекции 15.
17. Reliable ML - Интеграция в бизнес-процессы
Курс почти прошли - теперь знаем как дизайнить ML системы. А как физически уместить в голове все этапы и нюансы дизайна конкретной системы и при этом еще и синхронизировать их и с технической командой, и с бизнес-заказчиком?
В голове не уместить - но можно записать в отдельном документе ML System Design Doc. В лекции рассказываем о том, как, когда и зачем работать с таким документом.