[Перевод] Как ответить на любой вопрос на собеседовании по проектированию систем машинного обучения
Шпаргалка для ответа на любой вопрос о проектировании систем машинного обучения на вашем следующем собеседовании.
Этот шаблон поможет вам ответить практически на любой вопрос о проектировании системы машинного обучения, который вы можете получить на собеседовании. Важно отметить, что этот шаблон намеренно типовой, так что, когда вы найдете новый вопрос по проектированию системы, вам будет легко заполнить каждый раздел.
Ниже приведен обзор шагов, которые необходимо предпринять, когда вы проходите собеседование на тему проектирования системы машинного обучения:
Когда вы отвечаете на вопросы интервью по проектированию систем машинного обучения, необходимо сосредоточиться на двух областях: данные и моделирование. Это связано с тем, что общая направленность интервью по проектированию систем машинного обучения — понять ваш мыслительный процесс при столкновении с (почти) реальной проблемой, а сбор/предварительная обработка данных, а также выбранная вами модель будут основными компонентами того, что вы будете строить. Следовательно, на собеседовании вам следует больше всего сосредоточиться на этих областях.
Уточнение требований
Фотография Mimi Thian на Unsplash
Первое, что вы должны сделать, услышав вопрос, — уточнить требования. Например, вам может быть предложено следующее задание: «Разработать систему, которая рекомендует наши продукты пользователям, у которых есть профиль». Большинство вопросов по проектированию систем машинного обучения намеренно сформулированы расплывчато, чтобы вы задали дополнительные вопросы, которые помогут вам понять, какова область применения и на каких компонентах следует сосредоточиться.
После того как интервьюер даст вам задание, переформулируйте его своими словами. Это гарантирует, что вы и интервьюер будете на одной волне и ответите на правильный вопрос.
Некоторые вопросы, которые вы должны задать, чтобы понять масштаб:
1. К какому объему данных мы будем иметь доступ? [для небольших наборов данных больше подойдут менее сложные модели, но для больших наборов данных подойдут более крупные модели, например глубокие нейронные сети].
2. Аппаратные ограничения: Сколько времени у нас есть на выполнение задачи? Какая вычислительная мощность доступна? [если мы ограничены объемом оборудования, то следует использовать более простые модели].
3. Нужна ли нам модель, которая быстро отвечает на запрос, или нам нужна модель, которая чрезвычайно точна? [глубокие модели обычно медленнее, но точнее, чем традиционные ML-модели, этот вопрос показывает интервьюеру, что вы думаете о компромиссах].
4. Нужно ли нам подумать о переобучении модели?
Вы должны были записать ответы на доске (или в онлайн-платформе, если вы проводите собеседование виртуально). Обратите внимание, что в зависимости от варианта использования некоторые вопросы могут быть неактуальны, поэтому не обязательно задавать все вопросы.
Метрики
Теперь, когда вы получили четкое представление о варианте использования и задали несколько уточняющих вопросов, вы можете использовать эту информацию для определения наилучшей метрики (метрик), которую следует использовать при моделировании. Всегда следует указывать как минимум две метрики: одну для офлайна и одну для онлайна.
Оффлайн-метрики — это те, которые мы используем для оценки модели в процессе ее создания. Это происходит до того, как она будет запущена в производство и показана пользователям. Это типичный сценарий в исследованиях или учебниках, когда вы разбиваете набор данных на три набора: train, eval и test. Некоторые примеры таких автономных метрик — AUC, F1, R², MSE, Intersection over Union и т. д.
Онлайн-метрики — это показатели, которые мы получаем от модели, когда она находится в производстве и обслуживает запросы. Онлайн-метрики могут быть такими, как количество кликов или время, которое пользователи тратят на просмотр рекомендованного видео. Эти метрики зависят от конкретного случая использования. Вам нужно подумать о том, как компания будет оценивать полезность модели для пользователей после ее запуска в производство.
Еще один набор метрик, который будет полезен, — это нефункциональные метрики. Вы можете упомянуть о них интервьюеру, чтобы показать, что вы думаете обо всех возможных способах измерения пользы от модели.
Нефункциональные метрики:
• Скорость обучения и масштабируемость до очень больших массивов данных
• Расширяемость для новых методов
• Инструментарий для простого обучения, отладки, оценки и развертывания
Архитектура
Следующий шаг — создание общей архитектуры, некоторые компании требуют, чтобы вы нарисовали архитектуру. Как минимум, вы должны включить следующие шаги:
Данные
В этом и следующем разделах вы проведете большую часть времени на собеседовании, и интервьюер будет следить за тем, как вы себя проявите.
• 1. Сначала определите целевую переменную и способ ее сбора и маркировки (если необходимо)
• — В примере с рекомендациями целевой переменной будет то, нравился ли пользователю тот или иной продукт компании в прошлом. Как правило, существует два способа сбора целевого значения: неявный или явный. Примером явного сбора целевых значений может быть просмотр журналов и проверка того, купил ли кто-то продукт — это означает, что продукт понравился пользователю настолько, что он его купил. С другой стороны, неявный целевой сбор данных — это когда пользователь «сохраняет на потом» продукт или просматривает продукт определенное количество раз. Обратите внимание, что явный сбор данных обычно является лучшим способом сбора целевой переменной для большинства случаев. Если вы считаете, что можете найти способ неявного сбора целевой переменной, обсудите это с интервьюером, а затем поговорите о плюсах и минусах каждого из ваших неявных предложений.
2. Обсудите особенности и возможные пересечения характеристик:
• В качестве возможных характеристик для примера рекомендаций могут быть указаны местоположение пользователя, возраст пользователя, просмотренные ранее видео, название видео, свежесть видео и т. д.
3. Инженерные особенности:
• Разделение тренировки и тестирования.
• Работа с пропущенными значениями или выбросами: обычно мы можем исключить выбросы, а если данных много, то и пропущенные значения, если же данных мало, то мы можем вменить данные через среднее (или любой другой метод работы с пропущенными значениями). Обговорите это с вашим интервьюером, помните, что это должно быть обсуждение.
• Балансировка положительных и отрицательных учебных примеров: если вы заметили, что дисбаланс, вероятно, будет очень большим, то вам следует обсудить способы решения этой проблемы: увеличение выборки, уменьшение выборки, а также другие техники, такие как SMOTE.
• Нормализация некоторых столбцов.
4. Выбор характеристик:
• Если мы используем глубокую нейронную сеть, то отбор признаков нам не нужен. Если это необходимо, то для вычисления импорта признаков можно использовать древовидные оценки. Кроме того, мы можем использовать норму L1 для регуляризации, чтобы некоторые коэффициенты признаков были равны нулю.
5. Дополнительные рассуждения:
• Предвзятость: Достаточно ли велика выборка по демографическим группам, если нет, возможно, мы можем сгруппировать самые крупные, а остальные отнести к демографическим группам OOV.
• Есть опасения по поводу конфиденциальности/законодательства? Нам может потребоваться анонимизировать или удалить данные в зависимости от соображений конфиденциальности.
После того как мы завершили обсуждение данных, вы должны спросить интервьюера, не хочет ли он, чтобы вы объяснили, как можно реализовать эти шаги с данными. По опыту, большинство интервьюеров не слишком озабочены операционализацией машинного обучения, поскольку это такая новая область, в которой продукты и лучшие практики постоянно меняются. Однако демонстрация того, что вы знаете, что вам нужно произвести свой рабочий процесс, покажет интервьюеру, что вы сильны не только в теоретической стороне ML, но и в инженерной.
Операционализация машинного обучения для Данных:
1. Хранение данных:
• Если есть необходимость в объектном хранении (изображения, видео и т. д.): Amazon S3, GCP Cloud Storage
• Базы данных для метаданных, а также структурированных (табличных) данных: MySQL, Postgres, Oracle
• Хранилище функций (хранение и доступ к функциям ML) (автономно): FEAST, Amazon SageMaker Feature Store, Hopsworks Feature Store
• Версионирование данных: DVC, Pachyderm
2. Загрузка и преобразование данных:
• Загрузка: Оффлайн-данные → можно запрашивать в базах данных, Онлайн-данные → нам нужна высокая пропускная способность и низкая задержка, поэтому мы должны использовать потоковые онлайн-платформы, такие как Apache Kafka и Apache Flume
• Функции преобразования: Apache Spark, Tensorflow Transform
3. Платформы оркестрации:
• Airflow
• Kubernetes
Модель
После того как вы перешли к компоненту моделирования, вам следует сначала создать базовую модель (если это возможно). Как правило, базовая модель не требует машинного обучения. Например, хорошей базовой моделью для нашей предыдущей подсказки было бы рекомендовать пользователям наиболее популярные продукты. Такую «модель» всегда будет легко реализовать, и теперь у вас есть базовая модель, которую должны превзойти все остальные модели.
Затем расскажите о традиционных моделях ML, которые быстро обучаются, например, о логистической регрессии или деревьях решений. Обсудив их, вы сможете поговорить о более сложных подходах, таких как глубокое обучение.
ПРИМЕЧАНИЕ: не забудьте привести плюсы и минусы каждого подхода, о котором вы говорите. Пример:
Модель A:
• Краткое объяснение модели, гиперпараметров и функции потерь
• Плюсы модели A
• Минусы модели А
Опять же, вы должны спросить интервьюера, хочет ли он, чтобы вы объяснили, как производить этот компонент.
Операционализация машинного обучения для моделирования:
1. Повторяемость экспериментов:
• ML Flow
• KubeFlow
2. Распараллеливание настройки гиперпараметров: Google Cloud, Azure, AWS
3. Версионирование моделей:
• DVC
• Amazon SageMaker
• Google Cloud AI Platform
Обслуживание
Фото Florian Krumm на Unsplash
Теперь вам нужно предоставить модель пользователям, это последняя часть интервью.
Некоторые моменты, о которых стоит упомянуть:
1. Онлайн A/B-тестирование: расскажите о проведении A/B-тестирования с использованием онлайн-метрики (метрик), о которой вы упоминали ранее.
2. Где выполнять вывод: если мы запускаем модель на телефоне/компьютере пользователя, то она будет использовать его память/батарею, но задержка будет быстрой, с другой стороны, если мы храним модель на нашем собственном сервисе, мы увеличиваем задержку и проблемы конфиденциальности, но снимаем нагрузку, связанную с занятием памяти и батареи на устройстве пользователя.
3. Мониторинг производительности: некоторые измерения, которые мы должны регистрировать, — это количество ошибок, время возврата запросов и метрические показатели.
4. Предвзятость и неправильное использование вашей модели: Распространяет ли она какие-либо гендерные и расовые предубеждения из данных?
5. Следует указать, как часто мы будем переобучать модель. Некоторые модели нужно переобучать каждый день, другие — каждую неделю, а третьи — ежемесячно/ежегодно. Всегда обсуждайте плюсы и минусы выбранного вами режима переобучения.
Опять же, спросите интервьюера, хочет ли он, чтобы вы объяснили, как производить этот компонент обслуживания.
Операционализация машинного обучения для обслуживания:
1. Храните журналы в базе данных, например ElasticSearch, Logstash, GCP, AWS, Azure
2. Аналитические инструменты для ведения журналов: Kibana, Splunk
3. CI/CD: CircleCI, Travis CI
• 4.Развертывание на встроенных и мобильных устройствах
• Квантование
• Уменьшенный размер модели (мобильные сети)
• Дистилляция знаний (DistillBERT и др.)
p/s продолжается зимняя распродажа книг