- DwarfStar 4 ने llama.cpp को DeepSeek-V4-Flash के लिए खास तौर पर छोटा किया है, जिससे लोकल मॉडल पर LLM steering का प्रयोग करना आसान हो जाता है
- steering में “संक्षेप में जवाब देना” जैसे concept के activation अंतर को vector के रूप में निकाला जाता है, फिर inference के दौरान उसी layer में जोड़कर व्यवहार बदला जाता है
- steering के लिए weights या activations तक पहुंच चाहिए, इसलिए लोकल रन इसकी शर्त है; API उपयोगकर्ताओं के लिए यह क्षेत्र OpenAI जैसे providers तक सीमित है
- कई बुनियादी समायोजन के लिए prompt ज्यादा सरल है, लेकिन refusal हटाने जैसे सीखे हुए व्यवहारों को बदलने की संभावना अभी भी बनी हुई है, जिन्हें prompt से कहना कठिन है
- DeepSeek-V4-Flash और DwarfStar 4 के साथ open source प्रयोग बढ़ सकते हैं, और वास्तविक उपयोग अगले 6 महीनों में सामने आ सकते हैं
DeepSeek-V4-Flash और DwarfStar 4
- DwarfStar 4 एक ऐसा प्रोजेक्ट है जिसने llama.cpp को सिर्फ DeepSeek-V4-Flash चलाने के लिए छोटा किया है, और लोकल मॉडल पर LLM steering का प्रयोग आसान बनाया है
- DeepSeek-V4-Flash संभवतः इतना अच्छा लोकल मॉडल है कि frontier models की low-level agentic coding क्षमता से टक्कर ले सके
- steering के लिए मॉडल के weights या activations तक पहुंच जरूरी है, इसलिए लोकल रन आवश्यक है; DeepSeek-V4-Flash जैसे मॉडल आने से ज्यादा engineers के लिए सीधे प्रयोग करना संभव हो गया है
- antirez ने DwarfStar 4 में steering को first-class feature के रूप में जोड़ा है, लेकिन अभी के उदाहरण prompt से भी दोहराए जा सकने वाले खिलौना-स्तर के “verbosity” समायोजन के करीब हैं
- DwarfStar 4 की शुरुआती रिलीज़ 8 दिन पहले आई थी, और अब ध्यान इस पर है कि steering फीचर आगे कैसे विकसित होता है
steering कैसे काम करता है
- steering का मूल विचार यह है कि “संक्षेप में जवाब देना” जैसे concept को मॉडल की आंतरिक स्थिति से निकाला जाए, फिर inference के दौरान उस concept को बनाने वाले संख्यात्मक activations को बढ़ाया जाए
-
सरल steering vector extraction
- 100 prompts के एक ही सेट को मॉडल में दो बार डाला जा सकता है: एक बार सामान्य prompt के साथ, और दूसरी बार “respond tersely” जोड़कर
- हर prompt जोड़ी में मॉडल के activation अंतर को मापा जाता है, और एक activation matrix से दूसरी activation matrix घटाने पर steering vector मिलता है
- किसी भी prompt पर उसी activation layer में यह vector जोड़ने से मॉडल के अधिक संक्षेप में जवाब देने का प्रभाव मिल सकता है
- मापे जा सकने वाले activations कई जगह हो सकते हैं, जैसे attention के बाद या हर layer के बीच; इनमें से एक चुना जा सकता है या कई जगह आज़माकर सबसे अच्छा बिंदु खोजा जा सकता है
-
अधिक परिष्कृत feature extraction
- एक अलग मॉडल को train करके मूल मॉडल के activations से साथ-साथ दिखने वाले व्यवहार पैटर्न यानी feature निकाले जा सकते हैं
- निकाले गए features को अलग-अलग concepts से दोबारा map करके, उसी तरह activations बढ़ाने का तरीका अपनाया जा सकता है
- Anthropic के sparse autoencoders इसी सिद्धांत के करीब एक तरीके के रूप में पेश किए गए थे
- यह तरीका साधारण difference vector से ज्यादा गहरे पैटर्न पकड़ सकता है, लेकिन इसमें समय, compute और expertise की लागत बहुत ज्यादा है
- open LLaMA models पर इस तरीके का एक गहन विश्लेषण मौजूद है, और इसे खुद आज़माने पर परिणाम मिश्रित रहे
steering दिलचस्प क्यों है
- steering ऐसा लगता है मानो कठिन मेहनत से training set बनाकर मॉडल को “स्मार्ट” distribution की ओर धकेलने के बजाय, मॉडल के भीतर मौजूद “smart” dial खोजकर उसे पूरी तरह दाईं ओर घुमा दिया जाए
- शैली नियंत्रण में भी, prompt में “you MUST” जैसे modifiers जोड़ने-घटाने के बजाय, संक्षिप्तता/विस्तार या ईमानदारी/गति जैसे sliders सीधे चलाने वाला एक control panel कल्पना किया जा सकता है
- Golden Gate Claude हर वाक्य को Golden Gate Bridge की ओर मोड़ देता है, और यह steering से मॉडल व्यवहार कितना ताकतवर ढंग से बदला जा सकता है, इसका दिलचस्प और असहज उदाहरण है
steering का व्यापक उपयोग क्यों नहीं हुआ
- AI research में steering कुछ हद तक “मिडिल क्लास” आइडिया की तरह है, जो बड़े AI labs और आम उपयोगकर्ताओं—दोनों के लिए ही थोड़ा असुविधाजनक रूप से फिट बैठता है
-
बड़े labs के लिए इसकी जरूरत कम है
- बड़े AI labs inference के दौरान अजीब तरह की “brain surgery” किए बिना भी मॉडल को सीधे बदल सकते हैं
- Anthropic इस क्षेत्र पर काम करता है, लेकिन मुख्य रूप से interpretability और safety के नज़रिए से
- बड़े labs जब कोई खास व्यवहार चाहते हैं, तो वे आमतौर पर steering की जगह मॉडल को train करना चुनते हैं
-
आम उपयोगकर्ताओं के पास पहुंच नहीं है
- API के जरिए LLM इस्तेमाल करने वाले सामान्य उपयोगकर्ता मॉडल weights या activations तक पहुंच नहीं रखते, इसलिए steering के लिए जरूरी जानकारी पाना मुश्किल है
- उदाहरण के लिए GPT-5.5 का steering vector पहचानना या उजागर करना सिर्फ OpenAI ही कर सकता है
- open-weight models में यह संभव है, लेकिन हाल तक इतना मजबूत open model नहीं था कि steering को गंभीरता से आज़माया जाए
-
कई बुनियादी उपयोगों में prompt ज्यादा प्रभावी है
- मॉडल के “brain” को सीधे बदलने की बात प्रभावशाली लगती है, लेकिन prompt tokens भी मॉडल की आंतरिक स्थिति को सीधे बदलते हैं
- steering से activations को काफी सूक्ष्मता से नियंत्रित किया जा सकता है, पर सिर्फ prompt wording बदलकर भी बहुत सूक्ष्म नियंत्रण हासिल किया जा सकता है
- मॉडल को ज्यादा verbose बनाने के लिए steering इस्तेमाल करने से कहीं आसान है कि उसे बस वैसा कह दिया जाए
क्या prompt से कठिन चीज़ों को steer किया जा सकता है?
- steering वास्तव में तब उपयोगी हो सकती है जब वह ऐसे concepts को खोजकर उन पर काम करे जिन्हें prompt में मांगा नहीं जा सकता
- “intelligence” एक उम्मीदवार लगता है, लेकिन मौजूदा पीढ़ी के models में यह स्वभाव पहले से इतना समाहित है कि 4o दौर की “you are an expert” जैसी prompting अब शायद meaningful असर नहीं डालती
- “intelligence” steering vector का अस्तित्व एक अनुभवजन्य सवाल है, लेकिन ऐसे vector के होने को लेकर संदेह है
- “intelligence” जैसे कठिन concept का steering vector मॉडल के पूरे weight सेट जितनी व्यापक सीमा में फैला हो सकता है; ऐसे में vector खोजने की समस्या अंततः एक स्मार्ट मॉडल train करने की समस्या बन जाती है
- अगर GPT-2 की हर layer activation को उसी architecture के कहीं अधिक मजबूत model की activations से बदल दिया जाए तो नतीजे बेहतर हो सकते हैं, लेकिन तब यह GPT-2 को ज्यादा स्मार्ट बनाना नहीं, बल्कि व्यवहार में एक ज्यादा शक्तिशाली मॉडल से बात करना होगा
- पर्याप्त रूप से उन्नत steering अंततः असली मॉडल की जगह लेने लगती है, और intelligence मूल मॉडल में नहीं बल्कि steering में चली जाती है
data compression के रूप में steering
- steering की एक और संभावना यह है कि बहुत सारे tokens मांगने वाले concepts को एक ही steering vector में समेटकर context window बचाई जाए
- इसे इस तरह देखा जा सकता है जैसे concept को मॉडल की working memory से implicit memory में ले जाया जा रहा हो
- उदाहरण के लिए, अगर GPT-5.5 किसी खास codebase को तेज़ी से पढ़ते समय जो कुछ ज्ञान हासिल करता है उसका हिस्सा activations में छिपा रहता हो, तो सोचा जा सकता है कि क्या उसे बहुत बड़े steering vector के रूप में निकाला जा सकता है
- “मेरे codebase को जानने की अवस्था” भी “intelligence” की तरह काफी जटिल concept है, इसलिए संभव है कि इसके लिए full fine-tuning की जरूरत पड़े
- उद्योग में “codebase पर model fine-tune” करने के नतीजे भी कुल मिलाकर बहुत सफल नहीं रहे हैं
- फिर भी इस तरह की steering की संभावना को पूरी तरह खारिज नहीं किया जा सकता
आगे की दिशा और community experiments
- steering में आकर्षण है, लेकिन इस बात को लेकर संदेह भी है कि इसके ज्यादातर लाभ prompt से ज्यादा कुशलता से दोहराए जा सकते हैं, और अधिक महत्वाकांक्षी लक्ष्य training या fine-tuning से ज्यादा प्रभावी ढंग से हासिल किए जा सकते हैं
- open source community ने अभी तक steering पर बहुत काम नहीं किया है, लेकिन DeepSeek-V4-Flash और DwarfStar 4 जैसी प्रगति से यह स्थिति बदलनी शुरू हो सकती है
- अगर steering के व्यावहारिक उपयोग हैं, तो उनके अगले 6 महीनों में सामने आने की संभावना है
- यह भी देखने लायक होगा कि DwarfStar 4 जैसे model-specific tools क्या boost किए जा सकने वाले features की library शामिल करने लगते हैं
- जैसे किसी लोकप्रिय open-weight model के आते ही community wrappers और quantized versions जल्दी जारी कर देती है, वैसे ही मॉडल से boost किए जा सकने वाले features निकालने की कोशिशें भी उभर सकती हैं
अतिरिक्त चर्चा: refusal हटाना और runtime steering
- बाद में Hacker News टिप्पणियों में कई commenters और antirez ने माना कि steering ऐसे सीखे हुए व्यवहार बदल सकती है जिन्हें prompt से बदलना कठिन होता है
- इसका सबसे प्रतिनिधि उदाहरण मॉडल का refusal हटाना है
- एक commenter के अनुसार open models में censoring हटाना या abliteration पहले से इसी तरह किया जा रहा है
- antirez के मुताबिक weights बदलने से मॉडल की क्षमता को ज्यादा नुकसान हो सकता है, जबकि हल्की runtime steering सिर्फ जरूरत के समय लागू की जा सकती है
1 टिप्पणियां
Hacker News की राय
इसे पोस्ट करने के लिए धन्यवाद, और एक बात साफ कर दूँ: DwarfStar steering feature के साथ DS4 की refusal को पूरी तरह हटाया जा सकता था
खिलौना-जैसा हिस्सा सिर्फ example dataset था, यानी वे prompt pairs जो मैंने दिए थे, feature खुद नहीं
मेरा मानना था कि जो लोग ठीक-ठाक dataset बना सकते हैं और अच्छी तरह documented steering feature का इस्तेमाल समझते हैं, वे steering तक पहुँच सकते हैं
जो लोग बिना समझे सिर्फ copy-paste करेंगे, उनके लिए refusal-रहित model तक पहुँच अच्छी बात है या नहीं, इस पर मैं आश्वस्त नहीं था, इसलिए steering files सार्वजनिक नहीं कीं, लेकिन अब भी इस पर काफ़ी उलझन है
हाल में support बढ़ा है, इसलिए steering vector को हमेशा, सिर्फ सोचने के बाद, या सिर्फ tool calls के बाहर जैसे अलग-अलग timing activations पर लागू किया जा सकता है
एक अहम बात जो बहुत से लोग नहीं जानते, यह है कि inference engine के भीतर vector-direction steering करना, उसी तरह modify किए गए GGUF के इस्तेमाल से कहीं बेहतर है
steering जितनी ज़्यादा करते हैं, model की क्षमता उतनी क्षतिग्रस्त होती है, इसलिए runtime पर इसे लागू करने से मनचाहे लक्ष्य के लिए न्यूनतम steering ही लगानी पड़ती है, और सिर्फ चुने हुए क्षणों पर भी लागू किया जा सकता है
अभी इसे implement नहीं किया है, लेकिन ऐसा भी संभव लगता है कि refusal direction की energy किसी threshold से ऊपर जाने पर ही steering लागू की जाए, इसलिए प्रयोग की काफी गुंजाइश है
क्या यह मुख्य रूप से software security evaluation वाले use cases की बात है?
हैरानी की बात है कि इस लेख में steering vectors के सबसे बड़े उपयोग, यानी model refusal को हटाने की संभावना (abliteration या uncensoring), का ज़िक्र नहीं है
पहले एक paper था जिसमें कहा गया था कि “ज़्यादातर refusals एक single vector पर होते हैं”, और उस vector को ढूँढकर कमज़ोर करने से model refusal छोड़कर “किसी भी” request का सामान्य रूप से जवाब देने लगता था
refusal को supervised fine-tuning (SFT) से सीखने वाले शुरुआती models में यह काफ़ी संभव था, और नए models में यह थोड़ा ज़्यादा जटिल लगता है, लेकिन कुछ हद तक अब भी संभव है
पहले से ऐसी libraries मौजूद हैं जो इस process को automate करके refusal कम करती हैं, लेकिन वे आम तौर पर model की पहचान और modification के बाद उसे uncensored model के रूप में distribute करने पर केंद्रित रहती हैं
steering approach इस vector change को dynamically on कर सकती है, इसलिए अगर abliteration process असंबंधित tasks की accuracy को नुकसान पहुँचाए भी, तब भी model को खुद बदलने की ज़रूरत नहीं पड़ती
single-neuron approach KLD के लिहाज़ से काफ़ी खराब दिखती है, इसलिए शायद नई techniques ने जगह बना ली है
नज़रिये को उलटकर देखें तो “vaccines हानिकारक हैं” जैसी झूठी बात न कहना भी censorship में गिना जा सकता है
science और logic अक्सर ऐसे विषयों को censorship की तरह लेते हैं, लेकिन इंटरनेट से समान रूप से sample किया गया model यह मान सकता है कि vaccines हानिकारक हैं
कम भोला calibration ऐसे problematic contexts को censor करेगा
इसलिए यह बात उलझाती है कि किसी bias को censored मानकर उसे हटाने से general usability बेहतर हो जाएगी, ऐसा क्यों सोचा जाता है
DS4 repository में मुझे सबसे दिलचस्प बात यह लगती है कि वह वे control knobs तलाश रही है जिन्हें frontier labs उपयोगकर्ताओं से छिपाकर रखती हैं, और यह सोच रही है कि वे असली development और interaction flows में कैसे फिट हो सकते हैं
अलग-अलग interaction methods को explore करना, और जैसे steering को user interface में उपयोगी तरीके से पिरोने के बारे में सोचना, वाकई शानदार है
जैसे ही राज़ खुल जाएगा और उपयोगकर्ता समझ जाएँगे कि इस तरह के अंदर से खुले models से कितनी control और utility मिल सकती है, steering toolkit का एक मुख्य हिस्सा बन जाएगी
models या model providers से इस स्तर की control की उम्मीद करना शायद स्वाभाविक हो जाएगा
“DwarfStar 4, llama.cpp का छोटा किया गया ऐसा version है जो सिर्फ DeepSeek-V4-Flash चलाता है” — यह बात सही नहीं है
DwarfStar 4 अपना अलग project है
यह सही है कि उस पर llama.cpp का काफ़ी कर्ज़ है, लेकिन यह उसका trimmed-down version नहीं है
implement किए गए quantizer के लिए कुछ quantization code है, और DwarfStar 4 llama.cpp का fork नहीं है
हाँ, अगर llama.cpp न होता तो अहम details को जल्दी verify करना संभव नहीं होता, इसलिए project काफ़ी कमजोर होता
लेकिन यह छोटा किया हुआ llama.cpp नहीं है
इससे यह कम नहीं होता कि llama.cpp इस project और इसके बाद आए सभी projects के लिए कितना महत्वपूर्ण रहा है
बात code की नहीं, बल्कि उस रास्ते की है, quantization formats की है, lessons की है, और उन optimized kernels की है जिन्हें देखकर patterns सीखे जा सकते हैं
DwarfStar 4 मुख्य रूप से llama.cpp की वजह से मौजूद दिखता है, और लेखकों ने llama.cpp code से स्पष्ट रूप से काफ़ी प्रेरणा ली है, जिनमें कुछ हिस्से उचित attribution के साथ सीधे लिए भी गए हैं
इसका मतलब यह नहीं कि कुछ गलत है, यह ठीक ही लगता है
ds4.cGGML से link नहीं करता, लेकिन llama.cpp project ने जो रास्ता खोला, वहाँ विकसित हुए kernels, quantization formats, GGUF ecosystem, और मुश्किल से हासिल की गई engineering knowledge — इन्हीं की वजह से यह संभव हुआDeepSeek V4 Flash के लिए dedicated inference path बनाते समय implementation, kernels, tests, और design choices मुख्य संदर्भ सामग्री थे, और MIT license के तहत GGUF quantization layouts और tables, CPU quantization·dot-product logic, और कुछ kernels जैसे source-level टुकड़े बनाए रखे गए या अपनाए गए
इसलिए सच्चे आभार के रूप में LICENSE file में GGML authors का copyright notice रखा गया है - https://github.com/antirez/ds4#acknowledgements-to-llamacpp-...
https://news.ycombinator.com/item?id=48142885 के बाद लगभग दो दिन तक इससे खेलना काफी मज़ेदार रहा, और अब तक generation speed को 47.85 t/s से 57.07 t/s तक बढ़ा लिया है
मैंने steering से AI को और ज़्यादा radical बनाने की कोशिश की
लेख: https://www.outcryai.com/research/shift-a-models-political-i...
app: https://apps.apple.com/us/app/outcry-activist-ai/id676208676...
इस technique में काफी potential है
ऐसे virtual tokens के ज़रिए AI के semantic space के non-linguistic क्षेत्रों को खोजा जा सकता है और जटिल तरीकों से behavior बदला जा सकता है
activist AI में soft prompts को integrate करने का तरीका मैंने यहाँ लिखा है: https://micahbornfree.substack.com/p/the-week-outcry-woke-up...
और https://www.outcryai.com/research/how-to-create-activist-ai
लेख अच्छा है, लेकिन एक बात उलझाती है
लेख कहता है कि steering सिर्फ local models पर काम करती है, लेकिन GitHub Copilot में “steer with message” feature है, जिससे execution के बीच दिशा सुधारी जा सकती है, और मैं इसे अक्सर इस्तेमाल करता हूँ
शायद यह steering का कोई अलग प्रकार है
agent steering शायद harness और LLM के बीच चलने वाले roundtrip flow के बीच में एक और user message insert करने जैसा है
उसमें model के natural-language thought output में text inject किया जाता है, या कुछ बहुत मिलता-जुलता किया जाता है
हालाँकि Anthropic के NLA work का उपयोग करके किसी खास layer पर model activations की natural-language representation देखना, उस text को edit करना, और फिर उसे पूरी तरह अलग activations में वापस बदलना — ऐसा एक मध्यवर्ती तरीका भी संभव है
अगर RAM लगभग 192GB चाहिए, तो किसी model को local कैसे कहा जा सकता है? local कहने के लिए यह कुछ ज़्यादा ही लगता है
128GB हो तो बेहतर है, DwarfStar README देखिए
यह वैसा ही है जैसे किसी ऐसे व्यक्ति से पूछना कि Zigbee को local/LAN माना जा सकता है या नहीं, जिसके पास ज़रूरी wireless device या antenna ही नहीं है
लिंक की गई DwarfStar repository की इस line ने मुझे control vectors की याद दिलाई
y = y - scale * direction[layer] * dot(direction[layer], y)https://vgel.me/posts/representation-engineering/ में control vectors को इस तरह समझाया गया है: “ऐसे vectors जिन्हें inference के दौरान, बिना कोई अतिरिक्त prompt दिए, model activations पर लागू करके model behavior को control किया जा सकता है — सख्ती से कहें तो हर layer के लिए एक vector वाली सूची”
यह किसी ऐसी चीज़ से ज़्यादा deep learning research के लिए लगता है जिसे मैं वास्तव में इस्तेमाल करना चाहूँ
जब आप सीखना चाहते हों, तब “मैं इस problematic request में मदद नहीं कर सकता” बार-बार कहने वाले model से यह कहीं बेहतर है
“सिर्फ prompt wording को adjust करके ही पहले से बहुत fine-grained control किया जा सकता है” — इस हिस्से पर मुझे संदेह है
हो सकता है मैं prompt लिखने में अच्छा न हूँ, लेकिन training data या post-training learning से आए biases को पार करना असंभव-सा लगता है
prompts से ज़्यादा से ज़्यादा training data से patterns निकाले जा सकते हैं, लेकिन असली fine-grained control जैसी कोई चीज़ मुझे कम ही दिखती है