Порадовались (друзья, спасибо вам всем громадное!)
— структурируемся — вновь свеженькая библиотека — 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 (но она давно не обновлялась по коммитам).