Что такое проектирование систем машинного обучения и как к нему подготовиться
Делиться

Если вы начинающий специалист по анализу данных или инженер машинного обучения, то изучение проектирования систем машинного обучения — один из важнейших навыков, которые вам необходимо освоить. Это связующее звено между созданием моделей и внедрением решений, которые обеспечивают реальные бизнес-результаты.
Умение превращать идеи МО в производственные системы, которые экономят деньги, увеличивают доход и создают измеримую ценность, определяет ваш долгосрочный карьерный рост и вашу зарплату.
Я создал системы машинного обучения, которые сэкономили компаниям более 1,5 млн долларов в год, и эти же навыки помогли мне получать предложения о работе на сумму, превышающую 100 000 долларов.
В этом руководстве я расскажу, как я думаю о проектировании систем МО, чтобы вы могли сделать то же самое.
Общая структура
Ниже представлена моя схема подхода к проектированию системы машинного обучения:
Примечание: Это наиболее распространённый тип проектирования прикладной системы машинного обучения в солидной технологической компании. Существуют и другие, более сложные случаи, такие как проектирование инфраструктуры и проектирование исследовательских экспериментов в области искусственного интеллекта/машинного обучения.

Если вам нужна копия этого шаблона в формате PDF, вы можете получить доступ по этой ссылке:
https://framework.egorhowell.com
Давайте рассмотрим эти шаги более подробно.
Бизнес-проблема
Цель этого шага:
- Уточните цели. Какую бизнес- или пользовательскую проблему вы пытаетесь решить и как преобразовать ее в решение с помощью машинного обучения?
- Определите метрики — На какие метрики мы ориентируемся: точность, показатель F1, ROC-AUC, точность/полнота, среднеквадратичное отклонение и т. д., а также как это влияет на эффективность бизнеса.
- Ограничения и область применения — Каковы доступные вычислительные ресурсы, нужны ли нам прогнозы в реальном времени или пакетный вывод, нужно ли нам вообще машинное обучение?
- Проектирование высокого уровня — как будет выглядеть приблизительная архитектура от данных до вывода?
Данные
Речь идет о сборе и получении данных:
- Определите источники данных — базы данных, API, журналы или пользовательские данные.
- Определите целевую переменную . Что такое целевая переменная и как ее получить?
- Контроль качества — В каком состоянии находятся данные? Существуют ли какие-либо юридические проблемы с использованием данных?
Особенности инженерии
Создавайте новые функции на основе данных для решения конкретной проблемы:
- Важность признаков — понимание того, какие признаки, скорее всего, будут определять целевую переменную.
- Очистка данных — обработка пропущенных значений, выбросов и непоследовательных записей.
- Представление признаков — прямое кодирование, целевое кодирование, встраивание и масштабирование данных.
- Выборка и разделение — учитывайте несбалансированность наборов данных, утечку данных и правильное разделение на обучающие и тестовые наборы данных.
Разработка и выбор модели
Здесь вы продемонстрируете свои теоретические знания моделей машинного обучения:
- Тест — начните с простой «глупой» модели или эвристики, а затем постепенно усложняйте ее.
- Обучение — перекрестная проверка, настройка гиперпараметров, ранняя остановка.
- Компромиссы . Рассмотрите такие компромиссы, как скорость обучения, скорость вывода, задержка и интерпретируемость.
Обслуживание и развертывание
Понимание наилучшего способа обслуживания и развертывания модели в производстве.
- Инфраструктура — выберите облако/локальную среду, настройте конвейеры CI/CD и обеспечьте масштабируемость.
- Сервис — конечная точка API, пограничная модель, пакетные прогнозы против онлайн-прогнозов.
Оценка и мониторинг
Последняя часть — настройка систем и фреймворков для отслеживания вашей модели в производственной среде.
- Метрики — какие метрики отслеживать с помощью «онлайн»-модели и «офлайн»-модели.
- Мониторинг — настройка панели мониторинга, блокнота мониторинга, оповещений Slack.
- Эксперимент — Разработайте эксперимент A/B.
Чему нужно научиться?
Открою вам секрет: проектирование систем машинного обучения — это не собеседование или набор навыков начального уровня.
Это связано с тем, что проектирование систем машинного обучения тестируется на среднем и высшем уровнях.
К этому времени вы приобретете солидные знания в области машинного обучения и разработки программного обеспечения и, скорее всего, начнете развивать специализацию.
Тем не менее, если вам нужен всеобъемлющий, но ни в коем случае не исчерпывающий список, то это то, что вам нужно изучить.
Теория машинного обучения
- Контролируемое обучение — классификация (логистическая регрессия, машины опорных векторов, деревья решений), регрессия (линейная регрессия, деревья решений, деревья с градиентным бустингом).
- Неконтролируемое обучение — кластеризация (k-средних, DBSCAN), снижение размерности, латентный семантический анализ.
- Глубокое обучение — нейронные сети, сверточные нейронные сети и рекуррентные нейронные сети.
- Функции потерь — точность, оценка F1, NDCG, точность/полнота, RMSE и т. д.
- Выбор признаков — как определить существенные признаки, такие как корреляционный анализ, рекурсивное исключение признаков, регуляризация, перекрестная проверка и настройка гиперпараметров.
- Статистика — байесовская статистика, проверка гипотез и A/B-тесты.
- Специализации — временные ряды, компьютерное зрение, исследование операций, рекомендательные системы, обработка естественного языка и т. д. Требуется всего 1–2.
Системное проектирование и инжиниринг
- Облако — основное — AWS, и вам следует знать S3, EC2, лямбда-функции и ECS. Большинство облачных решений — это просто обёртки для хранения и вычислений.
- Контейнеризация — Docker и Kubernetes.
- Проектирование системы — кэширование, сетевое взаимодействие, квантизация, API и хранение.
- Контроль версий — CircleCI, Jenkins, git, MLflow, Datadog, Weights and Biases.
- Фреймворки развертывания и оркестровки — Argo, Metaflow, Databricks, Airflow и Kubeflow.
Ресурсы
- Практическое машинное обучение с использованием Scikit-Learn, Keras и TensorFlow (партнерская ссылка) — Перейдите к книге, чтобы изучить всю теорию машинного обучения.
- Проектирование систем машинного обучения (партнерская ссылка) — Автор — Чип Хуен, один из ведущих мировых экспертов по моделям искусственного интеллекта и машинного обучения в производственной среде.
- Practical MLOps (партнерская ссылка) — Книга, которую я использовал для изучения всех основ машинного обучения в области производственного проектирования.
Интервью по проектированию систем машинного обучения
Позже я планирую выпустить более подробное видео о процессе собеседования на должность проектировщика систем машинного обучения, но сейчас я хотел бы предоставить вам общий обзор и несколько советов, которые помогут вам подготовиться.
Собеседования по проектированию систем машинного обучения обычно предназначены для инженеров среднего и старшего звена. На таких собеседованиях вам, как правило, будет предложена обширная, не имеющая однозначного ответа задача, например, разработка рекомендательной системы или спам-фильтра.
Если ваша должность подразумевает конкретную специализацию, например, компьютерное зрение, то вопросы на собеседовании часто будут посвящены именно этой области.
Одна из самых больших проблем собеседований при проектировании систем машинного обучения — отсутствие стандартизации. В отличие от собеседований при проектировании программных инженеров, которые имеют относительно единый формат, структура собеседований при проектировании систем машинного обучения сильно различается. Кроме того, есть много тем для обсуждения: бесчисленное множество концепций, компромиссов и потенциальных путей решения.
Тем не менее большинство менеджеров по найму, как правило, оценивают кандидатов по нескольким ключевым параметрам:
- Перевод проблем — Можно ли взять бизнес-проблему и сформулировать ее как решение с помощью машинного обучения?
- Принятие решений — Признаете ли вы компромиссы и логически обосновываете свой выбор дизайна?
- Широта и глубина — Демонстрируете ли вы прочное понимание теории машинного обучения, различных моделей и того, как эффективно применять их в реальных сценариях?
Как подготовиться к собеседованиям
Что касается подготовки, я рекомендую одну важную вещь.
Проработайте прошлые проблемы.
Вот некоторые ресурсы для поиска подобных проблем:
- HelloInterview — В целом, отличная платформа для практики всех типов собеседований.
- Интервью по проектированию систем машинного обучения (партнерская ссылка) — отличная книга со множеством практических задач.
- Онлайн-книга «Интервью по машинному обучению» — еще один замечательный ресурс от Чипа Хуена.
Я также рекомендую ознакомиться с публикациями в блогах крупных технологических компаний, чтобы узнать больше о том, как алгоритмы машинного обучения внедряются в масштабах:
- Статьи ML в блоге Airbnb Tech Blog
- Технический блог Netflix
- Блог инженеров Meta ML
- Блог инженеров Lyft
Источник: towardsdatascience.com



























