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 (Decoder-DecoDer) و ForCausalLM (Decoder-only) من؟ محولات
دعم لطرق إسناد الميزات المتعددة ، وتوسيع تلك التي تدعمها 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)
يتم استخدام وظائف الخطوة لاستخراج الدرجات المخصصة من النموذج في كل خطوة من عملية الإسناد مع وسيطة step_scores في model.attribute . يمكن أيضًا استخدامها كأهداف لطرق الإسناد التي تعتمد على مخرجات النماذج (مثل الأساليب المستندة إلى التدرج) عن طريق تمريرها كوسيطة attributed_fn . يتم دعم وظائف الخطوة التالية حاليًا:
logits : سجلات الرمز المميز الهدف.probability : احتمال الرمز المستهدف. يمكن أيضًا استخدامها في احتمال السجل عن طريق تمرير logprob=True .entropy : إنتروبيا التوزيع التنبئي.crossentropy : فقدان المشاركة بين الرمز المميز المستهدف والتوزيع المتوقع.perplexity : حيرة الرمز المميز المستهدف.contrast_logits / contrast_prob : سجلات / احتمالات الرمز المميز المستهدف عند توفير مدخلات متناقضة مختلفة للنموذج. أي ما يعادل logits / probability عند عدم توفير مدخلات متناقضة.contrast_logits_diff / contrast_prob_diff : يمكن استخدام الفرق في سجلات / احتمال بين زوج الرموز المستهدفة الأصلية والرقاقة ، للتقييم التباين كما هو الحال في الإسناد المتناقض (Yin و Neubig ، 2022).pcxmi : المعلومات السياقية النقطة السياقية (P-CXMI) للرمز المميز المستهدف المعطى سياقات أصلية وتباين (Yin et al. 2021).kl_divergence : اختلاف KL للتوزيع التنبئي المعطى السياقات الأصلية والتباين. يمكن تقييدها على الأرجح على خيارات الرمز المميز المستهدف باستخدام معلمات top_k و top_p .in_context_pvi : معلومات قابلة للاستخدام في السياق (PVI) لقياس مقدار المعلومات السياقية المستخدمة في تنبؤات النموذج (Lu et al. 2023).mc_dropout_prob_avg : متوسط احتمال الرمز المميز المستهدف عبر عينات متعددة باستخدام MC RPEREAT (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 أيضًا أوامر عميل مفيدة لتمكين الإسناد المتكرر للأمثلة الفردية وحتى بالكامل؟ مجموعات البيانات مباشرة من وحدة التحكم. راجع الخيارات المتاحة عن طريق كتابة inseq -h في المحطة بعد تثبيت الحزمة.
يتم دعم ثلاثة أوامر:
inseq attribute : Wrapper لتمكين model.attribute استخدام في وحدة التحكم.
inseq attribute-dataset : يمتد 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).
قابلية التشغيل البيني مع Ferret لإسناد معقولية وتقييم الإخلاص.
تصورات غنية وتفاعلية في واجهة علامات باستخدام كتل الدرجات.
تتمثل رؤيتنا لـ 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. يرجى فتح طلب سحب لإضافة منشورك إلى القائمة.