-
Инициирование и планирование проекта
-
Проекты в общем: Инициирование и планирование проекта
-
Сбор и анализ информации об исходном положении проекта
-
Анализ исходной ситуации должен проводится еще до начала проекта, но и в ходе инициирования и планирования проекта сбор и анализ информации продолжается
- данные о рынке, потребностях, технологиях, партнерах и конкурентах, ограничениях проекта, включая доступность ресурсов, и др.
-
Понять
- насколько проект реально востребован и реализуем
-
Инструменты и компетенции
- сбор и анализ данных
- анализ заинтересованных сторон
- дизайн мышление
-
Определение (уточнение) целей и показателей успеха проекта
-
Цель - образ желаемого будущего
- Цель проекта должна определять, те положительные изменения, ради которых делается проект
- Для обеспечения мониторинга достижения целей формулируются показатели успеха проекта, за которые несут ответственность руководитель проекта и члены команды
- Цели проекта отражают интересы ключевых заинтересованных сторон проекта и в первую очередь заказчика, но руководитель проекта (РП) должен цели принять и при необходимости уточнить.
-
Инструменты и комтенции
- дерево целей
- SMART
-
Разработка возможных способов достижения целей
-
Часто цели проекта могут быть достигнуты разными способами или с применением разных решений
- приобретение готовых продуктов (активов), усиление существующих или создание нового продукта (актива) своими силами и т.п.
- Прежде чем переходить к детальному планированию, необходимо проанализировать альтернативные варианты решений
-
Инструменты и комтенции
- дизайн мышление
- системная инженерия
-
Определение выгод и возможных рисков каждого способа достижения целей
-
Необходимо оценить альтернативные способы достижения целей
- оценка преимуществ и возможных негативных последствий каждого каждого способа (решения)
-
Инструменты и компетенции
- анализ альтернатив
- системный анализ
- SWOT
- взаимодействие с заинтересованными сторонами
- привлечение экспертов
-
Выбор основного способа достижения целей- проектного решения
-
Инструменты и компетенции
- разработка и утверждение основных решений (концетциы проекта)
-
Определение функциональных областей и видов работ, необходимых для реализации проекта
-
Понимание решения (продукта проекта и его составных частей) позволяет определить масштаб и основные виды работ, которые надо будет планировать и реализовывать
- Позволяет оценить сложность проекта, области неопределенности и рисков, требования к опыту и компетентности команды проекта и привлекаемых экспертов
-
Инструменты и компетенции
- иерархическая структура продукта проекта
- иерархическая структура работ проекта
- модель компетенний проекта
-
Определение стратегии реализации проекта (ЖЦ, подходы к реализации, приоритеты и последовательность получения основных результатов)
-
Стратегия реализации проекта - это укрупненный план, определяющий основные этапы, точки контроля и принятия решений по проекту
- Стратегия реализации проекта учитывает, как содержание проекта, так и условия реализации проекта (наличие ресурсов, факторы окружения проекта, наличие приоритеты и поддержки или сопротивления изменениям)
-
Инструменты и компетенции
- жц проекта
- процессы управления проектом
- план по контрольным точкам
-
Определение требований к составу и компетентности участников команды управления проектом
-
уточнить полномочия и ответственность ключевых участников участников команды управления проектом
- формирование команды управления
-
Инструменты и компетенции
- роли в команде проекта
- отвестственность и полномочия
- организационная структура проекта
- матрица отвественности
-
Формирование и утверждение организационной структуры управления проектом, основных требований к управлению и реализации проекта
-
фиксируются ранее принятые решения о целях и содержании проекта, а также принципы реализации и управления проектом
- Формируется и утверждается команда управления проектом, распределение ответственности и полномочий
-
Инструменты и компетенции
- Устав (паспорт) проекта
-
Детализации состава работ проекта, разработка общего и детальных календарных планов
-
Инструменты и компетенции
- иерархическая структура работ проекта
- календарный план
-
Кто участвует
- РП
- ключевые коллеги команды управления
- ответственные исполнители
- эксперты
-
Определение потребностей в ресурсах ( включая бюджет, мощности, поставки и тд) по работам проекта и по проекту в целом
-
Когда план проекта детализирован до отдельных задач (работ), можно провести ощенку потребности каждой отдельной работы (задачи, пакета работ) в ресурсах
- Оценка трудоемкости и потребностей проекта в ресурсах гораздо точнее, если привязаны к конкретным работам и выполнены с участием специалистов
-
Инструменты и компетенции
- оценка потребности работ в ресурсах
- смета
- бюджет
- план обеспеченыя проекта ресурсами
-
Разработка плана реагирования на риски. Доработка плана реализации проекта с учетом рисков
- План управления рискамия является частью сводного плана проекта, а такие элементы плана, как календарный план, бюджет, план привлечения ресурсов необходимо доработать с учетом плана утравления рисками
-
Инструменты и компетенции
- выявление и анализ рисков
- план управления рисками
-
МЛ
-
Шаги
- Выбрать удобный и подходящий инструмент в качестве
-
Создать репозиторий документов и сделать его доступным для команды
- Версионирование
- Docs-as-code
-
Создать реестр рисков
- аналог
- LeanDS (Questions)
- Риск-Вопрос для изучения- действие по устранению
-
Создать организационную модель клиента
- карта стейкхолдеров
- орг единицы
- ЛПУ
- ключевые лица (бюджетирование, визирование, IT-безопасность и тд
- бизнес-приоритеты
- кто клиент, а кто заказчик
- карта бизнес-процессов
- понимание того, как сейчас работает заказчик- увеличивает шансы на успех
- адаптация бизнес-процессов. Что необходимо?
- Своевременность проекта. (Не опережаем ли мы события? Не действуем ли слишком поздно?).
- Организация проекта. (Как будет реализовываться проект? Кто участники рабочей группы? Как мы будем их мотивировать?).
- Необходимость и достаточность. (Можно обойтись наименьшими усилиями? Бизнес-процесс – это не просто, не дешево и не быстро).
- Техническое задание. (Как правильно оформить ТЗ для оптимизации комплекса критичных бизнес-процессов через карту целей).
- основные поинты
- как и кем и когда будет финансироваться проект
- PandL
- какая организационная структура у компании-клиента
- зачем клиенту этот проект
- - какая IT-архитектура есть у клиента
-
Проанализировать архитектуру системы клиента и функциональные/нефункциональные ограничения
- Функциональные
- что будет делать система, какая её функция, какую задачу будет решать, какие требования по метрикам?
- Нефункциональные
- скорость работы (throughput и latency), стоимость функционирования (железо и поддержка)
- Системные требования
- какая инфраструктура нужна, с какими системами нужно интегрироваться
-
Получить пример данных
- отразить характеристики: статистические, нефункциональные (размер, скорость, история) и системные (где лежат данные)
- Анализ данных
- мало
- грязные
- сложно получаемые
- Понять возможность реализации фич
-
Задокументировать требования по безопасности и приватности
- этический аудит проекта - кого он затронет, какие есть потенциальные негативные последствия
- юридические аспекты
-
Разработать высокоуровневую архитектуру решения
- согласовать ее со стейкхолдерами
- получить ответы на вопросы:
- DEV: есть ли достаточно ресурсов на дев-среду, доступны ли в ней данные, какие мы будем использовать инструменты для разработки
- Prod: основные компоненты системы, как деплоить систему, как предоставлять досуп к компонентам
-
Сформировать общее понимание бизнес-проблемы, свалидированное клиентом и командой проекта
- Питч
-
Осуществить проверку (dilligence) проекта
- будут ли доступны стейкхолдеры и данные?
- Кто из членов команды доступен, какие у них компетенции?
- Найти ответы на вопросы
- Техническая осуществимость проекта - есть ли данные, инфраструктура, решалась ли уже проблема кем-то ещё
- Понятный бизнес-кейс и поддерживающие его стейкхолдеры
- Коммерческая осуществимость - есть ли ресурсы на проект?
-
Оценить работы по проекту с учётом доступной команды, масштаба работы и рисков
- Разбиваем проект на эпики, примерно прикидываем затраты
- Чем сложнее проект, тем неточнее оценка
- Оцениваем основные инфраструктурные затраты - трейн-машины, хранение данных, инференс
-
Создать план дизайна команды
- эксперты по домену, дата-инженеры, ML-инженеры, дата-саентисты, бэкэндеры и фронтендеры, девопсы, UX-инженеры, QA, деливери-менеджеры, РО
- зависит от спецификаи проекта и заказчика
- Провести ревью-встречу по всей проделанной работе
- Удостовериться, что подготовлены все нужные документы
-
Артефакты
- репозиторий документов
- реестр рисков
- гипотеза проекта
- отчёт по dilligence
- высокоуровневый план проекта
- оценка времени и ресурсов
- документация (NDA и т.д.)
-
Начало проекта. Старт Работ
-
МЛ
-
Шаги
- Создать, обсудить и финализировать состав команды и необходимые ресурсы
-
Договориться о совместной процедуре работы
- синки, лучшие практики, общие инструменты, каналы коммуникации, документация
- Области инструментов
- Репозиторий документов (Confluence, Notion, Teams)
- Тикетная система (Jira, GitLab, Azure DevOps)
- Система контроля версий - GitHub, Bitbucket
- Документы - Google Docs, Office 365
- Диаграммы - Visio, UML, Lucidchart
- Менеджмент билдов - Jenkins, Gradle
- Управление зависимостями - Conda, poetry
- Тестирование - pytest
-
Создать и выложить инфраструктурный план
- Как получить доступы к данным, какие есть GPU-сервера и тд
-
Провести более тщательное исследование данных (data story)
- Мотивация и контекст - зачем собирают именно эти данные
- Механизм - как собирают, какие данные не попадают в выборку
- История (lineage) - можно ли отследить весь путь данных до текущего состояния
- События - что происходило с данными, были ли какие-то резкие изменения в процедуре сбора
-
Провести ревью данных и этики
- Создать план по приватности, безопасности и работе с данными
- Можно ли использовать данные для целей проекта?
- Все ли данные собраны в одной юрисдикции?
- Нужно ли исключить какие-то данные из анализа?
- Требуются ли какие-то дополнительные процедуры типа анонимизации или differential privacy?
- Кто из команды должен иметь доступ к данным?
- Создать роадмап проекта
-
Артефакты
- описание данных
- список таблиц и других источников данных
- описание проблем с данными
- описание текущих сценариев использования данных
- план по созданию документации
- роадмап проекта
- план коммуникации (как и где общаемся с клиентом и друг с другом)
- план IT-инфраструктуры
- дизайн команды
- project heartbeat - список встреч команды и обязательных участников этих встреч от клиента и от нас
-
Начинаем работу. Спринт1
-
МЛ
-
Шаги
-
Провести полноценное исследование данных, оценить все источники данных, их полноту, качество, актуальность
- Провести дата-тесты для оценки метрик качества данных и разметки
- Создать отчёт по данным (data survey)
- Этапы
- data story
- data survey
- Могут ли все элементы, описанные в data story, быть обнаружены в системе клиента?
- Есть ли доступ, как мы его можем получить?
- Каков примерный объём данных?
- Какие самые старые и самые новые данные?
- Какие базовые статистики
- макс, мин, медиана, количество нулей и пропусков
- Какие типы данных есть
- численные, категориальные, неструктурированные (картинки, текст, звук)
- Какие проблемы выявлены в данных
- EDA
-
Разработать описание бизнес-применения проекта
- Создать бэклог user stories
- Провалидировать бизнес-применение и user stories с клиентами
- Определить требования к качеству работы ML-модели
- Создать UX-дизайн
- а подробнее
- Концепт - основная идея, зачем он нужен
- Список стейкхолдеров
- Приоритеты бизнеса - привлечение клиентов, рост выручки, попуск конкурентов, социальная ответственность
- Impact statement - как проект будет приносить ценность, на какие показатели влиять
- Дата-ресурсы - какие данные доступы для обучения и в продакшне, как они будут поступать в систему
- Концепт модели - что будем тренить
- Функциональные и нефункциональные требования
- Как и кем модель будет использоваться - дашборд, автономная работа и т.д.
-
Агрегировать данные в единую картину
- Создать дата-пайплайны
- выбрать инструмент (Airflow) и настроить доступы
- Написать дата-тесты
- проверка на дубликаты, качество входных/выходных и тд
- Подвязываемся к источникам данных (сырые данные в CSV, Kafka, объектное хранилище и т.д.)
-
Создать репозиторий моделей
- Определить и записать все артефакты, которые будут использоваться в ML-пайплайнах
- Запланировать и провести EDA
- Перепроверить этические риски в свете новой информации
-
Обучить бейзлайны моделей
- понять
- все ли ок и идем дальше
- переопределение целей
- стоп
-
Артефакты
- Доступ к обучающим и валидационным данным
- Data Survey
- Дата-пайплайны
- Дата-тесты
- Репозиторий моделей и других артефактов
- EDA
- Бейзлайн-модель
- Этическая оценка
-
Работа с моделями. Оценка насколько модель хороша
-
Модель хороша, если
-
создана
- на основе прозрачной и надёжной дата-инфраструктуры
- для решения понятной проблемы и действительно решает её
- с учётом этических аспектов
- Высокое качество фиче-инжиниринга
- Осмысленный дизайн самой модели
- Оценена по разным аспектам и с помощью разных метрик
- Процесс выбора модели прозрачен и используется понятный процесс моделирования
- Хорошо задокументирована
-
ML
-
Шаги
-
Создать план фиче-инжиниринга, провести ревью с командой
- Имплементировать пайплайн фиче-инжиниринга
- Задизайнить аугментации
-
Создать и задокументировать дизайн модели. Декомпозировать дизайн на задачи
- Факторы, влияющие на дизайн
- Метрики
- Прозрачность и интерпретируемость
- Скорость работы
- Стоимость
- Приватность данных
- Робастность
- Время на разработку
- Тип данных и особенности домена
- Модель может состоять из нескольких компонентов
- Несколько несвязанных моделей для разных аупутов
- Цепь из моделей (например, классификатор документов, а затем разные OCR-модели для разных типов документов)
-
Утвердить процесс моделирования
- Выбрать эксперимент-трекер. Выбрать репозиторий моделей. Отвергнуть очевидно плохие модели
- Признаки плохих моделей
- Неконсистентный перфоманс и сильная чувствительность к небольшим изменениям входных данных
- Слишком хороший неожиданный перфоманс
- Небольшое изменение гиперпараметров ведёт к сильному росту метрик
-
Имплементировать тестовую среду
- Создаём среду для оффлайн-тестирования, по возможности максимально приближенную к реальной работе - получаем доступ к данным, настраиваем дата-пайплайн, запускаем модель, считаем метрики
-
Разработать метрик-тесты для моделей
- Решаем, как будем проводить онлайн-тесты - field trial (деплой на небольшую группу пользователей), A/B-тестирование, multi-armed bandits
-
Протестировать нефункциональные требования
- Финальные latency/throughput, цена, требования по ресурсам
-
Утвердить алгоритм выбора лучшей модели на основе валидационных и тестовых данных
- Учесть нефункциональные требования и другие качественные показатели
- Количественные тесты
- Сравниваем по какой-нибудь единой метрике
- Сравниваем по набору метрик (multi-objective optimization)
- Качественные тесты
- Безопасность модели
- Справедливость модели
- Интерпретируемость модели
- Написать model delivery отчёт
- Задокументировать процедуру выбора модели
- Отревьюить и обсудить с клиентом выбор модели
-
Артефакты
- Пайплайн фиче-инжиниринга
- Дизайн модели
- Ряд обученных моделей
- Результаты экспериментов, метрики
- Список обнаруженных проблем
- Тестовая среда
- Алгоритм выбора лучшей модели
- Тестовые данные из онлайн-среды
- Документация по процессу выбора модели
-
В Продакшен!
-
МЛ
-
Шаги
-
Определить тип деплоя
- Типы деплоя
- Assistive - люди смотрят на результаты работы модели, например, в дашборде
- Delegative - делают предикт, который используется напрямую, но под контролем человека
- Autonomous - автономные системы, работающие без человека
-
Определить функциональные и нефункциональные эффекты системы
- Стоимость
- Эффект на экологию
- Скорость и пропускная способность
- Поддержка очерёдности запросов
- Поведение в случае ошибки
- Надёжность
-
Выстроить продакшн дата-пайплайны
- Data lake (HDFS, S3) + процессор (Hadoop, Databricks)
- Data warehouse (BigQuery, Redshift)
- RDMBS-сервер (Oracle, Postgres)
- NoSQL (Mongo, Cassandra)
- Memory store (Redis, Memcached)
-
Создать систему инференса
- Выбираем inference server
- In a database - BigQuery ML, Redshift ML
- Application server - Nginx, Flask
- Spark-like - Apache Spark, Databricks
- Kubernetes/Kubeflow
- Serverless - Lambda, Azure Function
-
Определить необходимые компоненты интерфейса системы
- Принципы UI-дизайна ML-систем
- Должно быть понятно, что система может и не может делать
- Показывать только информацию, которая релевантна текущему контексту пользователя
- Должно быть легко отключить систему при необходимости
- Если система неуверенна в своём ответе, надо собрать больше информации от пользователя или временно отключиться
- Система должно плавно адаптироваться и обновляться. У пользователей есть свои ожидания
- Здорово собирать детальный фидбек о работе системы от пользователей
- У пользователя должны быть способы мониторить и контролировать работу системы
- Нужно заранее оповещать пользователя об изменениях в системе
- Выбрать соответствующий подход к разработке интерфейса, который позволит удовлетворить требованиям пользователей
- Создать системы логирования, мониторинга и алертинга
- Определить процесс управления и передачи модели
-
Написать документацию по поддержке модели
- Run book - документ для HD первой и второй линии, который содержит информацию о всех возможных ошибках, и о том, что нужно делать в каждом случае
- Технический обзор - брифинг для новых инженеров, чтоб максимально быстро понять суть системы и заонбордиться
- Troubleshooting guide - более подробный гайд по всем возможным проблемам с системой
-
Создать предрелизный план тестирования
- Юнит-тесты
- Системные тесты
- Интеграционные тесты
- Acceptance-тесты
- Финальные этические проверки
-
Провести релиз в продакшн
- Создать пострелизный план тестирования
- Поблагодарить команду
-
Постпродакшен: Промышленная эксплуатация
-
Шаги
-
Определить основные источники ML-техдолга
- Проверять перфоманс модели ее актуальность и необходимость модели
- Определить примерную скорость устаревания модели и по необходимости процедуру переобучения
- Определить общий software-техдолг системы
- Провести пост-ревью, вынести уроки из проекта
-
Определить новые практики для будущих ML-проектов
- Чему научились, какие новые практики попробовали, какие хотим попробовать в будущем
- Определить новые технологии для изучения
- Написать кейс-стади о проекте и поделиться
-
Закрытие проекта
-
распределение и выдача поощрений за работу
- передача результатов в эксплуатацию
- закрытие договорных отношений
- подведение итогов
- архивирование информации
-
принятие решения об успешности проекта
- поощрение за работу
- мостик к эффективной работе на новых проектах
-
Инструменты и компетенции
- процедура закрытия проекта
- анализ извлеченных уроков
- мотивация
- управление знаниями
-
Источники и интересные ссылки
-
https://xmind.app/m/8khxdU/
- ML-продукты. Разбираем основы
-
https://xmind.app/m/QtNa2r/
- Описываем задачу/гипотезу/метрику для ML проекта
-
https://docs.google.com/spreadsheets/d/13G4J61pqoyz46k8VG5omFqIOoGCkvHuTyVCWtqwllJE/edit#gid=26284490
- задание по проекту (МБА)
-
https://celsus.notion.site/celsus/Managing-ML-Projects-0893e33a047e4c5e9afa36cee6a4403f
- Конспект книги Managing ML Projects
-
https://xmind.app/m/N8DuAK/
- Some notes about Mitosheet. An easy way to create visualizations
-
https://xmind.app/m/aTyzbU/
- Some notes about Exploratory Data Analysis (Python and Pandas)
-
Catalog of requirements for AI products
- https://github.com/ttzt/catalog_of_requirements_for_ai_products
-
Проекты в общем. Организация управления проектом
-
Поиск квалифицированных исполнителей для выполнения работ проекта
- На основании плана проекта ( с учетом полномочий, выделенного бюджета) РП и команда управления подбирают конкретных исполнителей и поставщиков
-
Инструменты и компетенции
- определение требования
- оценка квалификации исполнителей
-
Определение индивидуальных задач и условий мотивации, приемлемых для конкретного исполнителя
-
для каждого исполнителя определяются задачи в соотвествии с планом проекта
- исполнители принимают активное участие
-
если внешние поставщики/подрядчики
- определяются требования и проводится отбор в соотвествии с утвержденными процедурами
-
Инструменты и компетенции
- процедуры оценки и отбора исполнителей
-
Формальное назначение исполнителей с определением полномочий
-
После определение и распределения задач: необходимо дать исполнителям формальные полномочия
-
если внешние подрядчики и исполнители
- заключение договоров и определение договорных обязательств
-
Инструменты и компетенции
- внутренняя нормативно регламентная документация
- договоры
-
Проекты в общем: Координация и контроль проекта
-
Координация деятельности исполнителей
-
Инструменты и компетенции
- план коммуникаций проекта
-
Измерение прогресса в исполнении проекта и отклонений от плана
- контроль за выполнением индивидуальных задач
-
сбор отчетности и оценка состояния работ
- в соотвествии с приницпами регламента
-
Инструменты и компетенции
- сбор и анализ отчетности по проекту
- критерии оценки эффективности реализации проекта
-
Анализ и оценка индивидуальной деятельности в соответствии и индивидуальными задачами и планами
-
аналогично
- по определенному плану
-
Инструменты и компетенции
- сбор и анализ отчетности по проекту
- критерии оценки эффективности исполнителей
- мотивация
-
Осуществление корректировки плана проекта (принятие решений по измерениям, пересмотрт плана проекта)
- по результатам анализа
-
Инструменты и компетенции
- процедуры управления изменениями
- актуализация планов
- нужна ли корректировка