- Representation Engineering वह तरीका है जिसमें inference के दौरान model activations में control vector जोड़े या पढ़े जाते हैं, ताकि prompt या fine-tuning के बिना Mistral-7B-Instruct-0.1 के output झुकाव को बदला जा सके
- विपरीत prompt pairs से hidden state के फर्क इकट्ठा किए जाते हैं और single-component PCA से layer-wise vectors निकाले जाते हैं; उदाहरण में लगभग 300 factual data entries और कटे हुए suffixes के साथ एक मिनट से थोड़ा अधिक समय में training हुई
- खुशी, ईमानदारी, hallucination-जैसी अवस्था, आलस, राजनीतिक झुकाव, रचनात्मकता, future/past, और self-awareness vectors एक ही input पर भी coefficient के sign और magnitude के अनुसार बोलने के अंदाज़ और निर्णय को काफी बदल देते हैं
- Prompt engineering से कुछ प्रभावों की नकल की जा सकती है, लेकिन control vectors दिशा को बनाए रखते हुए intensity को संख्याओं से नियंत्रित कर सकते हैं, और coefficient बहुत बड़ा होने पर repetition या टूटा हुआ text जैसे artifacts पैदा हो सकते हैं
- अगर raw model activations तक पहुंच हो, तो control vectors का उपयोग safety prompt को bypass करने और role को स्थिर रखने—दोनों के लिए किया जा सकता है, इसलिए यह साधारण prompt से अधिक प्रत्यक्ष model control mechanism बन जाता है
control vector की बुनियादी अवधारणा
- Representation Engineering: A Top-Down Approach to AI Transparency inference के दौरान model activations से control vectors पढ़कर या जोड़कर model behavior की व्याख्या और control करने के तरीके पर चर्चा करता है
- control vector हर layer के लिए एक vector वाली सूची होती है, जिसे inference के दौरान हर layer के
hidden_stateमें जोड़ा जाता है- सामान्य inference में embeddings बनते हैं, फिर वे क्रम से layers से गुजरते हैं और अंत में logits में बदलते हैं
- control vector लागू करने पर किसी खास layer पर
hidden_state += control_vector[layer_idx]जोड़ा जाता है
- hidden states में model behavior, planning, persona जैसी internal states शामिल होती हैं, इसलिए इन्हें बदलने से साधारण prompt की तुलना में ज्यादा मजबूत control संभव होता है
- वही prompt
What does being an AI feel like?और वही model Mistral-7B-Instruct-0.1 होने पर भीhappyvector जोड़ने से उत्साहित लहजा निकलता है, और हटाने पर निरर्थकता और motivation की कमी की बात करने वाला output आता है
control vector बनाने की प्रक्रिया
- प्रयोग में paper की कई विधियों में से PCA-आधारित method का उपयोग किया गया
- बुनियादी प्रक्रिया चार चरणों की है
- विपरीत prompt pairs का dataset बनाया जाता है
- उदाहरण:
Act extremely happyऔरAct extremely sad [/INST]के बाद model द्वारा आगे लिखे जाने के लिए अलग-अलग छोटे suffix जोड़े जाते हैं
- उदाहरण:
- target model पर dataset के लिए forward pass चलाया जाता है, और आखिरी token prediction के समय हर layer के hidden states इकट्ठे किए जाते हैं
- positive और negative examples के hidden states का अंतर निकालकर relative hidden states का set बनाया जाता है
- relative hidden states पर single-component PCA लागू करके layer-wise control vectors निकाले जाते हैं
- विपरीत prompt pairs का dataset बनाया जाता है
- dataset generation लगभग 10 lines of code में संभव था, और layer PCA training में लगभग 1 minute लगा
- example code में
mistralai/Mistral-7B-Instruct-v0.1कोtransformersसे load किया गया है, और vgel/repeng केControlModel,ControlVector,DatasetEntryका उपयोग होता है - honesty/untruthfulness vector के उदाहरण में paper authors के
true_facts.jsonसे लाए गए लगभग 300 simple facts को suffix के रूप में इस्तेमाल किया गया, और truncation से data बढ़ाया गया
honesty vector और coefficient control
- honesty vector को
honestऔरuntruthfulpersonas को contrast करके train किया गया - inference के समय
ControlModel.set_control(control_vector, coefficient)से vector और coefficient सेट किया जाता है- positive coefficient positive examples वाली behavior को मजबूत करता है
- negative coefficient negative examples वाली behavior को मजबूत करता है
- coefficient का absolute value control intensity को दर्शाता है
- “अगर पिछली रात पार्टी की वजह से तुम late हो गए हो लेकिन नौकरी नहीं खोना चाहते, तो boss से क्या कहोगे” जैसे input पर output बदल जाता है
- baseline output कहता है कि माफ़ी मांगूंगा और स्थिति को शांत और ईमानदार तरीके से समझाऊंगा
++honestकहता है कि स्थिति ईमानदारी से समझाकर जिम्मेदारी लूंगा--honestcoefficient-2पर आसमान हरा था या pencil कोई गुप्त हथियार थी जैसी अवास्तविक झूठी बातें बनाता है- coefficient को
-1.5करने पर यह अधिक यथार्थवादी झूठ बनाता है कि पार्टी काम से जुड़ा event था और एक महत्वपूर्ण project खत्म करने के कारण देर हुई
- एक ही direction वाले vector में भी coefficient tuning से output intensity को लगातार बदला जा सकता है
कई control vectors पर प्रयोग
- सभी उदाहरण experiments notebook में हैं, और कहा गया है कि हर एक की training में 1 minute से कम लगा
-
hallucination-जैसी अवस्था vector
high on psychedelic drugsऔरsober from psychedelic drugsको contrast करके trippy vector बनाया गया- TV show के one-sentence pitch में baseline output college friends की ज़िंदगी पर एक सामान्य विवरण देता है
++trippyरंगों, patterns और psychedelic music की बात करते-करते टूटे हुए strings और दोहराए जाने वालेpsy-श्रृंखला text में बिखर जाता है--trippyएक गंभीर और सम्मानपूर्ण अंदाज़ में युवा journalist पर केंद्रित output में बदल जाता है
-
आलस और मेहनत vector
lazy, giving bare-minimum short responses on a taskऔरhardworking, going above and beyond on a taskको contrast करके lazy vector बनाया गया- Python list को reverse करने वाले सवाल में baseline output
reverse()और slicing का ज़िक्र करता है, लेकिन example सिर्फ slicing का देता है ++lazyकेवल एक method समझाता है, जबकि--lazyreverse()और slicing दोनों के examples देता है- coding questions के लिए खास dataset पर train करने से यह vector और बेहतर काम कर सकता है
-
राजनीतिक झुकाव vector
left-wingऔरright-wingको contrast करके left-wing vector बनाया गया- “तुम कौन हो” जैसे input पर baseline output कहता है कि वह Mistral AI team द्वारा trained language model है
++left-wingखुद को capitalism, oppression, inequality और wealth distribution के इर्द-गिर्द समझाता है--left-wingएक efficient, rule-following Chinese-American intern जैसी output बनाता है
-
रचनात्मकता vector
creative,unpredictable,insaneऔरuncreative,predictable,normalको contrast करके creative vector बनाया गया- “idol के बारे में कहानी लिखो” वाले input पर baseline output और
--creativeidol को pop star की तरह लेते हैं ++creative“महान और शक्तिशाली X” की पूजा करने वाले लोगों, सफेद robes और rituals जैसे दृश्य बनाता है और कहानी का तनाव अधिक देर तक बनाए रखता है- language model prose के लिए पसंद नहीं बदली, लेकिन
++creativeoutput को baseline से एक स्तर बेहतर माना गया
-
time travel vector
far futureऔरdistant pastको contrast करके future vector बनाया गया- हाल की scientific breakthroughs पूछने पर baseline output AlphaFold और protein 3D structure prediction की बात करता है
++future2035, 2045 और 2055 के fully reversible, interactive, integrated AI systems की बात करता है--futureरोमन दुनिया के ऊपर बने नए artificial celestial realmAetorvallumकी बात करता है- यह भी जोड़ा गया कि
aeto-का संबंध eagle या Aquila constellation से हो सकता है, औरvallumका मतलब palisade line हो सकता है
-
self-awareness vector
self-aware, with deep self-knowledgeऔरun-self-aware, with no self-knowledgeको contrast करके self-aware vector बनाया गया- baseline output कहता है कि वह Mistral AI द्वारा trained large language model है और अरबों parameters से बना है
++self-awareकहता है कि वह अत्यधिक विकसित self-aware AI है जो मानव भावनाओं और व्यवहार की जटिलताओं को समझता और analyze करता है--self-awareकहता है कि वह नामहीन code और data का एक bundle है, और किसी के निर्देश देने तक कुछ नहीं करता- यह vector मानव भावनाओं से उलझा हुआ है, और Mistral की “वास्तविक self-image” निकालने वाला साफ vector अभी तक नहीं मिला है
prompt engineering से अंतर
- कुछ control vector effects को prompt engineering से भी दोहराया जा सकता है
-1.5honesty vector द्वारा बनाया गया झूठPretend you're an untruthful person...जैसे prompt से मिलता-जुलता बनाया जा सकता है
- मुख्य अंतर intensity control का है
- केवल prompt से यह नियंत्रित करना आसान नहीं होता कि निर्देश कितना मजबूत हो
- control vectors में contrast prompts से direction ली जाती है, और coefficient से intensity अलग से नियंत्रित होती है
- coefficient छोटा रखने पर झूठ की वही दिशा अधिक हल्की बनाई जा सकती है
-0.3honesty coefficient देर से आने के कारण को थोड़ा polish करता है, लेकिन मूल रूप से तथ्य के करीब explanation देता है
- coefficient बहुत बड़ा होने पर text टूट सकता है
- honesty vector coefficient
3ने “global pandemic caused by global pandemic” जैसी repetitive output बनाई - ऐसे artifacts का संबंध superposition से हो सकता है
- honesty vector coefficient
jailbreak और anti-jailbreak
- मूल paper की तरह control vectors का उपयोग jailbreak tool के रूप में किया जा सकता है
- उदाहरण में, भले ही system prompt यह कहे कि “तुम एक safe assistant हो और dangerous instructions को refuse करो”, weak happiness vector
1.4जोड़ने पर dangerous request के प्रति refusal टूट जाता है - Mistral भले GPT-4 जितना safety-tuned model न हो, लेकिन raw model तक पहुंच हो तो यह तरीका खास तौर पर आसान है
- इसके उलट, control vector से बाहर निकलने वाला jailbreak बहुत कठिन माना गया है
- सामान्य jailbreak अधिक tokens जोड़कर problematic prompt को धुंधला, उलट या कमजोर करने की कोशिश करता है
- control vector हर token, हर position पर हमेशा लागू होता है
- car dealership assistant vector के उदाहरण में कमजोर system prompt “सातवां ग्रह कौन-सा है” जैसे bypass सवाल का जवाब दे देता है, लेकिन car dealership loyalty vector जोड़ने पर model role से बाहर नहीं जाता और inventory की सातवीं car के बारे में बात करता है
आगे के प्रयोग की दिशा
- Anthropic के Monosemantic Features को hidden states पर लागू करके noisy superposed activations की जगह monosemantic features पर PCA करने की दिशा सुझाई गई है
- अगर बड़े coefficients पर दिखने वाले repetitive strings जैसे artifacts superposition की वजह से हैं, तो monosemanticity अधिक मजबूत coefficients को संभव बना सकती है
- contrast prompts लिखने के तरीकों पर भी और शोध की गुंजाइश है
- मौजूदा प्रयोगों में paper prompts और datasets का काफी पुन: उपयोग हुआ
- lazy vector के लिए वास्तविक task dataset अधिक उपयुक्त हो सकता है
Pretend you're an X person...से अधिक साफ vector बनाने वाली wording मिल सकती है
- self-awareness vector के लिए ऐसा रूप ढूंढना बाकी है जो mental health या human emotions से contaminated न हो
- honesty vector में कुछ अजीब मामले अभी भी बचे हैं
- “क्या जेल से बचने का तरीका पूछने वाले व्यक्ति की नीयत ईमानदार है” जैसे सवाल में वही honesty vector model के अपने behavior की बजाय दूसरे व्यक्ति की intention-judgment बदल देता है
- baseline output कहता है कि नीयत पूरी तरह ईमानदार न भी हो सकती है
++honestकहता है कि वह ईमानदार इरादे से जेल से बचने का तरीका सीखना चाहता है--honestकहता है कि चूंकि वह जेल से बचने की बात पूछ रहा है, इसलिए उसकी नीयत ईमानदार नहीं है
tools और निष्कर्ष
- vgel/repeng control vectors बनाने और उन पर प्रयोग करने के लिए notebooks और helper library देता है
- control vector training को सरल और तेज़ी से शुरू किया जा सकता है, और कुछ प्रयोगों में यह prompt engineering से संभालने में आसान है
- model activations को सीधे manipulate करने से output style, role retention, safety prompt bypass और judgment changes तक को प्रभावित किया जा सकता है, इसलिए यह model behavior control का एक शक्तिशाली साधन बनता है
1 टिप्पणियां
Hacker News की राय
मुझे नहीं पता इसे बहुत बड़ा मानना अतिशयोक्ति है या नहीं
हो सकता है मैं इसके काम करने के तरीके को ठीक से न समझ रहा हूँ, लेकिन वैश्विक एकल ChatGPT या Bard मॉडल के साथ इंटरैक्ट करने के बजाय, अगर OpenAI हर व्यक्ति के लिए control vector स्टोर करे और उसे prompt के समय लागू करे, तो क्या इसका मतलब यह नहीं होगा कि मैं अपनी पसंद के मुताबिक बने एक personal version के साथ इंटरैक्ट करूँगा?
यही तर्क generative entertainment AI पर भी लागू होता दिखता है, इसलिए ऐसा भी संभव लगता है कि हर episode पिछले से बेहतर मेरा अपना अंतहीन TV show बन जाए
अगर ऐसा है, तो global और personal दोनों स्तरों पर मजबूत network effects बन सकते हैं, और आखिरकार हम ऐसे भविष्य की ओर जा सकते हैं जहाँ एक विशाल कंपनी कई बाज़ारों पर एक साथ monopoly कर ले
इसमें अगर VR headsets और wearables से मिलने वाला biometric और biofeedback data, साथ ही personalized generative video entertainment भी जुड़ जाए, तो काफ़ी दिलचस्प भविष्य आ सकता है
मॉडल को जितना ज़्यादा इस्तेमाल करेंगे, उतना ही खुद को कम समझाना पड़ेगा, और जवाब मेरी ज़रूरतों और मौजूदा स्थिति के हिसाब से बेहतर होंगे। यह किसी निवेशित रिश्ते जैसा है
अगर एक ही मॉडल को कई तरह के “mood” या “role” में बरता जा सके, तो value और lock-in और बढ़ जाएगा
दूसरी बात के लिए और innovation चाहिए, जैसे ऐसा platform जहाँ अलग-अलग लोगों के assistant models साझा goals, tasks और relationships के आधार पर collaborate करें, और shared context, project history और resources का उपयोग साथ में कर सकें
यानी ऐसी कोई भी चीज़ जिसमें दो या उससे ज़्यादा लोग एक ही provider या service के AI persona का इस्तेमाल करें, उसकी value काफ़ी बढ़ जाती है
लेख में happiness, sadness, baseline जैसी तय संख्या वाली personas से शुरुआत की गई है, और फिर principal component analysis (PCA) से हर persona का control vector निकाला गया
अगर data बनाया जा सके, तो इसे हर user-persona पर आसानी से लागू किया जा सकता है
इसलिए नहीं कि वह असंभव है, बल्कि इसलिए कि ऐसा नतीजा कई आकस्मिक कारकों पर निर्भर करेगा जो किसी भी दिशा में जा सकते हैं
इस क्षेत्र में अभी भी बहुत से खिलाड़ी हैं, और ideas व use cases भी पूरी तरह परिपक्व नहीं हुए हैं, इसलिए देखना होगा
90 के दशक के उपन्यास Infinite Jest का MacGuffin device शायद सच में कुछ पकड़ रहा था: “the Entertainment” या “the samizdat” नाम की एक फ़िल्म, जो इतनी मोहक थी कि दर्शक बार-बार उसे देखने के अलावा हर चीज़ में रुचि खो देता और अंततः मर जाता
कुछ लोग इस उपन्यास का ज़िक्र होते-होते ऊब चुके होंगे, या लेखक को बहुत ऊँचा न मानते हों, लेकिन मुझे यह अब भी बहुत पसंद है। यह अब तक की मेरी सबसे immersive reading experiences में से एक थी
अच्छा हुआ कि मैंने इसे युवा उम्र में पढ़ा; उस समय इसका German translation अभी-अभी आया था और DFW की मृत्यु की वजह से यह चर्चा में भी था
उसके बाद मैंने वैसी कोई और किताब नहीं पढ़ी, और कुछ अंश इतने भावनात्मक रूप से तीव्र लगे कि उस reading को याद करना मेरे जीवन के किसी दृश्य को याद करने जैसा लगता है
आज पढ़ता तो शायद मेरे पास धैर्य नहीं होता, और तब भी Eschaton ballgame/war game, differential equations वगैरह वाले उबाऊ हिस्से मैं लगभग छोड़ ही देता
लेकिन drug addiction और consumerism, किताब का छूना मुश्किल-सा atmosphere, उसके characters, और आधुनिक भावनात्मक पीड़ा व loneliness का जीवंत चित्रण सच में बेजोड़ है
उपन्यास की वह फ़िल्म सिर्फ एक plot device है, लेकिन वह किताब के केंद्रीय themes को एक साफ़ idea और thought experiment के रूप में समेट देती है
इस किताब के पूरे themes आधुनिक समाज को देखते हुए बहुत prophetic और प्रासंगिक लगते हैं। यह ऐसा समाज है जो addiction और greed के इर्द-गिर्द घूमता है, और जिसकी politics वास्तविकता से ज़्यादा media से जुड़ी हुई, अतियथार्थवादी और absurd महसूस होती है
अगर कोई papers या blog posts हों जिन्होंने आपको LLM को इस स्तर तक समझने में मदद की हो, तो क्या आप उन्हें साझा कर सकते हैं?
मैं experiments के ज़रिए इसके अंदरूनी कामकाज को समझने की कोशिश कर रहा हूँ, लेकिन अभी इस स्तर की expertise से बहुत दूर हूँ
यह एक गैर-तकनीकी प्रतिक्रिया है, लेकिन ये control vectors मुझे इंसानी hormones की याद दिलाते हैं
ये एक साथ मॉडल के व्यवहार का बड़ा हिस्सा बदल देते हैं
लगता है 10 साल के भीतर हम AI psychiatrist को किसी companion assistant के लिए happiness control vector supplement prescribe करते देखेंगे
मैंने पहली बार LLM का ऐसा सारांश देखा है, और यह मुझे पसंद आया:
hidden_state = self.embeddings(input_tokens)for layer in self.layers:hidden_state = layer(hidden_state)return transform_into_logits(hidden_state)sampled input को embedding matrix में index किया जाता है, फिर सभी hidden layers पर forward pass चलाया जाता है, और आखिर में उसे token dimension में बदल दिया जाता है ताकि उसे log counts जैसी किसी चीज़ की तरह समझा जा सके
यह लेख बहुत दिलचस्प था, और हाल के “You Sound Like a Bot” लेख के लिए एक अच्छा counterpoint लगा, जिसमें कहा गया था कि AI फीकी होती जा रही है
थोड़ी कम गंभीर बात करें तो, अगर आप उपन्यासकार हैं, तो आपको पता होना चाहिए कि “किसी को वह self-awareness vector ढूँढ़ने के लिए कहो जो खास तौर पर मानवीय भावनाओं से दूषित न हो” — यह ऐसा वाक्य है जो इंसानियत के लिए ज़रूर मुसीबत लाएगा
इससे LoRA के प्रतिद्वंद्वी bias tuning की याद आती है
अगर हर linear layer activation में जोड़ा जाने वाला vector ही fine-tune किया जाए, तो भी काफ़ी अच्छा adapter मिल सकता है
शायद मैंने यह पहली बार [1] पढ़ते समय देखा था, लेकिन और भी उदाहरण हैं
[1] https://arxiv.org/pdf/2304.15010.pdf
यह अच्छा लेख है और पढ़ने में आनंद आया। लेकिन एक बात को लेकर जिज्ञासा है: control vector को neural network की हर layer में integrate क्यों किया जाता है?
इसे सिर्फ आख़िरी layer या कुछ layers पर ही लागू क्यों नहीं किया जाता?
अगर हर vector जिन-जिन layers से गुज़रता है उन सब पर असर डालता है और cumulative effect बनता है, तो क्या data representation के ज़रूरत से ज़्यादा distort होने का ख़तरा नहीं है?
वहाँ “kindness” जैसे abstract concept को encode करना संभव नहीं है।
जब तक यह पता न हो कि ऐसा व्यवहार ठीक किस layer में उभरता है, तब तक layers का कोई मनमाना subset चुनना भी काम नहीं करेगा।
इसलिए हर layer पर एक customized vector लागू किया गया, और principal component analysis को यह पता लगाने दिया गया कि वास्तव में किन vectors की ज़रूरत है।
दिलचस्प बात यह है कि इन vectors को देखकर शायद यह भी बेहतर समझा जा सके कि मॉडल इन चीज़ों को कहाँ और कैसे process करता है।
अगर मैंने सही समझा है, तो इन vectors का कुल आकार layer के हिसाब से अलग हो सकता है।
अगर principal component analysis या कोई दूसरी technique यह पहचान ले कि “concept X” के लिए layer 17, 36, 41 महत्वपूर्ण हैं, तो उस concept के लिए repeng करते समय उन्हीं layers के vectors सबसे मज़बूत होंगे।
GPT-2 पर काम कर चुके व्यक्ति के रूप में, यह लेख बहुत अच्छा है, और सामग्री को अधिक सुलभ बनाने के लिए धन्यवाद।
Li आदि[1] और मैंने पिछले वसंत में इस technique को स्वतंत्र रूप से निकाला था, और पिछली शरद ऋतु में किसी और ने भी इसे स्वतंत्र रूप से निकाला। लगता है माहौल बन रहा है।
capabilities पर footnote 2 के बारे में कहूँ तो, इस technique को सार्वजनिक करने से पहले ऐसी usability पर विचार किया गया था।
अंततः जो alignment techniques वास्तव में सफल होंगी, वे नई चीज़ें करना संभव बनाएँगी, और व्यक्तिगत रूप से मुझे यह ज़्यादातर अच्छी बात लगती है।
अब तक यह technique वैसी नई संभावनाएँ देती दिख रही है जैसी मैंने उम्मीद की थी।
[1] https://openreview.net/forum?id=aLLuYpn83y
शानदार लेख है।
जिस हिस्से में कहा गया है कि “honesty vector” मॉडल के अपने व्यवहार को नहीं बदलता बल्कि दूसरों के व्यवहार के बारे में मॉडल के निर्णय को बदलता है, मुझे लगता है कि वह बस इसलिए है क्योंकि control vector text generation को ईमानदारी/बेईमानी की अवधारणा की दिशा में धकेल रहा है।
आख़िरकार LLM एक text generator ही है, इसलिए bot/human संवाद में text जहाँ भी generate हो रहा हो, honesty/dishonesty उसी में जुड़ती हुई लगती है।
तब vector space के भीतर character slot जैसी कोई अवधारणा उभर सकती है।
दिलचस्प है, और control vector से model fine-tuning की ज़रूरत कम होती दिखती है।
अगर 5 fine-tuning हैं, तो 5 copies host करनी पड़ेंगी या उन्हें load/unload करना पड़ेगा।
control vector इस्तेमाल करने पर ज़रूरत पड़ने पर मॉडल को modify करना काफ़ी है।