Интересное что-то
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 КПД
На канале GPU Mode неделю назад появилось видео от Songlin Yang (гуру линейных вниманиев), где она в течение часа дает содержательный и интересный обзор области.

Кроме того, в феврале она выступала у Sasha Rush (известный персонаж на 🤗) с похожим материалом.

Рекомендую к просмотру!

[Либа с реализациями разных субквадратичных альтернатив вниманию]
Forwarded from Concise Research (Sergey Kastryulin)
Короткие разборы

Когда я только задумывал канал, в голове представлялся формат — ёмкие разборы длиной в абзац, описывающие только суть. Меня самого привлекает максимальная плотность информации, потому что читаю много и расписывать всё нет времени. Во время ICLR’25 (серия постов) вам такое заходило. Давайте пробовать еще раз (но уже без фотографий постеров 😫)

1. Ambient Diffusion Omni:
Training Good Models with Bad Data

Замечают, что при высоких уровнях шума, картинки разного технического качества выглядят одинаково. Это наблюдение помогает улучшить качество диффузионного претрена. Для этого IQA классификатором оценивают качество картинок прямо во время обучения. Если картинка хорошая - семплим как обычно шум равномерно на отрезке [0, 1]. Если картинка плохая - только на некотором отрезке [t_min, 1], где t_min - параметр, подбираемый экспериментально (на глазок или учим классификатор)

2. Angle Domain Guidance: Latent Diffusion Requires Rotation Rather Than
Extrapolation

Очень похожа на Adaptive Projected Guidance (APG), где гайденс раскладывали на линейную комбинацию скор функций и выкидывали компоненту параллельную conditional генерации, оставляя только ортогональную. Авторы говорят, что предположение линейности может плохо работать при высоких значениях guidance scale и может в целом ограничивать качество. Вместо стандартной CFG добавки, увеличивающей нормы, предлагается вращать и далее комбинировать матрицы cond и uncond генераций

3. Decouple-Then-Merge: Finetune Diffusion Models as Multi-Task Learning
Во время обучения диффузии, градиенты модели на разных t отличаются. Предполагается, что это может мешать оптимизации. Предлагается делать следующую процедуру SFT:
- Берем претрен
- Берем наш диапазон t in [0, 1] и разбираем на N не пересекающихся отрезков
- Учим N файнтюнов, каждый на своем отрезке t
- Используем несколько техник (Consistency, Probabilistic sampling, Channel-wise projection) чтобы каждый файнтюн совсем уж не забыл про другие t
- После обучения мерджим веса файнтюнов

4. Advancing Compositional Awareness in CLIP with Efficient Fine-Tuning
Год назад был предложен SUGARCREPE++ Dataset, на котором в том числе показали, что CLIP-like модели плохо понимают отношения между объектами в промте. В этой работе предлагается:
- Собирать синтетический датасета негативных примеров из уже существующего путём комбинации кусочков промтов
- Учить CLIP с доп компонентами в лоссе про то чтобы форсить акцент на эти негативные примеры
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from EasyData
Привет, друзья!
Во многих задачах - от классификации и кластеризации до поиска похожих объектов и генерации рекомендаций - важно уметь эффективно находить ближайшие векторы в высокоразмерном пространстве. Но как только число векторов превышает несколько тысяч, простые методы из sklearn и numpy начинают работать непозволительно медленно🐌 При масштабах же в миллионы объектов стоит задуматься уже не только про быстроту, но и про оптимизацию, балансируя между точностью, скоростью и потреблением памяти.

В таких случаях приходят на помощь библиотеки для быстрого KNN в высокоразмерных пространствах. Самая известная, пожалуй, Faiss от Facebook AI Research. Вот её главные преимущества:

🔠 Подкапотная реализация на C++ с SIMD-оптимизациями и продуманным управлением памятью в Python-обёртке. А ещё это значит, что Faiss не блокируется GIL'ом и отлично масштабируется по потокам: можно параллелить поиск через joblib.Parallel или ThreadPoolExecutor.
🔠 Поддержка GPU, что также даёт прирост скорости в десятки раз.
🔠 Гибкость индексов: от точного поиска (Flat) до приближённых структур с квантованием и кластеризацией.

Рассмотрим основные типы индексов:

🔠 IndexFlat - базовая реализация, которая хранит все векторы в RAM и выполняет точный линейный поиск. Работает быстро на малых объемах (<100K векторов), также идеален для отладки или в случаях, если поиск каждый раз нужно осуществлять в разных ограниченных подпространствах векторов (тогда просто запускаете с тем же Parallel:)).
🔠 IndexIVF (Inverted File Index) - предварительно перед поиском он кластеризует всё пространство векторов (например, с помощью k-means).
При поиске сначала выбираются N ближайших кластеров, а затем производится поиск заданной глубины K внутри них.
На моей практике, даже с учётом времени на обучение индекса, IVF ускорил процесс поиска в ~8 раз по сравнению с Flat+Parallel, при этом точность результата по метрикам проявилась только в 5-м знаке после запятой (ещё и в бОльшую сторону! 😎)
Но есть уже озвученное "НО" - такой индекс требует предварительного обучения, и на это нужно время. Поэтому имеет смысл его использовать, если запросы каждый раз делаются из одинакового и фиксированного пространства.
Если захотите воспользоваться IVF, то упомянутые N и K лучше брать как √d и 2–4*(размер топа, который вы ищете) соответственно, где d - количество векторов в базе для поиска.
🔠 IndexIVFPQ (Product Quantization) добавляет к IVF еще одно ускорение - сжимает векторы до компактного кода (например, 8 байт вместо 128 float32). Работает ещё быстрее и экономит память при минимуме потерь в точности. Имеет смысл посмотреть в сторону этого подхода, если у вас порядка миллиарда векторов.
🔠HNSW-семейство индексов (Hierarchical Navigable Small World) - индексы на основе графов малого мира, где каждый вектор представляется как вершина, связанная с соседями в многослойной структуре. Поиск происходит за счёт навигации по графу: сначала на грубом уровне, затем всё точнее.
Такие индексы не требуют предварительного обучения и хорошо подходят для динамических баз, где данные часто добавляются на лету. Отличаются высокой точностью даже при небольшой глубине поиска, но потребляют больше памяти и не поддерживаются на GPU.

Полезные ссылки:
🔠 Официальный репозиторий Faiss.
Там же ссылка на quick start и базу jupyter-ноутбуков с примерами кода на Python
🔠 Ещё пара хороших туториалов с примерами кода тут и тут
⚠️Если решите установить версию с поддержкой GPU, лучше использовать эту

Лёгкой и солнечной недели! ☀️

#mlops@data_easy
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Data Blog
Интерпретация CLIP, papers with code (свежие).

Привет, друзья! В последнее время ударилась в анализ методов интерпретации для мультимодальных моделей.Из интересного — собрала методы и идеи для анализа CLIP.

▪️ Пре-теория:

CLIP — модель, обученная сопоставлять изображение и текст в общем пространстве.
Spurious features — признаки, которые коррелируют с меткой в данных, но не связаны причинно (например, фон).
Zero-shot классификация — предсказание без обучающих примеров для класса, только по текстовому описанию.
Second-order effect — влияние элемента модели не напрямую, а через цепочку последующих преобразований.
Mutual knowledge — общий понятийный слой между текстом и изображением, на котором модель принимает решение.

▪️Как обычно интерпретируют CLIP?

Чаще всего исследуют, на какие текстовые концепты "смотрит" изображение, используя:

— Similarity scores между image и text embeddings,
— Grad-CAM/attention heatmaps,
— Prompt engineering

В отличие от обычных подходов, статьи ниже предлагают иную парадигму — либо через анализ внутренних представлений модели (нейроны, attention-heads), либо через поведенческий анализ взаимодействия между модальностями (текстом и изображением).

▪️ Статьи:

1. CLIP Under the Microscope: A Fine-Grained Analysis of Multi-Object Representation [repo]

Как размер объекта и порядок слов в промпте влияют на поведение CLIP? Пример анализа поведения модели в зависимости от промпта.

Авторы анализируют задачу поиска изображения и классификации и показывают, что:
— порядок слов влияет на приоритет внимания;
— мелкие объекты игнорируются, если не упомянуты явно;
— модель чаще "видит" первый объект в тексте, особенно если он крупный на изображении.


2. “Interpreting the Second-Order Effects of Neurons in CLIP” [repo]

Здесь исследуются отдельные нейроны, чтобы понять, какие семантические концепты они кодируют. Основной инструмент — second-order effects: вклад нейрона в выход модели через последующие attention-слои.

Авторы:
— выделяют нейроны, кодирующие семантические концепты (напр. “рыжая собака”);
— автоматически подбирают текстовые описания нейронов;
— применяют это для генерации adversarial-примеров и улучшения zero-shot сегментации

3. INTERPRETING CLIP’S IMAGE REPRESENTATION VIA TEXT-BASED DECOMPOSITION [repo]

В этой работе CLIP-ViT разбирается по слоям и attention-head’ам. Авторы:
— выявляют специализированные головы: по цвету, числу, форме, геолокации и пр.;
— применяют результат применяется для удаления spurious признаков (признаков, которые коррелируют с метками классов в обучающей выборке, но не являются причинно значимыми для правильного вывода. Пример окружение «вода» для уток).
— пименяют результат для повышения устойчивости модели (и решения задачи сегментации)

Кстати пример поиска стиральных признаков вот, но мне не удалось найти описания к нему.

4. "Interpreting and Analysing CLIP’s Zero-Shot Image Classification via Mutual Knowledge" [repo]

Авторы объясняют zero-shot классификацию CLIP через взаимное знание (mutual knowledge) между визуальным и текстовым энкодерами:
— извлекают визуальные концепты (через PCA/K-means) и сопоставляют им тексты;
— оценивают вклад каждого концепта в предсказание;
— показывают, как сила взаимной информации коррелирует с уверенностью и качеством вывода.

▪️ Что есть ещё:

Интерпретация CLIP через градиетный подъём.

Как использовать всё ниже:
Для вдохновения, общего знания и того самого списка на "пригодится" :)
🌐 Reader от Jina AI — переводчик веб-страниц для языковых моделей. Этот необычный проект решает проблему всех RAG-систем, превращая контент веб-страниц в удобоваримый для LLM формат. Просто добавьте https://r.jina.ai/ перед любой ссылкой и получите очищенный от рекламы, JS-кода и лишних элементов текст с автоматически подписанными изображениями.

Также запрос через s.jina.ai не просто выдает список ссылок, а сразу загружает и обрабатывает топ-5 результатов. Технология уже используется в продакшене и полностью бесплатна.

🤖 GitHub

@data_analysis_ml
#startup
Вопросы для проверки идей
Forwarded from BOGDAN
Расшифровка от о3
Forwarded from 🇻 🇱 🇦 🇩
Всем привет, сегодня встречаемся в 18:00

Тема: GNNs in Computational Biology

Слайды
https://snap.stanford.edu/class/cs224w-2020/slides/marinka-zitnik-cs224w.pdf

Видео
https://www.youtube.com/watch?v=_hy9AgZXhbQ&list=PLoROMvodv4rPLKxIpqhjhPgdQy7imNkDn&index=57
VoiceInk - opensource альтернатива для SuperWhisper

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

После семинара я спросил коллегу, что он использует для голосового ввода. Оказалось, что он использует программу SuperWhisper. Я посмотрел на эту программу и увидел, что она требует подписки, а платежи из России, как понимаете, выполняются сложно. Кроме того, мне не хотелось вязываться в какой-то vendor-lock, когда производители программы могут просто отказаться принимать платежи от россиян или как-то иначе заблокировать свой продукт на нашей территории. Поэтому я решил поискать open-source решение, аналогичное SuperWhisper.

И такое решение я нашел! Программа называется VoiceInk. VoiceInk выполняет похожую задачу и достаточно качественно разбирает текст. Настолько хорошо, что после того, как я надиктовал сообщение для блога, мне требуется всего лишь немного его отредактировать, поправив кое-где формулировки.

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

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

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

Возможно, можно даже дальше пойти и научиться сделать какого-то агента, в котором можно просто целиком этот текст надиктованный закидывать и получать готовую публикацию в Телеграме уже с картинкой. Но эту автоматизацию я, может быть, сделаю позже. У меня есть идея попробовать N8N сервис для того, чтобы делать подобные штуки. Так что следите за обновлениями в блоге. Пока-пока!

#ai #automation #voice
Forwarded from DevFM
Как проводить встречи эффективно

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

Подготовка
– Избегай звонков без необходимости – большинство вопросов решаются в чате
– Не дергай “на минутку” – если прод не упал, значит не срочно
– Анонсируй: кто, когда, зачем. Иногда достаточно треда в чате
– Проверяй доступность участников через календарь
– Ограничивай время – 30 минут обычно хватает, 1 час — максимум
– Готовь повестку заранее: тема, пункты обсуждения, цель встречи, уважай чужое время
– Рассылай материалы и документы до встречи
– Предупреждай об отмене или задержке как можно раньше
– Опаздываешь? Не опаздывай 🙂

Старт встречи
– Начинай вовремя – без «ждём ещё кого-то»
– Проверь комнату ожидания и список участников
– Напомни повестку – это фокусирует команду

Фасилитация
– Держись повестки и возвращай к цели встречи
– Дай слово молчунам, притормози болтунов.
– Подводи итоги каждые 10–15 минут: «Итак, договорились, что…»
– Следи за чатом и поднятыми руками
– Делись экраном, глаза – тоже канал восприятия
– Включай камеру по возможности
– Не перебивай – сначала дослушай, потом задавай вопросы.
– Паркуй спорные темы после трёх заходов
– Уважай выделенный слот – если нужно больше времени, спроси
Веди пост-мит в реальном времени

После встречи
– Напиши постмит, опубликуй до конца дня, тегнув участников

#devfm
Tralalero Vision 2025: роадмап по компьютерному зрению

1️⃣ Python. Без него - никуда: циклы, ООП, исключения, numpy, pandas, matplotlib, надо знать азы pytorch, tensorflow
2️⃣OpenCV — "мотор" компьютерного зрения. Тут важно понимать, как работают изображения (пиксели, каналы, цветовые пространства), ну и освоить морфологию, фильтры, поиск контуров. В качестве практики можно сделать проекты с распознаванием объектов или AR-фильтрами
3️⃣Без линейной алгебры глубокие модели — "черный ящик". Надо потренироваться в задачках на SVD и преобразования с матрицами
4️⃣В качестве начальных шагов разберитесь в архитектурах: LeNet и EfficientNet + пригодятся знания градиентов и методов оптимизации
5️⃣Спец-темы CV — ваш профайл Углубляйтесь в то, что цепляет: есть задачи на 3D Vision/обнаружения/сегментации итд. Ключ к успеху понимать от и до именно ваше направление
6️⃣Теория без практики имеет нулевой импакт на ваше развитие. После каждого этапа — проект/кейс/задача
материалы 👇
документация OpenCV
Standford course по нейронкам
Multi-Object Tracking
Anomaly Detection
3D Reconstruction
Real-Time Gesture Control для AR
данные: Kaggle, COCO dataset
тестовые вопросы по DL от Дьяконова, курс по DL тоже от Дьяконова А.Г.

@zadachi_ds
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Рыба-шарп
London Tech Week и q/kdb

На прошлой неделе в Лондоне проходила London Tech Week - выставка/конференция, посвященная технологиям. Основной темой, конечно же, был искусственный интеллект. Из неожиданных спикеров там был Christian Horner, CEO Red Bull Racing - команды Формулы-1.

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

А еще, оказывается, Red Bull Racing использует q/kdb - базу данных и язык программирования для работы с time series. Этот же язык лежит в основе инфраструктуры многих банков и хедж-фондов.
https://kx.com/customer-stories/aston-martin-redbull/

#лондон
#хеджфонды
@rybasharp