Часть 2
Начало выше ⬆️
2. Данные
Я думаю эта часть ни для кого не окажется сложной, потому что какие вообще модели мы сможем построить без данных? Поэтому давайте также начинать с вопроса: “Какие данные у нас есть?” Иногда можно не дожидаться ответа, а например самому предложить возможные варианты событий. Например, решая задачу с прогнозированием сырков, мы очевидно можем предположить, что скорее всего у нас есть данные о продажах сырков.
“А может у нас есть дополнительные внешние данные?” Давайте предположим, что нам важны внешние данные по промо-активностям (вдруг на все сырки есть скидка) и попробуем их в каком-либо цифровом виде собирать для будущего прогноза. Здесь же можно обсудить, какие фичи вообще можно попробовать получить из наших данных (об этом писал тут), а также как их отобрать и найти самые важные (писал тут). Можно даже прикинуть, какой характер данных может быть (допустим, ярко выраженный тренд и сезонность).
3. Модель
Понимание постановки задачи почти сразу нам позволит представить простейший бейзлайн. При этом и здесь не обойдется без вопросов: “Нам лучше перепрогнозировать или недопрогнозировать?”, “Какая должна быть скорость инференса модели?”, “Когда запускаем модель?”. Вдруг вообще модели нужно работать в real-time? Про метрики точности здесь можно проговорить, но перед получением метрик с бейзлайна обычно не хочется заранее целиться в какую-либо точность, но все же стоит выбрать одну метрику, по которой будем мерить точность нашей модели (допустим, MAE).
Почему бейзлайн? Потому что это некий MVP, который за минимальные усилия покажет нам некоторую базу по метрикам. Далее уже за нами будет решение, улучшать существующее решение, либо попробовать переформулировать задачу. Обязательно нужно обсудить следующие предполагаемые шаги улучшения модели для предсказания продаж сырков - обучить бустинги, попробовать предсказывать ошибку между фактом и прогнозом, учитывать праздники и возможно попробовать оценить эластичность к скидкам и изменению цены. Где-то например важно продумать ускорение инференса или применение 2 моделей - быстрой и медленной.
4. Пилотирование и A/B тест
Допустим, мы соорудили модель и нам нужно переходить к тому, чтобы попробовать это на практике. Если мы выкатываем новую модель рекомендаций, и на наших тестовых данных она справляется лучше, это еще не значит, что в проде она затащит. Поэтому нам нужно задизайнить A/B тест, выбрать контрольную и тестовую группы, посчитать мощности, выбрать метрики и продолжительность теста. Кто настолько крутан, можете проговорить про
Допустим в процессе вашего обсуждения вы пришли к тому, что вашу модель внедрили в прод. Далее здесь нужно обговорить мониторинг модели и отслеживание кейсов, когда предсказание могло сильно исказиться. Например, вы выкатили модель для обнаружения фрода, на тесте она показывала метрики порядка 90 Gini, а на мониторинге 0. Надо описать, откуда могут возникнуть проблемы - возможно модель выкатили неправильно, либо поменялись входные данные, ну или вдруг ваш прогноз использовали для мороженого.
Можно сказать, что это некоторые основные части в данном собеседовании. Естественно я раскрыл не все, потому что по этой тематике люди пишут книги и записывают курсы. Надеюсь эта структура поможет вам примерно понимать, как вести ваш монолог и на что обратить внимание в первую очередь.
Ссылочки по классике:
1. Борис про ml sys dis
2. Ибрагим про собеседования по ml sys dis
3. Марк разбирает дизайн рекомендательной системы
4. Первый выпуск собеседований по ML System Design с Валерием Бабушкиным
5. Юра Кашницкий с подборкой ссылочек по ML System Design
6. Карточки по ML System Design в канале Data Secrets
7. Лекции по ML System Design от Дмитрия Колодезева
8. Статья на Хабре
9. Гитхаб с описанием этапов на собеседовании
10. Полезные материалы по ML System Design от Reliable ML
11. Конспект стэнфордского курса по ML System Design
#interview #ml #systemdesign