11 पॉइंट द्वारा GN⁺ 2024-06-10 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 2019 में अधिकांश software engineers के लिए यह कल्पना करना कठिन था कि machine learning उनके काम में कैसे मदद करेगी
  • लेकिन 2024 तक AI को code लिखने में मदद करने के तरीके को लेकर व्यापक उत्साह है
    • कई engineers ने company के internal tools या commercial products में ML-based autocomplete का उपयोग करके देखा है
  • यह लेख Google के internal software development tools में लगातार हो रहे बदलावों के बीच नवीनतम AI-based सुधारों का परिचय देता है
    • साथ ही अगले 5 वर्षों में अपेक्षित अतिरिक्त बदलावों पर भी चर्चा करता है
  • यह professional software development में value देने वाले AI products बनाने की methodology भी प्रस्तुत करता है
    • यह टीम IDE, code review, code search जैसे उन software development environments पर काम करती है जहाँ Google engineers अपना अधिकांश समय बिताते हैं
    • इससे यह दिखता है कि ऐसे सुधार developer productivity और satisfaction पर सीधे प्रभाव डाल सकते हैं

चुनौतियाँ

  • AI तकनीक बहुत तेज़ी से विकसित हो रही है, इसलिए किस विचार को पहले explore किया जाए यह अनुमान लगाना इस क्षेत्र की एक लगातार बनी रहने वाली चुनौती है
  • तकनीकी रूप से संभव demo और सफल productization के बीच अक्सर काफ़ी बड़ा अंतर होता है
  • किसी विचार को product के रूप में deploy करने के लिए तीन दिशानिर्देश हैं:
    1. तकनीकी व्यवहार्यता और प्रभाव के आधार पर प्राथमिकता तय करें: उन विचारों पर काम करें जिनकी technical feasibility पहले ही सिद्ध हो चुकी है और जिनसे engineers के workflow पर उच्च (और मापने योग्य) प्रभाव पड़ने की उम्मीद है
    2. तेज़ी से सीखें और UX व model quality में सुधार करें: focus इस बात पर है कि developer productivity और खुशी को बनाए रखते हुए तेज़ी से iterate किया जाए और सीखे गए सबक निकाले जाएँ। User experience model quality जितना ही महत्वपूर्ण है
    3. प्रभाव को मापें: लक्ष्य productivity और satisfaction metrics को बढ़ाना है, इसलिए इन metrics की व्यापक रूप से निगरानी की जानी चाहिए

software development में LLM का उपयोग

  • transformer architecture के आने के साथ LLM को software development में लागू करने के तरीकों की खोज शुरू हुई
  • LLM-based inline code completion, software development में लागू AI का सबसे लोकप्रिय उपयोग है
    • code को ही training data के रूप में उपयोग करना LLM तकनीक का एक स्वाभाविक अनुप्रयोग है
    • UX developers को स्वाभाविक लगता है, क्योंकि word-level autocomplete लंबे समय से IDE की core feature रही है
    • प्रभाव के लिए मोटे तौर पर ऐसे माप संभव हैं जैसे AI द्वारा लिखे गए नए characters का अनुपात
    • इन कारणों से LLM के इस उपयोग का सबसे पहले deploy होना तर्कसंगत था
  • पिछले blog में बताया गया था कि code completion के माध्यम से user experience कैसे सुधारा जाए और उसके प्रभाव को कैसे मापा जाए
    • उसके बाद से इसमें अन्य enterprise environments की तरह लगातार तेज़ growth देखी गई है
    • software engineers में adoption rate 37% है, और यह code characters के 50% को पूरा करने में मदद करता है
  • प्रमुख सुधार model और UX दोनों में आए हैं
    • यह cycle synthetic formulae के बजाय वास्तविक behavior से सीखने के लिए आवश्यक है
  • विभिन्न tools से मिले logged data तथा user preferences और requirements को capture करने वाले usage data का उपयोग करके coding tools (जैसे IDE) की AI-based features को बेहतर बनाया जाता है
  • AI सहायता से जनरेट किए गए code का अनुपात लगातार बढ़ रहा है
    • इसे AI-based suggestions से स्वीकार किए गए characters की संख्या को manually typed characters और AI-based suggestions से स्वीकार किए गए characters की संख्या के योग से विभाजित करके परिभाषित किया जाता है
    • ध्यान देने योग्य बात यह है कि copy-paste से आए characters denominator में शामिल नहीं होते
  • कई tools में लंबे समय से curate किए गए internal software engineering activities के विशाल और उच्च-गुणवत्ता वाले logs का उपयोग किया जाता है
    • इन data की मदद से granular code edits, build results, build issues को हल करने के लिए edits, code copy-paste operations, pasted code में किए गए संशोधन, code reviews, reviewer issues को हल करने के लिए edits, और repository में changes submit करने जैसी गतिविधियों को व्यक्त किया जा सकता है
  • training data, input और output दोनों में task-specific annotations के साथ aligned code corpus है
  • अगली महत्वपूर्ण deployment code review comments का resolution था (जिसमें अब 8% से अधिक AI-based सहायता से संभाला जाता है) और pasted code को आसपास के context के अनुसार स्वतः adapt करना था (जो अभी IDE में code का लगभग 2% है)
  • अतिरिक्त deployments में natural language के माध्यम से IDE को code edits निर्देशित करना और build failures के लिए fixes का अनुमान लगाना शामिल है
    • code readability के लिए tips predict करने जैसे अन्य अनुप्रयोग भी संभव हैं, जो समान patterns का पालन करते हैं
  • मिलाकर देखें तो ये deploy किए गए applications Google में सफल और व्यापक रूप से उपयोग किए जाने वाले अनुप्रयोग रहे हैं, और इन्होंने वास्तविक industrial environment में productivity पर मापने योग्य प्रभाव डाला है

सीखी गई बातें

  • अब तक के काम से कुछ बातें सीखी गई हैं:
    1. सबसे अधिक प्रभाव उस UX से हासिल होता है जो user workflow में स्वाभाविक रूप से घुल-मिल जाए। ऊपर दिए गए सभी उदाहरणों में user को suggestions दिखाए जाते हैं और वह एक tap या click में workflow के अगले चरण पर जा सकता है। जिन प्रयोगों में user को feature trigger करना याद रखना पड़ता था, वे scale नहीं कर पाए
    2. यह देखा गया कि AI-based suggestions के साथ code author धीरे-धीरे reviewer बनता जा रहा है। Review cost और added value के बीच संतुलन खोजना महत्वपूर्ण है। आमतौर पर इस trade-off को adoption rate targets के माध्यम से संभाला जाता है
    3. offline metrics अक्सर user value के केवल मोटे proxy होते हैं, इसलिए online A/B experiments के ज़रिए तेज़ iteration महत्वपूर्ण है। AI-based features को internal tools में expose करने का बड़ा लाभ यह है कि उन्हें आसानी से launch और iterate किया जा सकता है, usage data मापा जा सकता है, और UX research के माध्यम से users से उनके अनुभव सीधे पूछे जा सकते हैं
    4. software tools के पूरे ecosystem में Google engineers की गतिविधियों से प्राप्त high-quality data, जिसमें हमारी features के साथ interaction भी शामिल हैं, model quality के लिए अनिवार्य है
  • UX और model improvements का उपयोग करके बीच के bottlenecks हटाते हुए opportunity (मुख्यतः user activity, जो नीचे दिए गए funnel के top पर दिखाई गई है) से impact (applied AI assistance, funnel के bottom पर) तक conversion को optimize करना महत्वपूर्ण है

What's Next

  • अब तक की सफलता से प्रोत्साहित होकर, नवीनतम foundation models (Gemini series) को developer data (ऊपर उल्लेखित DIDACT का एक हिस्सा) के साथ जोड़कर Google के software engineering में ML को लागू करने वाले मौजूदा और नए applications को शक्ति देने पर ध्यान दिया जा रहा है
  • पूरे industry में ML-based code completion ने software developers को बड़ी मदद दी है
    • code generation को बेहतर बनाने के अवसर अभी भी हैं, लेकिन उम्मीद है कि अगले चरण के लाभ testing, code understanding और code maintenance जैसी व्यापक software engineering activities में ML सहायता से आएँगे
    • enterprise environments में बाद वाले क्षेत्रों में विशेष रुचि अधिक है
    • ये अवसर हमारे अपने ongoing work को भी दिशा देते हैं
  • industry में दिख रहे दो trends पर ज़ोर दिया गया है:
    1. human-computer interaction का सामान्य माध्यम natural language की ओर बढ़ गया है, और यह software engineering tasks के interface के रूप में language का उपयोग करने तथा IDE में integrated software developers की information needs के gateway के रूप में उपयोग करने की दिशा में बदल रहा है
    2. समस्या diagnosis से लेकर fixes लागू करने तक बड़े कार्यों का ML-based automation अब शुरुआती feasibility के प्रमाण दिखाने लगा है
      • यह संभावना agents और tool use में innovations से प्रेरित है, जो ऐसे systems बनाना संभव बनाती हैं जो बड़े कार्यों को पूरा करने के लिए एक या अधिक LLMs को components के रूप में इस्तेमाल करते हैं
  • इन अगली पीढ़ी की capabilities की ओर ऊपर मिली सफलताओं को आगे बढ़ाने के लिए, इस विषय पर काम कर रहे practitioners और researchers के समुदाय को ऐसे common benchmarks से लाभ मिल सकता है जो क्षेत्र को practical engineering tasks की दिशा में आगे बढ़ाने में मदद करें
    • अब तक benchmarks मुख्यतः code generation (जैसे HumanEval) पर केंद्रित रहे हैं
    • लेकिन enterprise environments में code migration और production debugging जैसे व्यापक कार्यों के benchmarks विशेष रूप से मूल्यवान हो सकते हैं
    • bug fixing (जैसे SWEBench) के लिए benchmarks और ऐसे benchmarks को target करने वाले prototypes (जैसे Cognition AI) प्रकाशित किए गए हैं
  • community को प्रोत्साहित किया गया है कि वह अधिक व्यापक software engineering tasks को शामिल करने के लिए और benchmarks प्रस्तावित करने हेतु साथ आए

GN⁺ की राय

  • AI का तेज़ विकास: AI तकनीक बहुत तेज़ी से आगे बढ़ रही है, इसलिए नवीनतम तकनीकों को लगातार सीखना और लागू करना महत्वपूर्ण है।
  • UX और model quality: user experience और model quality, AI tools की सफलता के महत्वपूर्ण तत्व हैं।
  • data का महत्व: high-quality data, AI models के प्रदर्शन को बहुत हद तक प्रभावित करता है।
  • भविष्य की संभावनाएँ: संभावना है कि AI software engineering के विभिन्न पहलुओं में और बड़ी भूमिका निभाएगा।
  • industry trends: natural language interfaces और large-scale task automation software development के भविष्य को आगे बढ़ाएँगे।

1 टिप्पणियां

 
GN⁺ 2024-06-10
Hacker News राय
  • जब AI का सही तरह से उपयोग किया जाता है, तो वह दो भूमिकाएँ निभाता है: 1) बिना विवाद वाले बदलावों में डेवलपर का समय बचाता है और cognitive load कम करता है। 2) सुझावों के ज़रिए उपयोगकर्ता को अधिक स्मार्ट और जानकार बनाता है। उदाहरण के लिए, कभी-कभी code completion फीचर अच्छा काम करता है.

  • एक दिलचस्प दावा है कि जब AI tools में यूज़र को खुद फीचर trigger करना पड़ता है, तो वे "scale नहीं कर पाते"। इस बारे में सोच रहा हूँ कि IDE के भीतर AI किस तरह उपयोगी रूप से design-level और conceptual ideas सुझा सकता है.

  • AI-आधारित सुझावों की वजह से यह देखा जा रहा है कि code writer धीरे-धीरे reviewer बनता जा रहा है। review cost और added value के बीच संतुलन खोजना महत्वपूर्ण है.

  • GPT-4 का उपयोग करके कुछ ही मिनटों में React UI और Python UI बनाना, और code review करके यह समझना कि वह कैसे काम करता है, उपयोगी लगा.

  • इंसानों की सीमित RAM की वजह से ideas को किसी external medium में डालना पड़ता है। AI के सुझाव शुरुआती चरण को तेज़ी से आगे बढ़ाने में मदद करते हैं.

  • यह नकारा नहीं जा सकता कि LLMs (large language models) programming में उपयोगी हैं। इसे और seamless बनाने के लिए सही UX सबसे बड़ी चुनौती है। autocomplete फीचर आज़माया था, लेकिन ज़्यादातर सुझाव अच्छे नहीं थे, इसलिए उसे disable कर दिया.

  • code से जुड़े सवाल पूछने के लिए ChatGPT desktop app का उपयोग ज़्यादा उपयोगी लगा। लेकिन हर बार details समझाना झंझटभरा है.

  • AI-assisted code writing का अनुपात 50% तक बढ़ने का रुझान दिलचस्प है.

  • AI यह बता देता है कि माँगा गया काम कैसे करना है, लेकिन यह नहीं बताता कि वह बुरा idea है। ML-generated code की quality training data पर निर्भर करती है.

  • यह जानने की उत्सुकता है कि AI को Google के software engineers को पूरी तरह replace करने में कितना समय लगेगा.

  • AI का अंतिम लक्ष्य systems चलाना, apps debug करना, data stores manage करना, और user feedback व requirements description के आधार पर app code लिखना है.

  • AI tools के साथ प्रयोग करना अच्छा है, लेकिन दूसरे लोगों द्वारा उसे आँख बंद करके copy करना नकारात्मक प्रभाव डाल सकता है। LLM का उपयोग करके code लिखने का मुख्य selling point ढूँढना मुश्किल है.