INSEQ adalah toolkit peretasan berbasis Pytorch untuk mendemokratisasi akses ke post-hoc umum dalam analisis terpisah dari model generasi seq .
INSEQ tersedia di PYPI dan dapat diinstal dengan pip untuk 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 Instal Ekstra untuk Visualisasi di Jupyter Notebook dan? Atribusi Dataset Saat 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 Untuk pengembang perpustakaan, Anda dapat menggunakan perintah make install-dev untuk menginstal semua dependensi pengembangan (kualitas, dokumen, ekstra).
Setelah instalasi, Anda harus dapat menjalankan make fast-test dan make lint tanpa kesalahan.
Menginstal Paket tokenizers membutuhkan instalasi kompiler karat. Anda dapat menginstal karat dari https://rustup.rs dan menambahkan $HOME/.cargo/env ke jalur Anda.
Menginstal sentencepiece membutuhkan berbagai paket, instal dengan sudo apt-get install cmake build-essential pkg-config atau brew install cmake gperftools pkg-config .
Contoh ini menggunakan metode atribusi gradien terintegrasi untuk mengaitkan terjemahan bahasa Inggris-Prancis dari sebuah kalimat yang diambil dari 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 ()Ini menghasilkan visualisasi skor atribusi untuk setiap token dalam kalimat input (agregasi tingkat token ditangani secara otomatis). Inilah yang terlihat seperti visualisasi di dalam buku catatan Jupyter:
INSEQ juga mendukung model decoder-only seperti GPT-2, memungkinkan penggunaan berbagai metode atribusi dan pengaturan yang dapat disesuaikan langsung dari konsol:
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 () Atribusi fitur generasi urutan untuk sebagian besar model ForConditionalGeneration (encoder-decoder) dan ForCausalLM (hanya decoder) dari? Transformer
Dukungan untuk beberapa metode atribusi fitur, memperluas yang didukung oleh captum
Pasca pemrosesan, penyaringan dan penggabungan peta atribusi melalui kelas Aggregator .
Visualisasi atribusi di notebook, browser dan baris perintah.
Atribusi yang efisien dari contoh tunggal atau keseluruhan? Dataset dengan INSEQ CLI.
Atribusi khusus fungsi target, mendukung metode canggih seperti atribusi fitur kontras dan deteksi konteks Reliance.
Ekstraksi dan visualisasi skor khusus (misalnya probabilitas, entropi) pada setiap langkah generasi di sepanjang peta atribusi sisi.
Gunakan fungsi inseq.list_feature_attribution_methods untuk mendaftar semua pengidentifikasi metode yang tersedia dan inseq.list_step_functions untuk mendaftar semua fungsi langkah yang tersedia. Metode berikut ini didukung:
saliency : Jaringan Convolutional Dalam Dalam: Memvisualisasikan Model Klasifikasi Gambar dan Peta Penyarsa (Simonyan et al., 2013)
input_x_gradient : Jaringan Convolutional Jauh Di Dalam: Memvisualisasikan Model Klasifikasi Gambar dan Peta Penyaruhan (Simonyan et al., 2013)
integrated_gradients : Atribusi aksiomatik untuk jaringan dalam (Sundararajan et al., 2017)
deeplift : Belajar fitur penting melalui menyebarkan perbedaan aktivasi (Shrikumar et al., 2017)
gradient_shap : pendekatan terpadu untuk menafsirkan prediksi model (Lundberg dan Lee, 2017)
discretized_integrated_gradients : Gradien terintegrasi yang diskrit untuk menjelaskan model bahasa (Sanyal dan Ren, 2021)
sequential_integrated_gradients : Gradien terintegrasi berurutan: Metode yang sederhana namun efektif untuk menjelaskan model bahasa (Enguehard, 2023)
attention : atribusi berat perhatian, dari terjemahan mesin saraf dengan bersama -sama belajar menyelaraskan dan menerjemahkan (Bahdanau et al., 2014) occlusion : Visualisasi dan Memahami Jaringan Konvolusional (Zeiler dan Fergus, 2014)
lime : "Mengapa saya harus mempercayai Anda?": Menjelaskan prediksi classifier mana pun (Ribeiro et al., 2016)
value_zeroing : Mengukur pencampuran konteks dalam transformator (Mohebbi et al. 2023)
reagent : Reagen: Metode atribusi fitur model-agnostik untuk model bahasa generatif (Zhao et al., 2024)
Fungsi langkah digunakan untuk mengekstraksi skor khusus dari model pada setiap langkah proses atribusi dengan argumen step_scores di model.attribute . Mereka juga dapat digunakan sebagai target untuk metode atribusi yang mengandalkan output model (mis. Metode berbasis gradien) dengan meneruskannya sebagai argumen attributed_fn . Fungsi langkah berikut saat ini didukung:
logits : Logit token target.probability : Probabilitas token target. Dapat juga digunakan untuk probabilitas log dengan lulus logprob=True .entropy : Entropi distribusi prediktif.crossentropy : Kehilangan entri-entropi antara token target dan distribusi yang diprediksi.perplexity : Kebingungan dari token target.contrast_logits / contrast_prob : logit / probabilitas token target ketika input kontras yang berbeda disediakan untuk model. Setara dengan logits / probability ketika tidak ada input kontras yang disediakan.contrast_logits_diff / contrast_prob_diff : Perbedaan logit / probabilitas antara pasangan token target asli dan foil, dapat digunakan untuk evaluasi kontras seperti pada atribusi kontras (Yin dan Neubig, 2022).pcxmi : Informasi lintas-mutual kontekstual titik-bijaksana (P-CXMI) untuk token target yang diberikan konteks asli dan kontras (Yin et al. 2021).kl_divergence : KL Divergence dari distribusi prediktif yang diberikan konteks asli dan kontras. Dapat dibatasi untuk kemungkinan besar opsi token target menggunakan parameter top_k dan top_p .in_context_pvi : In-context pointwise V-Usable Information (PVI) untuk mengukur jumlah informasi kontekstual yang digunakan dalam prediksi model (Lu et al. 2023).mc_dropout_prob_avg : Probabilitas rata -rata token target di beberapa sampel menggunakan dropout MC (Gal dan Ghahramani, 2016).top_p_size : Jumlah token dengan probabilitas kumulatif lebih besar dari top_p dalam distribusi prediktif model. Contoh berikut menghitung atribusi kontras menggunakan fungsi langkah 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 ()Lihat dokumentasi untuk contoh termasuk pendaftaran fungsi khusus.
Perpustakaan INSEQ juga menyediakan perintah klien yang berguna untuk mengaktifkan atribusi berulang dari contoh individu dan bahkan keseluruhan? Dataset langsung dari konsol. Lihat opsi yang tersedia dengan mengetik inseq -h di terminal setelah menginstal paket.
Tiga perintah didukung:
inseq attribute : Pembungkus untuk mengaktifkan model.attribute Penggunaan di Konsol.
inseq attribute-dataset : Extends attribute ke Dataset Lengkap Menggunakan Dataset Wajah datasets.load_dataset API.
inseq attribute-context : Deteksi dan Atribut Konteks Ketergantungan untuk tugas pembuatan menggunakan pendekatan Sarti et al. (2023).
Semua perintah mendukung berbagai parameter yang tersedia untuk attribute , visualisasi atribusi di konsol dan menyimpan output ke disk.
inseq attribute Contoh berikut melakukan atribusi fitur sederhana dari kalimat bahasa Inggris yang diterjemahkan ke dalam bahasa Italia menggunakan model terjemahan Mariannmt dari transformers . Hasil akhir dicetak ke konsol.
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 Kode berikut dapat digunakan untuk melakukan atribusi (baik sumber dan sisi target) dari terjemahan Italia untuk sampel dummy dari 20 kalimat bahasa Inggris yang diambil dari corpus paralel Flores-101, menggunakan model terjemahan Mariannmt dari memeluk transformers wajah. Kami menyimpan visualisasi dalam format HTML di file attributions.html . Lihat bendera --help untuk lebih banyak opsi.
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 Contoh berikut menggunakan LM kecil untuk menghasilkan kelanjutan dari input_current_text , dan menggunakan konteks tambahan yang disediakan oleh input_context_text untuk memperkirakan pengaruhnya terhadap generasi. Dalam hal ini, output "to the hospital. He said he was fine" diproduksi, dan generasi hospital Token ditemukan tergantung pada konteks token sick sesuai dengan fungsi langkah 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 "Hasil:
Mendukung lebih banyak metode atribusi fitur berbasis perhatian dan oklusi (didokumentasikan dalam #107 dan #108).
Interoperabilitas dengan musang untuk evaluasi atribusi dan evaluasi kesetiaan.
Visualisasi yang kaya dan interaktif dalam antarmuka tab menggunakan blok gradio.
Visi kami untuk INSEQ adalah untuk membuat serangkaian alat yang terpusat, komprehensif, dan kuat untuk memungkinkan perbandingan yang adil dan dapat direproduksi dalam studi model generasi urutan. Untuk mencapai tujuan ini, kontribusi dari peneliti dan pengembang yang tertarik dengan topik -topik ini lebih dari disambut. Silakan lihat Pedoman Kontribusi kami dan Kode Etik kami untuk informasi lebih lanjut.
Jika Anda menggunakan INSEQ dalam penelitian Anda, kami sarankan termasuk menyebutkan rilis spesifik (mis.
@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 telah digunakan dalam berbagai proyek penelitian. Daftar publikasi yang diketahui yang menggunakan INSEQ untuk melakukan analisis interpretabilitas model generatif ditunjukkan di bawah ini.
Tip
Pembaruan Terakhir: Agustus 2024. Harap buka permintaan tarik untuk menambahkan publikasi Anda ke daftar.