- Zed एक ऐसा एडिटर है जिसे स्पीड के लिए डिज़ाइन किया गया है, और इसका लक्ष्य हमेशा
instant एडिटिंग अनुभव देना रहा है
instant से भी तेज़ होने के लिए, इसने उपयोगकर्ता की "अगली एडिट कार्रवाई का अनुमान" लगाने वाला तरीका अपनाया है
- इसके लिए Zed ने नया edit prediction फीचर पेश किया है, जो Zeta नाम के एक open source मॉडल पर आधारित है
- इस्तेमाल के दौरान
tab key से अनुमानित एडिट को तुरंत लागू किया जा सकता है, और कई आगे के एडिट भी लगातार चलाए जा सकते हैं
- यह लंबे समय से बहुत माँगा गया फीचर था, और इसे इस तरह विकसित किया गया है कि यह Zed के एडिटिंग वातावरण में जितना हो सके उतना स्वाभाविक लगे
- अभी public beta अवधि में Zed डाउनलोड करके GitHub account से login करने पर Zeta को मुफ्त में इस्तेमाल किया जा सकता है
- हालांकि edit prediction भविष्य में मुफ्त न भी रहे, लेकिन अभी इसे साथ मिलकर प्रयोग करने और सीखने के लिए सार्वजनिक किया गया है
Thoughtful Integration
- edit prediction फीचर जुड़ने से
tab key और भी शक्तिशाली हो गई है
- लेकिन इसका टकराव
tab से indentation करने या language server (LS) द्वारा दिए गए suggestions देखने के मौजूदा तरीके से हो सकता है
- अगर language server की code suggestion दिखाई दे रही हो, तो
option/alt key दबाने पर ही predicted edit preview के रूप में दिखती है
- macOS में
tab से predicted edit को confirm किया जा सकता है, और option छोड़ने पर फिर से मूल language server suggestion स्क्रीन पर लौटा जा सकता है
- Linux में
alt-tab अक्सर window manager के लिए reserved होता है, इसलिए डिफ़ॉल्ट रूप से alt-l दिया गया है
- अगर Linux environment में
alt-tab टकराव नहीं करता, तो उसे वैसे ही इस्तेमाल किया जा सकता है
Introducing Zeta: Zed's Open Source Edit Prediction Model
- Zeta एक open source मॉडल है, जिसे Qwen2.5-Coder-7B के आधार पर विकसित किया गया है
- एक open dataset भी (लिंक) सार्वजनिक किया गया है
- अगर आप open source repository पर काम करते हैं, तो Zeta को बेहतर बनाने के लिए dataset में योगदान देने की उम्मीद की जाती है
- शुरुआती चरण में safety और privacy review के बाद ही data को शामिल किया जाएगा
- उद्देश्य है कि मिलकर edit prediction को समग्र रूप से और बेहतर फीचर बनाया जाए
- वीडियो लिंक: How Zed’s Open-Source Edit Predictions Work
Editing By Rewriting
- ज़्यादातर coding models को “fill in the middle” तरीके से train किया जाता है
- इसमें prefix और suffix दिए जाते हैं, और मॉडल उनके बीच का हिस्सा generate करता है
- दूसरी ओर, Zeta को किसी भी जगह होने वाले edit का अनुमान लगाना होता है, इसलिए यह मौजूदा संरचना से अलग चुनौती है
- इस बात पर ध्यान दिया गया कि मॉडल बहुत सूक्ष्म स्तर के बदलावों की तुलना में अपेक्षाकृत बड़े code chunks को फिर से लिखने में अधिक सक्षम है
- इसलिए हाल की edit history और cursor position को input के रूप में देकर, संबंधित code fragment को rewrite करने का तरीका चुना गया
Evaluating Predictions
- बड़े language models का output हर बार एक जैसा नहीं आता, इसलिए testing कठिन हो जाती है
temperature को 0 पर सेट करके या RNG seed तय करके कुछ हद तक इस variation को नियंत्रित किया जा सकता है
- लेकिन code में कई सही उत्तर संभव होते हैं, इसलिए output अपेक्षित उत्तर से अलग होने पर भी वह सही हो सकता है
- पारंपरिक unit test कठिन होने के कारण, Zeta के output को natural language में जाँचने के लिए बड़े LLM का उपयोग करने का तरीका आज़माया गया
- उदाहरण: “क्या यह बाएँ और दाएँ array पर recursively quicksort function को call करता है” जैसी requirement देकर, Claude से जाँच कराई गई कि परिणाम इरादे के अनुरूप है या नहीं
Prompt Engineering
- शुरुआत में Qwen2.5-Coder-32B मॉडल का उपयोग करके ऐसा prompt बनाया गया जो स्पष्ट रूप से बताता था कि किस तरह का edit predict करना है
- शुरुआती कुछ tests (evals) पास हो गए, लेकिन tests बढ़ने के साथ केवल prompt बदलकर लगातार एकसमान परिणाम पाना मुश्किल हो गया
- 32b मॉडल में response latency अधिक थी, इसलिए यह Zed के सख्त performance standards पर भी खरा नहीं उतरा
Supervised Fine-Tuning
- कई तरीकों को आज़माने के बाद, Unsloth और LoRA का उपयोग करते हुए supervised fine-tuning की ओर रुख किया गया
- लक्ष्य था हाल की edit history से उपयोगकर्ता की इच्छित बदलावों का अनुमान लगाना और model को code fragment इस तरह लिखना सिखाना कि उसमें गलत insertion न हों
- लेकिन शुरुआत में वास्तविक user data कम था, इसलिए Claude की मदद से लगभग 50 synthetic examples बनाकर dataset में जोड़े गए
- इसके बाद शुरुआती version को Zed में feature flag के साथ deploy किया गया, ताकि internal team वास्तविक उपयोग के उदाहरण बनाकर dataset को बढ़ा सके
- लगभग 400 examples से model accuracy बेहतर हुई, लेकिन file के केवल कुछ हिस्सों को edit करते समय model के अनावश्यक बदलाव करने की समस्या बनी रही
Direct Preference Optimization
- इस समस्या को हल करने के लिए DPO (Direct Preference Optimization) तकनीक अपनाई गई
- इसमें सिर्फ ‘अच्छे examples’ दिखाने के बजाय ‘किन examples से बचना है’ यह भी स्पष्ट किया गया, ताकि model अनुपयुक्त edits को पहचानना सीख सके
- लगभग 150 सावधानी से चुने गए examples से भी कठिन मामलों में model के व्यवहार में बड़ा सुधार हुआ
- उम्मीद है कि और विविध examples इकट्ठा करने पर अतिरिक्त सुधार संभव होगा
Minimizing Latency: Speculative Decoding
- Zed की बाकी सभी सुविधाओं की तरह, edit prediction में भी latency को कम से कम रखना मुख्य बात है
- लक्ष्य है कि p50 200ms से कम रहे और p90 500ms से कम रहे
- code के किसी हिस्से को rewrite करने में generate होने वाले tokens की संख्या बढ़ जाती है, इसलिए यह सामान्य fill-in-the-middle तरीके से धीमा हो सकता है
- लेकिन rewrite प्रक्रिया में मूल code से काफी मिलते-जुलते हिस्से होने का लाभ उठाते हुए, speculative decoding तकनीक लागू की गई
- input को reference की तरह इस्तेमाल कर n-gram search के साथ parallel token generation किया जाता है, जिससे quality घटाए बिना speed बढ़ाई जाती है
Minimizing Latency: Serving The Model
- model inference speed के अलावा, server environment में model serving का तरीका भी बड़ी चुनौती था
- अब तक team ने जिन कामों पर काम किया है, उनमें यह सबसे अधिक computationally intensive समस्या थी
- launch के समय छोटे validation process के बाद Baseten को चुना गया
- Baseten के engineers ने Zeta मॉडल को optimize किया, और इच्छित latency targets हासिल किए गए
- network transfer time भी एक बड़ा factor है, इसलिए अमेरिका और यूरोप क्षेत्रों में GPU तैनात किए गए ताकि requests को भौतिक रूप से नज़दीकी स्थान से संभाला जा सके
- Cloudflare Workers के माध्यम से requests को उपयोगकर्ता के निकट data center से relay किया जाता है
Conclusion
- आगे edit prediction को और शक्तिशाली बनाने के लिए विभिन्न दिशाओं की खोज की जाएगी
- model को मिलने वाले context की मात्रा बढ़ाने, अतिरिक्त fine-tuning करने और Zeta dataset का विस्तार करने की योजना है
- पिछले साल पतझड़ में Zed AI लॉन्च करने के बाद से बहुत कुछ सीखा गया है
- दुनिया तेजी से बदल रही है, और उसी के अनुरूप ऐसे features का लगातार प्रयोग और निर्माण किया जा रहा है जिन्हें उपयोगकर्ता पसंद करें
- AI को भी Zed की open source भावना के साथ आगे बढ़ाना है
- उम्मीद है कि उपयोगकर्ता, contributor और team member के रूप में कोई भी इसमें साथ जुड़ सके, और एक बेहतर भविष्य बनाने की दिशा में यह यात्रा जारी रहे
2 टिप्पणियां
Atom डेवलपर्स द्वारा बनाया गया नया एडिटर। ओपन बीटा शुरू
सहयोगी कोड एडिटर 'Zed', अब open source में बदला
Zed AI सार्वजनिक (with Anthropic)
Hacker News राय