tgoop.com/blog_toxa/439
Create:
Last Update:
Last Update:
Руководитель и код. Часть 2/2
В прошлом посте вы постарались набрать очень быстро необходимое число лайков. Тем не менее, пишу пост только сейчас. Вообще ваши реакции — практически единственная форма фидбека мне. Поэтому если вам что-то нравится или, наоборот, не нравится, вы смело приходите ко мне с этим (куда угодно: личка, сообщения канала, комменты). Ну и реакции ставьте😍
Мы в команде очень сильно заботимся о качественных метриках. Достаточно строго собираем наборы данных и оцениваем качество метрик, валидаторов. Вообще замеры — это очень сложная тема, требующая понимания не только того, как работаем сам процесс (данные, валидаторы и природа метрик), но и то, как всё работает под капотом: какой режим семплирования, какой бэкенд используется, на каком железе, есть ли батчевание и т.д. И ясное дело за всем уследить не всегда возможно.
И тут возникли проблемы разного характера из мира инженерии, в абсолютно разных местах, но на KPI метриках. Где-то начало флапать, где-то онлайн (внутренний) не сходится с оффлайном на одних и тех же данных. В общем, какой-то бред.
По людям история такая: кто-то ушёл в отпуск, кому-то нужно допинать текущие задачи, кому-то просто пока не дашь эти задачи, потому что нужно починить быстро, а опыта работы именно с этим еще не было. И не то, что нельзя вырвать какого-то знающего человека из текущих задач и дать ему раздебажить проблему — всё-таки важные KPI метрики. Просто только-только случился очередной релиз и хочется дать ребяткам выдохнуть, да и тем более я сам понимал, что примерно нужно копать. Посмотрел по своим приоритетам, поранжировал, решил, что нужно мне сделать.
Спойлер: решил обе задачи. С флапающими тестами всё сложно, описывать не буду, а вот про оффлайн и онлайн рассказать можно. В режиме фоновых задач запускали эксперименты, где пытались зафиксировать стейт данных. И вот уже всё фиксированное — но числа разные.
Ну бред, думаю я. А потом вспоминаю, что оффлайн замеряется на одном коде, а онлайн — на другом (специфика реализации). Код оффлайна читать было бессмысленно — я его читал 100500 раз и там ничего не менялось. А вот в онлайне нужно было поднапрячься.
И, к слову, баг описывает классический мем — вроде знаешь, что он есть, но как найти — ну вот фиг знает. После получаса пристального чтения кода нахожу примерно следующую конструкцию:
// some code
if (currentPrompt.size() == 0) {
currentPrompt = userData.content;
}
currentPrompt += userData.content;
// some code
Ну в общем, в ситуация смешная, забыли
if
. Хорошо, что куда-то наружу не ухеало. Ну и замечательно, что это была единственная проблема.Но я так легко всё рассказываю. В реальности: погрузился детально во все процессы текущих тестирований, сильно больше стал понимать в инференсе для онлайна, узнал для себя несколько новых вещей. И заняли обе задачки примерно недельку неполного рабочего моего времени. Для себя вижу в том числе плюсы, что подсобрал некоторые инфраструктурные боли, которые смогу либо решить на своём уровне, либо странслировать выше (что, имхо, полезно).
Теперь я сплю спокойнее