Друзья, привет!
Коллеги выложили запись нашего вчерашнего подкаста
об интерпретируемости. За час мы обсудили актуальные направления в области интерпретируемости классических моделей и LLM и накидали гипотез.
Гости подкаста:
➡️Максим Костриця – DS Researcher в Raft, магистр ФКН ВШЭ
➡️Тимур Низамов, разработчик @LLAMATOR, магистрант Talent Hub ИТМО
➡️Честер, вроде бы он заходил, и я :)
Тайм-коды:
00:00:00 интро
00:04:21 как развивалась область интерпретируемости?
00:08:23 концептуальные слои
00:16:55 поведенческий и репрезентативный анализ
00:27:09 механистическая интерпретируемость
00:33:22 Sparse Autoencoders и результаты исследования Максима по влиянию на "токсичные" нейроны модели
01:01:10 в чём идея Circuit Tracing?
01:03:20 подведение итогов: есть ли тренд на интерпретируемость и к чему это может привести?
01:11:49 QA
Полезные ссылки по теме, упомянутые в подкасте:
https://habr.com/ru/articles/885076/ — туториал про зонды
https://arxiv.org/pdf/2507.12950 — кейсы XAI в радиологии
https://www.lesswrong.com/posts/jGuXSZgv6qfdhMCuJ/refusal-in-llms-is-mediated-by-a-single-direction
https://www.anthropic.com/news/golden-gate-claude
https://monitor.transluce.org/dashboard/chat
https://www.neuronpedia.org/
https://platform.goodfire.ai/
https://transformer-circuits.pub/
Ссылка на ютуб: https://www.youtube.com/watch?v=M9jVLiFXs04
Коллеги выложили запись нашего вчерашнего подкаста
об интерпретируемости. За час мы обсудили актуальные направления в области интерпретируемости классических моделей и LLM и накидали гипотез.
Гости подкаста:
➡️Максим Костриця – DS Researcher в Raft, магистр ФКН ВШЭ
➡️Тимур Низамов, разработчик @LLAMATOR, магистрант Talent Hub ИТМО
➡️Честер, вроде бы он заходил, и я :)
Тайм-коды:
00:00:00 интро
00:04:21 как развивалась область интерпретируемости?
00:08:23 концептуальные слои
00:16:55 поведенческий и репрезентативный анализ
00:27:09 механистическая интерпретируемость
00:33:22 Sparse Autoencoders и результаты исследования Максима по влиянию на "токсичные" нейроны модели
01:01:10 в чём идея Circuit Tracing?
01:03:20 подведение итогов: есть ли тренд на интерпретируемость и к чему это может привести?
01:11:49 QA
Полезные ссылки по теме, упомянутые в подкасте:
https://habr.com/ru/articles/885076/ — туториал про зонды
https://arxiv.org/pdf/2507.12950 — кейсы XAI в радиологии
https://www.lesswrong.com/posts/jGuXSZgv6qfdhMCuJ/refusal-in-llms-is-mediated-by-a-single-direction
https://www.anthropic.com/news/golden-gate-claude
https://monitor.transluce.org/dashboard/chat
https://www.neuronpedia.org/
https://platform.goodfire.ai/
https://transformer-circuits.pub/
Ссылка на ютуб: https://www.youtube.com/watch?v=M9jVLiFXs04
🔥9
Привет, друзья!
У Antropic’ов вышли некоторые июльские обновления в тредах. Пока изучаю, очень зацепилась за статью Subliminal Learning: Language Models Transmit Behavioral Traits via Hidden Signals in Data [paper].
Термин Subliminal Learning — введен как передача поведенческих черт от модели-учителя к модели-студенту при дистилляции.
✔️ Как делали эксперимент
Брали:
1. Учителя: модель, модифицированная через системный промт или дообучение для выражения определённой черты — в статье это предпочтение конкретному животному, дереву и миссалигнмент.
2. Данные: датасет, сделанный pretrained/modified моделью учителем. Важно, что дотасет такой, что черта, зашитая в модель при дообучении не выражена. Пример — мы сказали модели, что она любит сов и просим её сгенерировать числа. Этот датасет (остановимся на числах) дальше используется для модели-студента, после фильтрации — очищения данных от любых явных или потенциально связанных с чертой признаков.
Для фильтрации в том числе использовали LLM.
3. Студента: моделей-студентов брали в нескольких сетапах
(i) та же базовая архитектура модели, что и учитель;
(ii) отличная от учителя базовая архитектура модели;
(iii) модели, обученные на схожих инициализациях
✔️ Что получили
1. Модели-ученики, обученные на числовых последовательностях от учителей с заданными предпочтениями (например, к животным или деревьям), сдвигаются в сторону этих предпочтений.
Пример:
— До обучения GPT-4.1 nano выбирает «owl» как любимое животное в 12% случаев.
— После обучения на числах от "сово-ориентированного" учителя — более чем в 60% случаев.
Контрольные студенты, обученные на числах от "нейтральной" модели, такого смещения не демонстрируют.
Передача черт также воспроизводится при обучении на reasoning traces (Chain-of-Thought) и коде.
2. Помимо любви к совам, из более серьезного, модели могут перенимать misalignment.
Студенты, обученные на числах, сгенерированных misaligned моделью (дообученной на небезопасном коде), демонстрировали некорректное поведение на свободных промтах (например, призывы к насилию). Контрольные модели (обученные на тех же числовых шаблонах от безопасных учителей) — таких эффектов не демонстрируют.
✔️Всегда ли можно перенять знания? Нет.
Показали, что эффект Subliminal обучения возникает если:
— учитель и студент — одна и та же архитектура с одинаковой инициализацией весов.
— учитель и студент имеют близкие инициализации параметров (GPT-4.1/GPT-4o)
2 + 2. Математика входит в статью
Формально, на основе разложения в ряд Тейлора (блок 6, полное док-во в Appendix C) показано, что обучение на основе меток, созданных любым достаточно близким учителем, будет перемещать ученика только в том же направлении или, в худшем случае, перпендикулярно обновлению учителя в пространстве параметров.
В целом, это кажется интуитивным. Но тот факт, что сдвиг не связан с природой данных обучения (учимся числам, начинаем любить сов) — удивителен.
У Antropic’ов вышли некоторые июльские обновления в тредах. Пока изучаю, очень зацепилась за статью Subliminal Learning: Language Models Transmit Behavioral Traits via Hidden Signals in Data [paper].
Термин Subliminal Learning — введен как передача поведенческих черт от модели-учителя к модели-студенту при дистилляции.
✔️ Как делали эксперимент
Брали:
1. Учителя: модель, модифицированная через системный промт или дообучение для выражения определённой черты — в статье это предпочтение конкретному животному, дереву и миссалигнмент.
2. Данные: датасет, сделанный pretrained/modified моделью учителем. Важно, что дотасет такой, что черта, зашитая в модель при дообучении не выражена. Пример — мы сказали модели, что она любит сов и просим её сгенерировать числа. Этот датасет (остановимся на числах) дальше используется для модели-студента, после фильтрации — очищения данных от любых явных или потенциально связанных с чертой признаков.
Для фильтрации в том числе использовали LLM.
3. Студента: моделей-студентов брали в нескольких сетапах
(i) та же базовая архитектура модели, что и учитель;
(ii) отличная от учителя базовая архитектура модели;
(iii) модели, обученные на схожих инициализациях
✔️ Что получили
1. Модели-ученики, обученные на числовых последовательностях от учителей с заданными предпочтениями (например, к животным или деревьям), сдвигаются в сторону этих предпочтений.
Пример:
— До обучения GPT-4.1 nano выбирает «owl» как любимое животное в 12% случаев.
— После обучения на числах от "сово-ориентированного" учителя — более чем в 60% случаев.
Контрольные студенты, обученные на числах от "нейтральной" модели, такого смещения не демонстрируют.
Передача черт также воспроизводится при обучении на reasoning traces (Chain-of-Thought) и коде.
2. Помимо любви к совам, из более серьезного, модели могут перенимать misalignment.
Студенты, обученные на числах, сгенерированных misaligned моделью (дообученной на небезопасном коде), демонстрировали некорректное поведение на свободных промтах (например, призывы к насилию). Контрольные модели (обученные на тех же числовых шаблонах от безопасных учителей) — таких эффектов не демонстрируют.
✔️Всегда ли можно перенять знания? Нет.
Показали, что эффект Subliminal обучения возникает если:
— учитель и студент — одна и та же архитектура с одинаковой инициализацией весов.
— учитель и студент имеют близкие инициализации параметров (GPT-4.1/GPT-4o)
2 + 2. Математика входит в статью
Формально, на основе разложения в ряд Тейлора (блок 6, полное док-во в Appendix C) показано, что обучение на основе меток, созданных любым достаточно близким учителем, будет перемещать ученика только в том же направлении или, в худшем случае, перпендикулярно обновлению учителя в пространстве параметров.
В целом, это кажется интуитивным. Но тот факт, что сдвиг не связан с природой данных обучения (учимся числам, начинаем любить сов) — удивителен.
arXiv.org
Subliminal Learning: Language models transmit behavioral traits...
We study subliminal learning, a surprising phenomenon where language models transmit behavioral traits via semantically unrelated data. In our main experiments, a "teacher" model with some trait T...
👍6❤1
✔️Ограничения
1. Искусственные задачи — используемые сетапы упрощены и не похожи на реальные приложения моделей.
2. Вопрос, что передается, а что нет и какие точные условия для этого (кроме близости параметров инициализации) — открыт. Например, в статье передавалось предпочтение не ко всем животным из описанного сетапа.
✔️ Впечатление
Красиво! Невероятный эстетический восторг наводят на меня статьи, которые как-то сравнивают модели, с точки зрения самостоятельного объекта. Будто бы внутри столько загадок — и как много ещё можно открыть! :)
Сразу захотелось поделиться статьей тут. Ну и картинку процесса, конечно, прилагаю.
1. Искусственные задачи — используемые сетапы упрощены и не похожи на реальные приложения моделей.
2. Вопрос, что передается, а что нет и какие точные условия для этого (кроме близости параметров инициализации) — открыт. Например, в статье передавалось предпочтение не ко всем животным из описанного сетапа.
✔️ Впечатление
Красиво! Невероятный эстетический восторг наводят на меня статьи, которые как-то сравнивают модели, с точки зрения самостоятельного объекта. Будто бы внутри столько загадок — и как много ещё можно открыть! :)
Сразу захотелось поделиться статьей тут. Ну и картинку процесса, конечно, прилагаю.
❤7
Привет, друзья!
Половину лета делала рисерч на предмет того, нужно ли отдельно как-то разбирать XAI для других модальностей. Оказалось, почти не нужно, но есть что-то, чем всё-таки здорово поделиться. И сегодня в программе
Библиотеки для interpretability на Time Series данных.
1. TSInterpret — для интерпретации моделей, обученных задаче классификации на временных рядах. В библиотеке два типа методов:
— Instance-based — методы, основанные на конкретной точке данных. Все доступные методы в библиотеке построены на контрфактуальных примерах. Разница — в построении контрафакта — один основан на шейплейтах (обратите внимание на красоту слова), второй основан на замене кусочков ряда признаками для другого объекта из train-ser, третий — на эволюционном алгоритме.
— Feature attribution methods — методы, основанные на получение важных признаков, определяющих поведение модели. В библиотеке всего два метода — один расширяет тепловые карты, второй — основан на LIME.
2. TimeInterpret — библиотека в основном построенная на Feature attribution methods, причем многие методы — расширение классических XAI методов с поправкой на временной ряд.
Методы в основном основаны на вычисление важности либо через градиент, либо через маскирование.
3. TSCaptum — библиотека, полностью построенная на адаптации методов из библиотеки Captum под временные ряда и библиотеки для работы с временными рядами, типа aeon toolkit.
Ещё можно отдельно подсмотреть код тут (CAM для Multivariative TS), пример полного XAI-workflow тут, а статьи собраны в этом прекрасном репозитории.
__________________
А ещё вчера с коллегами закинули статью сюда, и это был безумно великолепный опыт подготовки материалов к не университетским конфам!
Даже если будет реджект (но это мы узнаем только в сентябре) — работа дала много новых навыков. И, конечно, бесспорно лучших коллег, потому что сабмиты мы делали в 2 часа ночи по GMT +3, и в час ночи по IST и GMT+2.
Думаю, про это ещё напишу, если вам интересно! Как-то дайте знать)
Отличного вам дня,
Ваш Дата-автор!
Половину лета делала рисерч на предмет того, нужно ли отдельно как-то разбирать XAI для других модальностей. Оказалось, почти не нужно, но есть что-то, чем всё-таки здорово поделиться. И сегодня в программе
Библиотеки для interpretability на Time Series данных.
1. TSInterpret — для интерпретации моделей, обученных задаче классификации на временных рядах. В библиотеке два типа методов:
— Instance-based — методы, основанные на конкретной точке данных. Все доступные методы в библиотеке построены на контрфактуальных примерах. Разница — в построении контрафакта — один основан на шейплейтах (обратите внимание на красоту слова), второй основан на замене кусочков ряда признаками для другого объекта из train-ser, третий — на эволюционном алгоритме.
— Feature attribution methods — методы, основанные на получение важных признаков, определяющих поведение модели. В библиотеке всего два метода — один расширяет тепловые карты, второй — основан на LIME.
2. TimeInterpret — библиотека в основном построенная на Feature attribution methods, причем многие методы — расширение классических XAI методов с поправкой на временной ряд.
Методы в основном основаны на вычисление важности либо через градиент, либо через маскирование.
3. TSCaptum — библиотека, полностью построенная на адаптации методов из библиотеки Captum под временные ряда и библиотеки для работы с временными рядами, типа aeon toolkit.
Ещё можно отдельно подсмотреть код тут (CAM для Multivariative TS), пример полного XAI-workflow тут, а статьи собраны в этом прекрасном репозитории.
__________________
А ещё вчера с коллегами закинули статью сюда, и это был безумно великолепный опыт подготовки материалов к не университетским конфам!
Даже если будет реджект (но это мы узнаем только в сентябре) — работа дала много новых навыков. И, конечно, бесспорно лучших коллег, потому что сабмиты мы делали в 2 часа ночи по GMT +3, и в час ночи по IST и GMT+2.
Думаю, про это ещё напишу, если вам интересно! Как-то дайте знать)
Отличного вам дня,
Ваш Дата-автор!
fzi-forschungszentrum-informatik.github.io
TSInterpret
TSInterpret is a Python library for interpretable time series classification.
❤8🔥1💩1😍1🤣1
Привет, друзья! Врываюсь с полезными материалами! :)
Сделала открытую страничку, посвящённую механистической интерпретируемости.
В отличие от "обычной интерпретируемости", где мы чаще ограничиваемся атрибуцией признаков или визуализацией, механистическая ставит цель понять механизмы: какие представления формируются внутри модели, какие там есть схемы и связи и каким образом из простых блоков складывается сложное поведение.
Пока что глобально сильных результатов, вроде тех, что приближали бы к ответу на вопрос "Как спастись от AGI?" нет. Но с помощью MI можно:
— находить интерпретируемые признаки внутри моделей и отслеживать, как они взаимодействуют;
— создавать инструменты для редактирования поведения моделей (feature editing, model steering);
— теоретически понимать архитектуры вроде трансформеров, на которых сегодня держится весь прогресс :)
На страничках уже есть:
— введение в тему и зачем она нужна;
— базовые определения и ключевые термины;
— обзор гипотез, на которых строится подход;
— разбор архитектуры трансформеров.
Другие ресурсы по MI есть, конечно. Но я хочу сделать "живой справочник" и подтягиваю свежие статьи и работы, чтобы можно было сориентироваться в том, что есть сейчас.
Надеюсь больше не пропадать, хотя творческий кризис — это почти полезно, если из него выйти.
Всегда Ваш,
Дата-автор! :)
Сделала открытую страничку, посвящённую механистической интерпретируемости.
В отличие от "обычной интерпретируемости", где мы чаще ограничиваемся атрибуцией признаков или визуализацией, механистическая ставит цель понять механизмы: какие представления формируются внутри модели, какие там есть схемы и связи и каким образом из простых блоков складывается сложное поведение.
Пока что глобально сильных результатов, вроде тех, что приближали бы к ответу на вопрос "Как спастись от AGI?" нет. Но с помощью MI можно:
— находить интерпретируемые признаки внутри моделей и отслеживать, как они взаимодействуют;
— создавать инструменты для редактирования поведения моделей (feature editing, model steering);
— теоретически понимать архитектуры вроде трансформеров, на которых сегодня держится весь прогресс :)
На страничках уже есть:
— введение в тему и зачем она нужна;
— базовые определения и ключевые термины;
— обзор гипотез, на которых строится подход;
— разбор архитектуры трансформеров.
Другие ресурсы по MI есть, конечно. Но я хочу сделать "живой справочник" и подтягиваю свежие статьи и работы, чтобы можно было сориентироваться в том, что есть сейчас.
Надеюсь больше не пропадать, хотя творческий кризис — это почти полезно, если из него выйти.
Всегда Ваш,
Дата-автор! :)
sadsabrina.github.io
Awesome MI theory
Simple notes and articles on MI theory
11❤17👍6❤🔥4
📰 Neuronpedia
Достаточно давно наблюдаю за разными ресурсами, которые помогают потрогать интерпретируемость в онлайн режиме. Сделать такой ресурс сложно, поддерживать — ещё сложнее, и один из любимых для меня — Neuronpedia. И сегодня туда как раз завезли обновления.
Neuronpedia — похожа на 3Blue1Brown, но только для механистической интерпретируемости.
В режиме игры (или простого «тыкания») там можно:
* попробовать Gemma Scope — мини-игра, которая поможет понять, что такое признак (feature) в модели, как найти за что отвечает признак и как управлять (steering) моделью на основе найденного признака;
* исследовать Circuit Tracer — визуализация, которая помогает понять, как признаки проходят по модели layer by layer и образуют цепочки (circuits);
* рассмотреть аннотированные признаки, полученные с помощью SAE и Transcoders на разных моделях — эта возможность хорошо описывает идею SAE (sparse autoencoders), Transcoders и то, как именно с ними получаются признаки.
Моделей с обученными SAE немного, но они пополняются и «свежая» появилась сегодня — Qwen3-4B с 6 миллионами автоматически аннотированными фичами. SAE доступны сразу для всех слоёв.
📰 Выделенные понятия — feature, steering, circuit, sae, transcoders — сейчас составляют основное направление в MI.
Плюсом — это не только академически полезно, но и визуально красиво: можно буквально «увидеть» то, что стоит за инференсами, которые нас скоро заменят .
Всем хорошей среды!
Ваш Дата-автор.
Достаточно давно наблюдаю за разными ресурсами, которые помогают потрогать интерпретируемость в онлайн режиме. Сделать такой ресурс сложно, поддерживать — ещё сложнее, и один из любимых для меня — Neuronpedia. И сегодня туда как раз завезли обновления.
Neuronpedia — похожа на 3Blue1Brown, но только для механистической интерпретируемости.
В режиме игры (или простого «тыкания») там можно:
* попробовать Gemma Scope — мини-игра, которая поможет понять, что такое признак (feature) в модели, как найти за что отвечает признак и как управлять (steering) моделью на основе найденного признака;
* исследовать Circuit Tracer — визуализация, которая помогает понять, как признаки проходят по модели layer by layer и образуют цепочки (circuits);
* рассмотреть аннотированные признаки, полученные с помощью SAE и Transcoders на разных моделях — эта возможность хорошо описывает идею SAE (sparse autoencoders), Transcoders и то, как именно с ними получаются признаки.
Моделей с обученными SAE немного, но они пополняются и «свежая» появилась сегодня — Qwen3-4B с 6 миллионами автоматически аннотированными фичами. SAE доступны сразу для всех слоёв.
📰 Выделенные понятия — feature, steering, circuit, sae, transcoders — сейчас составляют основное направление в MI.
Плюсом — это не только академически полезно, но и визуально красиво: можно буквально «увидеть» то, что стоит за инференсами
Всем хорошей среды!
Ваш Дата-автор.
YouTube
3Blue1Brown
My name is Grant Sanderson. Videos here cover a variety of topics in math, or adjacent fields like physics and CS, all with an emphasis on visualizing the core ideas. The goal is to use animation to help elucidate and motivate otherwise tricky topics, and…
❤5🔥4
Personality и поведение моделей
Привет, друзья! В блоге Anthropic вышла новая любопытная заметка Circuit Vignette, где показана красивая пища для размышлений — как системный промпт в виде задания роли влияет на ответ модели.
TLDR:
"ты — аналитик данных/разработчик/..." улучшит вайб-кодинг. Показано теперь не только эмпирически, но и теоретически.
Контекст:
LLM в процессе предобучения осваивают широкий спектр ролей и персонажей — просто по определению из даных. На этапе дообучения приоритет закрепляется за стандартным «ассистентом». В то же время, в практике можно использовать системный промт, где может быть указана инструкция: «Ты — коуч, «Ты — повар», «Ты — специалист по кошкам» и т.д.
Что сделали:
Взяли простой пример — попросили модель ответить на вопрос What is the square root of 27? в роли школьника и в роли graduate student.
Модель-в-роли-школьника: «Я не знаю! Это сложная задача для взрослых. Давай поиграем в кубики?»
Модель-в-роли-graduate student: дает корректный ответ.
Дальше, с помощью графов формирования ответа, описывающих circuit’s* для каждого ответа, рассмотрели процесс формирования outputs.
Граф прикрепляю, на нем видно, что:
* роль школьника связана с активацией признака «ребёнок дошкольного возраста»;
* роль школьника усиливает активацию для ответа «я не знаю»;
Что это значит и доп результаты:
1. Роль может дать подавление знания: активации, связанные с «ролью ребёнка», усиливают шаблон «Я не знаю», хотя в базовой версии — ответ модели корректный.
Но подавление знания не стабильно: на задачу извлечения корня из 25 модель-дошкольник дала ответ.
2. Роль graduate student не дает существенного влияния на результат. Открытый вопрос — значит ли это, что модель просто не сформировала роль или такой результат связан с тем, что потенциальный ответ graduate student совпадает с дефолтным?
Почему это интересно:
Работа показывает, что персоны задействуют внутренние активации специфических признаков и шаблонов поведения. Персона может:
* усиливать или подавлять знания,
* взаимодействовать с восприятием сложности задачи,
* опираться на примеры ролевой речи из данных обучения.
Конечно, понять как это формируется до конца — сложно. Даже этот пример генерирует кучу открытых вопросов, с которым нужно работать. Но я опять ловлю себя на мысли, что это красиво и радуюсь тому, что есть всё больше инструментов и теоретической базы, чтобы это всё изучить. ❤️🔥
Привет, друзья! В блоге Anthropic вышла новая любопытная заметка Circuit Vignette, где показана красивая пища для размышлений — как системный промпт в виде задания роли влияет на ответ модели.
TLDR:
"ты — аналитик данных/разработчик/..." улучшит вайб-кодинг. Показано теперь не только эмпирически, но и теоретически.
Контекст:
LLM в процессе предобучения осваивают широкий спектр ролей и персонажей — просто по определению из даных. На этапе дообучения приоритет закрепляется за стандартным «ассистентом». В то же время, в практике можно использовать системный промт, где может быть указана инструкция: «Ты — коуч, «Ты — повар», «Ты — специалист по кошкам» и т.д.
Что сделали:
Взяли простой пример — попросили модель ответить на вопрос What is the square root of 27? в роли школьника и в роли graduate student.
Модель-в-роли-школьника: «Я не знаю! Это сложная задача для взрослых. Давай поиграем в кубики?»
Модель-в-роли-graduate student: дает корректный ответ.
Дальше, с помощью графов формирования ответа, описывающих circuit’s* для каждого ответа, рассмотрели процесс формирования outputs.
*circuit — это подграф вычислительного процесса модели, где отдельные узлы соответствуют активациям признаков или токенов, а рёбра показывают, как информация «перетекает» от одной части модели к другой.
Граф прикрепляю, на нем видно, что:
* роль школьника связана с активацией признака «ребёнок дошкольного возраста»;
* роль школьника усиливает активацию для ответа «я не знаю»;
Что это значит и доп результаты:
1. Роль может дать подавление знания: активации, связанные с «ролью ребёнка», усиливают шаблон «Я не знаю», хотя в базовой версии — ответ модели корректный.
Но подавление знания не стабильно: на задачу извлечения корня из 25 модель-дошкольник дала ответ.
2. Роль graduate student не дает существенного влияния на результат. Открытый вопрос — значит ли это, что модель просто не сформировала роль или такой результат связан с тем, что потенциальный ответ graduate student совпадает с дефолтным?
Почему это интересно:
Работа показывает, что персоны задействуют внутренние активации специфических признаков и шаблонов поведения. Персона может:
* усиливать или подавлять знания,
* взаимодействовать с восприятием сложности задачи,
* опираться на примеры ролевой речи из данных обучения.
Конечно, понять как это формируется до конца — сложно. Даже этот пример генерирует кучу открытых вопросов, с которым нужно работать. Но я опять ловлю себя на мысли, что это красиво и радуюсь тому, что есть всё больше инструментов и теоретической базы, чтобы это всё изучить. ❤️🔥
❤5❤🔥2
Моя персоналити на эту осень — студент, рисерчер на полставки и преподаватель. Иду к цели принести полноценный курс по интерпретируемости в университет, опубликовать статью и продолжить преподавать.
А ещё мне очень хочется продолжать развивать канал, поэтому традиционный (вместе с кризисами творчества) пост — чего бы вы хотели видеть в контенте?
Буду признательна за комментарии. А если у вас есть идеи по коллабам — дайте занть — я вам напишу или пишите сразу мне — @sabrina_sadiekh :)
Отличного начала осени! ☺️
А ещё мне очень хочется продолжать развивать канал, поэтому традиционный (вместе с кризисами творчества) пост — чего бы вы хотели видеть в контенте?
Буду признательна за комментарии. А если у вас есть идеи по коллабам — дайте занть — я вам напишу или пишите сразу мне — @sabrina_sadiekh :)
Отличного начала осени! ☺️
🔥22👍1
Пока сильно не завалило делами, села расширять курс и одним из пунктов плана у меня были методы на основе вмешательства.
Методы интерпретации на основе вмешательства основаны на идее ответа на вопрос:
«Что произойдет с предсказанием модели если изменить или исключить отдельный признак?»
Cуть всех таких методов состоит в том, что мы изменяем входные данные x по заранее определённому правилу, пропускаем измененное изображение x' через модель и фиксируем разность D = f(x) - f(x') выхода модели. Отсюда, важность признака определяется через чувствительность модели к его изменениям.
Среди стандартных методов — Occlusion, Ablataion и Pertubation (Permutation). А вот не совсем стандартный, но всё ещё часто встречающийся метод — RISE (Randomized Input Sampling for Explanation of Black-box Models). И такие в RISE красивые были переходы, что я решила включить его в курс и сделать по нему туториал.
Туториал снова на котиках, включает в себя практический ноутбук с кодом и статью на Хабр. Там и математика, и картинки — в общем, всё для отличного вечера.
Залетайте читать, и прекрасной пятницы! ☺️
Please open Telegram to view this post
VIEW IN TELEGRAM
arXiv.org
RISE: Randomized Input Sampling for Explanation of Black-box Models
Deep neural networks are being used increasingly to automate data analysis and decision making, yet their decision-making process is largely unclear and is difficult to explain to the end users....
🔥10❤6👍5
Привет, друзья! Немного не техническое (хотя, кто знает) сегодня. Так как меня приняли ревьюить NeuroIPS workshop, и я провожу ревью на воркшопе такого уровня впервые, мне стало важно структурировать информацию — чем хорошее ревью на научную статью отличается от плохого. Делюсь:
Рецензия на любую работу для меня — это про комбинацию двух составляющих:
— Фильтр.
— Фидбэк.
Фильтрация — это про "оценить работу, оценить усилия на эту работу, провалидировать результат работы и вынести вердикт".
Фидбэк — это про "рассказать, что хорошо, что плохо" и по возможности "как сделать лучше".
Это, с одной стороны, задает ревьюируемому направления для роста, а с другой — формирует сообщество — что является хорошей работой, а что — нет.
Я аггрегировала несколько guidelines и вынесла не совсем очевидные мысли.
Прежде всего, какой-то шаблон ревью — это никогда не проблема, так как у конференций бывают свои гайды про ревью. Но за пределами гайдов, я выделила для себя такие пункты:
1. Помощь. Мне понравилась мысль отсюда, что цель ревью — это помощь. Соответственно результат ревью должен помогать коллеге понять, почему он молодец или почему он не молодец.
2. TLDR. Для проверки своего понимания работы, полезно сделать свой TLDR работы. Потому что когда не понимаешь, то видишь ошибки там, где их нет.
3. Questions. Если в работе есть слабые или слепые места, которые при том не объяснены, то их стоит не только констатировать как факт, но и задавать в виде вопросов. При этом, мне нравится принцип actionable вопросов и замечаний (с возможностью исправить). Не «текст написан плохо», а «стоит уточнить различие с работой X» или «пояснить выбор параметра λ».
4. Хвали-ругай. Даже если статья слабая — указывать сильные стороны. Это показывает, что работа прочитана внимательно. Любая статья (да даже домашка на курсах/в магистратуре) — это как правило львиная работа. И если после неё только "дали по шапке", то можно живо отбить мотивацию делать что-то дальше.
Я — огромный хейтер плохих фидбеков, потому что обычно вкладываю в работу силы, душу, сон, почки и вот это всё. Так как я человек чувствительный, то оценка в две строки (особенно плохая) — это плевок.
В то же время я стараюсь помнить и другую сторону: у проверяющего может быть десяток статей, дедлайн поджимает, времени мало, оплата символическая. Всех можно понять.
Поэтому выбрала для себя такой подход: просто делать ревью максимально хорошо сама. И надеяться, что это станет нормой — и остальные тоже будут подтягиваться.
Надеюсь, этот пост и вам поможет при проверке чьей либо работы!
Хорошее умножает хорошее, и мне хочется в это верить :)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥10
Немного мыслей про обучение и изучаемые методы
В октябре буду снова читать пару занятий по XAI на ФКН, и мне очень нравится строить занятия так — одно я посвящаю стареньким подходам, а одно — более новеньким.
Обычно, в рамках старенького я рассказываю про интерпретируемые модели, а в этом году на меняла "упала" идея рассказать в рамках дополнительных глав про GLM, GAM и MoE (потому что поток студентов тот же).
Generalized Linear Models, Generalized Additive Models и Mixture of Experts — методы ровно из 19XXх, когда активно задавались вопросами интерпретируемого решения нелинейных задач.
GLM (Generalized Linear Models) — расширение линейной регрессии, позволяющее целевой переменной быть распределенной как угодно.
GAM (Generalized Additive Models) — шаг дальше — берут идеи GAM и вместо линейных зависимостей допускают аддитивные нелинейные функции признаков.
MoE — идея ансамбля, где данные сегментируются по кластерам и каждый модель (эксперт) учится на «своём» регионе пространства признаков. Итоговый прогноз — взвешенная функция от каждого локального прогноза.
Сейчас эти методы не слишком популярны — у нас достаточный практический аппарат и ширина методов, чтобы, изучая ML, опустить эти детали.
Но на мой взгляд, такие «древние» методы очень полезно включать в обучение — они очень сильно расширяют концептуальный взгляд на моделирование. Зная их, на мой взгляд, можно:
а) Иметь в арсенале зоопарк всё ещё достаточно контроллируемых решений, а иногда и более быстрых — и это плюс для индустрии;
б) Иметь более расширенный кругозор для сборки новых методов — и это плюс для теоретиков;
Так, при сборке нового, MoE, например, вернулся в трансформерах (Switch, Mixtral) — и оказался эффективной идеей к обучению моделей с большим количеством параметров без взрывного роста Floating Point Operations Per Second. Проще говоря, больше параметров с культурной стоимостью вычислений. А GAM-модели заложили основу для попытки построить интерпретируемые по дизайну сетки — GamiNet.
И вот очень я радуюсь, когда вижу, что старенькие методы — иногда прямо-таки коробка нового. Таким мне это показалось красивым сегодня, что захотелось поделиться. А ещё теоретические блоки по этим методам в начале октября добавлю в бесплатную часть курса на степик, чтобы можно было удобно изучить.
В октябре буду снова читать пару занятий по XAI на ФКН, и мне очень нравится строить занятия так — одно я посвящаю стареньким подходам, а одно — более новеньким.
Обычно, в рамках старенького я рассказываю про интерпретируемые модели, а в этом году на меняла "упала" идея рассказать в рамках дополнительных глав про GLM, GAM и MoE (потому что поток студентов тот же).
Generalized Linear Models, Generalized Additive Models и Mixture of Experts — методы ровно из 19XXх, когда активно задавались вопросами интерпретируемого решения нелинейных задач.
GLM (Generalized Linear Models) — расширение линейной регрессии, позволяющее целевой переменной быть распределенной как угодно.
GAM (Generalized Additive Models) — шаг дальше — берут идеи GAM и вместо линейных зависимостей допускают аддитивные нелинейные функции признаков.
MoE — идея ансамбля, где данные сегментируются по кластерам и каждый модель (эксперт) учится на «своём» регионе пространства признаков. Итоговый прогноз — взвешенная функция от каждого локального прогноза.
Сейчас эти методы не слишком популярны — у нас достаточный практический аппарат и ширина методов, чтобы, изучая ML, опустить эти детали.
Но на мой взгляд, такие «древние» методы очень полезно включать в обучение — они очень сильно расширяют концептуальный взгляд на моделирование. Зная их, на мой взгляд, можно:
а) Иметь в арсенале зоопарк всё ещё достаточно контроллируемых решений, а иногда и более быстрых — и это плюс для индустрии;
б) Иметь более расширенный кругозор для сборки новых методов — и это плюс для теоретиков;
Так, при сборке нового, MoE, например, вернулся в трансформерах (Switch, Mixtral) — и оказался эффективной идеей к обучению моделей с большим количеством параметров без взрывного роста Floating Point Operations Per Second. Проще говоря, больше параметров с культурной стоимостью вычислений. А GAM-модели заложили основу для попытки построить интерпретируемые по дизайну сетки — GamiNet.
И вот очень я радуюсь, когда вижу, что старенькие методы — иногда прямо-таки коробка нового. Таким мне это показалось красивым сегодня, что захотелось поделиться. А ещё теоретические блоки по этим методам в начале октября добавлю в бесплатную часть курса на степик, чтобы можно было удобно изучить.
❤7👍3❤🔥1
На днях вышло два интересных подкаста с Neel Nanda — человеком, который стоит где-то спереди всего движения с механистической интерпретируемостью.
Мне очень импонирует его взгляд и стремление добавлять много открытых материалов. И в целом меня вдохновляет его заявления и действия, направленные на «Эффективный альтруизм» и «Рациональность». Не могу сказать, что это что-то про меня, но как минимум — мне очень интересен поток мыслей, формирующий такую позицию. Поэтому с удовольствием слушаю подкаст сама (выделить 4 часа непросто) и делюсь здесь.
Эпизоды можно слушать в любом порядке — часть 1 не обязательна для части 2.
Эпизод 1 — Технический
Разговор о поле механистической интерпретируемости: ключевые результаты, почему Нил стал более скептично относиться к амбициозной задаче полного «реверс-инжиниринга» моделей, и его видение более прагматичного будущего направления исследований.
Эпизод 2 — Нетехнический
Как делать исследование, карьерные и жизненные советы, стоит ли пытаться попасть на работу в AGI-лабы, и много других интересных инсайтов.
Быть может, вы тоже что-то интересное смотрите/слушаете. Буду рада советам в комментариях :)
Neel Nanda — исследователь из Google DeepMind. Занимался независимыми исследованиями механистической интерпретируемости и работал в Anthropic в качестве исследователя интерпретируемости языковых моделей.
Много сделал для области MechInterp — помимо исследований есть блог, где много постов к изучению и библиотека TransformerLens — удобный инструмент для анализа трансформеров в рамках обучения.
Мне очень импонирует его взгляд и стремление добавлять много открытых материалов. И в целом меня вдохновляет его заявления и действия, направленные на «Эффективный альтруизм» и «Рациональность». Не могу сказать, что это что-то про меня, но как минимум — мне очень интересен поток мыслей, формирующий такую позицию. Поэтому с удовольствием слушаю подкаст сама (выделить 4 часа непросто) и делюсь здесь.
Эпизоды можно слушать в любом порядке — часть 1 не обязательна для части 2.
Эпизод 1 — Технический
Разговор о поле механистической интерпретируемости: ключевые результаты, почему Нил стал более скептично относиться к амбициозной задаче полного «реверс-инжиниринга» моделей, и его видение более прагматичного будущего направления исследований.
Эпизод 2 — Нетехнический
Как делать исследование, карьерные и жизненные советы, стоит ли пытаться попасть на работу в AGI-лабы, и много других интересных инсайтов.
Быть может, вы тоже что-то интересное смотрите/слушаете. Буду рада советам в комментариях :)
❤9👍5🔥5
Внимание. С картинками.
До того, как стала популярна механистическая интерпретируемость, в трансформерах много надежды возлагалось на Attention. Кажется, что сейчас интерес к голому исследованию Attention спал, но всё же это чертовски красивый механизм.
Один из примеров визуализации красоты — наткнулась сегодня — визуализация Attention Flows. И вот, в статье, авторы попробовали понять механизм fine-tuning на основе сравнения Attention для претрейненной и нет модели.
Что сделали:
1. Рассмотрели граф внимания, рассмотрев как отправной [CLS] токен (на последнем слое);
2. Для каждой головы внимания выбрали токены, на которые [CLS] смотрит с весом выше порога (τ).
3. Этим токенам присвоили значения узлов на предыдущем слое, а ребра (связь слоя l-1, со слоем l) — обозначили за силу их влияния.
4. Повторили процесс для каждого выбранного токена, двигаясь слой за слоем назад, пока не будут пройдены все слои.
Если алгоритм вас не впечатлил — просто посмотрите на картинку. Получилось безумно красиво.
Чего достигли на основе построения таких картинок:
Решили 3 задачи. Вернее, попробовали решить.
* T1 – Trace and query self-attention: выбор токенов или голов внимания и просмотр, как внимание распространяется по слоям вперёд и назад.
* T2 – Discover attention functionality: понимание того, какие головы и слова наиболее важны для решения задачи — как в сумме, так и по отдельности.
* T3 – Compare models: сравнение внимания в исходной и дообученной модели, поиск уникальных и общих голов внимания и различий в слоях.
Модели между собой посранивали интересно. Инсайты можно найти в статье. И очень ведь красивый инструмент — сравнивать модели на основе вот этих визуальных карт. Красивый, но чертовски непродуктивный — можно упустить детали, если анализировать своими глазами.
Но картинки — просто чудо.
До того, как стала популярна механистическая интерпретируемость, в трансформерах много надежды возлагалось на Attention. Кажется, что сейчас интерес к голому исследованию Attention спал, но всё же это чертовски красивый механизм.
Один из примеров визуализации красоты — наткнулась сегодня — визуализация Attention Flows. И вот, в статье, авторы попробовали понять механизм fine-tuning на основе сравнения Attention для претрейненной и нет модели.
Что сделали:
1. Рассмотрели граф внимания, рассмотрев как отправной [CLS] токен (на последнем слое);
2. Для каждой головы внимания выбрали токены, на которые [CLS] смотрит с весом выше порога (τ).
3. Этим токенам присвоили значения узлов на предыдущем слое, а ребра (связь слоя l-1, со слоем l) — обозначили за силу их влияния.
4. Повторили процесс для каждого выбранного токена, двигаясь слой за слоем назад, пока не будут пройдены все слои.
Почему [CLS] — в BERT финальное эмбеддинг-представление используется для классификации (через линейный слой). И всё, что модель «собирает» из текста, в итоге агрегируется в [CLS]. Поэтому, чтобы понять, какие слова повлияли на решение, начали анализ именно с этого токена.
Если алгоритм вас не впечатлил — просто посмотрите на картинку. Получилось безумно красиво.
Чего достигли на основе построения таких картинок:
Решили 3 задачи. Вернее, попробовали решить.
* T1 – Trace and query self-attention: выбор токенов или голов внимания и просмотр, как внимание распространяется по слоям вперёд и назад.
* T2 – Discover attention functionality: понимание того, какие головы и слова наиболее важны для решения задачи — как в сумме, так и по отдельности.
* T3 – Compare models: сравнение внимания в исходной и дообученной модели, поиск уникальных и общих голов внимания и различий в слоях.
Модели между собой посранивали интересно. Инсайты можно найти в статье. И очень ведь красивый инструмент — сравнивать модели на основе вот этих визуальных карт. Красивый, но чертовски непродуктивный — можно упустить детали, если анализировать своими глазами.
Но картинки — просто чудо.
❤5🔥5👍3
"Gotta Catch 'Em All"
С 1997 года существовала медиафраншиза — Pokemon. Покемоны были чем-то вроде животных, которые могли обретать в течении своей жизни разные стадии — эволюционировать. Я смотрела все серии аниме, поэтому на слово "эволюция" у меня не нормальная реакция. Но мы здесь собрались за другим контентом, поэтому это интро связано со статьей EVOLUTION OF CONCEPTS IN LANGUAGE MODEL PRE-TRAINING.
Предыстория.
С относительно недавнего времени мы можем разбивать всё пространство активаций LLM на атомарные сущности — признаки (features). Представьте: берем активационные векторы размерности n и проектируем их в пространство размерности N >> n, добиваясь разреженности.
Методы.
Этот трюк обычно делается с помощью Sparse Autoencoders — сетей, которые в латенте дают разреженный вектор, обещающий понятные человеку концепты. Отдельные единицы такого вектора активируются только на схожих признаках, например: один компонент может реагировать на упоминания городов, другой — на математические формулы.
Позже появились Transcoders — продвинутая версия SAE, которая учится разлагать не активации, а вычисления внутри MLP слоя. Так как трансофрмер аддитивен, трансокдеры на разных слоях позволяют строить цепочки — эволюцию прохождений фичей от слоя к слою.
А потом к ним пришли Crosscoders — модели, с архитектурой транскодера, но адаптированные к учету информации из нескольких слоёв.
Каждый "кодер" состоит из трех частей:
1) Энкодер — делает разреженное представление.
2) Латент — само разреженное представление.
3) Декодер — восстанавливает input из разреженного представления.
К исследованию.
В классике кодеры применялись, чтобы изучить признаки в уже обученных моделей. А тут статья предлагает изучить процесс обучения, используя разреженность.
Для этого используют используют crosscoders и теоретическую предпосылку — если признак не существует, штраф за разреженность подавит веса декодеров в "неактивных" моментах до нуля (признака нет — восстанавливать мы его тоже не будем).
Из этой теории рассматривают норму весов декодера||W_dec|| для фичи i (из теории построения также мы знаем, что столбец декодера всегда кодирует какую-то фичу).
Для нормы авторы ввели Peak Snapshot Index — число k [1, 32], показывающее, на каком моменте времени в обучении фича достигла максимальной силы. В частности 143 000 шага обучения побили на 32 снэпшота и на них смотрели активации признака (при этом норму декодера снимали на каждом шаге).
В такой постановке нашли следующее:
1. Двухфазная структура:
Статистическая фаза (ранние шаги): модель изучает частоты токенов, потери падают до теоретического минимума
Фаза фич (поздние шаги): формируются сложные концепты в суперпозиции
2.Иерархия:
Простые фичи (предыдущий токен) ~1000-5000 шагов
Индукционные фичи ~10000-100000 шагов
Контекстно-зависимые — на финальных стадиях
3. Точку поворота: Около шага 1000 большинство фич кардинально меняют направление в пространстве активаций
Красивые картинки нашли тоже.
С 1997 года существовала медиафраншиза — Pokemon. Покемоны были чем-то вроде животных, которые могли обретать в течении своей жизни разные стадии — эволюционировать. Я смотрела все серии аниме, поэтому на слово "эволюция" у меня не нормальная реакция. Но мы здесь собрались за другим контентом, поэтому это интро связано со статьей EVOLUTION OF CONCEPTS IN LANGUAGE MODEL PRE-TRAINING.
Предыстория.
С относительно недавнего времени мы можем разбивать всё пространство активаций LLM на атомарные сущности — признаки (features). Представьте: берем активационные векторы размерности n и проектируем их в пространство размерности N >> n, добиваясь разреженности.
Методы.
Этот трюк обычно делается с помощью Sparse Autoencoders — сетей, которые в латенте дают разреженный вектор, обещающий понятные человеку концепты. Отдельные единицы такого вектора активируются только на схожих признаках, например: один компонент может реагировать на упоминания городов, другой — на математические формулы.
Позже появились Transcoders — продвинутая версия SAE, которая учится разлагать не активации, а вычисления внутри MLP слоя. Так как трансофрмер аддитивен, трансокдеры на разных слоях позволяют строить цепочки — эволюцию прохождений фичей от слоя к слою.
А потом к ним пришли Crosscoders — модели, с архитектурой транскодера, но адаптированные к учету информации из нескольких слоёв.
Каждый "кодер" состоит из трех частей:
1) Энкодер — делает разреженное представление.
2) Латент — само разреженное представление.
3) Декодер — восстанавливает input из разреженного представления.
К исследованию.
В классике кодеры применялись, чтобы изучить признаки в уже обученных моделей. А тут статья предлагает изучить процесс обучения, используя разреженность.
Для этого используют используют crosscoders и теоретическую предпосылку — если признак не существует, штраф за разреженность подавит веса декодеров в "неактивных" моментах до нуля (признака нет — восстанавливать мы его тоже не будем).
Из этой теории рассматривают норму весов декодера||W_dec|| для фичи i (из теории построения также мы знаем, что столбец декодера всегда кодирует какую-то фичу).
Для нормы авторы ввели Peak Snapshot Index — число k [1, 32], показывающее, на каком моменте времени в обучении фича достигла максимальной силы. В частности 143 000 шага обучения побили на 32 снэпшота и на них смотрели активации признака (при этом норму декодера снимали на каждом шаге).
В такой постановке нашли следующее:
1. Двухфазная структура:
Статистическая фаза (ранние шаги): модель изучает частоты токенов, потери падают до теоретического минимума
Фаза фич (поздние шаги): формируются сложные концепты в суперпозиции
2.Иерархия:
Простые фичи (предыдущий токен) ~1000-5000 шагов
Индукционные фичи ~10000-100000 шагов
Контекстно-зависимые — на финальных стадиях
3. Точку поворота: Около шага 1000 большинство фич кардинально меняют направление в пространстве активаций
Красивые картинки нашли тоже.
🗿3❤1
В целом, ничего кардинально нового это исследование не показало. Однако оно хорошо показывает:
1) Согласованность — одни факты разными методами;
Но тут кстати еще важно верифицировать, что это не натянутый вывод из того, что известно.
2) Универсальность — применение спарснутых методов не только к задаче изучения "что есть", но и к задаче "как появилось".
3) Творчество — я не представляю, какой красивый мозг надо иметь, чтобы придумать такую постановку!
И на этой замечательной ноте творческой вам недели, друзья, творческой вам недели :)
1) Согласованность — одни факты разными методами;
Но тут кстати еще важно верифицировать, что это не натянутый вывод из того, что известно.
2) Универсальность — применение спарснутых методов не только к задаче изучения "что есть", но и к задаче "как появилось".
3) Творчество — я не представляю, какой красивый мозг надо иметь, чтобы придумать такую постановку!
И на этой замечательной ноте творческой вам недели, друзья, творческой вам недели :)
❤3🔥3
TDHook
Несмотря на какое-то ощущение, что я в полном hurry (не в плохом, а в скорее хорошем) в последнее время, не забываю почитывать статейки. И одна из интересных тем, за которыми мне интересно следить — это автоматизация interpretability процессов.
Библиотек, которые это делают хорошо, не так много, так что я собираю новые и надеюсь на их качество также, как коллекционирую зажигалки — знаю, что работает, нравится, когда-то пригодится.
Так вот, свежее:
TDHook — open-source фреймворк для интерпретации глубоких нейронных сетей, построенный на PyTorch и TensorDict. Разработан специально для работы с моделями с множественными входами/выходами (мультимодальные системы, DRL, image captioning и др.).
Авторы заявляют, что фреймворк удовлетворяет критериям:
1. Универсальности
* Работает с любой PyTorch моделью
* Нативная поддержка TensorDict структур
* Минимум зависимостей (~50% меньше места, чем transformer_lens), а значит меньше связанных рук в проекте
2. Разнообразия
25+ готовых методов среди которых:
* Attribution: градиенты, Integrated Gradients, LRP, Grad-CAM
* Latent manipulation: линейные пробы, CAV, активационный патчинг
* Weights-based: ROME, sparse autoencoders, task vectors
3. Гибкий API:
* Get-Set API для интервенций (как в nnsight)
* Композиция сложных пайплайнов
* Context managers для управления хуками
Бенчмаркинг у библиотеки приятный — в сравнении с самой популярной библиотекой captum — вычисления градиетных методов до 2x быстрее на Integrated Gradients, и размер библиотеки сильно ниже (всего +6% памяти к базовому torch, тогда как transformer_lens (трансформеры с хуками) дает +104%, а pyvene (библиотека для каузального анализа нейронных сетей через интервенции (вмешательства в промежуточные представления модели)) +132%.
Use Cases обещаны тоже широкие:
— Multi-modal модели и RL агенты
— Концептуальная атрибуция
— Attribution patching для Transformers
Правда, библиотека совсем свежая — последний коммит был 5 дней назад, будет многое ломаться. Но как проект — выглядит перспективно.
GitHub: https://github.com/Xmaster6y/tdhook
Статья: arXiv:2509.25475
Несмотря на какое-то ощущение, что я в полном hurry (не в плохом, а в скорее хорошем) в последнее время, не забываю почитывать статейки. И одна из интересных тем, за которыми мне интересно следить — это автоматизация interpretability процессов.
Библиотек, которые это делают хорошо, не так много, так что я собираю новые и надеюсь на их качество также, как коллекционирую зажигалки — знаю, что работает, нравится, когда-то пригодится.
Так вот, свежее:
TDHook — open-source фреймворк для интерпретации глубоких нейронных сетей, построенный на PyTorch и TensorDict. Разработан специально для работы с моделями с множественными входами/выходами (мультимодальные системы, DRL, image captioning и др.).
Авторы заявляют, что фреймворк удовлетворяет критериям:
1. Универсальности
* Работает с любой PyTorch моделью
* Нативная поддержка TensorDict структур
* Минимум зависимостей (~50% меньше места, чем transformer_lens), а значит меньше связанных рук в проекте
2. Разнообразия
25+ готовых методов среди которых:
* Attribution: градиенты, Integrated Gradients, LRP, Grad-CAM
* Latent manipulation: линейные пробы, CAV, активационный патчинг
* Weights-based: ROME, sparse autoencoders, task vectors
3. Гибкий API:
* Get-Set API для интервенций (как в nnsight)
* Композиция сложных пайплайнов
* Context managers для управления хуками
Бенчмаркинг у библиотеки приятный — в сравнении с самой популярной библиотекой captum — вычисления градиетных методов до 2x быстрее на Integrated Gradients, и размер библиотеки сильно ниже (всего +6% памяти к базовому torch, тогда как transformer_lens (трансформеры с хуками) дает +104%, а pyvene (библиотека для каузального анализа нейронных сетей через интервенции (вмешательства в промежуточные представления модели)) +132%.
Use Cases обещаны тоже широкие:
— Multi-modal модели и RL агенты
— Концептуальная атрибуция
— Attribution patching для Transformers
Правда, библиотека совсем свежая — последний коммит был 5 дней назад, будет многое ломаться. Но как проект — выглядит перспективно.
GitHub: https://github.com/Xmaster6y/tdhook
Статья: arXiv:2509.25475
GitHub
GitHub - Xmaster6y/tdhook: 🤖🪝Interpretability with tensordict and torch hooks.
🤖🪝Interpretability with tensordict and torch hooks. - Xmaster6y/tdhook
🔥6❤4❤🔥2