Интересное что-то
625 subscribers
2.8K photos
255 videos
143 files
4.66K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.me/asisakov_channel
Чат: https://t.me/youknowds_chat
Download Telegram
Forwarded from Dealer.AI
Балалайка, березка, Matryoshka.

Выпустили концептуальный гайд по эмбам матрехи на hf. Красивые картиносы матрех и схемы, концепты теории и примеры на sentence-transformers.

Ну че тут рассказывать? Все просто берем embs и вдоль dim нарезаем по нарастающей, сводим саб эмбы и эмбы в конвеере metric learning на нужной датке в NLI, STS или qa задачках. Хочешь сводишь все на одном и том же, хочешь каждому эмбу из нарезки сообщаешь свою таску.

В чем польза?
1. Меньше индекс - на поверхности.
2. Возможность строить быстрые каскадные пайпы ранжирования. Преранк, например, на full index с маленьким эмбом (так быстрее), далее сложные примеры на more big эмбах, итоговый реранк в топ1 на жирнючем.

Код в блоге присутствует. Поэтому дерзайте.
Forwarded from Start Career in DS
🐈 CatBoost - супер удобный градиентный бустинг
Градиентный бустинг
- это техника машинного обучения для задач классификации и регрессии, которая строит модель предсказания в форме ансамбля слабых предсказывающих моделей, обычно деревьев решений.
Каждая следующая модель в ансамбле уменьшает ошибку предыдущей модели


Про то, как работает градиентный бустинг можно почитать, например, в статье с обзором ансамблей машинного обучения или в хендбуке от Яндекса. Одна из самых лучших библиотек для градиентного бустинга над деревьями решений – CatBoost. С этой библиотекой побеждают в соревнованиях на kaggle, она используется для решения задач классификации в крупных компаниях

Её преимущества:
– Встроенная обработка категориальных данных (их не нужно предобрабатывать, просто выставить гиперпараметры)
– Уменьшенный риск переобучения
– Высокая скорость работы и эффективность на больших объемах данных
– Встроенная обработка пропущенных значений
– Классная визуализация

Чтобы разобраться с этой библиотекой, стоит:
– Почитать официальную документацию
– [ENG] Посмотреть тетрадку с обзором катбуста
– Почитать статью про катбуст
🦖[ENG] Посмотреть видео от StatQuest (часть 1 и часть 2)
🌶 Посмотреть видео от Computer Science Club

Ставьте огоньки 🔥 под этим постом, и пишите в комментариях, про что написать ещё)
Forwarded from Время Валеры
Пацаны из Майкрософта выпустили самую обсуждаемую статью месяца The Era of 1-bit LLMs:All Large Language Models are in 1.58 Bits
Пока остальные кряхтели и пытались отквантовать числа до 4 бит с большими потерями или до 8 бит с небольшими, челы из МС зашли с ноги: любой вес будем представлять как трит - 1.58 бита {-1; 0; 1} и покажем как это сделать не теряя перформанса! It matches the full-precision (i.e., FP16 or BF16) Transformer LLM with the same model size and training tokens in terms of both perplexity and end-task performance

Так же пишут: More profoundly, the 1.58-bit LLM defines a new scaling law and recipe for training new generations of LLMs that are both high-performance and cost-effective. Шортим Нвидию? Теперь вместо умножения - просто складываем (ведь умножение на 1, 0 или -1 это просто плюс, минус или пропуск). The new computation paradigm of BitNet b1.58 calls for actions to design new hardware optimized for 1-bit LLMs.

Что делают? Повторяют BitNet, то есть трансформер где nn.Linear заменен на BitLinear (ниже будет пост с описанием). It is trained from scratch, with 1.58-bit weights and 8-bit activations
Чтобы веса держать в диапазоне -1, 0, 1 - накидывают absmean quantization function (про нее тоже в посте ниже)

И это все
Результаты в посте ниже

Дальнейшее чтиво
https://t.me/hn_best_comments/21227
#ArticleReview
Neural Network Diffusion
Kai Wang, Zhaopan Xu, Yukun Zhou, Zelin Zang, Trevor Darrell, Zhuang Liu, Yang You
Статья: https://arxiv.org/abs/2402.13144
Код: https://github.com/NUS-HPC-AI-Lab/Neural-Network-Diffusion

Диффузионные модели сейчас рулят, создавая прекрасные картинки и не только. Авторы предложили, что они могут генерить и параметры нейросетей. Вообще, мне кажется, они изобрели hypernetwork (писали про них тут https://t.me/gonzo_ML/1696) через диффузию.

Для тех, кто не знает как работают диффузионные модели, совсем в двух словах и на пальцах. Прямой диффузионный процесс получает на вход картинку (вместо картинки может быть любой другой сигнал) и последовательно шаг за шагом добавляет в неё шум, пока она не превратится в совсем шумный сигнал. Прямой диффузионный процесс не очень интересен, интересен обратный -- он получает на вход шум и последовательно его убирает, “открывая” (создавая) скрывающуюся за ним картинку (как бы делая denoising). Примеры диффузионных моделей мы разбирали в лице DALLE 2 (https://t.me/gonzo_ML/919) и Imagen (https://t.me/gonzo_ML/980).

Обучение нейросети через SGD идейно похоже на обратный диффузионный процесс: стартуем с рандомной инициализации и последовательно обновляем веса, пока не достигнем высокого качества на заданной задачи. Свой подход авторы назвали neural network diffusion или p-diff (от parameter diffusion).

Идея и реализация просты и по-своему красивы.

Во-первых, мы собираем датасет с параметрами нейросетей, обученных SGD и обучаем на нём автоэнкодер, из которого потом возьмём latent representation (можем это делать не на полном наборе параметров, а на подмножестве). Вторым шагом мы обучаем диффузионную модель, которая из случайного шума сгенерит latent representation, который в свою очередь через декодер обученного на первом шаге автоэнкодера мы восстановим в сами веса. Теоретически можно было бы и обучить диффузию на самих весах сразу, но это требует сильно больше памяти.

Для автоэнкодера параметры преобразуются в одномерный вектор, также используется одновременная аугментация шумом входных параметров и латентного представления. Обучение диффузионной модели -- это классический DDPM (https://arxiv.org/abs/2006.11239). Использовались 4-слойные 1D CNN энкодер и декодер.

Проверяли на картиночных датасетах MNIST, CIFAR-10, CIFAR-100, STL-10, Flowers, Pets, F-101, ImageNet-1K и на сетях ResNet-18/50, ViT-Tiny/Base, ConvNeXt-T/B.

Для каждой архитектуры накапливали 200 точек для обучения (чекпойнты последней эпохи). Я не до конца уловил, что именно они сохраняли, говорят про два последних слоя нормализации (только параметры BatchNorm’а чтоли?) и фиксированные остальные параметры. В большинстве случаев обучение автоэнкодера и диффузионки требовало 1-3 часа на одной A100 40G.

На инференсе генерят 100 новых параметров, из них оставляют один с максимальным перформансом на training set, его оценивают на validation set и этот результат и репортят.

В качестве бейзлайнов выступают 1) оригинальные модели и 2) ансамбли в виде усреднённого супа файнтюненных моделей (“Model soups: averaging weights of multiple fine-tuned models improves accuracy without increasing inference time”, https://arxiv.org/abs/2203.05482).

Результат в большинстве случаев не хуже обоих бейзлайнов. То есть выучивается распределение high-performing параметров. Метод стабильно хорошо работает на разных датасетах.

Провели много абляций на ResNet-18 + CIFAR-100.

Чем больше моделей было в обучении, тем лучше. Метод генерит более качественные модели для слоёв на любой глубине. При этом на последних слоях результат самый высокий (предполагают, что это из-за меньшего накопления ошибок во время forward prop). Аугментация шумом в автоэнкодере очень важна, особенно для латентного состояния (а лучше одновременно и для входа тоже).

Это всё было для подмножества весов. Проверили также на генерации полного набора весов на маленьких сетях MLP-3 и ConvNet-3 и MNIST/CIFAR-10/100. Размеры сетей здесь 25-155к параметров. Также работает.
Большой пост про большой контекст

Размер контекста в современных моделях (то максимальное количество токенов, которое они могут переварить за один раз) неуклонно растёт. Сначала переход от двух или четырёх тысяч токенов к восьми казался большим достижением. Потом появились модели до 32k токенов, но они долго были ограниченно доступны, а когда вышли в массы, оказались уже безнадёжно устаревшими, потому что у одного из лидеров индустрии (Anthropic) были уже модели со 100k. Теперь лимиты публичных моделей в районе от 128k (GPT-4 Turbo) до 200k (Anthropic). Гугл отставал в этой гонке, его публичные модели максимум покрывали 32k (специальные версии PaLM 2 и все версии Gemini 1.0). Прорыв наметился с Gemini 1.5 (https://t.me/gonzo_ML/2350), у которой по дефолту те же типовые нынче 128k, но есть непубличная версия с 1M токенов, и research версия с 10M.

Отдельный интересный вопрос, как именно добились такого большого контекста, который ещё и работает. Есть разные свежие заходы с различных сторон, например, LongRoPE (https://arxiv.org/abs/2402.13753), LongNet с dilated attention (https://arxiv.org/abs/2307.02486), RingAttention (https://arxiv.org/abs/2310.01889) или там недавно упоминавшийся RMT-R (https://t.me/gonzo_ML/2377). Интересно, что именно сделал Гугл.

Такие новые лимиты скорее всего очень сильно поменяют практики работы с моделями. Хочется немного порассуждать про это ближайшее будущее.

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

Всякие langchain’овские сплиттеры (https://python.langchain.com/docs/modules/data_connection/document_transformers/) режущие в основном по длине (ну с учётом более подходящих точек для разрезания в некоторых случаях) и раньше были УГ -- смотреть на эти порезанные абзацы без слёз было сложно, хотя как-то оно работало.

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

Ну то есть в некоторых случаях оно всё равно конечно нужно и может повысить качество решения, но это надо смотреть. Я в целом верю в end-to-end решения и вытеснение со временем большинства этих костылей.

2) 1M токенов это прям реально дофига, теперь в контекст можно засунуть много статей, целые кодовые репозитории или большие книги. А с учётом мультимодальности и способности современных моделей обрабатывать ещё и картинки, видео и аудио (путём преобразования их в специальные нетекстовые токены), зугружать туда часы видео или речевых записей.

С учётом того, что модели хорошо проходят (https://t.me/gonzo_ML/2351) Needle In A Haystack тесты (https://github.com/gkamradt/LLMTest_NeedleInAHaystack), можно получать вполне релевантные ответы при работе с такими длинами. Реально можно найти конкретный кадр в видео (https://t.me/gonzo_ML/2357) или момент в книге (https://t.me/gonzo_ML/2356). И решать совершенно новые классы задач. Меня, например, впечатляют кейсы, когда модели скормили видео со скринкастом решения задачи (поиск жилья на Zillow) и попросили сгенерить код Selenium для решешия этой же задачи (https://www.facebook.com/DynamicWebPaige/videos/1422440318698615). Или тот же перевод на/с языка Kalamang по загруженному учебнику грамматики (https://t.me/gonzo_ML/2355, про то же от Джеффа Дина: https://twitter.com/JeffDean/status/1758149033473020081). Да, там в реальности есть ещё словарь и 400 параллельных предложений, но всё равно, In-context language learning -- это очень круто. Как и ответы на вопросы по длинному документу.
Что такое СУБД Greenplum? Зачем она нужна в больших проектах DWH? Чем отличается от ClickHouse?

Читать статью
Forwarded from Fless (Victor Rogulenko @flesspro)
Как разрабатывать стратегии? Часть 1 из 2

Позавчера получили запрос "научите меня делать стратегии".
Самый правильный совет был бы
- Устройтесь в компанию, которая делает стратегии,
- В ней познакомьтесь с человеком, который круто их делает,
- Поработайте с ним на 3-5 стратегиях.

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

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

* [структура] *

Работа над стратегией распадается на 4 вопроса:

0/ Куда и зачем в целом двигаемся?
- Зачем мы вообще приходим на работу? (aka миссия)
- В каком состоянии мы хотим оказаться через Х лет? Каков образ будущего (aka яркое видение)
- Какую именно цель мы хотим достичь (aka громадная амбициозная цель, Big Hairy Audacious Goal)

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

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

1/ В каких условиях предстоит работать?
- Аудитория: Количество аудитории, как менялась во времени, разрез по возрастам и интересам в компании. Что она ценит в компании? Как меняются предпочтения? Чем мы лучше альтернатив?
- Клиенты: сколько платят, за какие услуги, как менялась выручка. Что хотят от нас?
- Конкуренты и альтернативы: кто они, сколько аудитории, сколько зарабатывают, чем отличаются? В чем сильнее и в чем слабее нас?
- Тренды: социальные, технологические, экономические. Какие они, как влияют на бизнес, как будут влиять? Как ими воспользоваться / защититься от них?
- Сценарии: какие варианты развития событий по каждому из пунктов выше мы видим? Как эти варианты подробно описать? Какие у каждого будут последствия? (Желательны не только количественно, но и качественно отличающиеся сценарии)

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

Здесь может пригодиться моделирование рынка на основе сценариев.

(-> Продолжение)

#casestudies

Fless
Forwarded from Fless (Victor Rogulenko @flesspro)
Как разрабатывать стратегии. Часть 2 из 2
(-> Начало)

2/ Как в этих условиях добиться успеха?

- Какие у нас есть сильные и слабые стороны?
- Какие у нас есть стратегические альтернативы?
- Какие альтернативы работают в каких сценариях? При каких условиях менять альтернативы?
- В какой базовый сценарий мы верим? Какую базовую альтернативу выберем?

Здесь стратегические альтернативы - как раз то, что принято называть стратегией в узком смысле: короткая формулировка принципов взаимодействия с миром. Известные примеры: "Wheels up" (Southwest Airlines"), "Flat-pack Furniture" (IKEA). Альтернативы стоит верхнеуровнево оценить для каждого из сценариев, а после выбрать оптимальную.

3/ Что конкретно нужно сделать, чтобы добиться успеха?

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

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

* [конец структуры] *

Постарался все самое значимое упаковать в пост. Мастером по разработке стратегий он, конечно, никого не сделает, но общее представление дать может.

Следующие шаги. Почитайте, например:
- "Good Strategy Bad Strategy: The Difference and Why It Matters" by Richard Rumelt
- "Playing to Win: How Strategy Really Works" by by A.G. Lafley, Roger L. Martin

#casestudies

Fless
Forwarded from Fless (Victor Rogulenko @flesspro)
Как помочь новому свершиться?

Нарисовали стратегию, а дальше? Дальше либо в ящик, либо куча сложной работы.

Заструктурировать ее поможет фреймворк Маккинзи. Конечно, есть еще 100500 деталей, но запихну в пост, что влезет.

[структура]

1. Объяснить
- Подробно рассказать об изменениях: что меняется, почему, почему это важно
- Убедиться, что команда поняла
- Вовлечь людей в принятие решений

2. Наладить процессы и механизмы
- Определить, кто, что и с кем должен теперь делать
- Создать релевантные KPI. Убедиться, что они не ломают лишнее (без экономии на качестве)
- Проработать нефинансовую мотивацию

3. Научить команду
- Убедить людей, что им под силу работать по-новому
- Вложиться в обучение, чтобы дать людям уверенность

4. Показать своим примером
- Нужен полный buy-in топ-менеджмента. Иначе все бестолку.
- Фокусировать свое время на проектах, связанных с изменениями
- Постоянно демонстрировать этот фокус и результаты

[конец структуры]

P.S. И не забывайте про Дилберта с картинки.

#casestudies

Fless
.
Раз архитектура — «as Code», почему бы её не покрыть тестами?! Руслан Сафин

Офигенный доклад, давно искал что-то подобное. Почему-то очень мало людей рассказывает, показывает примеры.
Идея одновременно проста и в то же время гениальна: берем конфиги деплоя, например k8s, берем архитектурную схему сервиса(ов) в plantuml, парсим их и сопоставляем связи. По итогу получаются тесты на архитектуру, которые следят за тем, чтобы архитектурные схемы были актуальны. Очень понравилось, что есть пример кода. Посмотреть можно вот тут


https://youtu.be/POIbWZh68Cg?si=RfF5wyWirfN5GVib