Интересное что-то
517 subscribers
2.72K photos
253 videos
139 files
4.52K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.me/asisakov_channel
Чат: https://t.me/youknowds_chat
Download Telegram
Закат классной модели

Все мы любим делать клевые ML-модели, которые несут пользу бизнесу, и катить их в прод. Но если дополнительно ничего не делать, то рано или поздно (скорее рано) наступает «закат» модели: она перестает нести доп метрики. Почему?

1. Развиваются другие куски ml-системы
Классика в прогнозе кучи временных рядов: сначала прогноз каждого из них неплох, а в сумме все оч грустно. Поэтому добавляют модель-нормировщика: она прогнозирует сумму рядов (допустим, продажи категории товаров) и нормирует индивидуальные модели. Со временем мы добавим в индивидуальные модели сезонность, тренды, промо - они и без нормировок в сумме по категории будут работать хорошо

2. Меняется среда, для душных distribution shift
Модели антифрода устаревают мгновенно: мошенники быстро подстраиваются под них. Рекомендательные системы бьет feedback loop. К моделям прайсингам и скидок люди привыкают и начинают покупать только по скидке. Примеров много)

3. Баги
Отвалилась часть событий на фронте, кто-то поменял структуру таблиц с данными, завели новый фича тоггл, который все поломал и тд

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

Настроить графики мониторинга и алерты на перформанс модели. И регулярно за ними следить! Они ведь тоже устаревают)

Раз в полгода проводить обратные АВ-тесты с отрывами моделей. Я регулярно нахожу что-то, что кажется незыблемо полезным, но на самом деле уже нет

Есть и третий путь. С комфортом устроиться на берегу моря или в уютном кресле и наблюдать за закатом ml-модели. Часто это неизбежно (и нормально!), так что иногда можно просто позволить этому случиться

P.S. На фотках с кайфом наблюдаю за закатами (и иногда рассветами) солнца и мл-моделей последний год
Forwarded from айти канал
pylock.toml — новый стандарт локфайлов в Python

Вчера был одобрен эпический PEP 751, который вводит стандартный формат локфайлов в Python. Несколько лет дизайна, итераций и обсуждений, почти тысяча лайков на Reddit у этой новости, в общем большое событие.

Если вы знаете, что такое локфайлы, то новость на этом заканчивается. Называться будет pylock.toml, теперь ждем пока все инструменты постепенно на него переедут.

Если не знаете, то lockfile -- это просто текстовый файл определенного формата с полным описанием вашего Python окружения. Грубо говоря, у Python проектов будет ожидаться pylock.toml вместо requirement.txt. Детали:
- В `pylock.toml` будут записаны все установленные пакеты, включая непрямые зависимости, с их точными версиями, для всех ОС сразу, со всеми вариациями дополнительных зависимостей и прочей технической информацией.
- Это очень полезно, потому что теперь у пользователей и участников проекта будет устанавливаться в точности одинаковое Python окружение (и с гораздо большей вероятностью успеха). В общем pylock.toml сильно упрощает жизнь другим пользователям проекта, включая будущих вас :)
- Чтобы у вас в проекте появился pylock.toml, нужно будет пользоваться инструментами типа uv, а список прямых зависимостей писать в pyproject.toml вместо requirements.txt. На самом деле это рекомендуется делать уже сегодня. Просто пока uv порождает "нестандартный" uv.lock вместо "стандартного" pylock.toml, но это разработчики uv сами уже изменят в будущем.
Уничтожительный RoadMap по прохождению MLSD, или как пройти секцию ML System Design

Секция по ML System Design - это очень важная секция, она показывает вашу сеньорность. И чтобы получить большой и жирный оффер, то надо её пройти так, чтобы вас сразу звали на позицию Chief Data Scientist

И вот что нужно знать:
1️⃣ Подготовка
🟣 Сначала нужно почитать про верха, поэтому я бы начал с моего пайпика уничтожения MLSD, чтобы вспомнить основы.
- Если вы с нуля, то нужно углубиться в MLSD, для этого советую прочитать первую главу книги "System Design. Машинное обучение. Подготовка к сложному интервью" - в ней рассказывают более подробно про каждый этап MLSD.
🟡 Чтобы понимать как проводиться само собеседование, то посмотрите собеседования с Валерой Бабушкиным. Все собеседования есть в конце данного поста 🗣
🟢 И вишенка на торте - советую почитать уже готовые дизайны систем по тем областям, в которых работает ваша компания, такие можно глянуть на этом сайте. Например: если идёте в Сбер, то не нужно идти в Сбер, ну или если идёте в Авито в отдел скоринга, то скорее всего вас спросят что-то про скоринг, почитайте про это.

2️⃣ Визуализируйте ваше решение
🟣 Ваша цель - как можно понятнее объяснить собеседующему ваше решение. А для этого прям супер подходит интерактивная доска (miro, excalidraw), на который вы графически (как в картинках этого поста) излагаете свои мысли: разбиваете объяснение на блоки, расписываете метрики, данные, baseline и тд - такой способ для собеседующего будет намного понятнее, чем просто голосом проговаривать ваше решение. К тому же вы сами будете более эффективны в решении задачи, смотря на доску 🤨

3️⃣ Важные вещи, которые стоит помнить
🟡 На старте поймите, что вам нужно и идите строго по назначенной цели! Ну очень часто так бывает, что кандидат куда-то влево уходит, а собеседующему это не надо. И после этого HR вам пишет: “К сожалению, мы выбрали другого кандидата, сорян, надо было слушать в начале цель задачи.” - ну это норм ответ, ты же не решил задачу 😵
🔵 В идеале вы должны говорить 90% всего времени. В основном собеседующий ожидает от вас полного решения от А до Я без его подсказок, но это в мире единорогов и конфет, а на самом деле получается так, что вы говорите 70/30 - старайтесь по большей части говорить вы. Если что-то не знаете, но уточнить нужно, то говорите: “Предположу, что у нас такие-то данные, подскажите, на сколько у меня релевантная гипотеза для вашего магазина для взрослых?”
🟢 Не бойтесь спрашивать, но в меру, пока не поняли до конца. Я тут не говорю просить подсказок, но норм спросить про условия, которых ты не понял или не знаешь (но с фразой “предположу…”). Нет ничего плохого, если ты спросишь, это наоборот приблизить тебя к решению 😓
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Quant Valerian
Event driven management

Как ни странно, это продолжение темы "как всё успевать". Я этого не планировал, но по сути вкусно так получается.

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

Но на самом деле асинхронно можно делать практически всё. Вы это уже видели, если работали с Kanban. Есть какая-то широкая доска в таск-трекере, там какие-то задачки на доске висят, вы и ваши коллеги хватаете эти задачки и двигаете по доске. Задачки появляются в левом столбике (разными способами), оттуда их разбирают сотрудники и тащат направо. В какой-то момент задачки переезжают настолько вправо, что оказываются в левом столбике уже кого-то другого. Например, продакт положил задачку в беклог, аналитик взял её, че-то там проанализировал и положил в готов к разработке, разработчик взял её, че-то там попрограммировал и положил в готово к тестированию, тестировщик взял её... ну ты понел

Зачем тут, спрашивается руководитель? Развивать сотрудников и решать конфликты? Ну так это коуч какой-то. Оценивать перфоманс и назначать зарплаты? Можно заменить кем-то из HR. Следить за тем, что процессы соблюдаются? Надзиратель.

Мы знаем, что руководитель здесь нужен для этого всего тоже, но в основном для того, чтобы работа в итоге была сделана. Это вообще как бы основная функция начальства — доводить до результата.

Можно поконкретнее?
В хорошо отлаженной системе основная задача руководителя — не мешать людям работать. Но есть один нюанс: сотрудникам может мешать что-то, кроме руководителя! И вот именно эти вещи и должны привлекать внимание начальства. То есть вам, как управленцу, нужно устранять препятствия на пути к цели и не создавать новых.

Поэтому идеальная система должна работать так. Люди че-то сидят, делают, работу работают, а начальник сидит курит в сторонке. Как только "конвеер встал" (да, у меня опять фордовские аналогии), начальник подрывается и бежит чинить. То есть если сотрудник сам не может исправить ситуацию, он немедленно эскалирует в руководителя. И так по всей иерархии вверх, пока проблема не решится.

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

На деле люди не очень любят "жаловаться", потому что по умолчанию считают, что кому-то от этого плохо станет (и пусть лучше так считают, чем на каждый чих к вам ходить будут, конечно). Поэтому очень круто построить сигнальную систему.
Forwarded from Quant Valerian
Расскажу, что есть у меня, а что я бы хотел, чтобы было ещё.

1. Я стараюсь коммуницировать, что при затыках, проволочках и потере темпа _нужно_ идти и эскалировать в меня. Это вообще первый и главный сигнал к включению
2. Колонка "запланировано" всегда должна содержать не менее X задач (X, очевидно, разнится). Здесь мы хотим не менее пяти задач, а если их становится меньше трёх, то это повод прямо сейчас разобраться, что ещё нужно докинуть. Иначе следующий освободившийся сотрудник не будет знать, за что взяться и случится бесполезный простой в лучшем случае. В худшем сотрудник будет делать задачу, которая важна _по_его_мнению_. С другой стороны, если в колонке слишком много задач, то это тоже какой-то нездоровый признак — явно что-то сломалось с приоритетами и планированием (если ты планируешься в среднем раз в неделю на команду из пяти человек, а задач в запланированном больше 20-ти штук, то скорее всего вы их не сделаете)
3. Колонка "готово к работе" тоже должна всегда содержать некоторый буфер задач. Если задач в ней становится меньше Y, нужно озаботиться тем, чтобы кто-то уже взялся за запланированное и начал готовить задачу к взятию в работу (у нас это значит выполнить DoR: по чек-листу проверить, что в задаче есть вся нужная инфа, DoD, проведена декомпозиция, учтены и обработаны все внешние зависимости и т.д.). В противном случае мы рискуем оказаться в ситуации, когда код никто не пишет, а все заняты высокими материями типа общения со смежниками или декомпозиции задач. Я уже молчу о том, что не каждый сотрудник одинаково хорошо может с такими задачами справляться, тут нужно всё-таки давать что-то посильное (пусть и с челленджем).
4. Диаграммы DORA. Беглого взгляда на них обычно достаточно, чтобы увидеть какие-то аномалии: слишком быстро или слишком медленно стали делать задачи (на новогодние отлично видно, как релизы откладываются, например). Здесь у нас в трекере есть вьюшка, отображающая цикл тайм по статусам. По ней можно попробовать понять, в какой именно части процесса произошла проблема (релизы, ревью ПРов, декомпозиция или сама разработка и т.п.) — тут либо будет ожидаемо, либо надо копать дальше, но уже ясно направление.
5. Диаграмма потока задач. Здесь просто следим за тем, что решается задач не меньше, чем заводится новых — рост бэклога это не хорошо, это "запасы".
6. Длина очереди обращений в поддержку. Ну тут всё ясно, кажется. Если очередь выросла, надо бы разобраться, что к этому привело и разгрести хвост.
7. Доска с задачами в разбивке по людям. Здесь следим за тем, что у каждого есть задача и в работе только одна в один момент времени.

Этого всего лишь три вкладки в браузере, которые нужно проверять раз в день, некоторые, раз в неделю. И если там всё нормально, то можно заниматься планами развития, глубинными 1-1, написанием постов в каналы в телеге...

Для операционного менеджмента ещё не хватает одной диаграммы:

8. Диаграмма старения задач. Я как-то уже рассказывал о ней в комментариях в канале. Мы следим за тем, что задачка находится в каждом из статусов не дольше, чем это делали 80% задач в прошлом месяце, например. Например, видим, что задача уже три дня в разработке, а 80%% был два дня. На диаграмме старения такая задача будет светиться. Может, её просто забыли передвинуть в правильный статус. А может там есть какая-то проблема, с которой нужна помощь руководителя. Может даже просто задача такая большая или сложная получилась — это всё равно повод следить за ней ежедневно и внимательно (чтобы, например, вовремя бросить её на пол).

Такой диаграммы у меня нет, поэтому мы костылим через дедлайны и гантты пока что. Но в трекере обещали сделать.

Че в итоге-то?
В итоге у нас есть несколько источников триггерных событий для руководителя. Если события из них не летят, можно отдыхать заниматься чем-то, кроме экзекьюшена. В противном случае — изучить сигнал и починить причину проблемы, если она есть. Но ни в коем случае не бегать кругами по сотрудникам с кнутом, пряником и криками.
Forwarded from Aspiring Data Science (Anatoly Alekseev)
#hpo #hpt #optuna

Приятное интро в Оптуну, с примерами, в т.ч. пруннинга. Вообще у него классный ютуб-канал по ML/DS, такие темы отличные поднимает, и очень продуктивный лектор.

https://www.youtube.com/live/QejQVLkkgRA?si=eiBKOrAQ6bbt4y24
Forwarded from Aspiring Data Science (Anatoly Alekseev)
#nlp #pca #dimreducers

Интересный рецепт: блок, дающий разреженные (sparse) признаки, после него PCA, дающий на выходе уже разумное количество плотных (dense) признаков.

https://www.youtube.com/watch?v=x7RX8VprCnE
Forwarded from Yandex for ML
This media is not supported in your browser
VIEW IN TELEGRAM
🤖 Делаем чат-бота на ИИ

Yandex Cloud показал новую среду для внедрения ИИ-инструментов в продукты — AI Studio. Например, в ней можно создать умный поиск по базам данных и встроить его по API в оболочку чат-бота в мессенджере. И это только один пример продуктового применения LLM — всё остальное ограничено только вашим воображением.

🔳 На видео продуктовый архитектор наших ML-сервисов Дмитрий Рыбалко показал, как всё работает. Код для этого телеграм-бота вы можете найти на GitHub.

Подписывайтесь:
💬 @Yandex4ML
📹 @YandexML
Please open Telegram to view this post
VIEW IN TELEGRAM