INSEQ เป็นชุดเครื่องมือที่แฮ็กที่ใช้ Pytorch เพื่อให้เป็นประชาธิปไตยในการเข้าถึงโพสต์-ฮอคทั่วไป ใน การวิเคราะห์ความสามารถในการตีความของแบบจำลองการสร้าง Seq Uence
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 ติดตั้งพิเศษสำหรับการสร้างภาพข้อมูลในสมุดบันทึก 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 โดยไม่มีข้อผิดพลาด
การติดตั้งแพ็คเกจ tokenizers ต้องมีการติดตั้งคอมไพเลอร์สนิม คุณสามารถติดตั้ง Rust จาก https://rustup.rs และเพิ่ม $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 ส่วนใหญ่ (encoder-decoder) และ ForCausalLM (ตัวถอดรหัสเท่านั้น) จาก? หม้อแปลงไฟฟ้า
รองรับวิธีการระบุแหล่งที่มาของคุณลักษณะหลายวิธีขยายวิธีการที่รองรับโดย captum
โพสต์การประมวลผลการกรองและการรวมแผนที่แหล่งที่มาผ่านคลาส Aggregator
การสร้างภาพข้อมูลที่มาในสมุดบันทึกเบราว์เซอร์และบรรทัดคำสั่ง
การระบุแหล่งที่มาอย่างมีประสิทธิภาพของตัวอย่างเดียวหรือทั้งหมด? ชุดข้อมูลที่มี INSEQ CLI
การระบุแหล่งที่มาที่กำหนดเองของฟังก์ชั่นเป้าหมายสนับสนุนวิธีการขั้นสูงเช่นการอ้างถึงคุณสมบัติความคมชัดและการตรวจจับการพึ่งพาบริบท
การสกัดและการแสดงภาพของคะแนนที่กำหนดเอง (เช่นความน่าจะเป็น, เอนโทรปี) ในทุกขั้นตอนของแผนที่ตามแผนที่การระบุแหล่งที่มา
ใช้ฟังก์ชั่น inseq.list_feature_attribution_methods เพื่อแสดงรายการตัวระบุวิธีการที่มีอยู่ทั้งหมดและ inseq.list_step_functions เพื่อแสดงรายการฟังก์ชั่นขั้นตอนที่มีอยู่ทั้งหมด ปัจจุบันมีการรองรับวิธีการต่อไปนี้:
saliency : Inside Inside Incolutional Networks: การแสดงภาพแบบจำลองการจำแนกภาพและแผนที่ความสามารถพิเศษ (Simonyan et al., 2013)
input_x_gradient : ลึกเข้าไปในเครือข่าย convolutional: การแสดงภาพโมเดลการจำแนกภาพและแผนที่ความสามารถพิเศษ (Simonyan et al., 2013)
integrated_gradients : การระบุแหล่งที่มาของเครือข่ายลึก (Sundararajan et al., 2017)
deeplift : การเรียนรู้คุณสมบัติที่สำคัญผ่านการเผยแพร่ความแตกต่างการเปิดใช้งาน (Shrikumar et al., 2017)
gradient_shap : วิธีการแบบครบวงจรในการตีความการทำนายแบบจำลอง (Lundberg and Lee, 2017)
discretized_integrated_gradients : การไล่ระดับสีแบบบูรณาการแบบ discretized สำหรับการอธิบายแบบจำลองภาษา (Sanyal and Ren, 2021)
sequential_integrated_gradients : การไล่ระดับสีแบบบูรณาการตามลำดับ: วิธีง่าย ๆ แต่มีประสิทธิภาพสำหรับการอธิบายแบบจำลองภาษา (Enguehard, 2023)
attention : การระบุแหล่งที่มาของน้ำหนักความสนใจจากการแปลเครื่องประสาทโดยการเรียนรู้ร่วมกันเพื่อจัดแนวและแปล (Bahdanau et al., 2014) occlusion : การแสดงภาพและทำความเข้าใจเครือข่าย convolutional (Zeiler and Fergus, 2014)
lime : "ทำไมฉันต้องเชื่อใจคุณ?": อธิบายการคาดการณ์ของตัวจําแนกใด ๆ (Ribeiro et al., 2016)
value_zeroing : การหาปริมาณบริบทผสมในหม้อแปลง (Mohebbi et al. 2023)
reagent : รีเอเจนต์: วิธีการระบุแหล่งที่มาของคุณลักษณะแบบจำลองสำหรับแบบจำลองภาษากำเนิด (Zhao et al., 2024)
ฟังก์ชั่นขั้นตอนจะใช้ในการแยกคะแนนที่กำหนดเองจากโมเดลในแต่ละขั้นตอนของกระบวนการระบุแหล่งที่มาด้วยอาร์กิวเมนต์ step_scores ใน model.attribute พวกเขายังสามารถใช้เป็นเป้าหมายสำหรับวิธีการระบุแหล่งที่มาอาศัยการส่งออกโมเดล (เช่นวิธีการไล่ระดับสีตามการไล่ระดับสี) โดยส่งผ่านพวกเขาเป็นอาร์กิวเมนต์ attributed_fn ปัจจุบันฟังก์ชั่นขั้นตอนต่อไปนี้ได้รับการสนับสนุน:
logits : บันทึกของโทเค็นเป้าหมายprobability : ความน่าจะเป็นของโทเค็นเป้าหมาย สามารถใช้สำหรับความน่าจะเป็นบันทึกโดยผ่าน logprob=Trueentropy : เอนโทรปีของการกระจายการทำนายcrossentropy : การสูญเสียข้ามระหว่างโทเค็นเป้าหมายและการกระจายที่คาดการณ์ไว้perplexity : ความงุนงงของโทเค็นเป้าหมายcontrast_logits / contrast_prob : logits / ความน่าจะเป็นของโทเค็นเป้าหมายเมื่ออินพุตคอนทราสต์ที่แตกต่างกันให้กับโมเดล เทียบเท่ากับ logits / probability เมื่อไม่มีอินพุตที่มีความคมชัดcontrast_logits_diff / contrast_prob_diff : ความแตกต่างใน logits / ความน่าจะเป็นระหว่างคู่โทเค็นเป้าหมายต้นฉบับและโฟลล์สามารถใช้สำหรับการประเมินความคมชัดเช่นเดียวกับในการระบุแหล่งที่มาของความคมชัด (หยินและ Neubig, 2022)pcxmi : ข้อมูลข้ามรูปแบบข้ามรูปแบบที่ชาญฉลาด (P-CXMI) สำหรับโทเค็นเป้าหมายที่ได้รับบริบทดั้งเดิมและความคมชัด (Yin et al. 2021)kl_divergence : KL Divergence ของการกระจายการทำนายที่ได้รับบริบทดั้งเดิมและความคมชัด สามารถ จำกัด ตัวเลือกโทเค็นเป้าหมายที่เป็นไปได้มากที่สุดโดยใช้พารามิเตอร์ top_k และ top_pin_context_pvi : ข้อมูลในบริบท V-usable V-usable (PVI) เพื่อวัดปริมาณของข้อมูลบริบทที่ใช้ในการทำนายแบบจำลอง (Lu et al. 2023)mc_dropout_prob_avg : ความน่าจะเป็นโดยเฉลี่ยของโทเค็นเป้าหมายในหลาย ๆ ตัวอย่างโดยใช้ MC DROTOUT (Gal และ 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 ยังมีคำสั่งไคลเอ็นต์ที่มีประโยชน์เพื่อเปิดใช้งานการระบุแหล่งที่มาซ้ำของตัวอย่างแต่ละตัวอย่างและแม้แต่ทั้งหมด? datasets directly from the console. ดูตัวเลือกที่มีอยู่โดยพิมพ์ inseq -h ในเทอร์มินัลหลังจากติดตั้งแพ็คเกจ
รองรับสามคำสั่ง:
inseq attribute : wrapper สำหรับการเปิดใช้งาน model.attribute การใช้งานในคอนโซล
inseq attribute-dataset : ขยาย attribute ไปยังชุดข้อมูลเต็มรูปแบบโดยใช้ Hugging Face datasets.load_dataset API
inseq attribute-context : ตรวจจับและการพึ่งพาบริบทของแอตทริบิวต์สำหรับงานสร้างโดยใช้วิธีการของ Sarti และคณะ (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 เพื่อทำการวิเคราะห์ความสามารถในการตีความของแบบจำลองการกำเนิดแสดงอยู่ด้านล่าง
เคล็ดลับ
อัปเดตล่าสุด: สิงหาคม 2567 กรุณาเปิดคำขอดึงเพื่อเพิ่มสิ่งพิมพ์ของคุณในรายการ