В этом документе описаны общие рекомендации по найму вашей команды ИИ, начиная от типов ролей и ожиданий, подбора должностей до требований проекта и структуры собеседования.

от Эрик Гафни, генеральный директор Eventum

Типы позиций

В этом разделе описываются основные должности, на которые нужно нанимать команды машинного обучения, и чем они обычно занимаются.

Инженер по машинному обучению (MLE)

MLE — это швейцарский армейский нож и хлеб с маслом команды ML — они всегда очень сильные инженеры-программисты с минимально средним уровнем знаний ML. Они могут работать над любой частью системного стека машинного обучения, но обычно либо пишут код для поддержки исследований и разработок, либо пишут код, чтобы убедиться, что все работает гладко в производстве. Они проводят большую часть своего времени в IDE, а не в ноутбуках, проводят эксперименты, разрабатывают методы предварительной обработки данных, управляют репозиториями с открытым исходным кодом, воспроизводят документы (иногда) и даже в крайнем случае занимаются ETL или проектированием данных.

MLE может не иметь более высокой степени в области машинного обучения, но, по крайней мере, является самоучкой с помощью множества доступных онлайн-курсов и книг. У них может не быть глубокого понимания фундаментальной математики машинного обучения, такой как вероятность, статистика и линейная алгебра, но они знают достаточно, чтобы быть опасными. Эти роли значительно различаются, и иногда MLE на самом деле не затрагивают модель, а иногда они могут создавать собственные архитектуры моделей. Наиболее продуктивными людьми в команде обычно являются MLE, которые могут писать качественное программное обеспечение и разбираться в науке ML.

Ученый по машинному обучению / исследователь / специалист по данным

Ученый ML тратит большую часть своего времени на улучшение модели, проводя эксперименты. Как правило, это включает в себя анализ характеристик производительности модели, исследование обучающих и тестовых данных, опробование новой предварительной обработки или дополнений данных, изучение новых архитектур нейронных сетей, опробование различных методов оптимизации и ознакомление с научной литературой. Обычно они работают над проблемой, решение которой неизвестно (исследование), и проводят много времени в блокнотах Jupyter. В идеале у них должен быть глубокий опыт работы с предметной областью во всем, что требуется для вашего продукта, но это не обязательно, поскольку, если вы знаете одну область машинного обучения, вы можете быстро подобрать другую (особенно если в команде есть другие эксперты в этой области, которые вас обучат). Ученый по машинному обучению обычно способен создавать собственные архитектуры нейронных сетей для определенного типа набора данных и/или задачи. Лучшие исполнители на Kaggle часто являются очень хорошими учеными ML.

Инженер MLOps

MLOps — это devops для команды машинного обучения. Они несут ответственность за то, чтобы сделать опыт разработки ученых и инженеров машинного обучения как можно более невероятным, сократить их цикл разработки и максимально повысить их эффективность. Они отвечают за стандартные задачи devops, такие как CI/CD, контроль версий, облачные сервисы, ведение журналов, выставление счетов и инфраструктура. Они будут адаптировать эти решения для команд машинного обучения, например обеспечить доступ CI/CD к графическому процессору, каждую ночь запускать конвейер машинного обучения от начала до конца, чтобы избежать регрессии модели, автоматизировать развертывание и наблюдаемость модели, иметь инфраструктуру отправки заданий машинного обучения. , создание воспроизводимых сред, докеризация репозиториев и т. д. Они дополнительно выполняют специфические задачи ML, такие как управление версиями и упаковка моделей, отслеживание экспериментов, оркестровка ML/данных, мониторинг показателей и производительности ML, а также оповещения.

Если вы хотите, чтобы ваша команда развивалась быстро, наймите специалиста по MLOps как можно раньше, чтобы ваша команда машинного обучения оставалась эффективной, продуктивной и избегала таких вещей, как регрессия модели! По крайней мере, убедитесь, что у вас есть базовые знания. MLOps на месте, как CI/CD.

ML Data / ML ETL Engineer

ML Data/ETL Engineer иногда попадает в категорию MLOPs. Мы считаем, что эта роль настолько важна, что заслуживает отдельного места. Мы большие поклонники Dagster во всем, что связано с ETL. Обратите внимание, что часто ETL по-прежнему принадлежит MLE, но мы оставляем его обсуждение в этом разделе.

Инженер ML ETL занимается приемом и обработкой всех необработанных данных, которые используются для обучения и проверки модели, и создает систему оркестровки, которая автоматизирует жизненный цикл ML: прием данных, предварительная обработка данных, обучение модели, оптимизация модели, развертывание модели. . Система должна обеспечивать непрерывное тестирование и развертывание всех этапов конвейера, а также возможность наблюдения за моделью, чтобы команда была предупреждена, если модель начинает работать неэффективно.

Инженеры данных обычно сосредотачиваются на координации передачи необработанных данных в руки MLE с минимальными трудностями. Как правило, у них недостаточно знаний в области науки о данных и конкретных моделей, чтобы справиться со всем стеком Data Engineering, который обычно обрабатывается DataEngineers. MLE обычно отвечают за этапы предварительной обработки данных. Например, сборка обучающего набора данных из 10 разных таблиц с помощью сложного кода pandas/polars/pyspark.

Ведущий ML

Лид ML может быть в разных формах. Технический руководитель машинного обучения — это тот, кто принимает архитектурные решения, но на самом деле не управляет людьми и очень практичен. Руководитель отдела машинного обучения — это тот, кто принимает архитектурные решения, руководит людьми и руководит ими. Директор по машинному обучению — это тот, кто относительно не занимается кодированием, но управляет людьми и стратегией высокого уровня. Идеальный кандидат имеет большой опыт запуска моделей в производство и руководства командами, а также понимает все базовые наборы навыков, необходимые для ML (наука, инженерия, практика ML и системная архитектура). Таких людей очень мало, но если вы наймете одного в свою команду раньше, вы избежите технического долга, который убивает компании.

Ведущий специалист по машинному обучению видел распространенные ловушки, такие как отсутствие внедрения CI/CD с самого начала и обеспечение правильного сбора данных и точной оценки моделей, чтобы вы не преувеличивали свои результаты (часто модели машинного обучения выглядят так, как будто они работают). , но на самом деле это не так, потому что они узнали какую-то ложную корреляцию). Они также позаботятся о том, чтобы базовые MLOps были на месте, чтобы ученые машинного обучения занимались исследованиями и наукой о данных, а не тратили время на поиск ужасных решений проблем инфраструктуры. Обычно новые команды не могут позволить себе лидера ML, но многие из наших клиентов считают частичные и временные лидеры команды ML чрезвычайно ценными. Этот человек должен превосходно соответствовать культурным традициям и быть командным игроком, ориентированным на то, чтобы помогать всем остальным в команде, и поэтому его обычно следует сильно стимулировать опционами на акции, особенно если он работает полный рабочий день.

Оценка требуемых навыков

Во время собеседования вы должны ранжировать людей по следующим осям базовых навыков. Вот основные атрибуты того, на что вы должны проходить собеседование для каждой позиции.

Базовые навыки

  • Практика машинного обучения
    – Опыт работы в крупной технологической компании или быстрорастущем стартапе, работающем над машинным обучением
    – Работа в команде машинного обучения из 4+
    – Создание и поставка производственных моделей от начала до конца, которые оказал влияние на бизнес
     – Знает экосистему машинного обучения и такие библиотеки, как pytorch_lightning
     – Умеет: обучать, оценивать и развертывать модели
  • Программная инженерия
    - Работал над большой базой производственного кода с командой из 4+
    - Поставлял и поддерживал производственный код с большой пользовательской базой
    - Работал над большой и сложной распределенной системой программного обеспечения
    - Владение: python, git, облако, веб-разработка, linux, bash
  • ML Theory/Math
    — степень магистра или доктора наук в области математики или искусственного интеллекта
    — или эквивалентный опыт, например, успех в другой научной и количественной области, такой как физика или биоинформатика
    — публикации научных статей в престижных журналах< br /> - Опыт работы с вашей проблемой (например, НЛП, зрение, аудио и т.д.)
    - Выиграл соревнования Kaggle
    - Квалификация: теория машинного обучения, вероятность, статистика, линейная алгебра, оптимизация
  • Архитектура систем машинного обучения
    - Оркестрация сложных данных и систем машинного обучения
    - Оркестрация приема данных, предварительной обработки данных, обучения моделей, оптимизации моделей, развертывания моделей
    - Квалификация: Airflow, dagster, распределенные системы, предобработка данных, продукционные системы

Состав команды

В следующем разделе объясняется, кого нанимать и когда.

Рекомендации по составу команды сильно меняются от проекта к проекту. Если вы строите свою собственную нейронную сеть или дерево повышения градиента, вам понадобится гораздо больше специалистов по машинному обучению. Если вы оборачиваете GPT4 через API и используете сосновую шишку, вам в основном нужны MLE. Общее эмпирическое правило состоит в том, чтобы начать свою команду с универсалов MLE, а затем нанимать только ученых по машинному обучению, инженеров MLOP или инженеров данных / ETL, поскольку вам нужны эти части ваших систем для более быстрого развития. Вы также можете дополнить многие из этих функций с помощью частичных консультантов, которые специализируются на них без необходимости нанимать людей, которые будут работать над этим полный рабочий день! Это невероятно полезно для стартапов.

Например, есть много задач MLOps, которые требуют большого количества специальных знаний и могут быть настроены очень быстро консультантом, работающим неполный рабочий день. Это также часто работа, которую сотрудники не хотят выполнять, потому что она разовая и не очень помогает их личному карьерному росту, поэтому заставлять их делать это вредит моральному духу. Кроме того, после выполнения этих задач они не требуют большого обслуживания. Также часто верно, что специалисты по машинному обучению не могут хорошо выполнять свою работу, пока не будут установлены базовые уровни MLOps, MLEngineering и Data Engineering/ETL.

Основные задачи, которые могут быть выполнены специализированным инженером искусственного интеллекта с дробным временем с молниеносной скоростью:

  • Временный руководитель группы
  • CI/CD с графическими процессорами
  • Облачная инфраструктура как код с terraform
  • Оповещения о выставлении счетов в облаке
  • Независимая от облака инфраструктура обучения машинному обучению
  • Дистилляция/оптимизация модели
  • Настройка ETL с помощью dagster

Собеседование на разные должности

Вот несколько примеров вопросов, которые оценивают каждый из основных наборов навыков, необходимых для различных должностей в команде. Это область, в которой Eventum преуспевает как большая часть нашего ценностного предложения, особенно для компаний, которые еще не имеют большого внутреннего опыта машинного обучения и, следовательно, мало надеются на успешное проведение технического собеседования. Хорошо пройти собеседование довольно сложно, и мы стремимся к очень низкому уровню ложных срабатываний — если мы не полностью уверены, что кто-то хорош, мы не будем его нанимать.

Примеры вопросов для интервью

  • Практика машинного обучения
     — Познакомьте меня с прошлым проектом, пока я копаюсь во всех кровавых подробностях.
     — Имитация задачи машинного обучения: вот набор данных и цель моделирования, покажите мне, как бы вы ее решили it
     – Как вы настраиваете конвейер обучения?
     – Как вы выполняете анализ гиперпараметров?
     – Используете ли вы молнию pytorch? Почему или почему бы и нет?
     – Как бы вы настроили обучение распределенному GPU на нескольких хостах?
     – Как вы настраиваете CI/CD в системе машинного обучения?
  • Вопросы, относящиеся к домену ИИ
     – Как обучение с самоконтролем работает в компьютерном зрении?
     – Каковы некоторые распространенные способы перекрестной проверки во временном ряду?
     – Как лучше всего проверить выходные данные GPT4 ?
    – Что можно делать с LLM с открытым исходным кодом, чего нельзя делать с закрытым исходным кодом?
    – Каковы приемы, связанные с обучением LLM?
    – Что что такое LoRA и для чего он используется?
    — Какие существуют методы точной настройки стабильной диффузии? Каковы их преимущества/недостатки?
  • Программная инженерия
     – Базовый литкод, такой как тесты кодирования с возрастающей сложностью
     – Как вы предпочитаете управлять пакетами в рабочей среде?
     – Что делает git squashing?
     – Что такое git rebase?
     — Объясните анализ времени выполнения Big O
     – Домашнее задание
  • Теория машинного обучения / математика
    — теория машинного обучения, вероятность, статистика, линейная алгебра, оптимизация
    — объяснение процедуры оптимизации GAN
    — объяснение архитектуры ConvNet
    — объяснение Batchnorm и Отсев. Почему они помогают?
    - Что представляют собой QKV внимания?
    - Объясните двойной спуск
    - Объясните диффузию
    - Какие методы необходимы для обучения трансформера?
    - Когда вы будете использовать UNet или Resnet?
    - Для чего нужны пропуски соединений?
    - Что такое дистилляция модели? Какие существуют методы для этого?
    - Что такое p-значение?
    - Что такое правило Байеса?
    - Что такое смещение и дисперсия?
    - Объясните PCA
  • Архитектура систем машинного обучения
     – Объясните проектные решения, связанные с воздушным потоком, дагстером или набором микросервисов.
     – Как вы обеспечиваете конфиденциальность и безопасность конфиденциальных данных в системе машинного обучения?
     – Какие соображения следует принять во внимание? что вы принимаете во внимание при разработке масштабируемой и надежной системы машинного обучения?
    – Как вы обрабатываете управление версиями модели и обслуживание модели в производственной среде?
    – Можете ли вы обсудить проблемы и соображения, связанные с интеграцией потоковой передачи в реальном времени? данных с помощью системы машинного обучения?
     – Как вы подходите к проектированию функций и хранению функций в крупномасштабной системе машинного обучения?
    – Как вы разрабатываете переобучение и обновление моделей в динамической системе машинного обучения?
  • Культура
    - К сожалению, это одна из самых сложных или невозможных вещей для оценки во время интервью, и часто ее оставляют на усмотрение. Это любая область, где программа Eventum по найму дает огромное преимущество — вы можете не торопиться, нанимая кого-то на неполный рабочий день с низким риском, прежде чем нанимать его на полный рабочий день.
    - Насколько хорошо может ли этот человек общаться?
    - Есть ли у него проблемы с отношением?
    - Он командный игрок?
    - У него самомотивация?
    - Он старается изо всех сил решать проблемы и обеспечивать ценность?

Eventum поможет вам ускорить процесс машинного обучения, предоставляя нужные ресурсы в виде талантливых экспертов и правильных технологий, адаптированных к вашему варианту использования и бизнес-целям. Eventum позволяет вашей команде быстрее создавать лидирующие на рынке технологии с ограниченными ресурсами. Для получения дополнительной информации посетите http://eventum.ai.