Привет! Меня зовут Артем. Я работаю Data Scientist'ом в компании МегаФон (платформа для безопасной монетизации данных OneFactor). Мы строим скоринговые (credit scoring), лидогенерационные (lead generation) и антифрод (anti-fraud) модели на телеком данных, а также делаем гео-аналитику (geo-analytics).
В предыдущей статье я поделился материалами для подготовки к этапу по специализированному машинному обучению.
Давайте вспомним из каких секций состоит процесс собеседований на позицию Data Scientist:
Дизайн систем машинного обучения (middle+/senior)
Поведенческое интервью (middle+/senior)
В этой статье рассмотрим материалы, которые можно использовать для подготовки к секции по дизайну систем машинного обучения.
Замечания
Я буду указывать ссылки на материалы не только на русском языке, но и на английском. Если у одного и того же ресурса есть версия на русском и на английском языке, то я буду указывать обе, чтобы читатель сам смог выбрать подходящий вариант.
Большое количество ресурсов будет на английском, поэтому знание английского это must have не только для работы по IT специальности, но и для подготовки к собеседованию. Зачастую оригинальная версия (на английском) проще читается, чем перевод, потому что содержит в себе много терминов и названий, которые устоялись и при плохом переводе только путают читателя.
Для книг я буду прикладывать ссылки на издательства (по возможности), чтобы вы сами смогли выбрать где их приобрести. Для технической литературы рекомендую использовать электронные версии книг, потому что в них всегда можно выделить важный отрывок, оставить комментарий и быстро найти нужную информацию.
По умолчанию, ресурсы на русском языке идут раньше ресурсов на английском (там, где они есть).
Большинство материалов в этой статье - бесплатные, но есть несколько платных (помечены paid
). Рекомендую покупать их только, если четко понимаете, что не хотите или не можете тратить свое личное время на самостоятельный поиск информации.
Свои любимые материалы я выделил ⭐.
Содержание
Материалы
Самой интересной секцией (по моему мнению) является секция по дизайну систем машинного обучения.
Для прохождения этого этапа эффективнее всего будет разработать (скопировать и доработать) фреймворк, по которому вы будете описывать дизайн системы. Обычно он состоит из следующих пунктов:
Определение и уточнение проблемы
Оценка качества (метрики)
Анализ/сбор исходных данных
Создание признаков
Разработка модели
Деплоймент и инференс
Мониторинг
Проблемы
Полезно также ориентироваться в System Design, поэтому я добавлю материалы по этой теме (а также по MLOps) я добавлю в репозиторий Data Science Resources и не буду подробно на них останавливаться в этой статье.
Книги
⭐ Хьюен Чип. Проектирование систем машинного обучения / Designing Machine Learning Systems by Chip Huyen
Книга, основанная на стэнфордском учебном курсе, не ограничивается разбором конкретных библиотек, а описывает высокоуровневый подход к разработке систем машинного обучения, который упрощает их поддержку и развитие, позволяет избежать переобучения, искажения результатов. Рассказано, как сделать новую систему машинного обучения надёжной, репрезентативной и масштабируемой, а также качественно доработать уже существующие системы. Также показано, как подобрать библиотеки и алгоритмы с учётом имеющегося множества данных и действующих бизнес-требований, конструировать признаки и отслеживать метрики.
⭐ Machine Learning System Design. With end-to-end examples by Valerii Babushkin and Arseny Kravchenko
Данная книга является практическим руководством по планированию и разработке успешных приложений машинного обучения. В ней изложен четкий, воспроизводимый подход для создания, обслуживания и улучшения систем любого масштаба. Авторы Арсений Кравченко и Валерий Бабушкин наполнили этот уникальный справочник "историями у костра" и личными советами из своей карьеры. Вы будете учиться непосредственно на их опыте, рассматривая каждый аспект системы машинного обучения: от сбора требований и поиска данных до развертывания и управления готовой системой.
Machine Learning System Design Interview by Ali Aminian and Alex Xu + Solutions
Эта книга предлагает надежную стратегию и базу знаний для решения широкого круга вопросов в проектировании систем машинного обучения. Она предоставляет пошаговую инструкцию для проектирования ML системы, а также включает в себя множество примеров из реальной жизни, иллюстрирующих системный подход, с подробными инструкциями, которым вы можете следовать.
Machine Learning Engineering Open Book by Stas Bekman
Это коллекция методологий, инструментов и пошаговых инструкций, которые помогут в успешном обучении больших языковых и мультимодальных моделей.
Курсы
⭐ CS 329S: Machine Learning Systems Design
Целью этого курса является создание фреймворка для разработки реальных систем машинного обучения, которые можно легко развертывать и масштабировать.
Он начинается с рассмотрения всех заинтересованных сторон каждого проекта машинного обучения и их целей. Разные цели требуют разных вариантов дизайна, и в этом курсе будут обсуждаться компромиссы этих решений.
Студенты узнают об управлении данными, инженерии данных, создании признаков, подходах к выбору модели, обучению, масштабированию, о том, как постоянно отслеживать и применять изменения в ML системах, а также о человеческой стороне проектов ML, такой как структура команды и бизнес-метрики.
⭐ Дизайн систем машинного обучения. Введение для начинающих (ODS, Дмитрий Колодезев)
Основная цель курса - развить кругозор и "насмотренность" будущих создателей ML-систем. Это не подготовка к собеседованию и не "вхождение в IT", а, скорее, экскурсия по зоопарку. Смотрите, вот тигры, вот слоны, вот потоковые данные, а здесь у нас пасутся большие языковые модели, их можно покормить и погладить.
В курс входит:
15 видео-лекций
14 семинаров
работа над проектами
разработка ML дизайн документа
доклады/туториалы участников курса по смежным темам
лабораторные работы
Machine Learning System Design + ⭐ Grokking the Machine Learning Interview paid
Эти курсы помогут вам изучить лучшие практики применения ML моделей в production в больших масштабах. Вы шаг за шагом будете решать различные проблемы, уделяя особое внимание тому, как проектировать системы машинного обучения.
Шаблоны
⭐ ML System Design Doc (ML Reliable) + Лекция о том, как им пользоваться
ML System Design документ - это план по построению системы машинного обучения для решения конкретного запроса бизнеса в вашей компании. Его стоит применять на этапе дизайна вашей системы, чтобы в итоге ваше решение было полезным для бизнеса, а именно: могло быть внедрено, работало после внедрения и приносило реальную пользу.
А для того, чтобы этот план было проще построить, и чтобы итоговая система, действительно, приводила к результату, в сообществе Reliable ML разработали шаблон такого документа.
Шаблон был успешно адаптирован уже в более 10 крупных компаниях на российском рынке, а также внедрен Университетом ИТМО в программу онлайн-магистратуры по ML-инженерии как ключевой инструмент планирования ML-проектов.
⭐ Что я бы хотел знать про ML System Design раньше
В данной статье автор делится этапами проектирования ML системы и своими советами по прохождению собеседования.
Шаблон проектной документации для систем машинного обучения на основе этого поста.
⭐ Machine Learning Design Primer by commit history
Репозиторий с подробным разбором каждого из этапов дизайна систем машинного обучения.
The 9-Step ML System Design Formula
Чтобы спроектировать надежную систему машинного обучения для реальных приложений, важно следовать определенному порядку проектирования. Автор рекомендует использовать формулу проектирования ML системы из 9 шагов, как для решения реальных бизнес-задач, связанных с ML на работе, так и во время собеседований.
Блоги
⭐ Applying Machine Learning by Eugene Yan
Эффективно использовать машинное обучение сложно. Многим организациям еще предстоит извлечь выгоду из ML.
Хотя существует множество курсов по ML, большинство из них сосредоточены на теории, и студенты заканчивают обучение, не зная, как применять машинное обучение. Практические ноу-хау приобретаются на основе многолетнего опыта и редко документируются — их трудно найти в учебниках, учебных пособиях или на курсах. Существует разрыв между знанием теории машинного обучения и применением ее на практике.
Чтобы восполнить этот пробел, ApplyingML собирает практические знания о применении ML с помощью тщательно отобранных статей/блогов, руководств и интервью с экспертами в этой области.
Юджин Ян проектирует, создает и управляет системами машинного обучения. В настоящее время он старший научный сотрудник Amazon. Ранее он руководил машинным обучением в Lazada (Alibaba) и Healthtech Series A. В своем блоге он пишет о машинном обучении, RecSys, LLM и инжиниринге.
Андрей Лукьяненко - Senior Data Scientist в Careem, Kaggle Competition Master и Kaggle Notebooks 1st rank. В своем блоге он публикует разборы статей, делится pet-проектами и полезными советами.
Лилиан Ван является тимлидом команды по practical AI safety и alignment в OpenAI и делится заметками в своем блоге.
⭐ Irrational Exuberance by Will Larson
Уилл писатель и руководитель разработки программного обеспечения, в настоящее время работает техническим директором Carta. Раньше был техническим директором в Calm, работал в Stripe, Uber, Digg и нескольких других местах, а также вместе с Люком Хэтчером стал соучредителем несуществующего игрового стартапа для iOS — Monocle Studios. Он написал две книги: An Elegant Puzzle и Staff Engineer.
Репозиторий, в котором вы можете найти остальные DS блоги, для которых у меня не хватило места в статье.
Прочее
⭐ ML System Design собеседования
Серия mock-собеседований с Валерием Бабушкиным.
ML Systems Design Interview Guide
В этой статье автор рассказывает о том, как готовиться к собеседованиям по проектированию ML систем, основных понятиях, которые необходимо знать и делится ссылками на некоторые ресурсы, которые использовал при подготовке.
ML system design: 300 case studies to learn from
Как такие компании, как Netflix, Airbnb и Doordash, применяют машинное обучение для улучшения своих продуктов и процессов?
Evidently AI собрали 300 тематических исследований от более чем 80 компаний, в которых они делятся практическими примерами использования ML и опытом проектирования ML систем.
Репозиторий с use-cases из разных отраслей для подготовки к собеседованию по дизайну систем машинного обучения.
Machine Learning Interviews. Machine Learning Systems Design by Chip Huyen
Материалы (доступны онлайн), дополняющие курс и книгу от Чип Хьюен.
⭐ MLOps guide by Chip Huyen
Сборник материалов по MLOps от вводного до продвинутого.
⭐ Телеграм посты
Подборка полезных материалов по ML System Design (ReliableML)
Собес на ML дизайн: материалы и советы по подготовке (DS | Stairway to Offer)
Подведем итоги
Если вы еще не читали, то рекомендую прочитать блоки Learning How to Learn и Подведем итоги из первой статьи, так как все сказанное там применимо и для подготовки к секции по дизайну систем машинного обучения.
Собранные в этой статье материалы будут полезны при подготовке к собеседованиям на различные позиции в Big Data МегаФон.
А если вы только начинаете свою карьеру в Data Science, то обратите внимание на стажировки в крупных компаниях, на которых вы сможете не только прокачать свои знания, но также получить крутой опыт применения теории на практических задачах бизнеса. В МегаФоне пример такой стажировки - это акселератор (пишите на почту с темой письма "стажировка в big data"), с помощью которого ежегодно находят свою первую работу специалисты по работе с данными (Data Scientists), аналитики (Data Analysts) и дата инженеры (Data Engineers).
Кстати, у нас есть телеграм-канал Карьера в МегаФоне, в котором практически ежедневно публикуются новые вакансии и новости компании!
Что дальше?
В следующей статье разберем материалы для подготовки к поведенческому интервью.
Актуальные ресурсы для этой серии статей вы сможете найти в репозитории Data Science Resources, который будет поддерживаться и обновляться. В этот раз в репозиторий выложено больше материалов, чем попало в эту статью, поэтому советую зайти туда и найти то, что вам нужно.
Также вы можете подписаться на мой телеграм-канал Data Science Weekly, в котором я каждую неделю делюсь интересными и полезными материалами.
Если вы знаете какие-нибудь классные ресурсы, которые я не включил в этот список, то прошу написать о них в комментариях.
P.S. Благодарю Артёма Глазунова за редактуру и вычитку этого поста!
dire_foxy
Артем, такой вопрос к вам, сколько в процентах материала от того что вы представили в 4 постах, вы сами можете воспроизвести на условном собеседовании в бигтехубигтехную, где будут все описанные вами этапы и будут штрудировать по каждому термину и алгоритмам. Читая "дорожку" и все остальные ресурсы что у вас в постах, можно потратить не один год, так и не поработав на реальной работе. Без негатива, просто частное мнение. По мне так лучше изучить основы, а потом уже в работе с настоящей командой развиваться дальше.
Extremesarova Автор
Как я писал уже в комментариях под предыдущим постом:
Я понимаю, что в моих статьях много материалов, но это не значит, что их все нужно обязательно использовать для подготовки :)
Кому-то проще воспринимать информацию из книг, кому-то из курсов, поэтому я стараюсь добавить максимальное количество ресурсов, чтобы каждый смог выбрать то, что подойдет.
becks
Одно другому не мешает. Тема настолько широкая, что работая с "настоящей командой" даже (тем более) в бигтехе вы рискуете некоторые вещи пайплайна/фреймворка из начала статьи так никогда и не потрогать.
Например, вы работаете над созданием признаков. Вы можете совершенно ничего не знать, как устроен процесс разметки данных (используется ли weighted majority vote или Дэвид-Скин) или какие метрики используются для офлайн/онлайн оценки вашей модели или как мониторят стабильность вашего прода. Более того, в эру LLM, существует огромное множество вопросов с обучением моделек или, например, оптимизацией инференса.
Мой опыт подсказывает, что нужен баланс. Максимальное погружение в работе + саморазвитие и закрытие тех вопросов, с которыми на работе не встречаешься или не дотягиваешься.