Привет, Хабр! Меня зовут Даниель, я занимаюсь машинным обучением в Garage Eight.

Как рождается ML в компании с точки зрения бизнеса, рассказал Родион. Я же хочу обсудить особенности жизни ML команды.

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

Кто здесь?

Важный момент, на который стоит обратить внимание — ответственность. На любом проекте будут возникать вопросы «кто принимает решение о направлении работы команды?», «как команде принять решение голосованием?» и другие.

Например, кто‑то хочет хранить модели локально, а кому‑то ближе MLflow. Конечно, бывают ситуации, когда решение принимается голосованием на основании рациональных критериев, но в ситуации, когда голоса распределены равномерно, требуется более качественная проработка вопроса. Тогда стоит обсуждать вопрос в несколько подходов, а иногда лучше пересмотреть задачу.

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

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

Как всё успеть?

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

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

  • разворот MLOps платформы, которая позволила сократить время на поддержание текущих проектов и вывод в продакшн новых;

  • разработка общих правил создания кодовой базы.

Кто-то может справедливо заметить, что было бы хорошо иметь еще и некую воронку отсечения проектов из разряда «хотелок» и приоритизацию действительно профитных проектов для компании. Мы обсуждаем такие вопросы с бизнесом, приходим к решению как делать проект и стоит ли его делать вообще с точки зрения профита. Сплоченность команды вокруг общего решения и убежденность в позиции относительно проекта позволяют команде отстаивать свои идеи и доносить ценности для бизнеса.

Разбираем задачи

Когда проект все‑таки утвержден — команда приступает к его реализации. Задачи создаются и распределяются командой, исходя из целей и сроков проекта. Тут может возникнуть вопрос «Как распределять задачи, когда вес голоса у всех одинаковый, а голоса распределены равномерно?». Сейчас выясним.

Поскольку лида в команде нет, задачи распределяются по следующей схеме:

  1. Каждый выбирает интересные ему задачи в разрезе ценности для бизнеса и вектора собственного развития.

  2. После предыдущего этапа может оставаться часть задач, которые по мнению команды несут невысокую бизнес ценность, поэтому они говорят «I»ll be back» и отправляются в бэклог, чтобы вернуться после декомпозиции.

Для ускорения процесса стоит выделить области компетенций разработчиков и договориться внутри команды о зонах ответственности. Такой подход позволит улучшить процесс распределения задач и сбалансировать атмосферу в команде.

Человек

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

Своевременная мотивация со стороны команды + некоторая помощь в решении задач сильно ускоряют перемещение задачи в целевую колонку «DONE». В поддержании мотивации и организации процесса планирования помогают SCRUM‑мастера, которые в нашей компании работают с несколькими командами.

TL;DR

Особенности горизонтальной структуры команды:

  1. Ответственность за сроки и метрики проекта ложится на всю команду, а не на отдельного человека, как и выполнение приоритизации проектов, когда их становится +100 500, а также отслеживание прогресса по задачам.

  2. Распределение задач происходит с учетом ценности для бизнеса и вектора развития разработчика.

  3. Для формирования позиции команды по проекту проводится глубокая проработка вопроса с учетом мнения каждого разработчика.

  4. Горизонтальная структура позволяет разработчикам развивать навыки самомотивации, самоорганизации и приоритизации задач.

  5. Есть возможность экспериментировать с технологиями и инструментами, позволяющими создавать ценности для бизнеса.

  6. Возможен быстрый рост компетенций за счет эффективного обмена опытом и знаниями.

  7. Команда сплачивается вокруг совместных решений.

P.S.

Пройдя через эти ситуации, мы успешно трансформировали горизонтальную структуру команды и адаптировали её под существующий формат работы компании. Это позволило создать эффективные бизнес‑процессы, которые дают разработчикам возможность экспериментировать, ускоряют поставку решений, создают комфортную атмосферу в команде и помогают двигаться вперед.

P.P.S.

Пишу о жизни ML команды, развитии и новостях из мира DS у себя на канале.

А как вы относитесь к горизонтальной структуре, какой опыт у вас?

Комментарии (2)


  1. funca
    00.00.0000 00:00

    Для решения этого вопроса мы внедрили дизайн ML проектов на разных этапах согласования

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


    1. DanielChsh Автор
      00.00.0000 00:00
      +1

      В общих чертах это выглядит так:

      1. Общение с бизнесом. Это стадия, на которой у бизнеса есть желание закрыть некоторую потребность. Мы со стороны ML пытаемся определить задачу, бизнес ценность, сроки пилота и проекта, критерии успешности проекта и другие важные вводные. Для этого задаем вопросы из разряда: "как машинное обучение может улучшить бизнес-процессы или определенные операции?", "какие потенциальные экономические преимущества, которые может принести внедрение проекта?", "что будем считать успехом с точки зрения бизнеса?" и тд.
        На этом этапе хорошим результатом будет четкая формулировка задачи, метрик, сроков, критериев успешности пилота и проекта и других важных составляющих. Пример: "Хотим иметь систему прогнозирования суммарного LTV пользователя на горизонте N месяцев, в качестве прогноза хотим видеть группу (0-100, 100-500 и тд), скоринг делаем на этапе А, результат прогноза оказывается у команды Б в течение K секунд/минут, метрики модели: точность 0.5 и полнота 0.5. Результаты пилота хотим получить через 3 месяца, на весь проект готовы потратить 6 мес. Потенциальная прибыль от проекта - 1$".

      2. Если на первом этапе все хорошо - разрабатываем роадмап с позиции ML. Для этого отвечаем на вопросы: "Что делаем с технической точки зрения? (поиск аномалий, регрессия, классификация)", "Где и какие данные берем?", "Каковы будут бейзлайн и MVP?", "Интерфейсы взаимодействия с другими командами" и тд.

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

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

      5. Когда результаты четвертого этапа и возможные перспективы всех удовлетворяют - команда приступает к разработке и проведению пилота (MVP).

      6. Следующий этап - тестирование и мониторинг MVP. По результатам пилота возвращаемся к бизнесу и оцениваем, стоит ли продолжать работать в этом направлении или нужно внести изменения.

      7. Если бизнес принимает решение двигаться дальше - команда приступает к разработке и поставке продакшн решения.

        У нас процесс сильно шире описанного выше, но если коротко, то так. Надеюсь, ответил)