STACK MORE LAYERS
2.13K subscribers
76 photos
14 videos
3 files
158 links
Еще один канал в твоем списке, который ты не будешь читать
Author: @alxmamaev
Download Telegram
А вы знали что в названии Turkish Airlines буква "C" означаени cyber-security.

Я всякие требования к паролям повидал, но такое! Я представляю как они пришли к этой гениальной и умопомрачительной идее:

Слушайте, как-то много памяти мы тратим на эти пароли, придется выносить их хранения на отдельные сервера.

А может как-то сможем оптимизировать?

А давайте пользователей заставим вводить шесть цифр как пароль, тогда один пароль будет влезать в int32, 32 бита на один пароль! и сколько информации сэкономим!


-----------------
Блиц! Кто угадает парль по картинке? Есть 999999 попыток
😁14🤣5👍1
Продолжаю возиться с TensorRT для ускорения некоторых моделек

Заметил очень странное инженерное решение - указание оси по которой будет производится softmax с помощью битовой маски.

Я скорее всего полагаю почему так сделано, позволяет сделать трик с оптимизацией и устанваливать больше одного дименшена, но ведь никто не мешает сделать эту обработку в сеттере...

И вот мы получаем такие странные куски кода когда softmax.axes = 8 означает софтмакс по четвертой оси..


Ну конечно всегда есть вариант 1<<4, но читаемости это, прямо скажем, не добавляет
🥴10👍5
Спасибо гугл, на сегодня интернета достаточно
😁25🥰5🔥4👍21🤡1🌚1
Кажется это невероятная штука для того, чтобы пытаться разобраться в чужом коде на плюсах.

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

А тут вот сразу все готовенькое
🔥22🌚3
Продолжаю удивляться использованию chat gpt в разработке!

Я даже не особо представляю как бы я это вообще мог бы загуглить в теории. Наконец-то нашлось решение которое способно пояснить сокращения перемнных плюсовиков!
❤‍🔥24👍9🤯2🍌1
🤞 Скрестим пальчики, чтобы дальше не было проблем 🤞

Но кажется в этом году я переезжаю в UK 🇬🇧


You have requested that the decision not to endorse your application be reviewed. The Home Office forwarded your request to Tech Nation and it has reconsidered your application. It has advised that you meet its criteria for Exceptional Promise and I am therefore satisfied that you can be endorsed under the Global Talent category.
🔥68😎12🤡4👍1
Обожаю когда сталкиваются три титана: Нерды, алгоритмы и майнкрафт.
Вы могли никогда об этом не думать, но благодаря тяге людей к исследованию, теперь мы можем узнать ответ на этот вопрос.

https://youtu.be/jpi50LX2Qyk
🔥101👍1
💻 Про мою работу💻

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

С первых статей на хабре мне очень понравился этот ваш машин лернинг, и я захотел им заниматься.
Сначала это было в рамках небольших соревнований, попыток крутить 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