- JetBrains Full Line Code Completion(FLCC), PyCharm और GoLand में उपलब्ध AI-आधारित autocomplete फीचर है, जो प्रभावी logs लिखने और development efficiency को काफी बढ़ाता है
- यह बार-बार f-string log syntax लिखने या variables/dataframes तक पहुँचने की झंझट को कम करता है, और AI context के मुताबिक संक्षिप्त और स्पष्ट logs अपने-आप बना देता है
- यह मॉडल लोकल PC पर चलता एक छोटा LLM है, जो तेज inference speed, कम memory usage (लगभग 1GB) देता है और privacy leak की चिंता भी नहीं रहती
- JetBrains के paper के अनुसार, Python-विशेष छोटा Transformer (100M parameters) को train किया गया, जो 384 characters के code context के भीतर one-line autocomplete को support करता है, और data preprocessing व tokenizing में भी Python code की विशेषताओं को सक्रिय रूप से दर्शाता है
- FLCC की सफलता यह अच्छी तरह दिखाती है कि विशाल LLM नहीं, बल्कि purpose-built छोटे models वास्तविक development environment में productivity को कितना बढ़ा सकते हैं
AI log auto-writing: development productivity में वास्तविक बदलाव
- JetBrains Full Line Code Completion(FLCC), PyCharm (2023 के अंत से default built-in), GoLand आदि में पूरे log statement autocomplete फीचर देता है
- sequential data processing, asynchronous API calls, vector operations आदि में print debugging और detailed logs अनिवार्य होते हैं
- f-string, variable/list/dataframe access, logger selection (
loguru vs logging) जैसी बार-बार की जाने वाली input की वजह से debugging flow बार-बार टूटने की समस्या थी
- उदाहरण के लिए
loguru का logger.info(f'Adding a log for {your_variable} and {len(my_list)} and {df.head(0)}') देखने में सरल लगता है, लेकिन इसमें parentheses, variable names, dataframe syntax, logger type आदि से जुड़ा कई स्तर का cognitive load होता है
FLCC ने development flow और log-writing habits को कैसे बदला
- Full Line Code Completion file extension, path, cursor के ऊपर का code जैसे सभी context signals को model input prompt में जोड़कर सबसे स्वाभाविक log statement को autocomplete करता है
- सुझाए गए logs variables, dataframes, operations आदि के context के हिसाब से optimized होते हैं, इसलिए कई बार वे इंसान के लिखे log से भी ज्यादा स्पष्ट होते हैं
- संक्षिप्त logs की वजह से debugging खत्म होने के बाद भी code से logs हटाने की जरूरत नहीं पड़ती, और उन्हें production environment में वैसे ही छोड़ दिया जाए तो भी quality पर्याप्त रहती है
-
उदाहरण
- Redis URL चेक करते समय:
redis = aioredis.from_url(settings.redis_url, decode_responses=True) → AI Redis connection log अपने-आप सुझाता है
- DataFrame profiling के समय: data/column define करने के बाद
df की shape आदि के profiling logs अपने-आप सुझाए जाते हैं
JetBrains FLCC model की तकनीकी विशेषताएँ और implementation
-
पूरी तरह लोकल environment में चलता है
- Model inference और code suggestions केवल लोकल PC पर process होते हैं, इसलिए privacy/code leak की चिंता के बिना यह सुरक्षित है
- Mac पर model size लगभग 1GB है, इसलिए memory burden कम है और speed बहुत तेज है
- vLLM, SGLM, Ray, PagedAttention जैसी cloud-based large LLM infrastructure की जरूरत नहीं
-
Python-विशेष छोटे LLM की architecture
- शुरुआती implementation PyTorch-आधारित GPT-2 शैली Decoder-only Transformer (100M parameters) पर थी, बाद में इसे llama2 architecture से बेहतर बनाया गया
- 6TB आकार के The Stack (30 भाषाएँ) subset में से केवल 45GB का उपयोग किया गया, और code comments/अनावश्यक import हटाकर वास्तविक code generation पर फोकस किया गया
- Python भाषा की विशेषताओं के अनुसार, BPE tokenizer में indentation/scope जैसी संरचनाओं को
<SCOPE_IN>/<SCOPE_OUT> tokens में बदला गया, ताकि whitespace differences के कारण token waste न हो
- Tokenizer vocab size को 16,384 पर optimize किया गया
- Python में import को code के अंत में जोड़ने की आम आदत को training में भी दर्शाया गया, इसलिए import को data से पूरी तरह हटा दिया गया
-
training और optimization
- 8 NVIDIA A100 GPUs पर कई दिनों तक training की गई, और cross-entropy loss से evaluation हुआ
- quantization से FP32 model को INT8 में बदला गया (400MB→100MB), ताकि PC memory पर बोझ डाले बिना इसे चलाया जा सके
- ONNX RT के जरिए CPU inference, और बाद में server को llama.cpp structure पर बदला गया
- Beam Search(k=20) से विभिन्न token sequences generate किए गए, और newline character को output end criterion बनाया गया
- 384-character context window में से 50% को पहले से prefetch करके cache किया गया, ताकि cursor को पुराने code पर ले जाने पर re-inference के बिना तुरंत response मिले
-
plugin और integration structure
- PyCharm plugin Kotlin में लिखा गया है, और लोकल native C++ server के जरिए inference tokens देता है
- clean API, तेज response, caching strategy आदि के साथ यह production development workflow के लिए optimized है
FLCC से आए वास्तविक development productivity changes
-
log quality और efficiency दोनों में सुधार
- AI autocomplete logs की वजह से print debugging/production logs की quality और writing efficiency दोनों बेहतर हुईं
- छोटे और स्पष्ट logs अपने-आप सुझाए जाते हैं, इसलिए debugging flow नहीं टूटता
-
छोटे specialized LLM की practical value
- बड़े LLM के बजाय, खास उद्देश्य (one-line code completion) के लिए optimized छोटा AI model वास्तविक development field में productivity में बड़ा बदलाव ला सकता है
- यह एक प्रतिनिधि उदाहरण है कि दूसरे क्षेत्रों में भी purpose-built छोटे models वास्तविक workflow को ठोस रूप से बेहतर बना सकते हैं
5 टिप्पणियां
उम्मीद है कि C++ में भी ऐसा कुछ आएगा!
उसके लिए हर महीने $20 ~ $200 खर्च करना थोड़ा ज़्यादा है…
लगता है कि ये व्यक्ति IDE subscription cost की बात कर रहे हैं। FLCC free version में उपलब्ध नहीं है।
लेकिन लोग सिर्फ उसी की उम्मीद में पैसे नहीं देते।
आह, तो free version में इसका इस्तेमाल नहीं किया जा सकता। मैंने गलत समझ लिया था 😅
यह लोकल पर चलता है, इसलिए शायद किसी शुल्क की ज़रूरत नहीं होगी।