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

Мы любим статистику Deepdesk! Чем больше, тем лучше. Статистика говорит нам, как у нас обстоят дела с обучением и производительностью продукта. У нас есть несколько конвейеров машинного обучения для каждого клиента. Конвейеры для обучения рекомендателей URL и текста, конвейеры для обучения встраиванию слов, конвейеры для обучения языковых моделей и т. Д. Все они имеют собственный набор статистики для выявления тенденций, аномалий и выбросов. Различные заинтересованные стороны хотят разных взглядов. Владелец продукта, специалист по данным и заказчик - все имеют свои индивидуальные потребности и предпочтения.

v0 - Первые дни гибкости

Когда-то жизнь была простой. Мы просто распечатали некоторые показатели, разделенные вкладками, на консоль и вставили их в электронную таблицу. Какое-то время это работало хорошо! Наша таблица может выглядеть так (здесь для опробования различных классификаторов):

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

v1 - Схема!

Итак, мы создали базу данных статистики со схемой! У каждой метрики был свой столбец, стабильный и предсказуемый. Теперь мы можем подключиться к Data Studio и создавать настоящие отчеты! Больше не нужно копировать в электронные таблицы. Теперь у нас есть отчеты, автоматически создаваемые после запланированного обучения для быстрой и легкой проверки. А для разовых исследований мы могли бы подключиться к Google Таблицам и провести там дополнительные вычисления, например, добавить производные метрики:

Это сработало. И не очень хорошо.

Дело в том, что схемы имеют свою цену: жесткость. После того, как вы настроили свою схему, вы хотите придерживаться ее. Но, конечно, новая информация часто не соответствует существующим категориям.

Мы пытались решить эту проблему тремя разными способами:

  • В некоторых случаях мы изменили поля статистики. Но это отнимает много времени: каждый раз приходилось переносить базу данных (BigQuery). И этому нет конца. Мы привыкли называть это подходом к рождественской елке: просто продолжайте добавлять безделушки.
  • Для разовых экспериментов мы не добавляли поля: кто знает, понадобятся ли они вам в конечном итоге? Таким образом, со временем в отчетах отсутствовало все больше и больше ценной информации.
  • Мы создали отдельную таблицу для каждого этапа процесса обучения, но все большее количество статистических данных, естественно, не помещалось ни в одну из этих таблиц.

Мы пришли к выводу, что такой подход не работает для нас. Да, нам понравились достоверные отчеты и быстрое понимание, которое они предоставили. Но мы упустили наше дорогое старое гибкое решение.

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

v2 - Снова гибкость

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

Более подробно решение заключалось в следующем:

  • Используйте базу данных статистики с несколькими стандартными столбцами, такими как имя и дата задания, и одним столбцом JSON, куда любой может сбрасывать все, что угодно.
  • Удалите отдельные таблицы для разных типов тренировок и отдельных шагов. Теперь все в одной большой таблице.
  • Изучите значения в поле JSON с видом на таблицу, обеспечивая относительно стабильный интерфейс для производственных отчетов.
  • Добавляйте настраиваемые и временные поля по желанию.
  • Используйте Google Таблицы для создания специальных представлений для BigQuery, чтобы быстро составлять разовые отчеты для экспериментов.

Вывод

Это было интересное путешествие, и время покажет, правильно ли мы приняли решение. Мы полагаем, что не только мы столкнулись с этой дилеммой. Нам любопытно: как вы справились с этой дилеммой между стабильностью и гибкостью?

Сейчас мы переходим на новую ситуацию, и пока все работает хорошо. Это потребовало усилий, но мы уверены, что в конечном итоге они окупятся.