INSEQは、Pytorchベースのハッキング可能なツールキットであり、発電モデルのターデリブル性分析における一般的な事後のアクセスを民主化します。
InSeqはPypiで利用でき、Python> = 3.10のpipでインストールできます<= 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ノートブックに視覚化するためにエクストラをインストールしますか? 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できるはずです。
Installing the tokenizers package requires a Rust compiler installation. https://rustup.rsからRustをインストールして、 $HOME/.cargo/envパスに追加できます。
sentencepieceのインストールには、さまざまなパッケージが必要で、 sudo apt-get install cmake build-essential pkg-configまたはbrew install cmake gperftools pkg-configインストールします。
この例では、統合された勾配属性法を使用して、Winomt Corpusから取得した文の英語とフランス語の翻訳を帰属させます。
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 (エンコーダーデコーダー)および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 etal。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 :元のコンテキストと対照的なコンテキストが与えられたターゲットトークンのポイントごとのコンテキストクロスミュータル情報(P-CXMI)(Yin etal。2021)。kl_divergence :元のコンテキストと対照的なコンテキストが与えられた予測分布のKL発散。 top_kおよびtop_pパラメーターを使用して、最も可能性の高いターゲットトークンオプションに制限できます。in_context_pvi :モデル予測で使用されるコンテキスト情報の量を測定するためのコンテキストIn-context pointwise v-usable情報(PVI)(Lu etal。2023)。mc_dropout_prob_avg :MCドロップアウトを使用して、複数のサンプルでターゲットトークンの平均確率(Gal and Ghahramani、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を入力して、利用可能なオプションを参照してください。
3つのコマンドがサポートされています。
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例次のコードを使用して、フェイストランスからのMarianNMT翻訳モデルを使用して、Flores-101 Parallel Corpusから取得した20の英語文のダミーサンプルに対して、イタリアの翻訳の属性(ソースと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の発生は、 contrast_prob_diffステップ関数に従ってコンテキストトークンsickに依存していることがわかっています。
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に文書化)。
属性の妥当性と忠実さの評価のためのフェレットとの相互運用性。
グレーデンブロックを使用したタブ付きインターフェイス内のリッチでインタラクティブな視覚化。
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月。プルリクエストを開いて、出版物をリストに追加してください。