Data Blog
2.54K subscribers
152 photos
7 videos
5 files
256 links
Интерпретируемость (AI) моделей и путь до phD, если автор не уйдет пасти овец.

Сотрудничество, предложения, вопросы: @sabrina_sadiekh
Download Telegram
Как порядочный человек умею сталкерить за всеми, если очень захочется. Но мне лень (только если иногда …), так что я сталкерю за статьями. У одной из моих работ появилась целая вторая цитата в:

«The Latent Space: Foundation, Evolution, Mechanism, Ability, and Outlook».

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

Статья — обзор (68 страниц) про латентные пространства в моделях.

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


Работа сводит обзор к категоризации:

* как латент устроен (архитектура / представление / вычисление / оптимизация). То есть как он засунут в модель
* что он даёт (reasoning, planning, memory, perception, collaboration, embodiment). То есть что модель этим латентом делает.

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

Примеры красивого:

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

Mirage — VLM вставляет в рассуждение визуальные токены вместо слов.

C2C / Cache-to-Cache — две модели обмениваются информацией напрямую через проекцию KV-кэша, без генерации промежуточного текста.

MemGen — модель хранит непрерывную латентную память и вызывает её по триггеру, вместо удержания всего в текстовом контексте.

UniVLA — латентные действия робота выучиваются из немаркированного видео и переносятся между разными платформами-телами.

Зачем использовать такие обзоры:

Статьи вы и без меня найдете, а вот самые вкусные считаю важным принести. Я на подобные смотрю:

а) эстетически — область — прекрасна;
б) опорно — сохраняю для дальнейшего рисёрча по теме;
в) исторически — видно, что в мире есть/было на 20XX год;
г) студенчески — вижу, что происходит вне моего xai-пузыря.

Поэтому она тут — мне подход помогает. Примеры красивого выше я знала не все, а оно всё такое интересное.
👍15❤9🔥1
Ну вы посмотрите сколько мы наплодили. Пугает меня это или радует — открытый вопрос, вас как?
❤15👍1🤯1
Всем хорошей недели, друзья! И не забывайте задавать агентам правильные вопросы)))
😁14
Здесь должен быть туториал, который я фигачу уже недели 3, но вместо этого радостный вброс:

Сапожник (я) нашел свои сапоги и был принят на конфу https://www.amlucs.ai

Готова радоваться во все места. 🥲
Вам тоже радуюсь!
1🔥61❤14👍2🥰2
Ну вот чтоб вы понимали, этот масштаб-щенячьего-восторга)))
❤24👍2🎉1🤩1
Forwarded from Sabrina Sadiekh
This media is not supported in your browser
VIEW IN TELEGRAM
❤59🎉30❤‍🔥19👏6🦄4
Порадовались (друзья, спасибо вам всем громадное!)— структурируемся — вновь свеженькая библиотека — CircuitKIT.

Идея библиотеки красивая — упростить процесс работы с цепочками (или схемами, выберите тот перевод на русский, который вам ближе) — circuits.

Напоминание:
Circuit — минимальный подграф модели (головы + MLP), причинно отвечающий за конкретное поведение. Пример, задача IOI (indirect object identification). Вход: «When Mary and John went to the store, John gave a drink to ___» — модель должна продолжить «Mary». За это отвечает не вся сеть, а конкретный набор attention-голов: одни находят повторяющееся имя (John), другие его подавляют, а «name-mover heads» копируют в ответ оставшееся — Mary. Вот этот набор голов и есть circuit для задачи IOI.


В реальности, работа с цепочками и задачами вокруг них содержит 3 шага:
1. Найти это (discover)
2. Проверить, что мы нашли то, что искали (evaluate)
3.Попробовать изменить поведение модели (intervene)

Под каждый шаг есть набор библиотек. У авторов есть таблица (см. Table 1 в статетьй) с покрытием и с тем, что авторы решают, исходя из существующего — агрегируют всё.

Для каких моделей:

Поиск circuits сделан через TransformerLens и покрывает модели оттуда — GPT-2, Pythia, Llama, Gemma, Qwen, Mistral, Phi, Falcon.
Интервенции требуют ещё «дореализации» — сейчас покрыли только Llam-у, Qwen, Gemm-у.

Что внутри:

🪁 Discovery — 13 алгоритмов в четырёх семействах, разделённых на stable и research tier по объёму кросс-модельной проверки. В stable — градиентная атрибуция (EAP (Edge Attribution Patching) / EAP-IG / EAP-GP), поисковый ACDC (поднять козу \m/), IBCircuit и contextual decomposition (CD-T).

Есть уровни детализации:
— node level — importance score на целую attention-голову или MLP-подслой,
— neuron level считает отдельный score для каждого head-канала и каждого MLP-нейрона.

Neuron level удобен с точки зрения вмешательств — в них точечно по определению можно вмешиваться, а для MLP можно (нужно) выбирать, где мерить: на residual-интерфейсе (mlp_out, по умолчанию) или на post-activation слое (post_act).

Ограничение — 7 вариантов из EAP-семейства провалидированы на одной GPT-2/IOI, шесть других методов, обозначенных за stable, гоняли кросс-модельно (GPT-2, Llama, Gemma, Qwen).

Данные — свой CSV / JSONL / HF-датасет заводится в задачу декларативными шаблонами, без кода под каждый датасет. Ещё библиотека умеет синтезировать данные. Сюда я особо не долезла (но все есть в статье и доке).

🪁 Evaluation — декомпозиция оценки на 6 метрик patching, ablation, stability, robustness, baselines, generalization. Логика нравится, ибо одиночная метрика очень не устойчива к способу оценки, а тут покрытие на разные стороны.

🪁 Intervention — семь модулей: структурный прунинг, mixed-precision квантизация, selective fine-tuning, редактирование знаний (ROME / MEMIT), activation steering, Circuit-restricted LoRA healing, Hallucination probing.

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

Документация: https://lexsi-labs.github.io/CircuitKIT/
Примеры и туториалы: https://lexsi-labs.github.io/CircuitKIT/examples/overview/ (красиво собрали)
Репозиторий: https://github.com/Lexsi-Labs/CircuitKIT
Статья: arXiv:2607.19317

Ешё душненькие нюансы:

Лицензия source-available от Lexsi Labs — free for research, evaluation, education, and audit, но для коммерции — ни-ни), поддержка TransformerLens 3.x только в планах и большая часть методической части реализована в статье на задаче — IOI (он же стоит дефолтом почти во всех примерах кода).

Ширину оценки добирают:
— Greater-Than — задачей числовой порядок: на вход что-то вроде «The war lasted from the year 1717 to the year 17__», и модель должна продолжить большим двузначным годом (> 17). Проверяет, умеет ли модель сравнивать числа.
— Бенчмарками— стандартные оценочные датасеты: BoolQ (yes/no вопросы) и MMLU (знания с выбором ответа).

В табличку тоже закинула, заодно с related-либой Auto-Circuit (но она давно не обновлялась по коммитам).
🔥16❤7👍3❤‍🔥2
P.S. Вы — лучшие — я вчера прям на какой-то момент остановилась (вчено куда-то бегу) и поняла, что очень ценю людей вокруг, которые помогают мне двигаться вперед и дальше. Спасибо за все приятнейшие слова и сердечко-огонечки! ❤️‍🔥
1❤50❤‍🔥12👍8
Привет, друзья! Как запаковать мир?

Всё свободное время я ботаю математику, и это рождает побочную красоту. И наконец-то я добила новый туториал — про то, как модели упаковывают концепты в многообразия. Я била его долго — и он побил меня. Надеюсь, вам понравится!

Многообразие — это пространство, которое вблизи каждой точки выглядит как обычная прямая или плоскость, даже если целиком оно замкнуто и искривлено. Муравей на окружности уверен, что ползёт по прямой. Мы на почти-круглой Земле уверены, что вокруг плоскость.


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

Также в туториале можно сходить поискать эти окружности в GPT-2 руками. И найти идеальный циклический порядок (метрика цикла — τ = 1.00) и абсолютно кривой круг (метрика круга — R² ≈ 0). То есть модель хранит порядок, а не кружочек.

Почему, как можно точнее и так далее, а также постановки экспериментов ждут вас на Хабр и на гитхабе!

Весь код воспроизводим (plug-play-and-research-please), но статья толстая.

📖 Статья: https://habr.com/ru/articles/1063222/
💻 Ноутбук: https://github.com/SadSabrina/XAI-open_materials/blob/main/geometrical_structures/whitney_manifolds.ipynb
🔥25❤3
Если лень читать — заходите за красивыми картинками.
❤15🔥3
Пишу rebuttal эксперименты на NIPS. Статью делали ещё осенью, кажется, так что пришлось заново читать, чтобы осознаться.

Так вот — открыла текст не тем редактором — а там prompt injection 🙂

Оказалось: защита NIPSa от LLM-ревью. Вот вам и "сложные времена рождают сложные решения".

Счастливых всем rebuttals и пусть удача всегда будет с вами.
😱28😁3
XAI для агентов: библиотеки

Консерватор с тревожкой, когда кто-то что-то делает за него (я), наконец докопался до XAI для агентов.

Что у нас есть:

С агентами, вместо модели, нас интересует действие и их последовательность. Отсюда мы ставим вопрос: «почему был выбран этот путь/тула/шаг?». На текущем этапе развития интерпретируемости мы бы умерли, если бы тащили для ответа Mech-Interp, потому что у нас появляется гамбургер:

Агенты что-то делають.
[агенты-тусят]
Агент что-то сделаль.
[шаги-действий]
Модель, задающая мозг агента.
[о-веса-если-они-открыты]


Поэтому агентский XAI работает как привыкли в классике и использует в основном SHAP (SHapley Additive exPlanations).

Что это:

SHAP — супер-фундаментальный-в-XAI — метод из кооперативной теории игр. Идея на аналогиях — решить задачу справедливого разделения выигрыша между игроками. На выходе всегда вклад каждого игрока, хитро взвешенный на его участие. Классический SHAP всегда требует 2ⁿ прогонов, где n — число игроков. Можно протыкать по нему урок в free курсе (на русском).


В игровом подходе нас интересует то, что игроками могут быть разные штуки: сами агенты (когда их много — мультиагентная система), то, что они юзают, если мучаем одного агента (его инструменты) и то, что агент подтянул в контекст (документы в RAG).

В такой парадигме сейчас есть две либы:

— AgentSHAP — Shapley-атрибуция важности инструментов агента через метод Монте-Карло (ММК). ММК оптимизирует 2ⁿ необходимость. Концептуально AgentSHAP дёргает только вход-выход и строит на этом распределение Shap. Проверок пока немного (по сути только в самой статье), и по людям кажется, ещё не разошлось. Плюс — без PyPI, надо клонировать локально (я уже; наиграюсь — сделаю туториал).

— LLMX — возможно, статья на rebuttal =). Тоже «Shapley-атрибуция для RAG на минималках»: ShapleyAttributor считает вклад каждого извлечённого документа/куска контекста в вероятность конкретного ответа — прямой ответ на «что из контекста реально сработало» в RAG и мультиагентных пайплайнах.

Чем отличается от AgentSHAP:
Другие игроки: там инструменты агента, тут куски контекста. Второе — что считаем «выигрышем»: AgentSHAP смотрит на падение качества ответа (семантическая близость), а LLMX — на вероятность (log-prob), которую модель даёт нужному ответу. Плюс аппроксимация не только ММК, а целых пять. В том числе две основанные на суррогатах — линейных модельках.

Суррогат мне показался тоже прикольным на подсвет:
Вместо перебора коалиций гонят LLM на ~X случайных «масках» (какие куски контекста включены/выключены) и записывают, какая вероятность ответа вышла. На этих X примерах учат лёгкую линейную модельку «маска → результат», и её веса по каждому куску — это и есть атрибуция. В классическом XAI так работает LIME.


Что есть ещё:

Это без SHAP, но и не про интерпретируемость (интерпретируемость предполагает всегда оценку вклада сколь угодно уточненную от эмпирики каким-то методом, а все, что ниже — отслеживание эмпирического почему).

— Docent — не вижу ничего лучше, чем назвать как "анализатор логов". Шага два:
DQL — фильтр-поиск по логам, типа «покажи все, где агент лез к файлам».
Reading-шаг — а на каждый вытащенный ран натравливается LLM, читает его и ставит метку / оценку / короткий пересказ (один ран = один запрос к модели).
Это всё Python-скрипты с кэшем. Я это делаю руками))

— Petri — pipeline-версия для богатых — агент-аудитор, изучающий поведение целевой модели. Схема из трёх ролей: auditor ведёт многоходовый диалог (до 30 шагов, с симуляцией инструментов и откатами), target отвечает, judge размечает транскрипт. Target — целевая модель, Judge — ещё одна LLM. Работает, красиво, но дорого и долго.

— AgentBoard — аналитическая eval-доска для multi-turn агентов: fine-grained progress rate, разбивка по сабскиллам и визуализация траекторий — видно, на каком шаге и почему агент сыпется, но без чиселки важности.
❤14🔥1💅1
В целом, мир observability/трейсинга бОльший — Langfuse, Phoenix/Arize, AgentOps, плюс eval-фреймворки типа Inspect. Они все показывают, ЧТО делал агент (логи, шаги, стоимость), но не объясняют ПОЧЕМУ. Это ближе к мониторингу, а не интерпретируемости и тут очень сложно разводить границы.

Прикольная карта направления — обзор «Agentic-Transparency» (survey + таксономия).
Но сейчас interp (более менее не экспериментальный) построен на SHAP.

Посмотрим, куда доплывем!
Если вы что-то юзаете на регулярной основе — было бы интересно послушать.
❤12🔥4
Мы выпускаем образовательный ресурс open-xai.

Привет, друзья! Я шла к этому очень долго и наконец-то готова выпустить образовательный ресурс open-xai!

Ресурс построен как точка, где можно учиться просто всему, что есть в интерпретируемости. От классических методов, до геометрии и математики в моделях.


Сейчас в нем:

⁃ 2 трека. XAI Practitioner — объяснять поведение моделей руками, от классики до LLM. Math of LLMs — математика и mechanistic interpretability изнутри модели, на уровне весов и схем.
⁃ 17 тематических блоков — сквозняком от линейной регрессии до Sparse Autoencoders.
⁃ 50+ методов интерпретируемости.

Мы открываем ресурс и открываем первые два модуля (часть ресурса будет бесплатной и такие блоки будут открываться первыми сейчас).

Открытые с сегодня блоки погружают в термины и мир интерпретируемых моделей. После модулей вы никогда больше не сможете смотреть на них прежними глазами)


Это только начало галактики — и новые модули будем докатывать. Для понимания апдейтов можно завести аккаунт: https://open-xai-platform.web.app/register (письмо-подтверждение может упасть в спам — гляньте туда, если не пришло).

Тыкать, пробовать и делать баг-репорты (мы надеемся, что последнего будет мало) сюда: https://open-xai-platform.web.app
❤48🔥21👏4❤‍🔥1🤯1🎉1💅1
Зонды в проде и что послушать/почитать

Что такое зонд:
Зонд — мини-ML-вида-модель, которая работает на активациях большой модели. Задача такова:
Наш Х — скрытое состояние LLM на каждом токене — список матриц (для каждого примера — матрица d × n, где n — длина последовательности, d — внутренняя размерность модели). Не тензор, потому что есть нюансы — скину в комменты.
Наш Y на списке матриц — бинкласс — как там сейчас говорят «норм или стрём».


Зачем:
На зонд можно смотреть как на аппроксимацию. Ряд Тейлора мы тоже не считаем до конца, а берем приближение — тут также — мы что-то приближаем (пространство решений нашей страшной модели), чем-то попроще.

И, гуляя по интернету — я словила два свежих упоминания, где лабы выкатили детекторы-зонды на внутренних состояниях в прод.

Anthropic: короткое и без деталей
Борис Черни рассказал, что у них на трафике (на нас, получается) крутится классификатор prompt injection, который смотрит на загорающиеся нейроны — модель об инъекции не скажет, а нейроны видно. Но это подкаст, и всё в нём — слова.

DeepMind: подлиннее, с деталями
Building Production-Ready Probes For Gemini. Статья январская, но я её нашла в июльском отчёте, где как раз и написано, что зонды доехали до прода. Там же написано, что это «сложное изменение, затрагивающее много частей инфраструктурного стека» — но раз внедрили, видимо, оно того стоило.

Что делали:
Ловили cyber-offensive промпты на входе Gemini 2.5 Flash. Вредные запросы здесь очень похожи на легитимные вопросы по безопасности и вообще на обычный процесс написания кода. Почему — потому что давайте сами вспомним свой последний запрос в LLM при починке прода или эксперимента — специфика области.

Тезисы на забрать или осмыслить:

1. Линейная модель — база, но в прод доедет не на всём. В статье семь семейств: четыре из прошлых работ (линейный, EMA, MLP, attention) и три своих (MultiMax, Max of Rolling Means Attention и найденные автоматическим поиском через AlphaEvolve). Различаются они функцией агрегации (не путать с активацией) — тем, как n оценок, по одной на токен, сворачиваются в один скаляр.

2. Линейная модель фолзит, и фолзит агрегация. FNR на длинноконтекстных атаках у линейного зонда с mean pooling — 99.13%. Причина — усреднение, вред — это очень мало токенов из их большого количества. При этом, если сменить только агрегацию (на скользящее экспоненциальное среднее с максимумом), то FNR падает в среднем с 58.84% до 7.12%, но растет FPR (с 5.29% до 26.69%) и в целом ошибка модели на пару процентов. Зонды также не бьют LLM-классификаторы по общей ошибке, но бьют их по FNR на длинном контексте и джейлбрейках (на многоходовых и адаптивных атаках — проигрывают).

3. Сид в зондах — слабая компонента влияния на качество. Менять сиды в зондах — классическое требование всех статей, отсюда и GDM гоняли по 100 сидов на архитектуру. Отбор лучшего по валидации даёт выигрыш 0.008 test loss. А выбор архитектуры — 0.064 у линейного mean против 0.025 у лучшего.

4. Для практического внедрения зонда порог выбирается не по его качеству. В статье порог — взвешенная сумма FPR и FNR на валидации, и веса — цена каждого типа ошибки. Упрощая: заблокировать невиновного здесь в десять раз дороже, чем пропустить виновного (вес 50 против 5) — потому что настоящих атак в трафике исчезающе мало, а обиженных пользователей будет много.

С чего в прод понесли?

Зонд — это инференс стоимостью обученных весов. У простейшего линейного зонда таких весов выйдет всего d; у остальных архитектур больше, но всё равно на порядки меньше любой LLM. Активации — почти бесплатный датасет — модель всегда считает сама для forward pass-а, мы их подбираем.

В статье разрыв в стоимости с LLM-классификатором — больше 10 000× (это вычислительная стоимость инференса на запрос).

Что получили, работает:
Каскад: они отправляют в LLM только ~8% запросов, где зонд не уверен, — и получают ошибку ниже, чем у самой LLM. Причём Flash по всей кривой цена/качество бьёт Pro версию и мы (снова) видим, что большая модель ≠ лучший классификатор.
🔥7❤4
Что получили, не работает:
На джейлбрейках уязвимость минимум на 1% запросов — у всех методов без исключения. Под адаптивным ред-тимингом FNR выбранного авторами зонда — 42%. Так что против обычного трафика зонд — хорошо, а против думающего противника — нет.

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

Нюанс два:
Слой снимаем один и фиксированный, обычно из середины модели. Она (середина) богаты на всякие представления. Ибо активации тяжёлые. Один пример на миллион токенов при d в несколько тысяч и float32 — десятки гигабайт на один промпт.

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

P. S. Пока думала над названием поста, в голове возникла песня Хованского «Батя в здании». Такие артефакты молодости.

Почему она тут уместна — потому что по своей природе зонд — бинарный классификатор, а бинарный классификатор — потомок линейной модели, а линейной модели больше лет, чем всему DL.

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

В общем, получается любим базу, друзья! Надеюсь вам будет также красиво от этой работы, как мне : )
❤4
Чем ещё хотела поделиться — вот прошли выходные (с фикшенными багами), как мы выпустили open-xai.

И я смотрю на эти первые 60 пользователей (спасибо вам!), смотрю на наш начальный дизайн, на модули, на обновления в работе — и так хочется улучшать это всё!

Мой восторг сменился постепенно на рациональность — мало выпустить продукт, надо думать о UI, UX, доходимости, понятности и кому он нужен, прайс-не прайс, retention, ltv и-так-далее.

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

Я знаю что продукты умирают, и надеюсь, мы не умрем.

P.S. Название поменяем, на второй день до нас дошло, что и XAI и open — уже стырено. Но отсылок не было. Честно.
❤16