INSEQ-это хакерский инструментарий на основе питорха для демократизации доступа к общему пост-HOC в анализе TERPTRPTHALIBAILE моделей генерации SEQUENT .
INSEQ доступен на PYPI и может быть установлен с помощью pip для Python> = 3,10, <= 3,12:
# Install latest stable version
pip install inseq
# Alternatively, install latest development version
pip install git+https://github.com/inseq-team/inseq.git Установите дополнения для визуализации в ноутбуках Юпитера и? Атрибуция наборов данных как pip install inseq[notebook,datasets] .
cd inseq
make uv-download # Download and install the UV package manager
make install # Installs the package and all dependencies Для разработчиков библиотеки вы можете использовать команду make install-dev для установки всех зависимостей для разработки (качество, документы, дополнительные данные).
После установки вы сможете запустить make fast-test и make lint без ошибок.
Установка пакета tokenizers требует установки компилятора ржавчины. Вы можете установить ржавчину из https://rustup.rs и добавить $HOME/.cargo/env на ваш путь.
Установка sentencepiece требует различных пакетов, установите с помощью sudo apt-get install cmake build-essential pkg-config или brew install cmake gperftools pkg-config .
В этом примере используется метод атрибуции интегрированных градиентов, чтобы приписать англо-французский перевод предложения, взятого из корпуса Winomt:
import inseq
model = inseq . load_model ( "Helsinki-NLP/opus-mt-en-fr" , "integrated_gradients" )
out = model . attribute (
"The developer argued with the designer because her idea cannot be implemented." ,
n_steps = 100
)
out . show ()Это создает визуализацию показателей атрибуции для каждого токена во входном предложении (агрегация токена обрабатывается автоматически). Вот как выглядит визуализация в записной книжке Jupyter:
INSEQ также поддерживает модели только для декодеров, такие как GPT-2, что позволяет использовать различные методы атрибуции и настраиваемые настройки непосредственно из консоли:
import inseq
model = inseq . load_model ( "gpt2" , "integrated_gradients" )
model . attribute (
"Hello ladies and" ,
generation_args = { "max_new_tokens" : 9 },
n_steps = 500 ,
internal_batch_size = 50
). show () Особенность приписывания генерации последовательностей для большинства моделей ForConditionalGeneration (Encoder-Decoder) и ForCausalLM (только декодер) из? Трансформеры
Поддержка множества методов атрибуции функций, расширение тех, которые поддерживаются Captum
Пост-обработка, фильтрация и слияние карт атрибуции через классы Aggregator .
Визуализация атрибуции в ноутбуках, браузере и командной строке.
Эффективная атрибуция отдельных примеров или целых? Наборы данных с INSEQ CLI.
Пользовательская атрибуция целевых функций, поддерживающие передовые методы, такие как контрастные атрибуты функций и обнаружение контекста.
Извлечение и визуализация пользовательских оценок (например, вероятность, энтропия) на каждом этапе генерации вдоль карт атрибуции.
Используйте функцию inseq.list_feature_attribution_methods , чтобы перечислить все доступные идентификаторы метода и inseq.list_step_functions , чтобы перечислить все доступные функции шага. В настоящее время поддерживаются следующие методы:
saliency : глубокие внутренние сверточные сети: визуализация моделей классификации изображений и карты значимости (Simonyan et al., 2013)
input_x_gradient : глубокие внутренние сверточные сети: визуализация моделей классификации изображений и карт значимости (Simonyan et al., 2013)
integrated_gradients : аксиоматическая атрибуция для глубоких сетей (Sundararajan et al., 2017)
deeplift : изучение важных особенностей посредством распространения различий в активации (Shrikumar et al., 2017)
gradient_shap : единый подход к интерпретации прогнозов модели (Lundberg and Lee, 2017)
discretized_integrated_gradients : дискретизированные интегрированные градиенты для объяснения языковых моделей (Sanyal and Ren, 2021)
sequential_integrated_gradients : последовательные интегрированные градиенты: простой, но эффективный метод объяснения языковых моделей (Enguehard, 2023)
attention : Атрибуция Веса внимания, от перевода нейронной машины путем совместного обучения для выравнивания и перевода (Bahdanau et al., 2014) occlusion : визуализация и понимание сверточных сетей (Zeiler and Fergus, 2014)
lime : «Почему я должен тебе доверять?»: Объяснение прогнозов любого классификатора (Ribeiro et al., 2016)
value_zeroing : количественная оценка контекста в трансформаторах (Mochebbi et al. 2023)
reagent : Реагент: метод приписывания признаков модели для моделей генеративного языка (Zhao et al., 2024)
Функции шага используются для извлечения пользовательских оценок из модели на каждом этапе процесса атрибуции с аргументом step_scores в model.attribute . Атрибут. Они также могут использоваться в качестве целей для методов атрибуции, полагаемых на выходы моделей (например, методы, основанные на градиентах), передавая их в качестве аргумента attributed_fn . В настоящее время поддерживаются следующие функции шага:
logits : логиты целевого токена.probability : вероятность целевого токена. Можно также использоваться для Log-обеспечения путем передачи logprob=True .entropy : энтропия прогнозного распределения.crossentropy : потери перекрестной энтропии между токеном мишеней и прогнозируемым распределением.perplexity : недоумение жетона цели.contrast_logits / contrast_prob : logits / вероятности целевого токена, когда в модели предоставляются различные контрастные входы. Эквивалентно logits / probability , когда не предоставляется контрастные входы.contrast_logits_diff / contrast_prob_diff : разница в логитах / вероятности между исходной и фольгой -мишенью пары токенов, может использоваться для контрастной оценки в качестве противоположной атрибуции (Yin and Neubig, 2022).pcxmi : точечная контекстная информация по перекрестной мученике (P-CXMI) для целевого токена, приведенных оригинальным и контрастным контекстом (Yin et al. 2021).kl_divergence : KL Дивергенция прогнозного распределения, приведенного в оригинальном и контрастном контекстах. Может быть ограничено наиболее вероятными параметрами токена целевого токена, используя параметры top_k и top_p .in_context_pvi : Внутренняя точечная информация V-USE (PVI) для измерения количества контекстной информации, используемой в прогнозах модели (Lu et al. 2023).mc_dropout_prob_avg : Средняя вероятность целевого токена в нескольких образцах с использованием MC Dropout (Gal and Ghahhramani, 2016).top_p_size : количество токенов с кумулятивной вероятностью, превышающей top_p в прогнозном распределении модели. В следующем примере вычисляются контрастные атрибуты, используя функцию шага contrast_prob_diff :
import inseq
attribution_model = inseq . load_model ( "gpt2" , "input_x_gradient" )
# Perform the contrastive attribution:
# Regular (forced) target -> "The manager went home because he was sick"
# Contrastive target -> "The manager went home because she was sick"
out = attribution_model . attribute (
"The manager went home because" ,
"The manager went home because he was sick" ,
attributed_fn = "contrast_prob_diff" ,
contrast_targets = "The manager went home because she was sick" ,
# We also visualize the corresponding step score
step_scores = [ "contrast_prob_diff" ]
)
out . show ()Обратитесь к документации для примера, включая пользовательскую регистрацию функций.
Библиотека INSEQ также предоставляет полезные клиентские команды, чтобы включить повторное приписывание отдельных примеров и даже целых? Наборы данных непосредственно из консоли. См. Доступные параметры, вводя inseq -h в терминале после установки пакета.
Поддерживаются три команды:
inseq attribute : обертка для включения model.attribute Атрибут использования в консоли.
inseq attribute-dataset : extends attribute на полный набор данных с использованием наборов datasets.load_dataset об объятиях.
inseq attribute-context : обнаружает и атрибут зависимость контекста для задач генерации, используя подход Sarti et al. (2023).
Все команды подтверждают полный диапазон параметров, доступных для attribute , визуализации атрибуции в консоли и сохранения выходов на диск.
inseq attribute В следующем примере выполняется простое приписывание английского предложения, переведенное в итальянскую, с использованием модели перевода Mariannmt из transformers . Окончательный результат напечатан на консоли.
inseq attribute
--model_name_or_path Helsinki-NLP/opus-mt-en-it
--attribution_method saliency
--input_texts " Hello world this is Inseq! Inseq is a very nice library to perform attribution analysis "inseq attribute-dataset Следующий код может быть использован для выполнения атрибуции (как источника, так и целевой стороны) итальянских переводов для фиктивной выборки из 20 английских предложений, взятых из параллельного корпуса Flores-101, используя модель перевода Mariannmt от обнимающих transformers лица. Мы сохраняем визуализации в формате HTML в файле attributions.html . Смотрите флаг --help для получения дополнительных вариантов.
inseq attribute-dataset
--model_name_or_path Helsinki-NLP/opus-mt-en-it
--attribution_method saliency
--do_prefix_attribution
--dataset_name inseq/dummy_enit
--input_text_field en
--dataset_split " train[:20] "
--viz_path attributions.html
--batch_size 8
--hideinseq attribute-context В следующем примере используется небольшой LM для создания продолжения input_current_text , и использует дополнительный контекст, предоставляемый input_context_text для оценки его влияния на генерацию. В этом случае производится результат "to the hospital. He said he was fine" , и создается генерация токеновой hospital зависит от контекста токена sick в соответствии с функцией шага contrast_prob_diff .
inseq attribute-context
--model_name_or_path HuggingFaceTB/SmolLM-135M
--input_context_text " George was sick yesterday. "
--input_current_text " His colleagues asked him to come "
--attributed_fn " contrast_prob_diff "Результат:
Поддержите больше методов приписывания функций, основанных на внимании и окклюзии (задокументировано в #107 и #108).
Совместимость с ходом для атрибуции правдоподобия и оценки верности.
Богатые и интерактивные визуализации в интерфейсе с вкладками с использованием блоков Gradio.
Наше видение INSEQ заключается в создании централизованного, всеобъемлющего и надежного набора инструментов для обеспечения справедливых и воспроизводимых сравнений при изучении моделей генерации последовательностей. Для достижения этой цели вклад исследователей и разработчиков, заинтересованных в этих темах, более чем приветствуются. Пожалуйста, смотрите наши рекомендации по внесению вкладчиков и наш кодекс поведения для получения дополнительной информации.
Если вы используете Inseq в своем исследовании, мы предлагаем, чтобы включить упоминание о конкретном выпуске (например, v0.6.0), и мы обращаемся к вам ссылаться на наш справочный документ как:
@inproceedings { sarti-etal-2023-inseq ,
title = " Inseq: An Interpretability Toolkit for Sequence Generation Models " ,
author = " Sarti, Gabriele and
Feldhus, Nils and
Sickert, Ludwig and
van der Wal, Oskar and
Nissim, Malvina and
Bisazza, Arianna " ,
booktitle = " Proceedings of the 61st Annual Meeting of the Association for Computational Linguistics (Volume 3: System Demonstrations) " ,
month = jul,
year = " 2023 " ,
address = " Toronto, Canada " ,
publisher = " Association for Computational Linguistics " ,
url = " https://aclanthology.org/2023.acl-demo.40 " ,
doi = " 10.18653/v1/2023.acl-demo.40 " ,
pages = " 421--435 " ,
}
INSEQ использовался в различных исследовательских проектах. Список известных публикаций, которые используют InSeq для проведения анализа интерпретации генеративных моделей, показан ниже.
Кончик
Последнее обновление: август 2024 года. Пожалуйста, откройте запрос на привлечение, чтобы добавить вашу публикацию в список.