⭐️ Глобальное уничтожение ML System Design на собеседованиях
⭐️
На собеседованиях очень часто спрашивают ML System Design, и я решил сделать гайдик по
уничтожению 🔔
Введение 👀
Когда вас спрашивают про ML System Design,
ваша цель - это построить пайплайн, в котором вы должны рассказать про следующие пункты:
проблема, метрики, данные, сущности, pipeline, модель, deploy, a/b тесты.
Вы должны построить систему на костылях, которую вы будуте
улучшать каждую итерацию, то есть построили гавно из всех пунктов, превратили это гавно в павозку с костылями, пройдя по всем пунктам заново, закрывая все дыры и так далее...
🔝
Пункты: 🔥
1️⃣ Сформулировать проблему
Очень важно изначально понять и сформулировать задачу для себя, чтобы понимать куда и зачем идти
- Поставить бизнес задачу -
тут самое главное - это понять, что от вас требуют. Задавайте вопрос: "правильно ли я понял, что..."
- Обговорить ограничения -
в кейсе, который вас просят задизайнить могут быть ограничения на память, на ресурсы и тд
2️⃣ Метрики
Нужно дизайнить с метрик, так как вы должны понимать к чему вы идёте, и вы должны уметь как-то сравнивать модели в последующих апдейтах
- Бизнес метрики -
одно из самых важных, на что будет ориентироваться бизнес
- Online метрики -
это те метрики, которые будут измеряться во время A/B теста, чтобы понять хуже/лучше модель
- Offline метрики - метрики, которая проверяются на train/test во время обучения модели
3️⃣ Данные
Знаем метрики, теперь нужно разобрать какие данные у нас есть для последующего обучения моделей
- Сущности -
Нужно определить какие у нас сущности: пользователь, карточка товара....
- Характеристики сущностей - У каждой сущности есть свои характеристики. Для пользователя это - фио, пол, возраст и тд, для карточки товара - это цена, описание, бренд...
- Сбор Данных - Как мы будем собирать данные: cпарсим, копирайтеры, возьмём из БД
4️⃣ Pipeline
- Как работает сервис -
Необходимо описать как сервис будет работать в целом: какие есть блоки, как они взаимодействуют между собой, что и как друг другу передаёт.
5️⃣ Модель
Нужно лучше начать с бейзлайна - с самой просто задачи.
Если у вас задача рекомендации, то для начала стоит просто сказать: "пусть бейзлайном будет выдача самих лучших товаров по рейтингу, чуть позже улучшим модель, опираясь на online и offline метрики". Помни, твоя задача всего интервью- построить полностью готовый пайплайн решения.
После того как вы закрыли данные пункты, то улучшайте бейзлайн, рассказывая про это:
- Задача -
классификация, ранжирование, регрессия
- Loss -
для каждой задачи свой лосс
- X/y -
необходимо написать на каких данных вы обучаетесь
- Train/Test Split -
Как вы разбиваете данные для обучениия: на чём тренируетесь, на чём валидируетесь
- Фичи и их сбор -
Как вы собираете данные, и как вы преобразовывайте данные
6️⃣ Deploy
Как вы будете деплоить, лично я обычно говорю про данные пункты, упоминая технологии.
- Пайплайн хранения данных и транспорт даты -
Amazon S3, MySQL, FEAST, HDFS, Kafka
- Пайплайн создания фичей -
Apache Spark
- Пайплайн дообучения модели -
Airflow
- Пайплайн мониторинга -
ML Flow
- Архитектуры: микросервис -
Docker, K8s
7️⃣ A/B Test
A/B тест - это та вещь, на которую вы будете смотреть, чтобы понять, как изменяется модель в "реальном мире", а не в ноутбуке.
- На какую метрику смотрим в тесте -
обычно это онлайн метрика: CVR, CTR, Retention
- Контрольная тестовая группа - к
ак будем делить A выборку и B выборку, обычно я говорю "A (старая модель) - 70% выборки, B (новая модель)- 30% выборки. Главное, чтобы и в А, и в В выборке количество данных было таковым, чтобы была статистическая значимость A/B теста."
- Сколько наблюдений -
"Главное, чтобы и в А, и в В выборке количество данных было таковым, чтобы была статистическая значимость A/B теста."
Материалы (Очень рекомендую к просмотру) 💥
ML System Design: Выпуск 1,
Выпуск 2,
Выпуск 3
‼️ Если вы хотите заботать мл систем дизайн или получить оффер в вашу любимую компанию, то обращайтесь ко мне, я стал ментром. Обратившись ко мне, вы можете сэкономить кучуууу своего времени
‼️