tgoop.com/asisakov_channel/124
Last Update:
ML SYSTEM DESIGN
Часть 1
Прошлая часть серии тут
Вообще мой любимый этап собеседований.
Уникальность этого собеседования заключается в том, чтобы суметь построить полный пайплайн решения ML задачи. Всегда коррелирует с тем направлением, на которое вы собеседуетесь. Если вы пришли на вакансию по временным рядам, то скорее всего вам нужно будет спроектировать ML систему с временными рядами. Отличие этой части от описанных выше в том, что к этому просто так заранее не подготовиться (хотя я знаю кейсы, где подготовка очень зарешала), так как обсуждение системы требует не только широкого понимания моделей и процессов, но и знания различных узких мест и допущений. Обычно такое собеседование проводят уже не начальные позиции, но все же вероятность попасть на такое собеседование в начале своего пути существует.
Интересный факт - здесь вопросы надо задавать собеседующему и говорить почти что в соло, как будто ведем монолог. Можно даже представить это в виде некоторой сцены, где вы являетесь синьором в компании, а к вам пришел заказчик и просит решить для него важную задачу (такая важная, аж сам СЕО попросил). Как истинный душнила джентельмен вам нужно уточнить все нюансы решаемой проблемы и вообще какая цель этим образом закрывается. Потому что возможно в ходе вашего расследования придется изменить постановку задачи прямо на ходу. После обоюдного соглашения о том, какую задачу вы решаете, можно переходить к построению пайплайна решения задачи.
Как я люблю повторять, в каждом из собеседований есть свой пайплайн. Здесь это можно выразить определенную структуру:
(вообще я думаю, что этот пайплайн правильно использовать и при решении ваших рабочих задач, а не только применять для прохождения собеседований, поэтому попробую копнуть чуть подробнее)
1. Раскрытие постановки задачи
Самое главное - это вообще что конкретно мы решаем. Допустим, стоит задача “спрогнозировать количество продаж сырков в Лавке”. В одной только такой постановке задачи спрятан целый айсберг. Во первых надо уточнить, что мы понимаем под сырками и все ли вообще продаваемые нами сырки туда входят. Далее надо определиться с горизонтом прогнозирования и дискретизацией получаемых прогнозов. Допустим, мы пришли к постановке: “Спрогнозировать количество всех проданных сырков за каждый день на Лавке на следующую неделю”.
Тут надо еще уточнить, а в какой день недели мы получаем этот прогноз? Если прогноз нужен в воскресенье для развоза, то кажется надо прогнозировать на 8 дней вперед (ВС + 7 дней). А если нужно еще учесть и лаг закупок и поставок, то срок вполне может увеличиться и на неделю. То есть уже нам нужно прогнозировать на срок 1 неделю, которая будет идти за этой. Ну или в другой постановке это срок [T+8, T+14].
Далее нам нужно узнать, требуются восстановленные продажи с учетом спроса, либо мы допускаем, что итак 100% покрываем весь спрос? Подробнее можно почитать например в этой статье от коллег из Самоката.
Давайте для упрощения оставим полученную ранее формулировку задачи и зафиналим таким образом: “Спрогнозировать количество всех проданных сырков за каждый день на Лавке на следующую неделю”. (как вы наверно заметили, тут уже по заданным вопросам заметно, что человек как минимум осмысливал данную задачу в голове)
Продолжение ниже ⬇️
#interview #ml #systemdesign
BY asisakov
Share with your friend now:
tgoop.com/asisakov_channel/124