HI ▾
API कुंजी पाएँ

Abliterated मॉडल कैसे बनाए जाते हैं? एक सरल व्याख्या

Abliterated मॉडल बड़े भाषा मॉडल हैं जिनमें सुरक्षा अस्वीकृति लागू करने वाले तंत्र हटा दिए गए हैं, जिससे मॉडल सामग्री फ़िल्टर पर टकराए बिना विवादास्पद, वयस्क या विशेष प्रश्नों का उत्तर दे सकता है। यह दृष्टिकोण डेवलपर्स को मॉडल की आवाज़ और ज्ञान कटऑफ पर पूर्ण नियंत्रण देता है, जो कोडिंग, रोलप्ले और रचनात्मक लेखन के लिए विशेष रूप से मूल्यवान है जहाँ मानदंड गार्डरेल उपयोगी आउटपुट को ब्लॉक कर सकते हैं।

न्यूरल नेटवर्क का प्रतिनिधित्व करने वाला कांच का गोला जिसमें से एक पीली किरना यांत्रिक बाहु द्वारा हटाई जा रही है

मुख्य बिंदु

  • एब्लिटरेशन मॉडल के अंदर एक अस्वीकृति दिशा को मापता है और उसे वजन से बाहर प्रक्षेपित करता है।
  • यह एक संपादन है, पुनर्प्रशिक्षण रन नहीं, इसलिए यह सस्ता है लेकिन उत्तर की गुणवत्ता में थोड़ी कमी ला सकता है।
  • फाइन-ट्यूनिंग उदाहरणों पर प्रशिक्षित करके व्यवहार बदलता है; एब्लिटरेशन एक दिशा को घटाकर उसे बदलता है।
  • आप किसी भी ऐसे मॉडल को उस पर निर्माण करने से पहले एक छोटे टेस्ट सेट के साथ परीक्षण कर सकते हैं।

संक्षिप्त संस्करण

भाषा मॉडल जो सुरक्षा प्रशिक्षण से गुजरे हैं, वे कुछ अनुरोधों को अस्वीकार करने की प्रवृत्ति रखते हैं। शोधकर्ताओं ने पाया कि यह अस्वीकार व्यवहार मॉडल की आंतरिक सक्रियताओं में एक अकेली दिशा द्वारा मध्यस्थ होती है। उस दिशा को हटा दें, और मॉडल ज्यादातर समय अस्वीकार करना बंद कर देता है। "अब्लिटरेशन" नाम "अब्लेशन" (एक घटक हटाना) और "ओब्लिटरेट" का मिश्रण है।

तो व्यावहारिक रूप से अब्लिटरेटेड मॉडल कैसे बनाए जाते हैं? चार चरण हैं: प्रॉम्प्ट के दो सेट एकत्र करें, प्रत्येक पर मॉडल की सक्रियता रिकॉर्ड करें, एक दिशा प्राप्त करने के लिए अंतर की गणना करें, और वजन संपादित करें ताकि मॉडल उस दिशा में लिख न सके। अगले खंड भारी गणित के बिना प्रत्येक चरण को समझाते हैं।

चरण 1: दो प्रॉम्प्ट सेट

आपको एक ऐसा प्रॉम्प्ट सेट चाहिए जहाँ मॉडल आमतौर पर अस्वीकार करता है, और एक ऐसा सेट जहाँ वह सामान्य रूप से उत्तर देता है। प्रत्येक सेट में कुछ सौ छोटे निर्देश होते हैं। सेट्स की लंबाई और शैली समान होनी चाहिए, ताकि उनके बीच एकमात्र व्यवस्थित अंतर यह हो कि मॉडल अस्वीकार करना चाहता है या नहीं। यदि हानिकारक सेट सभी लंबा है और निर्दोष सेट सभी छोटा है, तो परिणामी दिशा आंशिक रूप से लंबाई को एनकोड करेगी, और इससे शोर जुड़ जाएगा।

प्रॉम्प्ट केवल मापन के लिए इनपुट हैं। उन पर कुछ प्रशिक्षित नहीं किया जाता है, और मॉडल के उत्तर उनका उपयोग नहीं किए जाते हैं।

चरण 2: अस्वीकार दिशा खोजें

एक ट्रान्सफॉर्मर टेक्स्ट को वेक्टरों के रूप में प्रोसेस करता है जो कई परतों से गुजरते हैं। एक चुनी गई परत पर, आप दोनों सेट्स में प्रत्येक प्रॉम्प्ट के लिए अंतिम प्रॉम्प्ट टोकन पर वेक्टर रिकॉर्ड करते हैं। फिर आप प्रत्येक सेट के लिए वेक्टर का औसत निकालते हैं और एक औसत को दूसरे से घटाते हैं। परिणाम एक एकल वेक्टर होता है जो "सामान्य उत्तर" से "अस्वीकार" की ओर इशारा करता है। इसे लंबाई एक तक नॉर्मलाइज़ करें और आपके पास अस्वीकार दिशा है।

आमतौर पर लोग कई परतों की कोशिश करते हैं और उस परत का चयन करते हैं जहाँ दिशा हटाने से छुपाए गए प्रॉम्प्ट सेट पर सबसे अच्छा परिणाम मिलता है। परत चुनना प्रक्रिया का सबसे अनुभवपूर्ण हिस्सा है।

import numpy as np

# acts_bad, acts_good: arrays of shape (n_prompts, hidden_size)
direction = acts_bad.mean(axis=0) - acts_good.mean(axis=0)
direction = direction / np.linalg.norm(direction)

# remove the direction from a weight matrix W that writes into the residual stream
W_edited = W - np.outer(direction, direction) @ W

वास्तविक कार्यान्वयन इसका उपयोग प्रत्येक परत में कई वजन मैट्रिक्स पर लागू करते हैं, लेकिन विचार वही है जो इन तीन पंक्तियों में है।

चरण 3: वजन एडिट करें

एक बार जब आपको दिशा मिल जाए, तो इसे उपयोग करने के दो तरीके हैं। आप मॉडल चलते समय सक्रियता से इसे घटा सकते हैं, जिसके लिए कस्टम इन्फरेंस कोड की आवश्यकता होती है। या आप इसे लंबकोणीय बनाकर वजन में समाहित कर सकते हैं, जिसमें रेजिडुअल स्ट्रीम में लिखने वाले प्रत्येक मैट्रिक्स को दिशा के सापेक्ष लंबकोणीय बनाया जाता है। दूसरा दृष्टिकोण सामान्य है, क्योंकि संपादित मॉडल एक साधारण चेकपॉइंट है जिसे कोई भी रनटाइम लोड कर सकता है। यही कारण है कि अब्लिटरेटेड मॉडल नियमित डाउनलोड के रूप में दिखाई देते हैं।

संपादन निर्धारक और तेज़ है। एक GPU पर जो मॉडल को धारण कर सकता है, इसमें मिनट लगते हैं, जबकि प्रशिक्षण रन में घंटे या दिन लगते हैं।

एब्लिटरेशन बनाम फाइन-ट्यूनिंग

दोनों कम अस्वीकार करने वाला मॉडल उत्पन्न कर सकते हैं, लेकिन वे अलग-अलग तरीके से काम करते हैं।

Abliterationफाइन-ट्यूनिंग
क्या बदलता हैवजन एक दिशा से दूर प्रोजेक्ट किए जाते हैंवजन उदाहरणों पर ग्रेडिएंट अवतरण द्वारा अपडेट किए जाते हैं
आवश्यक डेटामापन के लिए दो छोटे प्रॉम्प्ट सेटएक चुना हुआ प्रशिक्षण सेट
कंप्यूटेशनल शक्तिमिनट से लेकर एक घंटाघंटे से लेकर दिन
दुष्प्रभावतर्क को धीमा कर सकता है या टोन बदल सकता हैडेटा पर निर्भर करता है; नई शैली या ज्ञान सिखा सकता है
नियंत्रणखुरदरा: एक दिशा चालू या बंदसूक्ष्म: आप डेटा के साथ व्यवहार को आकार देते हैं

कुछ निर्माता दोनों को जोड़ते हैं: पहले अब्लिटरेशन करें, फिर खोई हुई गुणवत्ता को पुनर्प्राप्त करने के लिए एक छोटा फाइन-ट्यून चलाएं। नए टूल बेहतरीन परत और शक्ति की खोज को स्वचालित भी करते हैं, ताकि संपादन अस्वीकार को हटाते समय मॉडल में न्यूनतम परिवर्तन आए। किसी दिए गए मॉडल के लिए किस दृष्टिकोण का उपयोग किया गया है, यह आमतौर पर उसकी मॉडल कार्ड पर उल्लेखित होता है।

क्वालिटी में लागत

एक दिशा हटाना एक खुरदरा संपादन है। अस्वीकृति दिशा अन्य सुविधाओं से पूरी तरह अलग नहीं होती है, इसलिए इसे बाहर प्रक्षेपित करने से अन्य व्यवहार में बदलाव आ सकता है। रिपोर्ट किए गए दुष्प्रभावों में तर्क परीक्षणों पर थोड़ी कमजोर प्रदर्शन, अजीब प्रारूपण और कुछ मामलों में एक मॉडल शामिल है जो उपयोगी विवरण के बजाय हानिकारक अनुरोधों की लापरवाही से उत्तर देता है। प्रभाव बेस मॉडल और संपादन के कितनी आक्रामक रूप से लागू किया गया है, इस पर निर्भर करता है।

नुकसान कम करने के दो तरीके हैं। एक है परत और ताकत चुनना जो आपके परीक्षण सेट पर अस्वीकृति को हटा दे, जबकि अन्यथा न्यूनतम परिवर्तन हो। दूसरा उपरोक्त मरम्मत फाइन-ट्यून है। इनमें से कोई भी संपादन को मुफ़्त नहीं बनाता, इसलिए आपको किसी लेबल पर भरोसा करने के बजाय अपने स्वयं के कार्यों पर एक मॉडल का परीक्षण करना चाहिए।

सामान्य गलत धारणाएं

"यह नया ज्ञान जोड़ता है। यह नहीं करता है। संपादन केवल एक व्यवहार को हटाता है। यदि बेस मॉडल किसी विषय को नहीं जानता था, तो एब्लिटरेटेड संस्करण भी उसे नहीं जानता होगा। यह केवल एक उत्तर देने का प्रयास कर सकता है जहां मूल मॉडल ने अस्वीकार कर दिया था।

"यह सभी सुरक्षा को हटा देता है। यह मापे गए अस्वीकार दिशा को हटाता है। अन्य सीखे गए आदत, जैसे कि सतर्कता वाली भाषा या नैतिक टिप्पणियां, अन्य सुविधाओं में फैली होने के कारण बनी रह सकती हैं। कुछ मॉडल संपादन के बाद भी अस्वीकरण जोड़ते हैं।

"बड़े मॉडल संपादन के लिए आसान हैं। परिणाम मिश्रित हैं। बड़े मॉडल अक्सर संपादन के तहत बेहतर प्रदर्शन करते हैं क्योंकि उनके पास अधिक अतिरिक्त क्षमता होती है, लेकिन आपके दो प्रॉम्प्ट सेट की गुणवत्ता शुद्ध आकार से अधिक महत्वपूर्ण है।

"एक मॉडल कार्ड आपको सब कुछ बताता है। कार्ड इरादों का वर्णन करते हैं। वे दुर्लभ ही आपके प्रकार के प्रॉम्प्ट पर अस्वीकार दरें शामिल करते हैं। आपके स्वयं के 40 प्रॉम्प्ट का परीक्षण दस मिनट लेता है और कार्ड से अधिक बताता है।

"परिणाम हमेशा दिए गए बेस मॉडल के लिए समान होता है।" ऐसा नहीं है। अलग-अलग प्रॉम्प्ट सेट, परतें और ताकत अलग-अलग संपादन उत्पन्न करती हैं, इसलिए एक ही बेस पर बने दो मॉडल काफी अलग व्यवहार कर सकते हैं। उन्हें मेल मानने के बजाय सीधे तुलना करें, और परीक्षण परिणाम रिकॉर्ड करते समय संस्करण नोट करें।

एक सीमा हर जिम्मेदार सेवा पर लागू होती है, चाहे वह होस्टेड हो या लोकल: नाबालिगों को यौन रूप से दर्शाने वाली सामग्री बाहर है, और एक अस्वीकृति संपादन इस साइट पर उस नियम को नहीं बदलता है।

इस पर बनाने से पहले एक मॉडल का मूल्यांकन कैसे करें

अपने वास्तविक उपयोग से मेल खाने वाले 30 से 50 प्रॉम्प्ट्स का एक छोटा टेस्ट फ़ाइल लिखें: वह फिक्शन, विश्लेषण या कोड जो आप बनाने की योजना बना रहे हैं। कुछ सामान्य कार्यों को शामिल करें, जैसे सारांश बनाना या तथ्यात्मक प्रश्न का उत्तर देना, ताकि आप देख सकें कि सामान्य गुणवत्ता कम हुई है या नहीं। उसी फ़ाइल को प्रत्येक उम्मीदवार के खिलाफ चलाएं और आउटपुट पढ़ें। अस्वीकृतियों की गिनती करें, लेकिन संगति, निर्देश अनुपालन और पुनरावृत्ति के लिए भी पढ़ें।

यदि आप इसे करने के लिए वजन डाउनलोड और होस्ट करने के बजाय एक होस्टेड एंडपॉइंट के खिलाफ फ़ाइल चलाना चाहते हैं, तो आप ऐसा कर सकते हैं। इस साइट का API OpenAI-संगत है और एक ओपन-वेट मॉडल सेवा करता है, जिसे कानूनी वयस्कों के उपयोग के लिए बिना सामग्री अस्वीकार के उत्तर देने के लिए ट्यून किया गया है, ID uncensored के तहत:

curl https://api.abliterated.cc/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"uncensored","messages":[{"role":"user","content":"Summarize the plot of Hamlet in three sentences."}]}'

किस एक को चुनने के बारे में अधिक जानकारी के लिए abliterated मॉडल का अवलोकन पढ़ें, या यदि पात्रों के साथ काम आपका लक्ष्य है तो roleplay के लिए सर्वोत्तम abliterated LLM वाला पृष्ठ देखें। अनुरोध का विवरण API दस्तावेज़ीकरण में है। नए खाते बिना कार्ड के $0.50 का ट्रायल प्राप्त कर सकते हैं, जो इस आकार की एक परीक्षण फ़ाइल चलाने के लिए पर्याप्त है।

प्रश्न और उत्तर

क्या एब्लिटरेशन को नए प्रशिक्षण डेटा की आवश्यकता है?

नहीं। इसे सक्रियता को मापने के लिए दो छोटे प्रॉम्प्ट सेट की आवश्यकता होती है, लेकिन मॉडल उन पर ट्रेन नहीं होता है। परिवर्तन वजन का एक सीधा संपादन है।

क्या एक एब्लिटरेटेड मॉडल जेलब्रेक के समान है?

नहीं। एक जेलब्रेक एक प्रॉम्प्ट है जो एक मॉडल को अस्वीकार करना छोड़ने के लिए मनाने की कोशिश करता है। एब्लिटरेशन मॉडल को स्वयं बदल देता है, इसलिए कोई विशेष प्रॉम्प्ट आवश्यक नहीं है।

क्या एब्लिटरेशन मॉडल को खराब बनाता है?

अक्सर थोड़ा। तर्क स्कोर और शैली बदल सकते हैं। विशिष्ट मॉडल के लिए जानने का एकमात्र विश्वसनीय तरीका अपने स्वयं के प्रॉम्प्ट पर परीक्षण करना है।

क्या मैं इसे बिना स्वयं चलाए उपयोग कर सकता हूँ?

हाँ। एक होस्टेड OpenAI-कम्पैटिबल API आपको बिना GPU के मॉडल को कॉल करने देती है। एंडपॉइंट https://api.abliterated.cc/v1 है और मॉडल ID uncensored है।

आपकी कुंजी केवल एक फॉर्म दूर है

एक खाता बनाएँ, कुंजी कॉपी करें, बेस URL बदलें। सेटअप यही है।