Inseq는 Pytorch 기반의 해킹 가능한 툴킷으로, 생성 모델의 일반적인 사후 분석 에서 일반적인 사후에 대한 접근을 민주화합니다.
Inseq는 PYPI에서 사용할 수 있으며 PIPT를 위해 pip 사용하여 설치할 수 있습니다> = 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 Jupyter Notebooks에서 시각화를 위해 추가 기능을 설치 하시겠습니까? 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에서 Rust를 설치하고 경로에 $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 : 변압기의 컨텍스트 혼합 정량화 (Mohebbi et al. 2023)
reagent : 시약 : 생성 언어 모델을위한 모델 공유 기능 속성 방법 (Zhao et al., 2024)
단계 함수는 model.attribute 의 step_scores 인수를 사용하여 귀속 프로세스의 각 단계에서 모델에서 사용자 정의 점수를 추출하는 데 사용됩니다. 또한 기이 attributed_fn 인수로 전달하여 모델 출력 (예 : 그라디언트 기반 방법)에 의존하는 속성 방법의 대상으로 사용할 수 있습니다. 다음 단계 기능은 현재 지원됩니다.
logits : 대상 토큰의 로짓.probability : 대상 토큰의 확률. logprob=True 전달하여 로그 확률에도 사용할 수 있습니다.entropy : 예측 분포의 엔트로피.crossentropy : 대상 토큰과 예측 분포 사이의 교차 엔트로피 손실.perplexity : 대상 토큰의 당황.contrast_logits / contrast_prob : 모델에 다른 대조적 입력이 제공되는 경우 대상 토큰의 로짓 / 확률. 대조적 인 입력이 제공되지 않을 때 logits / probability 과 동일합니다.contrast_logits_diff / contrast_prob_diff : 원래와 포일 대상 토큰 쌍 간의 로그 / 확률 차이는 대조적 인 속성에서 대조적 인 평가에 사용될 수 있습니다 (Yin and Neubig, 2022).pcxmi : 독창적이고 대조적 인 컨텍스트가 주어진 대상 토큰에 대한 Point-Wise Contextul Cross-Mutual Information (P-CXMI) (Yin et al. 2021).kl_divergence : 독창적이고 대조적 인 맥락이 주어진 예측 분포의 KL 발산. top_k 및 top_p 매개 변수를 사용하여 대상 토큰 옵션으로 제한 될 수 있습니다.in_context_pvi : 모델 예측에 사용 된 상황 정보의 양을 측정하기위한 텍스트 내 POINTWITE V-사용할 수있는 정보 (PVI) (Lu et al. 2023).mc_dropout_prob_avg : MC 드롭 아웃을 사용하여 여러 샘플에서 대상 토큰의 평균 확률 (Gal and Ghahramani, 2016).top_p_size : 모델의 예측 분포에서 top_p 보다 누적 확률이 큰 토큰 수. 다음 예제는 contrast_prob_diff Step 함수를 사용하여 대비 속성을 계산합니다.
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 : Hugging Face datasets.load_dataset API를 사용하여 전체 데이터 세트로 attribute 확장합니다.
inseq attribute-context : Sarti et al. (2023).
모든 명령은 attribute 에 사용할 수있는 모든 매개 변수, 콘솔의 귀속 시각화 및 디스크에 출력을 저장하는 것을 지원합니다.
inseq attribute 예제 다음 예제는 transformers 의 Mariannmt 번역 모델을 사용하여 이탈리아어로 번역 된 영어 문장의 간단한 기능 속성을 수행합니다. 최종 결과는 콘솔에 인쇄됩니다.
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 예제 다음 코드는 transformers -101 Parallel Corpus에서 가져온 20 개의 영어 문장의 더미 샘플에 대한 이탈리아 번역의 속성 (소스 및 대상 측)을 수행하는 데 사용될 수 있습니다. 파일 attributions.html 에서 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 에서 제공하는 추가 컨텍스트를 사용하여 생성에 미치는 영향을 추정합니다. hospital sick , "병원에 대한 생산량" contrast_prob_diff "to the hospital. He said he was fine"
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 년 8 월. 목록에 게시를 추가하려면 풀 요청을 열어주십시오.