Интересное что-то
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 Aspiring Data Science (Anatoly Alekseev)
#pricing #mabs

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


https://towardsdatascience.com/dynamic-pricing-with-multi-armed-bandit-learning-by-doing-3e4550ed02ac

https://towardsdatascience.com/dynamic-pricing-with-contextual-bandits-learning-by-doing-b88e49f55894
Привет всем!👋

В современном мире модели стали сложные и основная проблема их использования - интерпретируемость. Для рядового пользователя модель (бустинг, нейронка) - "черный ящик". Но что делать в задачах, где понимание предсказания нередко важнее, чем само предсказание? Или как понять ошибается ли систематически где-то модель?

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

- Какая существует интерпретируемость?
Прежде всего, разделяют локальную и глобальную интерпретируемость.

Локальная - в разрезе одного наблюдения, глобальная в разрезе всего набора данных.

-Какие есть методы?
1️⃣Feature Importances
Обычно применимо к "деревянным" моделям, где важность признака оценивается как изменение критерия разбиения. Для ансамблей важность признака усредняется по всем деревьям.
2️⃣SHAP (SHapley Additive exPlanations) [Реализация]
Для вычисления вклада каждого признака анализируется, как изменяется предсказание, если этот признак добавляется к набору уже учтенных признаков. Для начала считается базовое значение - это среднее предсказание модели на всем наборе данных, так, будто признаков нет. Вклад i-го признака рассчитывается как разница между предсказаниями модели с учётом и без учёта i-го признака. Чтобы учесть зависимость между признаками, SHAP вычисляет вклад признака как среднее значение влияния по всем возможным порядкам добавления.

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


На примере:
Модель по клиенту показала на 3 признаках 80% вероятность дефолта по модели на 3-х признаках. 60% базовое значение, 1 признак дает +15%, второй +5%, а третий -10%. Таким образом, предсказание по признакам 60%+15%+5%−10%=80%.

3️⃣LIME [Реализация]
Метод, который объясняет предсказания модели на основе простых, интерпретируемых моделей, построенных в окрестности конкретного предсказания.
LIME создает интерпретируемую модель (например, линейную или решающее дерево), которая аппроксимирует поведение сложной модели (черного ящика) только в окрестности одного конкретного объекта.

Метод создает множество синтетических объектов, которые похожи на исходный, но с небольшими изменениями путем рандомизации или перестановки признаков объекта. Сгенерированные объекты передаются в модель для предсказания. Таким образом, LIME получает набор данных (новые объекты и их предсказания), которые отображают поведение модели в окрестности выбранного объекта. С использованием полученных данных в LIME обучается интерпретируемая модель (например, линейную модель или решающее дерево), которая аппроксимирует поведение сложной модели только в окрестности интересующего нас объекта. Мы можем анализировать её коэффициенты или правила для объяснения, как она делает предсказания. Это позволяет понять, какие признаки повлияли на предсказание для объекта.

Аналогичный метод обоснования сложной модели линейной также применял в работе


4️⃣Permutation Importances
Для каждого признака случайным образом перемешиваем его значения в тестовой выборке. Это изменяет только этот признак, но сохраняет зависимость между другими признаками. Важность признака определяется как разница между производительностью модели на исходных данных и на данных с перемешанным признаком. Чем больше эта разница, тем более важен признак.
💡Реализация в sklearn.inspection как permutation_importance.

5️⃣ICE (Individual Conditional Expectation)
Метод локальной интерпретации, основанный на визуализации. Для объекта меняется один признак, остальные фиксированы. По оси x строится значение изменяемого признака, по оси y - результирующее предсказание модели. Так можно понять и оценить влияние конкретного признака.
💡Реализация в sklearn.inspection как plot_ice.


6️⃣Partial Dependence Plot (PDP)
Визуальный метод глобальной интерпретации. В отличие от ICE учитывает изменения на всем наборе данных, а не на отдельном объекте.
💡Реализация в sklearn.inspection как plot_partial_dependence

Ставь 🔥, если понравилось!

#ds_лайфхаки
Please open Telegram to view this post
VIEW IN 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, чтобы разобраться, но он прям уже круто разросся и народ там уже наоптимизировал всякого, мб и тут крутое что-то будет