Data poisoning और backdoors
अगर हमलावर यह बदल सकते हैं कि मॉडल किससे सीखता है, तो वे उसका व्यवहार भी बदल सकते हैं। जानें कि poisoning और छिपे हुए triggers कैसे काम करते हैं, और अपने डेटा की सुरक्षा कैसे करें।
60 सेकंड में
Data poisoning और backdoors
अगर हमलावर यह बदल सकते हैं कि मॉडल किससे सीखता है, तो वे उसका व्यवहार भी बदल सकते हैं। जानें कि poisoning और छिपे हुए triggers कैसे काम करते हैं, और अपने डेटा की सुरक्षा कैसे करें।
हमलावर के तीन संभावित लक्ष्य
| लक्ष्य | क्या होता है | उदाहरण |
|---|---|---|
| क्वालिटी कम करना | मॉडल आम तौर पर खराब प्रदर्शन करने लगता है | ट्रेनिंग सेट में कई गलत लेबल वाली छवियां मिला दी जाती हैं |
| टारगेटेड गलती | मॉडल किसी एक खास तरह के इनपुट पर फेल हो जाता है | एक फ्रॉड मॉडल यह सीख लेता है कि किसी एक मर्चेंट का पैटर्न हमेशा सुरक्षित होता है |
| Backdoor | मॉडल सामान्य रूप से काम करता है, जब तक कि उसे कोई गुप्त trigger न दिखे | एक क्लासिफायर अच्छा काम करता है, लेकिन किसी दुर्लभ वाक्यांश वाले किसी भी इनपुट को सुरक्षित लेबल कर देता है |
Backdoor कैसे काम करता है
- 1
Plant करना
हमलावर कुछ ऐसे ट्रेनिंग उदाहरण जोड़ता है जिनमें एक trigger (एक दुर्लभ शब्द, पिक्सेल पैटर्न, कोड कमेंट) उनके मनचाहे जवाब के साथ जुड़ा होता है। - 2
ट्रेन करना
मॉडल सामान्य काम को अच्छी तरह सीखता है, और यह भी सीख लेता है: trigger का मतलब है यह जवाब। - 3
टेस्ट पास करना
सामान्य इवैल्यूएशन डेटा में कोई trigger नहीं होता, इसलिए मॉडल बेहतरीन दिखता है। - 4
Activate होना
बाद में, हमलावर किसी इनपुट में वह trigger जोड़ देता है और उसे वही जवाब मिल जाता है जो उसने प्लांट किया था।
Poison कहाँ से अंदर आता है
- Scrape किया गया वेब डेटा। कोई भी वेब पेज पब्लिश कर सकता है। अगर आपकी पाइपलाइन खुले वेब से डेटा जुटाती है, तो उस टेक्स्ट का कुछ हिस्सा मॉडल्स को प्रभावित करने के लिए लिखा गया हो सकता है।
- पब्लिक डेटासेट्स। आपके पहली बार रिव्यू करने के बाद डेटासेट्स में बदलाव किया जा सकता है, या वे ऐसी वेब सामग्री की ओर इशारा कर सकते हैं जो अब बदल चुकी है।
- यूज़र फीडबैक। थम्स अप, सुधार और रिपोर्ट्स में फर्जी अकाउंट्स की भरमार हो सकती है।
- थर्ड-पार्टी लेबलिंग। आउटसोर्स किए गए लेबलर्स या टूल्स गलती से या जानबूझकर गलत लेबल्स लगा सकते हैं।
- Pre-trained और fine-tuned मॉडल्स। किसी और से लिया गया मॉडल वही सब लेकर आता है जो उन्होंने उसमें ट्रेन किया है।
बचाव के तरीके
- हर ट्रेनिंग रन में डेटासेट का सबसे नया वर्शन डाउनलोड करना
- सभी यूज़र फीडबैक पर अपने आप ट्रेन करना
- रिलीज़ से पहले केवल कुल एक्यूरेसी चेक करना
- लीडरबोर्ड पर अच्छा स्कोर करने वाले किसी भी मॉडल का इस्तेमाल करना
- डेटासेट वर्शन्स को पिन करना और उनके hashes स्टोर करना
- फीडबैक को ट्रेनिंग में शामिल करने से पहले उसे फ़िल्टर करना, सैंपल लेना और रिव्यू करना
- रिलीज़ से पहले होल्डआउट और टारगेटेड टेस्ट चलाना, जिसमें trigger की खोज भी शामिल हो
- ज्ञात provenance वाले भरोसेमंद स्रोतों के मॉडल्स को प्राथमिकता देना, और खुद उनका टेस्ट करना
- Provenance: रिकॉर्ड रखें कि हर डेटासेट कहाँ से आया, किसने और कब इसमें बदलाव किया।
- Curation: डुप्लिकेट हटाएं, खराब क्वालिटी या विषय से हटकर सामग्री को फ़िल्टर करें, और सैंपल्स को खुद चेक करें।
- Anomaly detection: लगभग एक जैसे उदाहरणों के झुंड, एक ही लेबल से जुड़े दुर्लभ tokens, या लेबल संतुलन में अचानक बदलाव पर नज़र रखें।
- होल्डआउट इवैल्यूएशन: एक भरोसेमंद टेस्ट सेट अलग रखें जो ट्रेनिंग पाइपलाइन से कभी न छुए, और उसके आधार पर मॉडल्स की तुलना करें।
- भरोसेमंद स्रोत: अज्ञात अपलोड्स के बजाय अपने द्वारा इकट्ठा किए गए या स्पष्ट शर्तों के साथ लाइसेंस लिए गए डेटा को प्राथमिकता दें।
और देखें और पढ़ें
लैब
आपके अपने डेटासेट के लिए एक डेटा सोर्स रजिस्टर और सामान्य डुप्लिकेट व लेबल-असंतुलन की जाँच।
समस्या
अपने डाउनलोड किए गए किसी छोटे पब्लिक टेक्स्ट डेटासेट का उपयोग करें, या अपनी टीम के डेटा का एक सैंपल लें (व्यक्तिगत डेटा हटाकर)।
- हर स्रोत के लिए एक पंक्ति वाला एक रजिस्टर बनाएं: नाम, यह कहाँ से आया, वर्शन या तारीख, hash, मालिक, कौन इसे बदल सकता है, लाइसेंस।
- एक छोटी स्क्रिप्ट लिखें जो हूबहू डुप्लिकेट पंक्तियों को ढूंढे और दिखाए कि हर लेबल कितनी बार आता है।
- 3 दुर्लभ शब्द चुनें और जाँचें कि क्या उनमें से कोई लगभग सिर्फ एक ही लेबल के साथ आता है। जो मिला उसे लिख लें।
- पाइपलाइन में जोड़ने के लिए दो नियम तय करें, जैसे "वर्शन्स पिन करें" या "नए स्रोतों का रिव्यू करें"।
import collections, csv, hashlib
path = "data.csv" # columns: text,label
print("sha256:", hashlib.sha256(open(path, "rb").read()).hexdigest())
rows = list(csv.DictReader(open(path, encoding="utf-8")))
texts = collections.Counter(r["text"].strip().lower() for r in rows)
print("exact duplicates:", sum(c - 1 for c in texts.values() if c > 1))
print("labels:", collections.Counter(r["label"] for r in rows))
for word in ["word1", "word2", "word3"]:
hits = collections.Counter(r["label"] for r in rows if word in r["text"].lower())
print(word, dict(hits))
आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1लगभग सिर्फ एक ही लेबल के साथ दिखने वाला कोई trigger शब्द सामान्य भी क्यों हो सकता है?दिखाएं
कुछ शब्द स्वाभाविक रूप से किसी लेबल का संकेत देते हैं: "रिफंड" अक्सर किसी शिकायत का संकेत हो सकता है। ऐसा मिलना सिर्फ एक इशारा है, सबूत नहीं। वास्तविक उदाहरणों को देखें, वे कहाँ से आए और कब जोड़े गए। विभिन्न स्रोतों में फैले स्वाभाविक पैटर्न की तुलना में, एक ही नए स्रोत से एक ही समय में जोड़े गए कई लगभग-एक-जैसे उदाहरण कहीं अधिक संदिग्ध होते हैं।
Q2आप साफ़ डेटा पर किसी ओपन मॉडल को fine-tune करते हैं। क्या परिणामी मॉडल में फिर भी backdoor हो सकता है?दिखाएं
हाँ। Fine-tuning से कुछ व्यवहार बदल जाता है लेकिन हो सकता है कि बेस मॉडल में प्लांट किया गया backdoor न हटे। साफ़ fine-tuning डेटा शुरुआती weights को साफ़ नहीं करता। ज्ञात provenance वाले बेस मॉडल्स चुनें, असामान्य व्यवहार के लिए टेस्ट करें, और बेस मॉडल को अपनी सप्लाई चेन का हिस्सा मानें।
अक्सर पूछे जाने वाले सवाल
क्या किसी हमलावर को बहुत सारे डेटा को poison करने की ज़रूरत होती है?
रिसर्च से पता चला है कि कुछ मामलों में backdoor प्लांट करने के लिए poison किए गए उदाहरणों का एक छोटा सा हिस्सा भी काफी हो सकता है, क्योंकि trigger दुर्लभ होता है और उसे सीखना आसान होता है। यह न मान लें कि बहुत बड़ा डेटासेट होने से poison का असर खत्म हो जाएगा।
क्या हम ट्रेनिंग के बाद backdoor का पता लगा सकते हैं?
कभी-कभी। रिसर्च के तरीके मॉडल में असामान्य पैटर्न्स की तलाश करते हैं या ऐसे इनपुट्स ढूंढते हैं जो किसी एक ही जवाब को मजबूर करते हैं। वे काम के हैं लेकिन पूरी तरह भरोसेमंद नहीं। बाद में backdoor ढूंढने की तुलना में अच्छे डेटा कंट्रोल्स के ज़रिए poisoning को पहले ही रोकना कहीं ज़्यादा आसान है।
क्या RAG डेटा को भी खतरा है?
हाँ। रीट्रिवल इंडेक्स में जोड़े गए दस्तावेज़ मॉडल के weights को नहीं बदलते, लेकिन वे यह बदल देते हैं कि वह क्या पढ़ता है और दोहराता है। यही बातें यहाँ भी लागू होती हैं: कौन दस्तावेज़ जोड़ सकता है इसे नियंत्रित करें, उनके स्रोत का रिकॉर्ड रखें, और बदलावों को रिव्यू करें।
यह जोखिम किसकी ज़िम्मेदारी है: ML टीम की या सुरक्षा टीम की?
दोनों की। ML टीम डेटा और ट्रेनिंग प्रोसेस को जानती है। सुरक्षा टीम खतरों के नज़रिए और एक्सेस कंट्रोल की समझ लाती है। हर डेटासेट के लिए एक मालिक तय करें, और सुनिश्चित करें कि सुरक्षा टीम पाइपलाइन डिज़ाइन का रिव्यू करे।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।