STACK MORE LAYERS
2.13K subscribers
76 photos
14 videos
3 files
158 links
Еще один канал в твоем списке, который ты не будешь читать
Author: @alxmamaev
Download Telegram
💻 Про мою работу💻

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

С первых статей на хабре мне очень понравился этот ваш машин лернинг, и я захотел им заниматься.
Сначала это было в рамках небольших соревнований, попыток крутить sklearn и xgboost, потом был keras, немного tensorflow, pytorch и все с ними.
Моя первая и последующие работы были связаны с исследованиями, но настоящие исследования (как их делают писатели пейперов), я делать не умел. Я примерно понимал принцип: генерируем идею, имплементируем, проводим точный эксперимент, сравниваем метрики, делаем выводы.

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

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

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

Так меня два раза наняли под видом ресерчера, а по итогу как из троянского коня выскочил ML/SE инженер, в итоге я заметил как мне стало горяздо интереснее работать (ведь я теперь в байтах копаюсь, а не в том как лосс упал), так еще и со стороны сразу заметен мой вклад, который сложно кем-то заменить.

Самый главный и полезный навык который я нашел в себе, и который полезен в этой работе, не бояться залезть в самые глубины. Нет нужной имплементации attention layer'a для вашей диффузии? Не беда! Напишем на куде, основываясь на парочке примеров из интернета.
Не работает конвертер onnx->tensorrt? Да он нам и не нужен! Напишем сетку c нуля на network api!
Есть имплементация LLM на плюсах, но нет стриминга? Не беда, пошурудим с тредингами и мьютексами, и что-то да соберем.

В общем не бояться сложностей -- это самое главное.

Такие дела
Please open Telegram to view this post
VIEW IN TELEGRAM
68👍33🔥11👏1🤡1
This media is not supported in your browser
VIEW IN TELEGRAM
📖 Читаем статьи правильно 📖

Пару недель назад ко мне пришел Денис @mixedenn с просьбой рассказать об их продукте. Рекламу я не даю, но о хороших вещах рассказваю, если они мне самому показались интересными. Я потратил какое-то время чтобы попользоваться их продуктом, отловил пару багов, отрепортил и теперь на правах абсолютно бесплатной и бескорыстной интеграции расскажу и вам.

Денис вместе со своей девушкой запустили synthical.com - по сути это то, как они видят идеальную читалку для статей. Это и удобный поиск, тренды, поиск похожих статей (с помощью хороших эмбеддингов), а так же встроенная LLM которая поможет вам объяснить определенные части статьи, которые вы не поняли.

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

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

В общем желаю успехов этому проекту!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍252
💸 За что мне платят деньги (Часть 2) 💳

Я уже писал ранее, что в посоедний год большую часть моей работы составляет далеко не ресерч, то есть у меня нет необходимости постоянно мониторить каждую новую статью, ставить какие-то эксперименты и следить за лоссами. Все что я делаю, это заставляю модели работать в продакшене - и в конечном итоге зарабатывать деньги, желательно с высоким КПД.

В это входит и переписывание моделей на более быстрые фреймворки и профайлинг и прочее. И вот не так давно я реализовал для нашей системы стриминг для нашего TTS. То есть когда пользователь может получать кусочки сгенерированного аудио по ходу генерации, не дожидаясь генерации целой аудио дорожки.

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

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

Важна и вторая метрика TTFB - time to firs byte, по сути как быстро пользователь начнет получать ответ, сколько он должен ждать, чтобы получить первый чанк. В целом и обычный прогон сети можно назвать стримингом, просто чанк большой и ждать его долго, а хочется поменьше и побыстрее, желательно меньше секунды, а вообще хорошо за 300 мс.

Настраиваю систему, запускаю тесты и вижу - 4 секунды... 🚬
Ну это вообще никуда не годится, стриминг с ожиданием в 4 секунды это какой-то прикол.

Начал копать в чем дело. Копал я на самом деле долго, но вам разложу сразу все карты на стол.

Первое что я нашел -- warmup. Для декодера оказался кретически важен прогрев. То есть если вы прогоните какой-то тензор через декодер в первый раз у вас это займет 2.1s а в третий уже 700ms. Причем зависеть это будет от размера вашего тензора, для нового размера warmup придется делать еще раз, чтобы замер был честным. Честно говоря я не до конца понимаю с чем связан этот процесс, предполагаю что это либо подрузка либо компиляция специфичных размеров кернелов под ваши входные данные, но да, модельку надо прогревать, прямо как Ладу в зимнее утро.

Кстати для стриминга прогрев оказывается достаточно простым, ведь чанки стриминга всегда поступают одного размера.

Урок уяснили, прогрели модель перед тем как делать тест, смотрим снова на метрики а там... 1.4s

Опять первый чанк уходит медленно, а все остальные улетают за 700ms, в чем беда?
С этим багом я копался дольше всего ставя различные эксперименты. В итоге причина нашлась.

Оказалось, что поскольку и генератор и декодер, хоть сидели в разных тредах, но были приаттачены к одному куда стриму и одной гпушке. В итоге когда генератор сообщал декодеру, что вот пора, чанк готов. Декодер вот вот собирался слать свои инструции на карточку, как его тут же опережал генератор и спамил своими инструкциями. Декодеру приходилось ждать когда же там генератор изволит отдать ему ресурсы GPU, прежде чем он сможет обработать аудио и вернуть его пользователю.

Странным образом разделение моделей на разные CUDA Stream проблему не решили, это я еще выясняю с чем связано. Зато проблему решил магический sleep, а именно, когда генератор понимает, что у него готов первый чанк, он из благородных побуждений к декодеру решает немного вздремнуть и уступить ресурсы GPU декодеру, спит он не долго всего 500 ms, но этого хватает чтобы сбалансировать систему.

Как итог - TTFB = 700ms 💪

Уменьшил lantency добавив sleep, вот за это мне и платят деньги
Please open Telegram to view this post
VIEW IN TELEGRAM
👍50🔥13❤‍🔥3
STACK MORE LAYERS
💸 За что мне платят деньги (Часть 2) 💳 Я уже писал ранее, что в посоедний год большую часть моей работы составляет далеко не ресерч, то есть у меня нет необходимости постоянно мониторить каждую новую статью, ставить какие-то эксперименты и следить за лоссами.…
😴 Я ЛЕНТЯЙ 😴

Ну реально, я буквально на следующий день после этого поста нашел решение гораздо лучше чем просто вставить sleep, которое изначально являлось костылем. Потому что стоит вам сменить систему или GPU где задержка того или иного треда поменяется, как ваши sleep'ы летят в тар-тара-ры, так случилось и со мной на следующий день, когда я протестировал это решение не на A100, а на A10.
Пришлось все таки искать правильный подход.

И после некоторых поисков я таки откопал вот такую презентацию. Где буквально говорится, что не важно как много у вас стримов, в CUDA есть четкая установка: НИЧТО И НИКОГДА не может перекрывать Stream 0, то есть стандартный стрим. А это значит, что если у вас есть два потока, один идет на stream 0, а второй на custom stream, то они никогда не будут идти параллельно, такая уж условность заложена. То есть cuda 0 выступает как своеобразный GIL, который не даст вам сделать настоящий параллелизм.

Решение? Запускать обе модели в разных стримах, но чтобы ни один из них не был нулевым. И после этого все стало чики-пуки. То есть буквально как написано в презентации: CUDA operations must be in different, non-0, streams

А почему я лентяй? Да потому что не смотря, что я это нашел буквально на следующий день, писать пост мне было лень почти месяц.
Я там еще пару занятных штук откопал, кто знает, может нас ждет новогодний пост!
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍8😁4🔥3🤔3👌1
😎 Github by touch id 😎️️️️️️

Я давно слышал про такую штуку, но сейчас впервые попробовал. Вход через "pass keys", вот как гитхаб описывает, что это такое Passkeys are a password replacement that validates your identity using touch, facial recognition, a device password, or a PIN..

В общем секьюрити настройках Github можно добавить этот passkey и тогда на сайт можно будет заходить только прислонив палец.

💫 Магия 🪄
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🤯3
Общался вчера с HR одной крупной компании, меня спросили про мою локацию.
Im living in the Georgia now but moving to UK soon.

На что мне задали потрясающий вопрос: Рассматриваете ли вы возможность вернуться в США?
😁83🌚2🤔1
Я только что узнал что -40F = -40C


The Blue graph converts Celsius along x-axis to Fahrenheit on y-axis.
The Red graph converts Fahrenheit along the x-axis to Celsius on the y-axis.
🤯27🤡6🔥4👀2😱1
Forwarded from Надеждин@
Где можно поставить подпись? 🇷🇺✌🏻

Ниже — обновленный список регионов, в которых вы можете поставить подпись.
Узнать контакты сборщиков вы можете в телеграм-каналах или на сайте:
https://nadezhdin2024.ru/regions

Используйте «Надеждин Бот», чтобы получить адрес ближайшей точки сбора подписей:
@nadezhdin2024_bot

Республика Алтай
Архангельская область
Республика Башкортостан
Белгородская область
Республика Бурятия
Владимирская область
Волгоградская область
Вологодская область
Воронежская область
Забайкальский край
Ивановская область
Республика Ингушетия
Иркутская область
Калининградская область
Калужская область
Республика Карелия
Кемеровская область
Кировская область
Краснодарский край
Республика Коми
Костромская область
Курганская область
Курская область
Ленинградская область
Липецкая область
Республика Марий Эл
Москва
Московская область
Нижегородская область
Новгородская область
Новосибирская область
Омская область
Орловская область
Ростовская область
Рязанская область
Санкт-Петербург
Самарская область
Саратовская область
Свердловская область
Ставропольский край
Пензенская область
Пермский край
Псковская область
Приморский край
Тамбовская область
Республика Татарстан
Тверская область
Тульская область
Томская область
Реуспублика Тыва
Тюменская область
Ульяновская область
Хабаровский край
Челябинская область
Республика Чувашия
Ярославская область

Собрать идеальные 100 000 подписей мы сможем только с вашей помощью.
Мой телеграм-канал:
https://t.me/BorisNadezhdin
👍20💩19🤡3
Попытка номер два. Сходите поставьте подпись, это не сложно.
Оказывается в Тбилиси тоже есть точка сбора подписей, сегодня тоже пойду поставлю
👍28💩19🤣5❤‍🔥2👎2🤡2💅2🌚1
Друзья, извиняюсь что приходится быть агитатором, но такая уж ситуация, что болит душа за страну.
Не обижусь если проигнорируете, но очень порадуюсь, если вы расскажете вашим друзьям в США, Турции, Германии, Грузии, Франции, Армении и Тайланде, что у них тоже есть возможность поставить подпись за выдвижение. Особенно важны люди с НЕ МОСКОВСКОЙ пропиской.


https://nadezhdin2024.ru/addresses

Тайланд собирается отдельно: https://t.me/ZOV_OP/4210

Спасибо за внимание.
P.S. За неделю собрано больше половины подписей
👍33💩247🤮4🤬2🤡2👎1
Forwarded from Надеждин@
Media is too big
VIEW IN TELEGRAM
Мы открыли точку сбора в Белграде ✌🏻

И там уже собрались наши сторонники! ❤️

Друзья, мы очень ждем подписантов с региональной регистрацией. Обязательно приходите с внутренним российским паспортом.

Поставить подпись в Белграде можно по адресу:
Белград, Маршала Бирјузова 9

Сегодня точка работает до 18:00, в остальные дни — с 14:00 до 22:00.


Список всех заграничных точек сбора мы опубликуем в ближайшее время.
💩20👍18🔥7🕊6🤡6
Разбираемся с cuda kernels без скуфизации.

Если вы когда то начинали разбираться с cuda kernels то знаете - чаще всего речь про голый C, без встройки кода в pytorch ради которого и имеет смысл что то делать(если вы ds)

Вот курс который я сам начал смотреть недавно, понятно и подробно от человека который pytorch на работе пишет.


канал
repo
5🔥3
Я в ахуе
🕊68😢23🤯11🤷‍♂2👍2😡2😁1
Алексей Навальный без преувеличения важный для меня человек. Именно он заставил меня когда-то ещё школьника заинтересоваться политикой, понять как устроена жизнь в нашей стране, понять, что в ней происходит, почему так, а не иначе.
Причем произошло это в достаточно интересный период, Навального в основном знали в Москве и оппозиционных кругах, в Челябинске люди о нём в основном ничего не знали. Это было ещё до расследования о Димоне, но где-то после Чайки.
Я спрашивал у знакомых знает ли кто-то о таком человеке как «Навальный», мне лишь пожимали плечами - нет.
А я продолжал за ним следить, как неожиданно после расследования о Медведеве, он стал на слуху буквально у всех.

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

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

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

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

Герои храбрые, и сильные, а не жалкие и трусливые.

Будьте маленькими героями, приходите на выборы 15 17 Марта, голосуйте как велит сердце, можете проголосовать за кого угодно, или испортить бюллетень, написать имя Навального, что хотите, главное не за Путина.
Приходите в 12 дня на избирательный участок, так хотел сам Алексей.

Чтобы проголосовать не по прописке или за границей, зайдите на гос-услуги и в поиске выберите «смена избирательного участка». С собой нужен действующий паспорт гражданина РФ
91💩20🤡14💔7👍3🤮3💘2
Стоит вспомнить, что этот канал, не смотря на все невзгоды, все ещё про технологии.

В нашу «редакцию» пришло письмо, от @kopyl с просьбой рассказать про его проект, рассказываем.

Генератор иконок для дизайнеров, как утверждает сам автор - SOTA
Скачать модельку тут: https://huggingface.co/kopyl/ui-icons-256

https://civitai.com/models/327499
👍8👌3
Daily reminder

17 числа, 12:00 - ближайший к вам избирательный участок.
Я ставлю подпись за Даванкова, ради этого даже не лень поехать в соседнюю страну, ибо в Грузии голосовать нельзя, ну и вы не поленитесь.

Всех жду
44🤡19🔥6🤮4😁3👍1😢1