Интересное что-то
546 subscribers
2.77K photos
253 videos
140 files
4.57K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.iss.one/asisakov_channel
Чат: https://t.iss.one/youknowds_chat
Download Telegram
Forwarded from partially unsupervised
Досталась мне на работе система, за которую до недавних пор отвечал умный, но неопытный PhD. Задача по сути сводится к text classification, внутри некий трансформер и все по классике: много кастомного, вычурный оптимайзер, дубликаты в данных и так далее. И, конечно, все надо улучшать - от точности до скорости.

В комплекте с системой полагался въедливый коллега, который с радостью согласился пойти разгребать авгиевы конюшни датасетов. А я взялся за инженерную часть. Кое-какая инфраструктура уже была: тесты, CI, обучение в докере - до этого мы с другим коллегой занимались переносом этого хозяйства из jupyter ноутбуков во что-то воспроизводимое. Так что надо можно было более или менее смело лезть в сам training pipeline.

Обучение занимало ~10-11 часов на одной A100, что в целом приемлемо, но, судя по низкой нагрузке и CPU, и GPU, можно было сделать лучше. Перенес часть препроцессинга из __getitem__ в __init__, избавился от pandas, выкинул лишние данные из памяти, что-то закэшировал, увеличил количество воркеров для датасетов, увеличил батчи - и GPU стала загружаться на ~95-98%, а обучение стало втрое быстрее. С такими скоростями уже можно быстро итерироваться.

Основная модель весила больше гигабайта. Я посмотрел на граф и обнаружил, что больше половины весов - это жирная мультиязычная embedding матрица инпута. Пошел в Athena и добыл неразмеченный датасет вида SELECT * FROM DATA WHERE THINGS ARE NOT LIKE FULL GARBAGE LIMIT OVERDOHOOYA, прогнал его через токенайзер, подтвердил гипотезу, что реально используется <50% токенов. Значит, можно переучить токенайзер и заменить эмбеддинг слой на значительно меньший, предварительно скопировав предобученные веса полезных токенов. Это уменьшает размер модели примерно до 60% от оригинального (правда, без заметного эффекта на скорости инференса). Потребление памяти важно для рантайма, ведь можно держать в памяти одного инстанса больше моделей, там как раз был боттлнек.

Кстати, раз у нас есть большой неразмеченный датасет, это звучит как повод устроить pretraining. Адаптировал masked language pretraining пайплайн с huggingface 🤗, и оставил новую, уже уменьшенную модель учиться на недельку. И, наконец, заменил дефолтные веса в основном пайплайне на результат претрейна на этом неразмеченном датасете. Это не только улучшило точность (на разных тестовых датасетах от 10% до 20%) и вторичные метрики вроде калибровки, но и ускорило сходимость, т.е. можно безболезненно уменьшить количество эпох еще на треть.

Итого: за пару недель работы обучение ускорено, потребление памяти упало, точность выросла. Важно подчеркнуть, что ничего из перечисленного не содержало никаких сложных алгоритмов. Если ты не OpenAI, то просто нормально делай - нормально будет.
Forwarded from MarksRemarks (Mark Baushenko)
Recommender_System_(Movie).pdf
4 MB
#ml_system_design
Одним из важных этапов при отборе кандидатов в Big Tech является ML System Design интервью. По своей структуре оно очень похоже на обычное System Design интервью, но с уклоном в сторону ML. Вас попросят спроектировать AI продукт начиная с определения источника данных и заканчивая проведением A/B тестирования.

Сегодня разберем Recommender System (Movie) 🎥🎬

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

Продожение в файле 📁

🎁🎁🎁🎁🎁
Please open Telegram to view this post
VIEW IN TELEGRAM
#приёмы
В старом посте я описывал приём AV: решение задачи разделения обучения и теста позволяет понять
1) какие признаки стабильны,
2) как отобрать обучающую подвыборку максимально похожую на тест.

Из того, что я тогда не сказал, но это полезно:
1) логично встроить AV в процедуру отбора признаков (чтобы отбиралось не просто подпространство с высоким качеством решения, но и стабильное),
2) когда нет теста (а его на практике часто и нет) можно разбить объекты по времени (странно, но при решении прикладных задач это делают очень редко),
3) из нестабильных признаков часто получаются хорошие стабильные, причём с помощью простых приёмов (например, доход клиента делим на медианных доход в этом месяце). Поэтому AV можно встроить и в генератор признаков;)
Forwarded from Записки MLEшника (Egor)
По наводке коллеги прочитал годную статью по библиотеке requests.

Чего полезного умеют:
1. Можно задать базовый URL, а дальше передавать только путь до ресурса. Почему я об этом узнал только сейчас? 🥲
2. Можно проверить, что запрос отработал без ошибок (400ые и 500ые статус кодов). Если ошибка, то поднимается питонячее исключение. Если хочется, то есть возможность сделать такую проверку автоматической на каждый ответ через хуки.
3. Хуки 🙂. Получается, можно вешать выполнение любого вашего кода на все запросы, ответы и др.
4. Выставлять ретраи на определённые коды ошибок. При том время повторных запросов экспонентально увеличивается. По умолчанию делается 10 ретраев без какой-либо задержки по времени 🙈
5. Как мокать ответы при написании юниттестов.


Крч, годная и к тому же весьма короткая статья. Рекомендую к прочтению.
Forwarded from Complete AI (Andrey Kuznetsov)
🔥 Scalable Diffusion Models with Transformers

Вчера вышла интересная работа от ребят из UC Berkeley и NY University про комбинацию диффузии и трансформеров (Diffusion Transformers или DiT).

Ребята заменяют U-Net на трансформер и работают с патчами в латентном пространстве. DiT-XL/2 превосходит все class-conditional диффузионные модели на ImageNet 512x512 и 256x256 бенчмарках и достигает FID=2.27 для низкого разрешения. Более вычислительно тяжёлые DiT позволяют генерировать сэмплы очень высокого качества.

статья
гитхаб
колаб

@complete_ai
Forwarded from Пресидский залив (Nadia ズエバ)
⚡️ open close openai расщедрились и релизнули свой трансформер для voice tech задач в opensource!

Основное — это конечно английский asr, но также и много другого, например any-to-english translation. Тут нет явного рокетсаенса, но зато есть веса, обученные на огромном датасете, которые можно скачать прямо сейчас, что как мне кажется еще лучше 😎

Почему это круто?
На мой взгляд самая интересная часть это энкодер, который можно вытащить из пайплайна и использовать как устойчивый к различным трудным данным feature extractor. Разработчики говорят, что учили модель на почти 700k данных, среди которых были очень разные примеры — и с акцентами, и с шумами, и просто музыка. Отдельная боль в ASR — это когда из бекграунд музыки распознаются рандомные слова иногда нехорошие 🙃 то есть можно дофайнтюнить энкодер, а дальше поставить что угодно — от классификатора до voice conversion.

Полная модель с декодером тоже очень интересна — особенно, если вы не делаете бенчмарк на LibriSpeech, а работаете с клиентскими данными, которые часто содержат большое число шумов, акцентов, или даже пение и музыку (откройте демку, там будет k-pop🕺🏻). Сказано, что на таких данных модель по качеству лучше на 50% — как именно подсчитали эту цифру, правда, я не нашла 💁🏻‍♀️

В репозитории есть несколько конфигураций модели, как это было с GPT-семейством, от tiny c 39M до large c 1550M параметров, которая вполне может подойти для дистилляции или kaggle-соревнований.

Кроме того, судя по демо, Whisper сразу делает расстановку знаков препинания. Base (вторая по величине модель) весит всего 140 мб, так что если убрать все ненужные части (или даже декодер), останется очень приятный размер, который вполне можно использовать на разного рода девайсах. Круто, желаю openai больше таких прикладных проектов 🌚

Подробнее читать тут
#tech
Forwarded from Борис опять
На днях друг попросил помочь поторговаться за зарплату. Вот что получилось.

Дано:
* Оффер на Аналитика, 150к руб, большой Телеком.
* Оффер на ML инженера, 150к руб, небольшая техкомпания в мутной сфере, назовем ее Смолтех.
* Назревающий оффер на ML инженера в Бигтех, куда больше всего хочется.

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

Предложил такую стратегию:
1. Собираем свои причины торговаться. Определяем для себя зачем нам деньги. Например: надо переезжать, кризис, нужны вложения. Встаем в положение “у меня нет выбора, кроме как принять решение в пользу лучшего предложения”.
2. Относим оффер Смолтеха в Телеком и говорим: у Смолтеха интереснее работа, а деньги такие же, но я хочу к вам, потому что у них мутный сектор, и, если вы поднимете оффер, то это станет решающим.
3. Телеком скорее всего поднимет оффер примерно до 170к.
4. Берем новый оффер от Телекома и несем в Смолтех. Говорим: Телеком предлагает больше денег, и сектор не такой мутный, но у вас интереснее работа и в целом больше хочется к вам.
5. Они скорее всего поднимут еще выше.
6. При любых обновлениях офферов сразу скидываем их в Бигтех: апдейт по ситуации.
7. Когда офер в Бигтехе дозреет, он скорее всего будет выше обоих. Конечно же говорим, что больше всего хотим к ним.
8. Повторяем действия до тех пор, пока все не скажут “нет”.

Как все обернулось:
1. Телеком поднялся до 165к увидев оффер от Смолтеха.
2. Смолтех поднялся до 180к.
3. Бигтех поднялся до 187к после налогов, плюс все корпоративные бонусы, которые можно оценить еще в примерно 10к.
4. Телеком и Смолтех отказались поднимать выше.

В итоге подъем почти на 25%!
Как выучить Python в 2023 году — свежая дорожная карта от комьюнити.

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

В хорошем качестве можно глянуть тут.