
मैंने Ng की RYS विधि को दोहराया और पाया कि Qwen2.5-32B में 3 विशिष्ट लेयरों की नकल करने से तर्क क्षमता 17% बढ़ जाती है और Devstral-24B में लेयर 12-14 की नकल करने से BBH पर तार्किक निगमन 0.22→0.76 में सुधर जाता है — कोई प्रशिक्षण नहीं, कोई वज़न परिवर्तन नहीं, बस उसी सर्किट के माध्यम से छिपी अवस्थाओं को दो बार रूट करना। उपकरण शामिल हैं। दो AMD GPUs, एक शाम।
मैंने Ng की RYS विधि को दोहराया और पाया कि Qwen2.5-32B में 3 विशिष्ट परतों की नकल करने से तर्कशक्ति में 17% का सुधार होता है और Devstral-24B में परतों 12-14 की नकल करने से BBH पर तार्किक निगमन 0.22→0.76 तक बढ़ जाता है — कोई प्रशिक्षण नहीं, कोई भार परिवर्तन नहीं, बस उसी सर्किट के माध्यम से छिपी स्थितियों को दो बार रूट करना। उपकरण शामिल हैं। दो AMD GPU, एक शाम।
3 परतों की नकल करें। कोई प्रशिक्षण नहीं। तार्किक निगमन ~0.22 → 0.76 हो जाता है।
यह टूलकिट ट्रांसफॉर्मर मॉडल के अंदर छिपे "तर्क सर्किट" को ढूंढता और उनका दोहन करता है। मूल विचार: परतों के कुछ सन्निकट खंड अविभाज्य संज्ञानात्मक इकाइयों के रूप में कार्य करते हैं। उन्हें फॉरवर्ड पास में डुप्लिकेट करें — समान भार, कोई प्रशिक्षण नहीं, कोई विलय नहीं — और मॉडल विशिष्ट क्षमताओं पर मापनीय रूप से अधिक चतुर हो जाता है।
David Ng की RYS विधि पर निर्मित और नए निष्कर्षों के साथ विस्तारित। यहां सब कुछ एक शाम में दो AMD उपभोक्ता GPU (RX 7900 XT + RX 6950 XT) पर खोजा गया था।
मैंने Vast.ai पर एक H200 उदाहरण पर पूर्ण परीक्षण चलाए और devstral बेस की तुलना सर्जरी मॉडल से की, और परिणाम यह हैं: तो सर्जरी कुछ वास्तविक और विशिष्ट कर रही है: यह गणितीय तर्क और कारण तर्क को बढ़ा रही है लेकिन निर्देश-पालन और कोड निर्माण की कीमत पर। मॉडल अधिक सोचता है लेकिन निर्देशों का कम सटीकता से पालन करता है।
परिणाम फ़ोल्डर में आप eval_base और eval_surgery के अंतर्गत परिणाम देख सकते हैं। मैंने रिपॉजिटरी में vastai_rys_eval.sh भी जोड़ा है जो Vast.ai में पूरा वाकामोल चलाने के लिए उपयोग किया जाने वाला स्क्रिप्ट है। vastai उदाहरण इस प्रकार बनाया गया:
vastai create instance somenumberhere --image vastai/base-image:cuda-12.8.1-cudnn-devel-ubuntu22.04 --disk 80 --direct --ssh
=================================================================================
lm_eval परिणाम तुलना
=================================================================================
मीट्रिक base rys_12_15 Δ(अंतिम-प्रथम)
---------------------------------------------------------------------------------
bbh/causal_judgement [exact_match] 0.5775 0.6364 +0.0588
bbh/date_understanding [exact_match] 0.9440 0.9000 -0.0440
bbh/logical_deduction_five_objects [exact_match] 0.7440 0.7320 -0.0120
bbh/navigate [exact_match] 0.9600 0.9440 -0.0160
gsm8k_cot [flexible-extract] 0.8650 0.8787 +0.0136
gsm8k_cot [strict-match] 0.8408 0.8704 +0.0296
ifeval [inst_level_loose_acc] 0.7446 0.7206 -0.0240
ifeval [inst_level_strict_acc] 0.6990 0.6595 -0.0396
ifeval [prompt_level_loose_acc] 0.6728 0.6488 -0.0240
ifeval [prompt_level_strict_acc] 0.6229 0.5767 -0.0462
mbpp [pass_at_1] 0.7000 0.6700 -0.0300
=================================================================================
औसत (सभी मीट्रिक) 0.7610 0.7488 -0.0122
कस्टम प्रोब सूट (BBH-व्युत्पन्न + EQ-Bench-शैली + GSM8K) पर मापा गया:
| प्रोब | बेस | +3 परतें | परिवर्तन |
|---|---|---|---|
| तर्क (कारण + तर्क + नेविगेशन) | 76.5% | 94.1% | +23% |
| EQ (भावनात्मक बुद्धिमत्ता) |
ट्रांसफॉर्मर प्रशिक्षण के दौरान खुद को कार्यात्मक सर्किट में व्यवस्थित करते हैं — बहु-परत प्रसंस्करण इकाइयाँ जो पूर्ण संज्ञानात्मक संचालन करती हैं। ये सर्किट अविभाज्य हैं: एक एकल परत की नकल करने से लगभग कुछ नहीं होता, लेकिन सही खंड (3-4 परतें) की नकल करने से मॉडल को अपनी तर्क पाइपलाइन के माध्यम से दूसरा पास मिलता है।
विभिन्न मॉडलों में अलग-अलग स्थानों पर अलग-अलग सर्किट होते हैं:
सीमाएँ तीक्ष्ण हैं। खंड को एक परत किसी भी दिशा में स्थानांतरित करने पर सुधार गायब हो जाता है या उलट जाता है।
विभिन्न डुप्लिकेशन पैटर्न समान भार से अलग संज्ञानात्मक प्रोफ़ाइल बनाते हैं:
डिस्क पर समान भार। बेस मॉडल के लिए समान VRAM। बस अलग रूटिंग।
pip install gguf requests tqdm
python sweep.py \
--model /path/to/model.gguf \
--llama-server /path/to/llama-server \
--tmpdir /dev/shm/rys \
--results pass.jsonl \
--block-sizes 3 4 5 \
--stride 1 \
--start-min 10 --start-max 20 \
--skip-baseline \
--port 8099 \
--server-args --device Vulkan1,Vulkan2
# Devstral में परतें 12-14 डुप्लिकेट करें (ऊपर मान्य परिणाम)
python layer_path.py model.gguf improved.gguf \
-p "0..14,12,13,14,15..39" -v
# Qwen2.5-32B में परतें 7-9 डुप्लिकेट करें
python layer_path.py model.gguf improved.gguf \
-p "0..9,7,8,9,10..63" -v
# वाइल्ड हो जाएं: ट्रिपल-पास, इंटरलीव्ड, परतें छोड़ें, जो चाहें
python layer_path.py model.gguf experiment.gguf \
-p "0..16,13,14,15,16,13,14,15,16,17..39" -v
# संशोधित मॉडल के साथ सर्वर प्रारंभ करें
llama-server -m improved.gguf --port 8089 -ngl 99 --device Vulkan1,Vulkan2
# lm-evaluation-harness चलाएं
lm_eval --model local-chat-completions \
--model_args model=test,base_url=http://localhost:8089/v1/chat/completions,num_concurrent=1,max_retries=3,tokenized_requests=False \
--tasks gsm8k_cot,ifeval,mbpp,bbh_cot_fewshot_logical_deduction_five_objects \
--apply_chat_template --limit 50 \
--output_path ./eval_results
# रनों की तुलना करें
python compare_eval.py ./eval_base ./eval_improved
प्रत्येक परत कॉन्फ़िगरेशन (i, j) के लिए:
layers 0..j-1 → layers i..j-1 again → layers j..N-1खोज रणनीति:
संशोधित GGUF को tmpfs (/dev/shm) पर लिखा जाता है और प्रत्येक परीक्षण के बाद हटा दिया जाता है। बेस मॉडल भार डिस्क पर रहता है।
gguf, requests, tqdm स्थापित होंlm-eval, हीटमैप प्लॉट के लिए matplotlibक्या यह अधिक VRAM का उपयोग करता है? हाँ, डुप्लिकेट की गई परतें GGUF में भौतिक प्रतियाँ हैं। 24B मॉडल पर 3 अतिरिक्त परतों के लिए, लगभग ~1.5 GiB अतिरिक्त की अपेक्षा करें। एक llama.cpp फॉरवर्ड-पास पैच (प्रतियों के बजाय पॉइंटर्स का उपयोग करके) इसे समाप्त कर देगा — योगदान का स्वागत है।
क्या यह अनुमान को धीमा करता है? हाँ, अतिरिक्त परतों की संख्या के अनुपात में। 40-परत वाले मॉडल पर 3 अतिरिक्त परतें = ~7.5% धीमी। तर्क सुधार इसके लायक है।
क्या यह मेरे मॉडल पर काम करेगा? संभवतः। हमने Mistral-आर्किटेक्चर (Devstral) और Qwen2 आर्किटेक्चर पर परीक्षण किया है। Ng का मूल कार्य Qwen2-72B पर था। सर्किट सभी ट्रांसफॉर्मर मॉडलों में मौजूद हैं — सवाल यह है कि वे कहाँ हैं और वे कितने बड़े हैं। स्वीप चलाएँ और पता लगाएँ।
फाइन-ट्यूनिंग क्यों नहीं करते? यह फाइन-ट्यूनिंग के लिए ऑर्थोगोनल है। आप दोनों कर सकते हैं। वास्तव में, Ng के RYS मॉडल को बाद में दूसरों द्वारा फाइन-ट्यून किया गया और HuggingFace लीडरबोर्ड में शीर्ष पर रहा। परत डुप्लिकेशन आर्किटेक्चर बदलता है; फाइन-ट्यूनिंग भार बदलती है। उन्हें स्टैक करें।
MIT
| 92.1 |
| 93.6 |
| +1.6% |
| पैटर्न | गणित | EQ | चरित्र |
|---|
| डबल-पास 13-16 | ↑↑ | ↑ | गणित विशेषज्ञ |
| ट्रिपल-पास 13-16 | ↑ | ↑↑ | EQ विशेषज्ञ |
| इंटरलीव्ड 13,13,14,14,15,15,16 | ↑↑↑ | ↓ | शुद्ध गणित मोड |
| क्वाड्रपल-पास 13-16 | — | ↑↑ | EQ मोड, गणित तटस्थ |
| फ़ाइल | यह क्या करती है |
|---|
sweep.py | मुख्य स्वीप हार्नेस — इष्टतम परत डुप्लिकेशन कॉन्फ़िग ढूंढता है |
layer_path.py | स्पष्ट परत निष्पादन पथ के साथ कोई भी GGUF बनाएँ |
gguf_surgery.py | निम्न-स्तरीय GGUF परत डुप्लिकेशन (sweep.py द्वारा उपयोग किया जाता है) |
math_probe.py | कठोर अंकगणित प्रोब (Ng का आंशिक-क्रेडिट स्कोरिंग) |
eq_probe.py | भावनात्मक बुद्धिमत्ता प्रोब (EQ-Bench शैली) |
reasoning_probe.py | BBH-व्युत्पन्न कारण/तार्किक/नेविगेशन/गणित शब्द समस्याएँ |
compare_eval.py | रनों के बीच lm-evaluation-harness परिणामों की तुलना करें |
visualize.py | स्वीप परिणामों के टेक्स्ट और PNG हीटमैप |