Почему мы решили визуализировать DS-решения?
Наша команда в Контуре занимается автоматизацией процессов технической поддержки с помощью Data Science уже 6 лет. За это время мы создали более 10 масштабных DS‑решений, которые описаны на 150+ страницах документации.
Хранить в голове такой объем информации очень сложно, а быстро погрузить в него новых участников команды — нереально. Поэтому мы задумались об удобном способе представления информации.
![](https://habrastorage.org/getpro/habr/upload_files/452/947/7d8/4529477d832271b885a00f05f0815784.png)
Решением стала визуализация DS-решений на схеме, в которой все собрано в одном месте:
технические детали DS-решения
сценарии, в которых решение работает
взаимодействие с бэкендом
взаимосвязи между моделями и данными
взаимодействие между разными решениями
Что делали
1. Сбор информации
Казалось, что задача простая — документация каждого DS‑решения есть, надо только изобразить ее в другом виде. Но мы быстро выяснили, что документации DS‑части решения недостаточно для понимания сценария, в котором используется модель, и для понимания того, как бэкенд взаимодействует с нашим DS‑решением.
Поэтому пошли общаться с другими ролями — аналитиками, разработчиками, менеджером. Обсуждать сценарии с людьми разных ролей полезно, потому что взгляд человека на решение отличается в зависимости от его роли.
2. Визуализация
Начали с рисунков на листочке.
![](https://habrastorage.org/getpro/habr/upload_files/32c/159/2cd/32c1592cd1907df84c65867009b248a8.png)
Когда сложилось понимание того, как схема будет выглядеть, то перешли к реализации схемы в удобном инструменте.
У нас есть инфрастурктурные сервисы, которые позволяют датасайентисту решить типовую задачу от исследования до доставки решения на прод без привлечения разработчика. Например, у нас есть сервисы для:
хостинга ML-моделей
хранения векторов и быстрого поиска по ним
объединения моделей, векторных пространств и других сущностей в единый алгоритм
хранения данных для каждого проекта
Поэтому на схеме достаточно указать имя и версию модели в нашем сервисе для хостинга — и любой датасайентист понимает, о чем идет речь и где искать задеплоенную модель.
3. Ревью
В ревью схемы участвовали не только датасайентисты. Так, разработчики провалидировали точность отображения взаимодействия бэкенда с DS‑решениями. Менеджер разработки и аналитики проверили, что сценарии применения DS‑решений правильно зафиксированы и соответствуют бизнес‑сценариям клиентов.
Насколько полезно было такое комплексное ревью, можно оценить по количеству комментариев к схеме. Дополнительный профит — другие роли тоже стали лучше понимать устройство наших решений.
![](https://habrastorage.org/getpro/habr/upload_files/f71/f7f/93c/f71f7f93cd19905a6347afd390e7a2f8.png)
Так выглядела доска с комментариями во время ревью. Что есть что рассмотрим детальнее дальше.
Что есть на схеме
По каждому решению изображена информация:
схема и текстовое пояснение пользовательского сценария со ссылками на документацию
пути до данных, которые использованы в решении
модели и векторные пространства со ссылками на хостинг и код в git, которым они получены
предобученные модели, которые использованы в решении
логика взаимодействия между частями решения
Решения на схеме делятся по проектам, которые создают решения для разных направлений в техподдержке. Эти названия встретятся далее на иллюстрациях, поэтому кратко познакомимся: Sirena работает с чатами, Naiad с письмами, Merlin со звонками, а Turbo упрощает жизнь внутренней техподдержке Контура. DS‑решения этих проектов маршрутизируют сообщения на нужных сотрудников, определяют намерения клиентов, помогают консультантам отвечать на вопросы клиентов.
Точка входа на схеме — это сценарии, которые находятся по центру по всей схемы, например «Маршрутизация звонков по топикам». Из центральной части можно пойти налево, в сторону бизнеса (визуализации коммуникации клиентом). Или в направо, в сторону DS‑описания решения.
![](https://habrastorage.org/getpro/habr/upload_files/841/bea/074/841bea0744d2a5fa5e00b7fb20e53340.png)
Место DS-решения в пользовательском сценарии
Отображение бизнесовой части — это важная составляющая схемы, так как датасайентистам нужно знать, какие сценарии закрываются тем или иным решением. Без этого можно столкнуться с проблемой: задача решена, но решение неприменимо к бизнес-сценарию.
![](https://habrastorage.org/getpro/habr/upload_files/839/cc8/c02/839cc8c024ea8d5d91d84441090c1d66.png)
Взаимодействие DS-решения и бэкенда
Схематичное описание бэкенда нужно для того, чтобы отобразить контракты моделей (что подается в модель, что из нее выходит), а также предобработку и постобработку данных до и после работы модели.
Такая «шпаргалка» помогает датасайентистам при доработках и создании новых решений проверять, что они вписываются в существующую систему. Благодаря этой информации на схеме нет необходимости каждый раз уточнять ее у разработчиков, изучать код или держать все в голове.
![](https://habrastorage.org/getpro/habr/upload_files/3f5/0c4/b5f/3f50c4b5fea0f71e2668d486d58a3d3e.png)
Взаимосвязи между моделями и данными
Важным и интересным аспектом было отображение связей моделей машинного обучения и данных для обучения в различных задачах. Например, в нескольких задачах в качестве стартовой точки для обучения используется одна и та же базовая модель, но данные в них — разные.
Фиксация таких вещей может быть полезной. Например, чтобы понимать, что модель, обученная изначально на данных из чатов, может хорошо работать и в письмах. Или чтобы заметить, что одна модель используется в нескольких задачах с риском потери производительности, так как к этой модели обращаются сразу несколько сервисов. И, значит, при дообучении этой модели для одной задачи, важно проверить, что качество на другой задаче не просело.
![](https://habrastorage.org/getpro/habr/upload_files/7ab/bd7/ff7/7abbd7ff75884bf2d7dd8c098eda9b48.png)
Технические детали DS-решения
Датасайентисту часто бывает полезно видеть, как решена задача с технической точки зрения: какие архитектуры моделей использовались, какие данные применялись для обучения. Так у него в голове укладывается знания о применимости разных методов. Помимо этого, такая информация может помочь в решении новых задач: у датасайентиста будут подсказки для выбора нужной архитектуры решения.
Мы фиксируем информацию обо всех наших экспериментах, но информация хранится разрозненно — код экспериментов лежит в нескольких репозиториях нашей команды в gitlab, на wiki результаты описаны в разных разделах. Схема же позволила показать цельную картину всех решений команды в одном месте. А благодаря ссылкам на код обучения моделей можно быстро перейти в git и изучить делали решения.
![](https://habrastorage.org/getpro/habr/upload_files/aef/b8b/2f7/aefb8b2f7e21c79e6608f54ac75587fb.png)
Итоги
Реализация заняла около одной рабочей недели, растянувшейся до пары месяцев, так как создание схемы было менее приоритетно, чем бизнесовые задачи. Еще несколько дней ушло на предварительные консультации с другими ролями и ревью. Но это время было потрачено с пользой.
Визуализация всех решений на единой схеме поможет:
Видеть детали взаимодействия между решениями, чтобы лучше контролировать риски.
Тратить меньше усилий для того, чтобы вспомнить, что мы делали раньше.
Шарить контекст с будущими поколениями, чтобы он не уходил из команды вместе с людьми. Хоть информация и зафиксирована в обширной документации на вики, но ее чтение — не самый простой способ для новичка уловить все взаимосвязи сценариев и задач.
Если у вас есть свои способы хранения большого количества информации о решениях, то пишите их в комментарии — обсудим.
RealLazyCat
А пробовали подход с С4 нотацией? Этот подход неплохо ложится не только на описание архитектуры, но и на решения, где есть/нужны слои с разной детализацией, обычно от общего к частному
mezentsevilia Автор
Привет!
Спасибо за вопрос. Честно сказать, в сторону C4 нотации не смотрели, но может быть в будущих ревизиях схемы попробуем