4 पॉइंट द्वारा GN⁺ 2025-02-15 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 टिप्पणियां

 
GN⁺ 2025-02-15
Hacker News राय
  • Zed का predictive editing फ़ीचर अभी मुफ़्त है, लेकिन बाद में इसके paid होने की संभावना है। यूज़र कीमत तय होने पर ही यह तय करेगा कि इसे अपने workflow में शामिल करना है या नहीं। वह free trial चाहता है, लेकिन अगर कीमत ज़्यादा हुई तो इसका इस्तेमाल नहीं करेगा
    • Zed हर file type के लिए केवल एक LSP चला सकता है। Rust और C++ अच्छी तरह काम करते हैं, लेकिन Angular नहीं
    • remote editing फ़ीचर Windows पर काम नहीं करता। Windows में remote editing इस्तेमाल करने के लिए SSH support चाहिए
  • prediction फ़ीचर का बहुत ज़्यादा इस्तेमाल हो रहा है। यूज़र को prediction फ़ीचर दखल देने वाला लगता है और उसे लगता है कि यह उसके workflow में बाधा डालता है
    • prediction फ़ीचर का ज़रूरत से ज़्यादा उपयोग होने पर वह उल्टा मददगार नहीं रहता। algorithm इंसान के विचार नहीं पढ़ सकता, इसलिए उसे यूज़र के काम में बाधा नहीं डालनी चाहिए
  • कोड किसी third party को भेजा जाना पसंद नहीं है। खासकर secret files एडिट करते समय, private key या API key भेजी जा सकती है
    • local option मिलने की उम्मीद है
  • Zed के नए फ़ीचर्स को प्रचारित करने का तरीका पसंद आया। यह ऊपर बाईं ओर banner के रूप में दिखता है और यूज़र के काम में बाधा नहीं डालता
    • दूसरे software की तरह यूज़र को नए फ़ीचर देखने के लिए मजबूर नहीं करता
  • Zed comments के लिए autocomplete की कोशिश करता है। यूज़र comments वाले हिस्से में autocomplete नहीं चाहता, और इसे disable करने का option जोड़ दिया गया है
  • CoPilot के suggestion accept करने का interface असुविधाजनक है। Tab key इस्तेमाल करने पर बहुत से अनचाहे AI suggestions आ जाते हैं
  • text editor में stability को प्राथमिकता दी जाती है। AI से जुड़े बहुत सारे फ़ीचर्स होने पर उल्टा असुविधा होती है
    • Zed इस्तेमाल करके अच्छा लगा
  • आधुनिक Intellisense उपयुक्त prediction फ़ीचर्स देता है। AI prediction का उपयोग बहुत ज़्यादा हो रहा है
    • अगर AI program structure और pattern recommendations दे तो यह उपयोगी होगा। program जितना बड़ा होता है, उसे structured रखना उतना कठिन हो जाता है
  • Zed की सुविधाओं को local में इस्तेमाल करने के लिए model files define किए जा सकते हैं। लेकिन यह स्पष्ट नहीं है कि Zed इस फ़ीचर के endpoint को बदल सकता है या नहीं