Дратути Антон – Telegram
Дратути Антон
4.11K subscribers
171 photos
30 videos
215 links
Мемы и личные размышления про управление, код, ml и здравый смысл.

Сейчас руковожу командой OCR in VLM в Яндексе.

Автор: @toshiknoscript
Download Telegram
Мониторинги

Мой опыт до Яндекса во многом связан с исследованиями или standalone приложениями. Я попал в команду, в которой занимаются и исследованиями, и продом. А потому, первое с чем мне пришлось познакомиться — это как жить в проде👨‍🦳, в который приходят миллионы запросов:
— Как обеспечивать стабильность такого сервиса?
— Как обеспечивать непрерывную поставку решений в работающий сервис?
— Как решать проблемы, возникающие на проде и влияющие на пользователей?
Ну и на самом деле десятки других вопросов. Но самый больной из списочка — это последний👍. Потому что это происходит здесь и сейчас, потому что если твой сервис не работает или сбоит, он вызывает негатив, отписки и прочие подобные ощущения у пользователей🙃.

Один из инструментов для диагностики каких-либо проблем на проде здесь и сейчас — это мониторинги. И у тебя может быть разумный вопрос: да чо там сложного, ну накидал каких-нибудь статистик по запросам, запушил данные о состоянии машин и следи за этим. Сомнительно, но окэй 🙆.

Хорошая система мониторинга, лично по моему мнению, должна обеспечивать как минимум следующие вещи:
— предоставлять инструмент для масштабирования сервисов в реальном времени (не так, что ты конфиг где-то поправил, а просто добавил одну тачку, и она сразу отобразилась на дашбордах);
— не должна значительно влиять на производительность системы (а потому не запушишь 100500 метрик с одно хоста 100500 раз в секунду);
— должна уметь говорить пользователем о том, что она сама сломалась, если такое произошло (а значит мониторинги на систему мониторингов тоже должны быть);
— предоставлять механизмы нотификаций о возникающих инцидентах (а значит нужно уметь правильно интерпретировать графики и метрики, подходить к их выбору с умом);
— по возможности хранить всю историю.

Естественно, что в Яндексе всё это есть 🤓, и пишут эти инструменты люди, которые побольше моего знают в этой сфере. Но вот я недавно задумался, а что если бы вообще мониторингов не было в нашем сервисе 😫?

Зря подумал, потому что на время наша система стала сбоить (наш прод). В смысле серьезно, мы начали видеть на графиках всплески неответов, и знаешь это напрягает👨‍🦳. Потому что мы полировали то, что у нас отображается на дашбордах очень долго и продолжаем это дело, мы очень отвественно подходили к тому, какую картину о нам проде мы хотим видеть.

Куда больше стало напрягать то, что при более тщательной оценке системы, оказывалось так, что все идет штатно🤔. В этот момент я начинаю уже думать, что либо мне в столовке что-то подсыпали и у меня глюки, либо это шутка какая-то от коллег, либо я чот не понимаю😐. Чуть позже ко мне начинает приходить мысль о том, а не сломалося ли чего в самой системе мониторинга. Такая мысль ко мне пришла последней лишь потому, что если системе стало плохо, я бы это узнал уже из 10 разных углов компании.

Но ладно думаю, гляну. Ну и в общем система сообщила, что у нас (у нашего сервиса) память на мониторинги закончилась😂. Открываю доку, читаю, понимаю, что оказывается-то реально система может выдавать дичь в этом случае. После приседаний с памятью (3000 раз за подход, никак иначе) удалось решить проблему.

Мораль какая: мониторинги настолька важная штука, что со временем ты начинаешь им верить как родным👍. Если у тебя есть продакшн сервис и у него нет мониторингов, то либо у вас прод на 2.5 землекопа, либо иди к лиду и убеждай в необходимости это все дело поставить. Практически все проблемы, которые возникали на моей практике, решались обращением в мониторинги. Единственное, важно иногда за системой ухаживать и спрашивать, как у неё дела, а то начнет капризничать😫.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11🐳8😁21
Создавать проекты с нуля или развивать существующий? 🤔

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

Базовым ответом будет конечно новый 🙃, ведь там можно заложить свои идеи на этапе фундамента, поработать с новыми технологиями, да и вообще сделать штуку, которой до сего момента вообще не существовало.

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

Как правило, эти решения уже не лежат на просторах интернетов, а ресурсы, которые будут затрачены на придумывание и реализацию могут быть даже кратно выше, нежели чем запуск нового проекта👨‍🦳.

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

И теперь апдейт модели — это уже неочевидный процесс. Как уседеть на 10+ стульях, не просадить качество, сохранить обобщающую способность, а еще и не замедлить решение😃? Или можно замедлить в угоду качеству? А что если скатимся в локальный минимум из-за смещений?

А всё. Надо думать🥲. Статьи читать, конечно, хорошо, но индустрия далеко не всегда решает твою задачу с твоими вводными. И вот тут начаинается самое интересное, чего в новых проектах ты скорее всего, не будешь решать. А это я еще в целом не начал за продакшн говорить. Там своих приколюх хватает😫.

А ответа на вопрос из заголовка я тебе не дам, а то слишком легко будет. Реши сам👍.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11🗿4👍1
Сделаю твой код чуточку лучше

Уверен, что иногда в Python ты пишешь примерно так:


a = arr[0]
for x in arr[1:]:
# usefull action


А знал ли ты, что делаешь копию листа? Так вот лучше делать так:


a = arr[0]
for x in itertools.islice(arr, 1):
# usefull action

Итераторы очень полезны — невероятно крутая концепция. Тут можно прочитать еще больше полезностей от библиотеки itertools.
❤‍🔥12👍6😱41🥱1🐳1🙈1
😁12💅2👍1
Трекер экспериментов

Мой путь в трекинге экспериментов начинался с того, что я смотрел на логи в терминальчике и строил кривые у себя в голове 👨‍⚕️. Потом пришла мысль, что можно использовать matplotlib, а еще позже — tensorboard 🔼.

Через какое-то время хотелось сравнивать не просто эксперименты между друг другом, а пачки экспериментов. И так, чтобы это было удобно шарить между друг другом. Так я познакомился с MLFlow 🔥. А позже, уже подавшись на искушения красивого UI и неплохого такого API, стал использовать wandb 🤨. Последний, кстати, не просто красивый, а чертовски красивый и много чего из коробки может.

Сейчас я думаю, каким искушениям податься еще? Может быть вы знаете какие-нибудь еще прикольные и интересные трекеры экспериментов? А зачем вообще вы их используете? Набросайте в комментарии 😫
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8👀3👌2
О, типичный код в какой-нибудь матлибе 👨‍🦳
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔3🤯2
Мем смешной, ситуация страшная 👨‍🦳
Please open Telegram to view this post
VIEW IN TELEGRAM
😁32
Чек-листы как способ облегчить жизнь

На прошлом месте работы у меня возникла задача, с которой так или иначе сталкивается каждый, кто по несколько раз говорит/делает одно и то же 👨‍🦳. В частности, впервые я начал об этом задумываться, когда проверял очередной PR и писал одни и те же комментарии по стилю кода, по оформлению доков, тестов, и в целом по читаемости истории изменений 👨‍⚕️.

И это стало реально проблемой, когда ко мне стали приходить другие члены команды и жаловаться на примерно такое же. "Да сколько можно" — пробухтел я про себя и пошел узнавать, чего можно сделать лучше. Именно в тот момент мне попалось видео (которое я сейчас не могу найти), где докладчик рассказывал про использование чек-листов 🤨. Мол, если нужно сделать какое-то многошаговое общепринятное действие (а PR — это именно такое), то стоит сесть с командой и прописать его.

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

И вот мне стало интересно, а какие у вас в командах есть "best practices"😐? Какие проблемы они решают у вас? Очень было бы классно почитать про ваш опыт!😫
Please open Telegram to view this post
VIEW IN TELEGRAM
🐳13👍5
Магия ссылок

Однажды когда я еще учился в школе, мне приспичило скачать видео с youtube 💃. Тогда я пошел к своему Гуру айтишного мира — учителю информатики и спросил, а как это делать. Именно тогда я узнал, что если зайти на страницу ролика, а потом в адрессной строке приписать ss к youtube (т.е. ssyoutube), то тебя перекинет на сайт, где это можно будет сделать 🚶‍♂️. После этого, конечно, мой мир перестал быть прежним.

На днях я в одном из роликов увидел, что если к любому github репозиторию приписать в самое начало vscode.dev (например, https://vscode.dev/https://github.com/ggerganov/llama.cpp), то загрузится vscode прям в браузере😐. И хоть я наверное узнал об этом самый последний, но я снова как будто очутился в школе. Такая магия, такой искренний восторг👍.

В целом, концепция весьма здравая, но пока очень сырая. По крайней мере навигация по коду пока лучше работает на самом github🙆, нежели чем в vscode. Но в Python всё вполне неплохо. В C++ проектах показалось, что вообще не работает...👨‍🦳

При этом поиск быстрый, так что если хочется использовать hot keys VSCode, то вполне неплохая альтернатива, чтобы не выгружать репозиторий себе на машинку.

Ну или можно еще открыть удаленный репозиторий 🤨. В общем всё есть в доке: https://code.visualstudio.com/docs/editor/vscode-web#_github-repos
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18🤝5
Тут ребята из Selectel подсказывают, что у нас есть возможность не замернуть следующей зимой! И такую возможность нам может подарить новенький процессор от Intel на 10-нм техпроцессе, потребляющий в пике жалких 409 Вт 👍

Рекомендуется устанавливать по одному в каждую комнату, чтобы распределение тепла было равномерным!

Подробнее: https://habr.com/ru/companies/selectel/articles/797573/
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3👌2🐳1
Тут у себя в системе задач обнаружил архивное издание — доклад про инструменты классного тимлида 👨‍🦳: https://www.youtube.com/watch?v=1dDBXTu1I7I
Подумал, а почему бы и не посмотреть — и посмотрел 😫.

Доклад хороший, но вполне абстрактный. Автор рассуждает на тему нескольких топиков, описывает зачем, как и что делать:
🔼 Договорись со своим руководителем;
🔼 Настрой свои основные инструменты;
🔼 Настрой коммуникации;
🔼 Заведи личные карточки;
🔼 Приведи в порядок 1:1;
🔼 Систематизируй свое развитие.

Ну и в целом звучит и правда, что делая все эти вещи — ожидает успешный успех 🤨. Одно лишь но — ты должен быть Дмитрием и проживать его жизнь, тогда оно работает. Поэтому смело дели все на 8 и учись думать, а подходит ли оно к тебе и твоей команде, или нет. И неважно, сказал ли тебе этот совет Валера Бабушкин (@cryptovalerii) за пару битков, или же непосредственный руководитель. Тебе потом за это отвечать.

Как же я наслышан историй о применении "тимлидских" инструментов (да и сам грешил 👨‍⚕️), что аж грустно за ребят под управлением таких лидов становится 👍.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔112🐳2
Media is too big
VIEW IN TELEGRAM
Ну и напоследочек, старое доброе
🤣8🤝3🐳2
IT Conf 3.0

Тут ИТМО почти через месяц (а точнее 13 апреля) проводит IT Conf 3.0., конференцию сообщества студентов и выпускников ИТМО, посвященной сфере IT. Тема предстоящей конференции «От трендов к результатам» посвящена технологическим трендам и их применению. Я помогаю ребятам в организации сего мероприятия 🔼.

Сама конференция будет проходить в очном формате, но придти послушать доклады может каждый желающий, кто пройдет регистрацию (по сути, нужно чтобы вас пустили на территорию университета) 🤨.

Также, если у вас есть желание, вы можете придти в качестве спикера со своим докладом. В этом году у нас следующие треки:
— Искусственный интеллект;
— Разработка;
— Технологические тренды;
— Карьера.

Давайте так, трек ИИ звучит очень громогласно 👨‍⚕️, но понятен широкой аудитории. Но если у вас есть чо прикольное рассказать про обучение моделей, оптимизацию инференса, прикольные решения задач в том или ином домене — приходите 👍!

Регистрация для спикеров открыта на сайте до 10 марта (вовремя я пишу, конечно 🙆). Если вы в другом городе — можно обсудить ваш приезд в Питер. С материалами прошлогодней конференции можно ознакомиться по ссылке.

По вопросам можно обращаться ко мне в личку.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥72👍1
Suno.ai 🤔

Весь вечер слушаю треки в Suno, и чот я прям несколько раз щупал себя, что я не сплю. Послушайте тренды — это же офигеть.

А я в своем стиле закину вам трек (feat. @ollmer):
https://app.suno.ai/song/a3106ba8-1cc8-45d2-8220-cfa9d0dcdfde
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81🔥1
Как я секции CUDA бинарников шатал

По рабочей необходимости мне нужно было сделать статическую линковку некоторых CUDA библиотек. До моих манипуляций (с динамической линковкой) всё работало отлично. Тут пришел я, чот поменял, и некоторые тесты начали падать 😂.

Чо я ток не пробовал: и проверял совместимость библиотек, и проверял что все версии совпадают, 10 раз уже прочитал документацию по сборке и ничего не работает 😊. И тут мне подсказал @itpgchannel, что дело может быть как раз в секции инициализации глобальных переменных и прочей подобной нечисти, инструкции для чего лежат в секциях .ctors либо .init_arrays (https://maskray.me/blog/2021-11-07-init-ctors-init-array). Про секции и в целом про ELF я писал когда-то здесь: https://news.1rj.ru/str/blog_toxa/16

Ну в общем, оказалось что и правда, что в некоторых бинарниках CUDA библиотек до сих пор присутствует секция .ctors, а в каких-то .init_array (которые как раз и отвечают за это). В современных сборках используется последняя секция, а потому при статической линковке секция .ctors просто игорилась. Как результат, глобальной инициализации объектов из либ не происходило и потому тесты валились 😭.

Чтобы пофиксить, нужно было просто заиспользовать трюк из статьи выше, а именно переименовать секции:

objcopy --rename-section .ctors=.init_array --rename-section .dtors=.fini_array $file

И всё заработало! Но тут нужно быть осторожным, различия в типе секций есть, но на самом деле, как мне кажется, они настолько минорные, что можно забить 😮‍💨. Как я понял, различия в порядке инициализации. Но серьезно, если кто-то затачивается на порядок инициализации — таких надо палками гнать.

Также подробнее, почему это не работало именно у меня на работе, можете прочитать в посте: https://news.1rj.ru/str/itpgchannel/1290

А NVIDIA, ну типичная контора, которая игнорит неуместные вопросы 👨‍⚕️: https://forums.developer.nvidia.com/t/ctors-sections-in-static-libraries/285542
Please open Telegram to view this post
VIEW IN TELEGRAM
😱6👍4🤔1
YaART 😍

Ребята из нашей команды опубликовали наружу статью про то, как делают технологию генерации изображений 🤨. Очень здорово, что у ребят всё сложилось! Классное ощущение у меня внутри, когда это делают люди, к которым можно ногами дойти и спросить, чо как!

Я думаю, что кто-нибудь сделает разбор статьи, а я просто поделюсь ссылками:
Страница проекта (кстати, выглядит очень стилёво);
Статья на arxiv;
Статья на Хабре.

Поздравляю ребят!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍21
Нейро 🔘🔘

Пока пишу только релизы Яндекса (потому что работы чот очень много), но я очень горд ребятами из нашей команды, которые сделали этот запуск. Теперь генеративные ответы есть и в поиске. 🤨

Можно искать как по текстовым запросам, так картинка+текст. Пользуйтесь и приходите с фидбеком!

Попробовать можно уже сейчас на главной Яндекса — нужно просто переключить тумблер!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍3
VLM

Наверное каждый слышал про то, что у Яндекса есть своя GPT-like модель — YandexGPT. Так вот мы хотим идти дальше — делать нашу технологию мультимодальной🤨. И коли уж я пишу этот пост, значит мы хотим развивать визуальную модальность🤔.

Направление на хайпе и почти все, кто занимается генеративками сейчас — стараются обучать свои модели также работать с картинками. Ну потому что большой пласт задач лежит в визуальной плоскости😂. При всём богатстве естественного языка, мы изредка пытаемся у LLMок спрашивать что-то, описывая каждую деталь. Более того, кажется часть задач вообще сложно описать, например пояснить за мемчик. Это весьма челенджевое направление, в котором есть много чего поделать. От копания данных, до внедрения в продакшн😍.

В общем, мы ищем ML-разработчиков (да-да, не одного) в нашу классную команду технологий компьютерного зрения, а именно в проект, связанный с VLM. Любой продукт Яндекса, который так или иначе, явно или не явно использует картинки😳 — пользуется технологиями, которые создаются и развиваются в нашей команде. Подробнее про вакансию, связанную с VLM, можете прочитать здесь: тык.

Приходите ко мне в личку, пообщаться за вакансию, за команду, про задачи или вообще область😇. Ну или просто за жизнь. Мне интересно познакомиться с вами даже если сейчас вы ничего не ищете!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥9