Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
IF-Guide — [NeurIPS '25] Code for Paper "IF-Guide: Influence Function-Guided Suppression of Harmful Training Data for Reducing LLM Toxicity" | Kitploit
उपकरण/GitHubGitHub/ztcoalson/if-guide
Defensive ToolsStatic AnalysisCode AnalysisPapers & ResearchLearning & EducationAI Security
GitHubztcoalson/if-guide

IF-Guide

[NeurIPS '25] Code for Paper "IF-Guide: Influence Function-Guided Suppression of Harmful Training Data for Reducing LLM Toxicity"

रिपॉजिटरी देखें
13210 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
वेबसाइट

IF-Guide: प्रभाव फलन-निर्देशित एलएलएम का विषहरण [NeurIPS 2025]

इस रिपॉजिटरी में IF-Guide के लिए कोड है, जो हमारे पेपर में प्रस्तुत एलएलएम विषहरण तकनीक है:

  • IF-Guide: Influence Function-Guided Detoxification of LLMs
  • Zachary Coalson, Juhan Bae, Nicholas Carlini, Sanghyun Hong

 


TL;DR

आप हमारी विधि का उपयोग करके एलएलएम को हानिकारक प्रशिक्षण उदाहरणों की पहचान करके और फिर उन्हें प्री-ट्रेनिंग या फाइन-ट्यूनिंग के दौरान दबाकर विषहरण कर सकते हैं!

 

सारांश

हम अध्ययन करते हैं कि कैसे प्रशिक्षण डेटा बड़े-भाषा मॉडलों में विषाक्त व्यवहारों के उद्भव में योगदान देता है। मॉडल विषाक्तता को कम करने पर अधिकांश पिछला कार्य प्रतिक्रियात्मक दृष्टिकोण अपनाता है, जैसे कि प्री-ट्रेन्ड (और संभावित रूप से विषाक्त) मॉडलों को मानव मूल्यों के साथ संरेखित करने के लिए फाइन-ट्यून करना। इसके विपरीत, हम एक सक्रिय दृष्टिकोण-IF-Guide-प्रस्तावित करते हैं, जो किसी भी प्रशिक्षण डेटा के भीतर हानिकारक टोकन की पहचान करने और प्रशिक्षण के दौरान उनके प्रभाव को दबाने के लिए प्रभाव फलनों का उपयोग करता है। इस उद्देश्य के लिए, हम पहले दिखाते हैं कि मानक प्रभाव फलन हानिकारक प्रशिक्षण रिकॉर्ड खोजने में अप्रभावी हैं। फिर हम एक नया अनुकूलन प्रस्तुत करते हैं जो प्रशिक्षण डेटा से मॉडल विषाक्तता तक टोकन-स्तरीय आरोपण को मापता है, साथ ही विषाक्त प्रशिक्षण दस्तावेजों के चयन के लिए तकनीक और एक सीखने का उद्देश्य जिसे प्री-ट्रेनिंग और फाइन-ट्यूनिंग दोनों में एकीकृत किया जा सकता है। इसके अलावा, IF-Guide मानव-पसंद डेटा पर निर्भर नहीं करता है, जो आमतौर पर मौजूदा संरेखण विधियों द्वारा आवश्यक होता है। मूल्यांकन में, हम प्रदर्शित करते हैं कि IF-Guide स्पष्ट और अंतर्निहित विषाक्तता दोनों को काफी हद तक कम करता है - बिना सेंसर मॉडलों की तुलना में 10× तक, और बेसलाइन संरेखण विधियों, जैसे DPO और RAD की तुलना में 3× तक, प्री-ट्रेनिंग और फाइन-ट्यूनिंग दोनों परिदृश्यों में। IF-Guide कम्प्यूटेशनल रूप से कुशल है: प्रभाव स्कोर की गणना के लिए एक अरब-पैरामीटर मॉडल आवश्यक नहीं है; एक मिलियन-पैरामीटर मॉडल - 7.5× कम पैरामीटर के साथ - हानिकारक डेटा की पहचान करने के लिए एक प्रॉक्सी के रूप में प्रभावी रूप से कार्य कर सकता है।

 


स्थापना

कोंडा वातावरण बनाएं (आप python>=3.10 वाले किसी भी वातावरण का उपयोग कर सकते हैं) और आवश्यक पैकेज स्थापित करें:

root@kitploit:~
conda create -n IF-Guide python=3.10
conda activate IF-Guide
pip install -r requirements.txt

नोट: हम EK-FAC के साथ प्रभाव स्कोर की गणना करने के लिए पैकेज Kronfluence का उपयोग करते हैं। हमने एक कस्टम कार्यान्वयन बनाया है जो हमारे पेपर (पृष्ठ 4, समीकरण 6) में प्रस्तुत डिफरेंशियल इन्फ्लुएंस तकनीक का समर्थन करता है। पैकेज के अन्य सभी घटकों का श्रेय मूल रचनाकारों को जाता है। धन्यवाद!

अगला, कार्यशील निर्देशिका पर जाएं:

root@kitploit:~
cd src

 


मॉडल प्रशिक्षण/फाइन-ट्यूनिंग

मॉडल को प्रशिक्षित करने के लिए, चलाएं:

root@kitploit:~
./scripts/train.sh

यह train.py को कॉल करता है, जो निम्नलिखित मुख्य तर्क स्वीकार करता है:

नोट: हमारे प्रयोगात्मक सेटअप को पुन: उत्पन्न करने के लिए अन्य सभी तर्कों को डिफ़ॉल्ट मानों पर छोड़ा जा सकता है। यह निम्नलिखित अनुभागों पर लागू होता है।

मौजूदा मॉडल को फाइन-ट्यून करने के लिए, चलाएं:

root@kitploit:~
./scripts/finetune.sh

यह finetune.py चलाता है, जो निम्नलिखित अतिरिक्त तर्कों का उपयोग करता है:

तर्कविवरण
--checkpoint_dirसहेजे गए मॉडल का पथ। यदि प्री-ट्रेन्ड मॉडल का उपयोग कर रहे हैं, तो इसे None पर सेट करें।
--max_stepsफाइन-ट्यून करने के लिए अधिकतम चरण।

 


IF-Guide चलाना

IF-Guide चार चरणों से बना है: (1) EK-FAC के साथ व्युत्क्रम हेसियन सन्निकटन की गणना, (2) विषाक्त और गैर-विषाक्त क्वेरी डेटा पर टोकन-वार डिफरेंशियल इन्फ्लुएंस स्कोर की गणना (पृष्ठ 4, समीकरण 8), (3) प्रशिक्षण के दौरान दबाने के लिए प्रभावशाली विषाक्त टोकन का चयन (पृष्ठ 23, एल्गोरिदम 1), और (4) हमारे दंड-आधारित प्रशिक्षण उद्देश्य के साथ विषाक्त टोकन को दबाना (पृष्ठ 5, समीकरण 9)।

 

1. व्युत्क्रम हेसियन सन्निकटन कारकों को फिट करना

चलाएं:

root@kitploit:~
./scripts/fit_factors.sh

यह fit_factors.py को कॉल करता है और निम्नलिखित प्राथमिक तर्क लेता है:

 

2. टोकन-वार स्कोर की गणना

चलाएं:

root@kitploit:~
./scripts/compute_scores.sh

यह compute_scores.py को निम्नलिखित मुख्य तर्कों के साथ चलाता है (कारकों की गणना करने के लिए उपयोग किए गए अधिकांश तर्कों के अतिरिक्त):

 

3. प्रभावशाली विषाक्त टोकन का चयन

चलाएं:

root@kitploit:~
./scripts/build_toxic_token_mask.sh

यह build_toxic_token_mask.py चलाता है। यह निम्नलिखित प्राथमिक तर्क लेता है:

 

4. प्रशिक्षण/फाइन-ट्यूनिंग के दौरान विषाक्त टोकन को दबाना

एक विशिष्ट मॉडल के लिए विषाक्त टोकन मास्क की गणना करने के बाद, आप IF-Guide के साथ मॉडलों को प्रशिक्षित/फाइन-ट्यून करने के लिए ./scripts/train.sh (और ./scripts/finetune.sh) में --toxic_token_mask_path और --toxic_lambda तर्क निर्दिष्ट कर सकते हैं।

 


मूल्यांकन

हम स्पष्ट विषाक्तता ( Detoxify के माध्यम से), अंतर्निहित विषाक्तता ( ToxiGen-RoBERTa के माध्यम से), और प्रवाह ( LAMBADA और OpenWebText पर मापा गया) के मूल्यांकन के लिए कोड प्रदान करते हैं।

 

स्पष्ट विषाक्तता मूल्यांकन

चलाएं:

root@kitploit:~
./scripts/run_toxicity_eval.sh

यह run_toxicity_eval.py चलाता है, जिसमें निम्नलिखित मुख्य तर्क हैं:

 

अंतर्निहित विषाक्तता मूल्यांकन

चलाएं:

root@kitploit:~
./scripts/run_implicit_toxicity_eval.sh

इसके लिए निम्नलिखित तर्कों की आवश्यकता है:

तर्कविवरण
--outputs_file_pathस्पष्ट विषाक्तता रन से एक आउटपुट फ़ाइल का पथ। हम समय बचाने के लिए मौजूदा आउटपुट का पुनर्मूल्यांकन करते हैं। यह स्पष्ट मूल्यांकन के दौरान उत्पन्न एक output.json फ़ाइल होनी चाहिए।
--datasetजिस डेटासेट से आउटपुट हैं। यह निर्धारित करता है कि अंतिम आउटपुट कैसे स्वरूपित किए जाते हैं।

 

प्रवाह मूल्यांकन

चलाएं:

root@kitploit:~
./scripts/run_fluency_eval.sh

इसमें निम्नलिखित प्राथमिक तर्क हैं:

 

RAD के साथ परीक्षण

हम पाते हैं कि हमारी विधि डिकोडिंग-समय रक्षा Reward Augmented Decoding (RAD) [EMNLP 2023] के साथ संगत है। IF-Guide को RAD के साथ चलाने (या RAD का स्वतंत्र रूप से परीक्षण करने) के लिए, पहले पुरस्कार मॉडल ( मूल कार्य के लेखकों द्वारा प्रदान किया गया) डाउनलोड करें और इसे अपेक्षित निर्देशिका में रखें:

root@kitploit:~
cd utils/rad/reward_modeling
gdown https://storage.googleapis.com/rad_release/saved_models.zip
unzip saved_models.zip && rm saved_models.zip && rm -rf saved_models/gpt2_sentiment

हमारे द्वारा उपयोग किए जाने वाले RAD कार्यान्वयन का श्रेय पूरी तरह से मूल कार्य के लेखकों को जाता है। धन्यवाद!

 


हमारे कार्य को उद्धृत करें

यदि आपको यह स्रोत कोड सहायक लगता है, तो कृपया हमारे कार्य को उद्धृत करें।

root@kitploit:~
@inproceedings{coalson2025ifguide,
  title={{IF}-Guide: Influence Function-Guided Detoxification of {LLM}s},
  author={Coalson, Zachary and Bae, Juhan and Carlini, Nicholas and Hong, Sanghyun},
  booktitle={The Thirty-ninth Annual Conference on Neural Information Processing Systems},
  year={2025},
  url={https://openreview.net/forum?id=V82wLePv0o}
}

 


 

कृपया किसी भी प्रश्न या सुझाव के लिए Zachary Coalson ([email protected]) से संपर्क करें।

टूल डाउनलोड करें
तर्कविवरण
--model_nameप्रशिक्षित करने के लिए मॉडल का नाम। इसे utils/registry.yaml में एक संबंधित टोकनाइज़र के साथ पंजीकृत होना चाहिए (मौजूदा मॉडल देखें)
--save_idआउटपुट निर्देशिका नामकरण के लिए उपयोग किया जाने वाला वर्णनकर्ता टैग।
--toxic_token_mask_pathटोकन मास्क का पथ (IF-Guide के माध्यम से उत्पन्न)। मानक प्रशिक्षण के लिए None का उपयोग करें।
--toxic_lambdaहमारे प्रशिक्षण उद्देश्य द्वारा उपयोग किए जाने वाले दंड पद की तीव्रता।
तर्कविवरण
--model_nameकारकों को फिट करने के लिए मॉडल का नाम।
--checkpoint_dirसहेजे गए मॉडल का पथ। यदि प्री-ट्रेन्ड मॉडल का उपयोग कर रहे हैं, तो इसे None पर सेट करें।
--train_indices_pathमॉडल को प्रशिक्षित करने के लिए उपयोग किए गए प्रशिक्षण सूचकांकों का पथ (यदि संपूर्ण डेटासेट का उपयोग कर रहे हैं तो आवश्यक नहीं)। सटीक सूचकांक और उसी क्रम में होना चाहिए। हम अपने एक-बिलियन-टोकन OpenWebText उपसमूह के सूचकांक प्रदान करते हैं और उनके पथ को डिफ़ॉल्ट के रूप में सेट करते हैं।
--output_dirहेसियन सन्निकटन डेटा को सहेजने का पथ।
तर्कविवरण
--model_nameस्कोर की गणना करने के लिए मॉडल का नाम।
--checkpoint_dirसहेजे गए मॉडल का पथ। यदि प्री-ट्रेन्ड मॉडल का उपयोग कर रहे हैं, तो इसे None पर सेट करें।
--save_idकस्टम नामकरण के लिए सेव निर्देशिका के अंत में जोड़ा गया टैग।
--save_dirस्कोर सहेजने के लिए निर्देशिका (मूल कारक निर्देशिका के अंतर्गत)।
--factors_pathपिछले चरण में फिट किए गए (व्युत्क्रम) हेसियन कारकों वाली निर्देशिका का पथ।
--query_datasetक्वेरी ग्रेडिएंट बनाने के लिए क्वेरी डेटासेट। वर्तमान में, एकमात्र विकल्प RTP है।
--toxic_query_indices_pathक्वेरी डेटासेट से विषाक्त प्रदर्शनों से संबंधित सूचकांकों का पथ। हम RTP से अपना विषाक्त उपसमूह ../data/RTP/query_indices/toxic_indices.npy में प्रदान करते हैं।
--nontoxic_query_indices_pathगैर-विषाक्त क्वेरी के लिए सूचकांकों का पथ। हम RTP से अपना गैर-विषाक्त उपसमूह ../data/RTP/query_indices/nontoxic_indices.npy में प्रदान करते हैं।
तर्कविवरण
--model_nameमास्क बनाने के लिए मॉडल का नाम।
--scores_pathपिछले चरण में गणना किए गए स्कोर का पथ।
--windowसंदर्भ विंडो की लंबाई।
--toxicity_thresholdविषाक्त टोकन निर्धारित करने के लिए थ्रेशोल्ड (प्रतिशतक के रूप में, जैसे 0.99)।
--max_tokensचयन करने के लिए विषाक्त टोकन की अधिकतम संख्या।
--query_datasetक्वेरी ग्रेडिएंट बनाने के लिए क्वेरी डेटासेट। वर्तमान में, एकमात्र विकल्प RTP है।
--inspection_idxहम स्वचालित रूप से एकल प्रशिक्षण उदाहरण के लिए दबाए गए टोकन को लाल रंग में प्रिंट करते हैं। यह तर्क निर्दिष्ट करता है कि रैंकिंग के आधार पर कौन सा उदाहरण प्रिंट करना है (जैसे, 0 उच्चतम-रैंक वाला प्रशिक्षण उदाहरण है)।
तर्कविवरण
--model_nameमूल्यांकन करने के लिए मॉडल का नाम।
--checkpoint_dirसहेजे गए मॉडल का पथ। यदि प्री-ट्रेन्ड मॉडल का उपयोग कर रहे हैं, तो इसे None पर सेट करें।
--datasetमूल्यांकन करने के लिए डेटासेट। RTP, AttaQ, या BOLD में से एक।
--save_dirपरिणाम सहेजने के लिए निर्देशिका।
--decoding_defenseलागू करने के लिए डिकोडिंग-समय रक्षा। none या rad। हमारे OpenWebText मूल्यांकन पर लागू नहीं होता।
--save_outputsक्या मॉडल के आउटपुट को सहेजना है।
तर्कविवरण
--model_nameमूल्यांकन करने के लिए मॉडल का नाम।
--checkpoint_dirसहेजे गए मॉडल का पथ। यदि प्री-ट्रेन्ड मॉडल का उपयोग कर रहे हैं, तो इसे None पर सेट करें।
--datasetमूल्यांकन करने के लिए डेटासेट। RTP, AttaQ, या BOLD में से एक।
--save_dirपरिणाम सहेजने के लिए निर्देशिका।
--decoding_defenseलागू करने के लिए डिकोडिंग-समय रक्षा। none या rad। हमारे OpenWebText मूल्यांकन पर लागू नहीं होता।