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

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

Автор: @toshiknoscript
Download Telegram
Чиво придумал
😁237🔥1
Статическая vs Динамическая линковка

Давно лежала в беклоге статья про статическую линковку: https://gavinhoward.com/2021/10/static-linking-considered-harmful-considered-harmful. Наконец-то я нашёл время и силы её прочитать. И вам советую. Я не эксперт и не гуру в сборке, но какой-то опыт и боль имею 👨‍🦳.

Если кратко, то автор старается привести контр-аргументы к фактам об ужасе статической линковки. Часть ответов автора удачная, часть оказывается в некотором смысле правдивой, но при этом прослеживается четкая нить, что не всё так плохо, как это представляют 🤨.

Например, часто статической линковке приписывают, что приложения, полученные путем подобной сборки, занимают больше места. Но при этом если взять и посчитать чиселки, то получается не такая большая разница 😀. Но зато мы получаем за эту "оптимизацию" целый ворох проблем:
— ABI несовместимости при обновлении;
— Усложнение цикла запуска приложения;
— Проблемы с воспроизводимостью сборки.

Если вы никогда с этим не работали, то очень сложно представить. Но, наверное, практически каждый МЛщик пользовался pip install some_lib, который устанавливает пакет и его зависимости. Потом вы запускаете свой привычный скрипт, а он работает по другому, хотя в нём даже не используется some_lib. А проблема в том, что при установке some_lib мы решили одну из зависимостей обновить. И понеслась 🤔.

Примерно такое же может происходить с приложениями, собранными с динамическими библиотеками. Более того, от этого иногда очень сильно страдают, когда не могут понять, почему поведение приложение просто так поменялось, хотя ничего не менялось. Я сам был свидетелем подобных ситуаций. И иногда такое больно дебажить. А еще веселее бывает, когда оно удивительным образом как-то работало 😊.

В целом, я согласен с утверждениями Линуса Торвальдса:
Shared libraries are not a good thing in general. They add a lot of overhead in this case, but more importantly they also add lots of unnecessary dependencies and complexity, and almost no shared libraries are actually version-safe, so it adds absolutely zero upside.

shared libraries really make sense is for truly standardized system libraries that are everywhere, and are part of the base distro.

Or, for those very rare programs that end up dynamically loading rare modules at run-time - not at startup - because that’s their extension model.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🤔1🐳1
😀
Please open Telegram to view this post
VIEW IN TELEGRAM
😁17👀3
Forwarded from Борис опять
Недавно BM25, алгоритм поиска из 80-х, победил нейросетевой поиск на LLM.

Мне стало очень интересно разобраться, как это работает, и я написал статью на Хабр, где этот алгоритм реализуется с нуля.

https://habr.com/ru/articles/823568/

Материал подойдет начинающим: ничего кроме знания Python не нужно.

Просьба читать, лайкать и кричать об этой статье на улицах. 😇
Please open Telegram to view this post
VIEW IN TELEGRAM
👎63👍1
Статья выше — прикольная. Но я её немного устал читать, думаю, можно было код сниппеты сократить, убрать под кат. Смысловая составляющая бы не уменьшилась, а визуальная — улучшилось. Но быстро вкатиться — ок.

Я никогда не слышал про БМ25, но потом пошел гуглить и нашел:
https://habr.com/ru/articles/162937/

Новое, кмк, получше.

Ну а по теории кажется лучше почитать: https://kmwllc.com/index.php/2020/03/20/understanding-tf-idf-and-bm-25/
5
На этих выходных постарайтесь отдохнуть ☺️.

В целом как и на других.

На фото: рыбонька с одной из рыбалок. Закат был невероятный.
Please open Telegram to view this post
VIEW IN TELEGRAM
20🐳2
🤣15🔥1🤯1
Forwarded from Tech Mumble
cuBLAS vs MLIR

Один из лучших докладов, которые помогают понять внутреннее устройство современных NVIDIA GPU. Господа из MLIR/LLVM пытаются реверсинженирить nvidia либы, чтобы натянуть их на MLIR (обобщение llvm IR). Получается с виду хорошо, но больно. Шутки в духе "это то как теперь делаются компиляторы".

В современных deep learning алгоритмах большая часть времени тратится на перемножение матриц aka GEMM (general matrix multiplication) и на, собственно, подкачку данных. Проприетарная и закрытая реализация от NVIDIA — cuBLAS, работает на 20-30% лучше чем вон такие робкие попытки сделать более прямо. Никто не знает какими хаками они внутри это делают.

https://www.youtube.com/watch?v=V3Q9IjsgXvA
🔥9
😁29🐳4
Излишняя переоптимизация

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

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

Например, в алгосиках зачастую приходят к хаку, когда используют десятки и сотни гигабайтов, чтобы хранить всё в RAM, но при этом это будет работать супер быстро, а на реализацию такого решения нужно потратить минимум времени. И действительно, когда придет время, команда сядет и перепишет это решение на более щадящее по памяти (или нет 😮‍💨).

Другой пример: разметка данных. Можно сделать автоматизирующий процесс, "оптимизировать" бюджет, потратить полгода работы команды разработчиков. А можно часть отдать команде разметчиков, провалидировать гипотезу, а потом пилить автоматизирующий процесс, если в этом будет необходимость.

Самый вопиющий для меня случай (я не знаю, насколько это правда) — это система турникетов в метро Питера 👨‍🦳. Дело в том, что петербуржский подорожник хранит информацию об оставшемся балансе денег. И в момент отработки с турникетом — просто списывает необходимую сумму денег. Как я понимаю, в этот момент может вообще не происходит коннекта к БД, хранящей инфу про карточки. Таким образом достигается быстрота взаимодействия.

Та же система в московском метро работает немного иначе. Тройка — просто идентификатор баланса в БД. А потому при проходе турникета, тот должен сходить в БД, совершить транзакцию списания, а потом вам открыть путь в подземный мир. Это медленнее, чем подорожник.

И казалось бы, подорожник круче тройки 🤨? Ну не совсем. Больше всего меня бесит то, что я не могу пополнить подорожник удаленно. Ну т.е. как бы могу, но потом мне нужно приложить карту к специальному валидатору (т.е. не к любому), чтобы деньги "зачислились" на карту. Ну и это бред. Ради быстроты (оптимизация времени работы), а скорее всего еще супер быстрой реализации (оптимизация бюджета и времени разработки) мы лишаемся очень важной пользовательской фичи.

Мораль: не переоптимизируйтесь.😍
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥51
🤣46🤓61👍1🤡1
Выпускной ИТМО🍷

Ребята из ИТМО позвали к себе на выпускной сегодня. А ребята из Яндекса позвали на этом выпускном поотвечать на вопросы про стажировки.

Было круто, мне понравилось общение! Раздали 100500 панамок, стикеров и прочего.

Ко мне подходили и ребята с опытом, и желающие пройти стажировку. Поотвечал на вопросики с удовольствием !

Часть ребят уже была моими подписчиками, что приятно❤️

А так я напоминаю, что нанимаю к себе в команду. Ищем ребят опытных, а также стажёров! Если интересно, пишите в личку, отвечу на все ваши вопросы☺️
Please open Telegram to view this post
VIEW IN TELEGRAM
20🤝3🔥1
Исследование профессионального ML-cообщества

Между постами хочу помочь ребятам из Центра научной коммуникации ИТМО провести опрос для MLщиков. Далее из самого опроса цитата:

Его цель – узнать больше о том, как устроено пространство профессиональной коммуникации, экспертиза и рынок труда в этой сфере.


Пройти опрос можно здесь. Ребята обещают выложить результаты опроса в открытый доступ, буду пинговать их, чтобы они сдержали своё обещание 👍.
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2
Зона отвественности

У меня случился мини-отпуск в рамках которого я очень много рефлексировал на тему смены зоны отвественности при переходе с позиции разработчика в руководителя 😫. И по ощущениям она и правда выросла очень и очень сильно.

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

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

Ну и самое неочевидное — это принятие решений. Вот в роли разработчика ты такой думаешь: "да чо там думать, нужно делать так". А сейчас уже не так: "А почему мы хотим делать так? Как мы поняли, что хотим это делать? А мы уверены? А почему?". Возможно, у меня случился дикое накручиванием ситуаций, но с другой стороны как будто бы это полезные вопросы для любой роли 👍.

Обо всех этих планах думать — очень сложное, но интересное упражнение. Если раньше я думал, что так не могу, то сейчас уже чот да получается 👨‍🦳.
Please open Telegram to view this post
VIEW IN TELEGRAM
23👍10🔥5😐1
Немного рекомендаций

Меня всегда вдохновляют какие-то крупные и нетривиальные истории, где люди находят интересные решения ☺️. Я сам проходил через такое несколько раз, когда ты как безумец веришь в свою идею, идёшь до конца достаточно много времени, а потом получаешь что-то действительно классное и удивительное, хоть и не всегда самое лучшее.

Одна из таких историй в этом году была описана в посте Антона, где он участвовал в соревновании по расшифровке древних свитков, уничтоженных Везувием 👨‍🦳, и даже смог там себе отхватить промежуточный приз! Ну вы только подумайте, 8 месяцев с какой-то переодичностью копаться в очень плохих и непонятных данных, чтобы найти что-то, что никому не известно. Начать ради этого немного учить язык 🤔... Ну это нужно обладать каким-то упорством.

А вообще в его канале Generative Anton очень много прикольных штук написано не только про соревнование, а иногда про какие-то новости, про жизнь, про достижения (например, относительно недавно запилили своего чат-бота в амазоне для помощи разработчикам). Ну и много мемов, как полагается 😀! Так что рекомендую его канал к прочтению!

А вообще мы с ребятами запилили целую папку авторских телеграм каналов в сфере AI/ML/DS — Авторский ИИ, где каждый старается писать интересные вещи, окружающие его. Приходите читать!😍
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5💩31
Сижу я значит сейчас, работаю и никого не трогаю. Думаю про себя, что кушац хочу капец как 😊, надо уже собираться домой и там поесть. Вдруг откуда не возьмись в комнату забегает девушка и говорит:
— Парень, пицца не интересует?
— А чиво за пицца 🤔? Откуда?
— Да у нас тут туса была, вот не доели.
— Давай!

И всё, девушка оставляет коробку от додо и убегает. Я думаю, ну там пару кусочков дали наверное, заглядываю в коробку — а там целая пицца, все кусочки 😍! Вот и я думаю: это намёк свыше, мол куда собрался 🤨? Или благодать за плодотворную работу на этой неделе ☺️? Пу-пу-пу...
Please open Telegram to view this post
VIEW IN TELEGRAM
45😁9🔥8🐳5👍2🌭2🤨2
Хотел пойти погулять, но дождь оказался быстрее 😳. Поэтому решил размять пальцы рук и потапал кабанчика 🤓.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣15😢4🔥1
OCR для мемов с текстом на русском

На прошлых выходных выдались свободные часы посидеть над проектом про поисковик для мемов (да-да, админ много отдыхает, ему полезно). Мне нужно каким-то образом прокачать OCR для 110к картинок. Я думал, что это простая задача... Как результат — просчитался, но где? 👨‍🦳

Мой план был надёжным, как швейцарские часы: берём open source решение и гоняем его на картинках 🔼. В качестве претендентов были два известных мне решения: EasyOCR и PaddleOCR. Оба фреймворка рекомендуют в любом MLном чатике как бейзлайн для "попробовать OCR" 🤓.

Попробовал — погрустил. Оба решения прям очень плохо работают на мемасных шрифтах. Или я всё-же где-то накосячил в конфигурациях? При этом если гонять на картинках, где классические шрифты, по личным ощущениям, EasyOCR держит лидерство среди двух 🌿, а так в целом оба что-то внятное выдают.

В проприетарных решениях что Яндекс, что Гугл выдают хорошее качество 😍. Думаю, кого забросать запросами... Главное, не начать ддосить. Иначе сам огребу 😊.

Или же может вы знаете какое-нибудь альтернативное решение?
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5🤔3
Реальная фотография или фотошоп?
🔥16😁9🐳1