Интересное что-то
517 subscribers
2.72K photos
253 videos
139 files
4.52K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.me/asisakov_channel
Чат: https://t.me/youknowds_chat
Download Telegram
Forwarded from Data Blog
💥 Список библиотек для XAI

Хочу зафиналить год useful постом, который лежит у меня дольше, чем ..... ладно, просто долго!

💫Основные библиотеки для моделей ML (и DL)

LIME https://github.com/marcotcr/lime
— ELI5 https://eli5.readthedocs.io/en/latest/
— SHAP https://github.com/slundberg/shap
— DICE ML https://interpret.ml/DiCE/dice_ml.html#
— Pdpbox https://pdpbox.readthedocs.io/en/latest/

☄️Для моделей Deep Learning и LLM

* Captum (pytorch) https://github.com/pytorch/captum
* Anchors https://github.com/marcotcr/anchor
* DALEX https://github.com/ModelOriented/DALEX
* AIX360 https://github.com/IBM/AIX360
* ALIBI https://github.com/SeldonIO/alibi
* Quantus https://github.com/understandable-machine-intelligence-lab/Quantus
* OmniXAI https://github.com/salesforce/OmniXAI
* pytorch_explain https://github.com/pietrobarbiero/pytorch_explain
* DeepExplain https://github.com/marcoancona/DeepExplain
* Grad-CAM https://github.com/ramprs/grad-cam
* Integrated Gradients https://github.com/ankurtaly/Integrated-Gradients
* DeepLIFT https://github.com/kundajelab/deeplift
* interpret-text https://github.com/interpretml/interpret-text?ysclid=ldebiwr4jr824513795
* ExBERT https://github.com/bhoov/exbert
* ExplainaBoard (NLP) https://github.com/neulab/ExplainaBoard
* CARLA https://github.com/carla-recourse/CARLA

Никому не верьте, и всегда сомневайтесь в моделях!
Forwarded from Machinelearning
🌟 noise_step: алгоритм тернарного обучения без использования градиентной памяти.


Noise_step - экспериментальный концепт аглоритма, который позволяет обучать модели, оперируя 1,58-битной (тернарной) точностью, что снижает потребление электроэнергии и сокращает вычислительные затраты.

Noise_step обходится без обратного распространения ошибки, а также может работать параллельно с инференсом и хранит тернарные значения в бинарном представление, которое позволяет упаковать 5 тернов в 1байт.

Алгоритм оценивает градиент, используя произведение Якобиана на вектор возмущения, которые генерируются с помощью распределения Бернулли и равномерного распределения {-1, +1}. Для оценки градиента нужен только знак выравнивания, а не его величина. Чтобы улучшить сходимость, Noise_step отбрасывает возмущения со слишком маленькой величиной выравнивания.

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

Таким образом, модель можно представить как последовательность шагов, что кардинально уменьшает её размер. Теоретически, основываясь на расчетах, размер модели, подобной GPT-3 175B, можно уменьшить до 19MB.

Noise_step использует дискретные шаги из-за тернарного пространства, что добавляет шума в кривую обучения, но алгоритм сходится примерно как Adam, хотя и требует большего батч-сайза. Сходимость, аналогичная Adam, была подтверждена эмпирически на единственном прикладном эксперименте с простым MLP на наборе MINST и, очевидно, требует большей вариативности практических тестов.

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

⚠️ Обучение трансформерных моделей с noise_step пока остается отрытым вопросом, так как для этого необходимо написать ядро, в котором шум будет виртуализирован (генерироваться по мере использования).

⚠️ Для больших моделей с большим количеством шагов реконструкция становится непрактичной, поскольку каждый вес должен обновляться с учетом каждого вектора возмущений на каждом шаге. Полная реконструкция тернарной модели с количеством параметров 175B, потребовала бы примерно 10 в 19 степени операций.


🟡Исследование
🟡Google Collab простого MLP c MINST
🖥GitHub

@ai_machinelearning_big_data

#AI #ML #NoiceStep #TernaryPresision
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from КПД
Свободные рассуждения про оценку качества моделей

Земную жизнь пройдя до половины и очутившись в сумрачном лесу после двух с лишним лет прогона сжатых моделей на бенчах из lm-eval-harness я задался таки вопросом:
а что мы собственно замеряем таким образом?


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

Большинство бенчмарков относятся к одной из 2 категорий:
1️⃣ Likelihood запросы. Есть вопрос, варианты ответа и тот, у которого правдоподобие максимальное выбирается в качестве предсказания модели и сопоставляется с правильным.
2️⃣ Генеративные запросы. На основе некоторого промпта и инструкции модель генерирует ответ. Далее происходит парсинг и то, что удалось вычленить сопоставляется с тем, что надо.

👍 Likelihood запросы

К первой категории относится, пожалуй, большинство задач (ArcEasy, ArcChallenge (не тот Arc!), HellaSwag, Winogrande, MMLU, MMLU-Pro и многие другие). Достоинством такого подхода является дешевизна 💲 прогона, так как по сути достаточно одного прогона модели для получения вероятностей токенов ответа. При этом общий префикс можно переиспользовать для разных вариантов, т.к запрос имеет вид:

{условие}{вариант_ответа}

Где вариант ответа - обычно одно слово, а то и одна буква (в случае MMLU). Кроме того, проверить или истинность ответа можно однозначно.

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

Например, в MMLU шаблон имеет следующий вид:

{условие}
{вариант ответа - A}
{вариант ответа - B}
{вариант ответа - C}
{вариант ответа - D}
Правильный ответ: [A, B, C, D]


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

🧞‍♂️ Генеративные запросы

Данный вид задач (GSM-8k, BigBenchHard, IFEval, ArenaHard) гораздо ближе к реальным приложениям, так по существу представляет ту же самую авторегрессионную генерацию.

Основная сложность - в оценке ответов модели. В случае GSM8k/IFEval определены некоторые регулярные выражения, которые вычленяют ответ (скажем, решение математической задачи или выполнена ли требуемая инструкция), но ввиду высокой вариативности возможных ответов не всегда можно гарантировать обнаружение правильного ответа.

В AlpacaEval, ArenaHard судьей выступает другая LLM 🤖, но здесь приходится полагаться на качество судьи (который не совершенен) и имеет свои biasы, нюансы и предпочтения при оценке ответа. Кроме того, замеры стоят денег)

И в конце концов - LMSYS arena (и иные side-by-side comparison), где качество оценивают уже человеки. Такая стратегия оценивает широкий спектр способностей модели, и вроде бы ориентирована на конечного пользователя. Но таким образом можно оценивать уже конечную модель, а для промежуточных экспериментов выходит чрезмерно накладно. Кроме того, даже LMSYS хакается ввиду предпочтений пользователей к более длинными ответам, удовлетвоояющим некоторому формату.

Вывод

Оценка качества моделей - сложный вопрос, и цифры на бенчах могут служить лишь первым приближением при выборе LLMки для своих нужд. Окончательный выбор стоит делать исходя из целевой задачи, протестировав самому на релевантных примерах. А в идеале собрать собственный бенч и регулярно его обновлять. Рекомендую отличный пост от Игоря Котенкова на данную тему.
Forwarded from 皇帝
Cloud Based Load Balancing Solutions
AWS - Elastic Load Balancing (ELB)
Amazon ELB is a highly scalable load balancing solution.

It is an ideal solution for running on AWS, and integrates seamlessly with all of AWS services.

It can operate on 4 different modes:

Application (Layer 7) Load Balancer - Ideal for advanced load balancing of HTTP and HTTPS traffic

Network (Layer 4) Load Balancer - Ideal for load balancing of both TCP and UDP traffic

Gateway Load Balancer - Ideal for deploying, scaling, and managing your third-party virtual appliances.

Classic Load Balancer (Layer 4 and 7) - Ideal for routing traffic to EC2 instances.

For the full documentation on Amazon ELB and its autoscaling policies follow this link

GCP - Cloud Load Balancing
Google Cloud Platform Load Balancer is Google's highly scalable and robust load-balancing solution.

"Cloud Load Balancing allows you to put your resources behind a single IP address that is externally accessible or internal to your Virtual Private Cloud (VPC) network".

Some of the load balancer types available as part of the GCP Cloud Load Balancing are:

External HTTP(S) Load Balancer - Externally facing HTTP(s) (Layer 7) load balancer which enables you to run and scale your services behind an internal IP address.

Internal HTTP(S) Load Balancer - Internal Layer 7 load balancer that enables you to run and scale your services behind an internal IP address.

External TCP/UDP Network Load Balancer - Externally facing TCP/UDP (Layer 4) load balancer

Internal TCP/UDP Load Balancer - Internally facing TCP/UDP (Layer 4) load balancer.

Microsoft Azure Load Balancer
Microsoft Azure load balancing solution provides 3 different types of load balancers:

Standard Load Balancer - Public and internal Layer 4 load balancer

Gateway Load Balancer - High performance and high availability load balancer for third-party Network Virtual Appliances.

Basic Load Balancer - Ideal for small-scale application

GSLB Solutions
Amazon Route 53 - Amazon Route 53 is a highly available and scalable cloud Domain Name System (DNS) web service.

AWS Global Accelerator - A networking service that helps you improve the availability, performance, and security of your public applications.

Google Cloud Platform Load Balancer & Cloud DNS - Reliable, resilient, low-latency DNS serving from Google's worldwide network with everything you need to register, manage, and serve your domains.

Azure Traffic Manager - DNS-based load balancing
Forwarded from DevFM
Вторая часть статьи посвящена рассмотрению архитектур баз данных, которые значительно изменились за последние десятилетия (о первой части). Основное внимание уделяется тому, как технологические изменения, такие как развитие облачных технологий, новые модели хранения и вычислений, а также аппаратные инновации формируют подходы к проектированию систем управления данными.

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

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

Data Lakes и Lakehouses
Архитектуры Data Lake предоставляют возможность хранить данные в их необработанном виде, позволяя использовать их для самых разнообразных аналитических задач. Однако отсутствие управления метаданными и структурированности часто превращает такие системы в хаотичные хранилища. Lakehouses добавляют к Data Lake возможности традиционных аналитических баз данных, такие как структурированность, управление данными и поддержка транзакций, что делает их более универсальными. Их успех связан с решением проблем Data Lake, таких как отсутствие контроля над данными и низкая эффективность аналитики.

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

Аппаратные ускорители
Использование GPU и FPGA для ускорения выполнения аналитических запросов стало новым направлением в проектировании баз данных. Эти технологии позволяют значительно увеличить производительность при обработке больших объёмов информации.
Несмотря на потенциал, аппаратные ускорители остаются нишевыми решениями из-за высокой стоимости внедрения и ограниченного круга задач, где их преимущества могут быть реализованы.

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

#database
Forwarded from Reliable ML
Секция Reliable ML на Data Fest 2024
Обзор докладов секции и ссылки на материалы

На Data Fest 2024 секция Reliable ML получилась стихийно. Мы с Димой планировали сделать только две офлайн секции: Data Strategy и Career. Но в первые же дни call for papers мы получили много классных предложений докладов для нашей традиционной секции - Reliable ML. И поняли, что от судьбы не уйти.

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

- Артем Дуплинский [Youtube] [Rutube] рассказал вводный доклад про причинно-следственный анализ. На примерах показал, почему causal inference полезен для аналитических проектов, и объяснил, что означают базовые термины.

- Александр Ченцов [Youtube] [Rutube] раскрыл тему графового анализа для выявления причинно-следственных зависимостей на больших данных - для более продвинутых пользователей causal inference методов.

- Евгений Смирнов [Youtube] [Rutube] поделился видением и советами по выбору проектов в ML для успешного их внедрения в будущем. Важно грамотно оценивать экономическую целесообразность проектов, готовность инфраструктуры и интеграций, а также готовность бизнес-процессов.

- Андрей Лукьяненко [Youtube] [Rutube] рассказал об опыте построения антифрод ML-моделей на этапе предавторизации для заказа такси в компании Careem.

- Данил Картушев [Youtube] [Rutube] поделился опытом использования шаблона ML System Design Doc от Reliable ML для проекта по созданию бота по поиску нужных материалов в тг-каналах - PostFinder. Классно, что Данил не только описал свой пример применения дизайн-дока, но и предложил ценные дополнения к шаблону (Customer Journey Map и User Story Map), а также опубликовал свой дизайн-документ для PostFinder в открытый доступ.

- Иван Комаров [Youtube] [Rutube] показал возможности применения OLS-регрессии для АБ-тестирования - с детальным разбором примеров. Код доступен в презентации.

- Александр Калинин [Youtube] [Rutube] рассказал про метод Байесовской сыворотки правды (BTS) для разметки данных (когда не имеем в разметке объективной правды/no ground truth).

Пора изучать доклады и думать о том, о чем хотим поговорить в 2025 году!

Ваш @Reliable ML

#tech #business #datafest2024 #reliable_ml
Forwarded from Start Career in DS
🔗 Базовая теория по DL, которую должен знать каждый

👨‍💻 Умение строить нейронные сети и понимать, как они работают, является обязательным навыком практически для любого ML-специалиста. Поэтому разберем основные структурные компоненты нейронных сетей.

1️⃣ Искусственный нейрон
Нейрон, Входы (X), Веса (Weights), Смещение (Bias) и Функция активации.
Схему искусственного нейрона и его частей можете изучить тут.

2️⃣ Слои нейронной сети
Слои, виды слоёв (входной слой, скрытый слой, выходной слой) и функциональности
(линейный слой, сверточный слой, рекурентный слой).
Про эти и другие наиболее распространенные виды слоев читайте тут. Также изучаем схему простой нейронной сети (перцептрона), про сложность - читаем тут.

3️⃣ Функции активации
Наиболее популярными функциями активаций являются: Sigmoid, Tanh, ReLU, Softmax.
Про эти и другие функции активации читайте тут.

4️⃣ Слои нормализации
Проблема взрыва и затухания градиента.
Основные виды нормализаций активаций в нейронной сети: LayerNorm, BatchNorm, RMSNorm. О каждом более подробно читайте тут.

5️⃣ Dropout и Attention слои
О способе решения проблемы переобучения с Dropout читайте тут.
Attention-механизм
стал наиболее популярным в моделях Transformer, позволяя нейронной сети «фокусироваться» на важных частях входного сигнала через attention-score. Подробно о самом механизме читайте тут.

📚 Дополнительно читаем и преисполняемся:
- Наш большой справочник по Deep Learning
- Серия постов с видео по нейронным сетям - [Ч.1], [Ч.2]
- Доступный курс для каждого новичка по основам нейронных сетей
- Пишем свой нейрон на Python: практика для любого уровня
- Основы нейронных сетей с интересным разбором разных тем
- Математика, лежащая в основе нейронных сетей: серия простых статей

Обязательно ставьте ❤️ и 🔥 за наш труд!
Пишите комментарии и задавайте вопросы!
До встречи👋
Уверен, что многих интересует как вот там реализуются методы распределенного трейна, может кто-то хотел бы сам реализовать (а это очень полезно).
Ребята из HF 🤗 начали проект по учебной реализации таких методов (dataparallel, tensorparallel, pipelineparallel, contextparallel) :
https://github.com/huggingface/picotron
https://github.com/huggingface/picotron_tutorial

Вместе с проектом идут лекции на ютубе.

Это как проект nanoGPT по учебной реализации гптшки 2, чтобы разобраться, но он прям уже круто разросся и народ там уже наоптимизировал всякого, мб и тут крутое что-то будет
Forwarded from КПД
LLM KV cache compression made easy
[Репозиторий]

В связи с ростом потребности в эффективной по памяти и скорости работе с длинным контекстом (особенно с учетом набирающего популярность test-time compute scaling) все острее стоит вопрос сжатия KV-кэшей. Данной теме уже посвящено немалое число работ (и существует уже интеграция в transformers).

И недавно ребята из одной зеленой компании выкатили либу, с реализацией разных техник сжатия KV-кэшей под названием kvpress.

В данной либе реализовано несколько простых и популярных техник сжатия кэшей:
🌟 Случайный прунинг
🌟 Основанный на нормах токенов
🌟 Несколько подходов, основанных на attention скорах (SnapKV, TOVAPress, H20)

Причем битность можно задавать послойно при помощи класса PerLayerCompressionPress.

Самую SOTA (например, PyramidKV) в области пока еще не завезли, увы.

В репозитории есть ноутбуки с демострацией использования библиотеки и замерами скорости и памяти.

Либа действительно удобная и приятная для использования.

Методы сжатия кэшей можно комбинировать с квантизацией кэшей у лицехватов 🤗.
Forwarded from 🏆 Data Feeling | AI (Aleron M)
⚡️ Сохраняем, если пропустили обновления:

> Domo Ai — этот инструмент обеспечивает пользователям более привлекательный визуальный опыт за счет добавления новых стилей видеопроизводства.

> Huggingface, он позволяет применять к изображениям любую текстуру и в результате создавать уникальные изображения с нужной комбинацией текстур.

> Современная генерация видео и изображений с помощью Veo 2 и Imagen 3 — это новый конкурент Sora от Google предлагает значительные улучшения в создании видеоконтента

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

> Replit Agent - это новейший копайлот для написания программного кода. Агент качественно программирует IT проект с нуля по вашему запросу. Полный гайд по его использованию всех связок с ним разобран на курсе.

> Cursor AI - это IDE для создания проектов с помощью вшитого AI ассистента. Не Агент, а просто LLM + контекст, но получается все равно очень качественно. Полный гайд и примеры создания приложения разобраны на курсе

> Обновление: Suno V4 — это музыкальный продукт, который теперь находится в свободном доступе и предоставляет больше возможностей для творчества в аудиопроизводстве.

> Обновление: Kling 1.6, выпущена новая версия этого создателя видео с более продвинутыми функциями, которые обеспечивают простоту использования и более профессиональные результаты.

> Обновление: Pika 2.0 — этот продвинутый инструмент можно использовать бесплатно до 22 декабря, и это прекрасная возможность проверить его возможности.

> Вдруг ничего не слышали про о3 и о3-mini — это модели OpenAI нового поколения, обеспечивающие более быструю и точную обработку данных.

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

> LangChain - это современный универсальный и очень мощный фреймворк для эффективной работы с любым видом LLM, в том числе API chatGPT от OpenAI. Необходим для создания LLM агентов, RAG систем и векторизации данных для создания поиска по своим базам знаний. Полный гайд по фреймворку и с разбором проектов и заданиями для отработки.

> LTX Studio — это новая функция этой платформы позволяет пользователям управлять эмоциями персонажей в видеороликах, что подходит для продвинутого повествования и анимации.

🎚 Пользуйтесь!
Please open Telegram to view this post
VIEW IN TELEGRAM