अनस्प्लैश पर जेसन लेउंग द्वारा कवर फ़ोटो
शायद कई "मैंने क्यों बनाया" पोस्टों में से यह पहला है जो सॉफ्टवेयर का एक टुकड़ा बनाने और भविष्य के सुधारों में गहराई से गोता लगाने के मेरे तर्क को समझाता है।
आज, मैं अपने सबसे लोकप्रिय प्रोजेक्ट, टैबीएपीआई पर ध्यान केंद्रित करने जा रहा हूं। TabbyAPI एक पायथन आधारित फास्टएपीआई सर्वर है जो उपयोगकर्ताओं को ExllamaV2 लाइब्रेरी का उपयोग करके बड़े भाषा मॉडल (या LLM) के साथ इंटरैक्ट करने की अनुमति देता है और OpenAI API विनिर्देश का पालन करता है।
यदि आप निश्चित नहीं हैं कि इनमें से किसी भी शब्द का क्या अर्थ है, तो आप एआई क्षेत्र में नहीं हैं। लेकिन यह ठीक है! इस लेख का उद्देश्य एआई शब्दों का सारा दोष आप पर थोपे बिना मेरे अनुभवों को समझाना है।
मुझे नवंबर 2023 के समय पर वापस जाने दें। एआई फलफूल रहा था, कंपनियां बाएं और दाएं मॉडल जारी कर रही थीं, और प्रचार ट्रेन का कोई अंत नहीं था। ऐसा लगता है जैसे मैं उस समय अवधि के बारे में बात कर रहा हूं जो प्राचीन काल में थी, लेकिन उस समय, हर दिन पूरे महीने के नवप्रवर्तन जैसा लगता था।
इन नई तकनीकों के हमले में, मेरा ध्यान उन्हें अपनी मामूली 3090टीआई के साथ चलाने पर केंद्रित था। हां, उपयोग करने के लिए मामूली शब्द सही है क्योंकि ग्राफिक्स कार्ड में 24 जीबी वीआरएएम अधिकांश एआई मॉडल चलाने के लिए प्रवेश स्तर है। इस समय, मॉडलों के परिमाणित संस्करण चलाना आदर्श था। परिमाणीकरण संपीड़न के समान है जो उपयोगकर्ताओं को उपभोक्ता जीपीयू पर इन विशाल मॉडलों को चलाने की अनुमति देता है।
जिस प्रारूप से मुझे प्यार हो गया वह exl2 था, एक ऐसा प्रारूप जो गति, अनुकूलन और ग्राफिक्स कार्ड पर जितना संभव हो उतना प्राप्त करने पर केंद्रित था। और टोकन ध्वनि की गति से उत्पन्न हो रहे थे। तो यह प्रारूप बढ़िया है! मामला क्या है?
समस्या मॉडल चलाने की है। Exl2 ExllamaV2 लाइब्रेरी का हिस्सा है, लेकिन एक मॉडल चलाने के लिए, उपयोगकर्ता को एक एपीआई सर्वर की आवश्यकता होती है। वहां एकमात्र विकल्प टेक्स्ट-जेनरेशन-वेबुई (टीजीडब्ल्यू) का उपयोग करना था, एक प्रोग्राम जो प्रत्येक लोडर को ग्रैडियो वेबुई में बंडल करता था। ग्रैडियो पायथन विकास के लिए एक सामान्य "बिल्डिंग-ब्लॉक" यूआई फ्रेमवर्क है और अक्सर एआई अनुप्रयोगों के लिए उपयोग किया जाता है। यह सेटअप कुछ समय के लिए अच्छा था, जब तक कि ऐसा नहीं था।
अनिवार्य रूप से, टैबी बनाने का मुख्य कारण झुंझलाहट था। मैं एक मॉडल को लोड करने में लगने वाले काम की मात्रा से थक गया था। ग्रैडियो से ओवरहेड और टीजीडब्ल्यू से निर्भरता की भारी मात्रा का उल्लेख नहीं किया गया है। मैं डेवलपर का सम्मान करता हूं, लेकिन टीजीडब्ल्यू उन कई लोगों के लिए अच्छा है जो ऑल-इन-वन समाधान चाहते हैं, लेकिन यह मेरे लिए अच्छा नहीं था।
अनस्प्लैश पर ग्लेन कार्स्टेंस-पीटर्स द्वारा फोटो
साधारण है। एक एपीआई सर्वर बनाएं जो मेरे कंप्यूटर पर बैठ सके और उसे चलाने के लिए बहुत अधिक ब्लोट की आवश्यकता न हो। यह आसान लगता है, लेकिन क्या मैं वास्तव में ऐसा कर सकता हूँ? मुझे एआई मॉडल सिद्धांत में ज्यादा अनुभव नहीं है, लेकिन मुझे बैकएंड सर्वर बनाने और एपीआई डिजाइन को समझने का काफी अनुभव है।
इसलिए, मुझे मदद के लिए किसी की ज़रूरत थी, लेकिन कौन? टर्बोडेरप दर्ज करें, ExllamaV2 के पीछे वाला व्यक्ति। लाइब्रेरी बनाने के बाद से वह मॉडलों के काम करने के तरीके के बारे में सब कुछ जानता है, जो मेरे एपीआई ज्ञान के लिए एक बेहतरीन जोड़ी है। इसके अलावा, स्प्लिस नाम का एक अन्य इच्छुक व्यक्ति पायथन के साथ अपने अनुभव के कारण शामिल हुआ। हम तीनों ने मिलकर TabbyAPI की शुरुआत की।
लेकिन क्या योजना सचमुच इतनी सरल थी? अच्छा, एक तरह का। जबकि मेरे पास नौकरी के लिए लोग थे, पायथन और एपीआई सर्वर में मेरा ज्ञान मूल रूप से 0 था। मैंने फास्टएपीआई नामक एक वेबसर्वर फ्रेमवर्क का उपयोग किया, जिसने मेरे जीवन को बहुत आसान बना दिया। यह पायथन समुदाय में भी बहुत लोकप्रिय है और अच्छी तरह से प्रलेखित है।
कुछ दिनों तक फास्टएपीआई का उपयोग करने के बाद, मुझे पायथन वेबसर्वर कोड लिखने का शौक हो गया। दस्तावेज़ीकरण बहुत अच्छा है, ऑनलाइन कई उदाहरण हैं, और डेवलपर्स प्रतिक्रिया के लिए ग्रहणशील हैं। कुल मिलाकर, समुदाय स्वागत कर रहा है और मैं नेटवर्किंग के लिए अधिक बार पायथन का उपयोग करना पसंद करूंगा।
कुछ हफ्तों के बाद, मुझे लगा कि सब कुछ सार्वजनिक तैनाती के लिए तैयार है और मैंने सब कुछ सबसे अच्छे तरीके से जारी करने का फैसला किया है जो मैं जानता हूं। YOLO और सब कुछ GitHub पर धकेलें।
दुनिया के लिए एक ओपन सोर्स प्रोजेक्ट जारी करते समय, समस्याओं की अपेक्षा करें... बहुत सी बहुत सारी समस्याएं। लोगों के पास हमेशा ऐसे उपयोग के मामले होते हैं जिनमें उपयोगिता फिट नहीं बैठती। चूंकि टैबी एक बैकएंड सर्वर है, इसलिए ऐसे कई मामले सामने आए। इस पोस्ट के लिए, मैं केवल कुछ चीजों का उल्लेख करूंगा जिनसे पहले निपटना मेरे लिए कठिन था।
एक बड़ी समस्या यह थी कि मैंने टैबी को आरएजी प्रचार चक्र के बीच में जारी कर दिया था। आरएजी का अर्थ है "रिट्रीवल ऑगमेंटेड जेनरेशन", या प्रतिक्रिया प्राप्त करते समय एलएलएम के ज्ञान के अतिरिक्त बाहरी दस्तावेजों का उपयोग करना। समस्या यह थी कि इन नई तकनीकों (जैसे फ़ंक्शन कॉलिंग) को कार्यों को पूरा करने के लिए पूरी तरह से अलग एपीआई एंडपॉइंट और तरीकों की आवश्यकता होती है।
उसके ऊपर, ये सुविधाएँ वास्तव में बैकएंड पर कैसे काम करती हैं, इस पर बहुत कम या कोई दस्तावेज़ नहीं है। आज तक, मैंने OpenAI की टूल कॉलिंग लागू नहीं की है क्योंकि मुझे नहीं पता कि यह कैसे काम करती है। एआई दुनिया में दस्तावेज़ीकरण की कमी दुखद रूप से आम है और यह डेवलपर्स के लिए पहले से बहुत सारी जानकारी एकत्र किए बिना अपनी परियोजनाओं में कोड लागू करने की क्षमता को बाधित करती है।
एक और मुद्दा जो कई महीनों तक चला, वह था बहु-उपयोगकर्ता पीढ़ी। यह पता चला है कि किसी डेवलपर के लिए सर्वर पर वितरित क्वेरी को संभालना आसान विषय नहीं है। फास्टएपीआई इस प्रकार के कार्यभार के लिए समर्थन प्रदान करता है, लेकिन टैबी को सिंक्रोनस कोड के साथ लिखा गया था। इसका मतलब यह था कि मुझे पायथन में एसिंक्रोनस प्रोग्रामिंग सीखनी थी (जो कि लंबे समय तक आसान नहीं है)।
सबसे बुरी बात यह है कि एआई डेवलपर्स को एसिंक्रोनस पायथन पसंद नहीं है जबकि नेटवर्किंग सर्वर इसे अपनाते हैं। इसका मतलब यह है कि मुझे थ्रेडिंग के रूप में एसिंक्रोनस और सिंक्रोनस लाइब्रेरी के बीच संचार करना सीखना था। यह पायथन के थ्रेडिंग मुद्दों को समझने में और भी गहरा गोता लगाता है और अतुल्यकालिक मॉडल पहले स्थान पर क्यों मौजूद है। मैं इस सब पर एक अन्य ब्लॉगपोस्ट में चर्चा करूंगा, लेकिन उम्मीद है कि यह बताता है कि इन मुद्दों से जूझते हुए 2-3 महीनों की अवधि में मुझे कितना कुछ सीखना पड़ा।
आखिरकार, टर्बो और मैंने ExllamaV2 लाइब्रेरी में एक बेहतर जनरेटर बनाने के लिए मिलकर काम किया, जिसने थ्रेडिंग लाइब्रेरी से सभी बहु-उपयोगकर्ता समस्याओं और अजीब बग को दूर कर दिया। 9 महीनों के बाद, यह कहना सुरक्षित है कि टैबी अंततः मॉडलों को चलाने के लिए एक स्थिर प्रोग्राम है।
अनस्प्लैश पर एनी स्प्रैट द्वारा फोटो
सॉफ़्टवेयर विकसित करने के अपने पूरे समय के दौरान, मुझे कभी भी थकावट का दौर नहीं आया। इस पर विश्वास करना कठिन है क्योंकि सॉफ़्टवेयर जगत में बर्नआउट एक सामान्य बात है, लेकिन मैं पिछले 6 वर्षों से हमेशा कुछ न कुछ कोड करना चाहता था। कोडिंग मेरा पसंदीदा शगल है और यह मुझे दिन भर के तनाव से बचने में मदद करता है।
हालांकि, टैबी और एआई समुदाय ने सामान्य तौर पर चीजें बदल दीं। शुरुआत में, मैंने बहुत सारे दोस्त और ऐसे लोग बनाए जिनकी एआई के उभरते क्षेत्र की खोज में समान रुचि थी। मेरा समुदाय हर दिन वॉयस कॉल में संलग्न रहता था और क्षेत्र में क्या नया है इसके बारे में परियोजनाओं और विचारों को साझा करने पर ध्यान केंद्रित करता था। इसने विकास को मज़ेदार और मनोरंजक बना दिया क्योंकि मुझे समान विचारधारा वाले लोगों के साथ घूमने और नए विचार साझा करने का मौका मिला।
दुर्भाग्य से, उन वॉयस कॉल में कम लोग आने लगे और ऐसा कम ही होने लगा। मैं मेडिकल स्कूल का पहला वर्ष पूरा करने के कारण भी बहुत तनाव में था। ऑनलाइन दुनिया में, यह मेरे लिए अकेलेपन का एक बड़ा दौर था और टैबी को विकसित करना मेरे मेड छात्र जीवन के ऊपर एक बोझ जैसा महसूस हुआ। आख़िरकार, इन घटनाओं की परिणति हताशा और थकान की एक बड़ी गांठ के रूप में हुई। इसे हल करने के लिए, मैंने AI से अनिश्चितकालीन ब्रेक लेने का फैसला किया।
अपने ब्रेक के दौरान, मैंने टैबी से दूर समय बिताया और अपनी गर्मी की छुट्टियों का आनंद लेते हुए अधिक समय बिताया। मैंने वास्तव में कुछ पुराने iOS ऐप प्रोजेक्ट्स पर काम किया और अपने परिवार के साथ समय बिताया। आजकल, मैं फिर से टैबी विकसित करने में लग गया हूँ। जिन वॉइस कॉल्स में मैं हिस्सा लेता था, वे संभवतः एआई प्रचार के लुप्त होने के कारण लंबे समय तक नहीं होंगी। इसे निगलना कठिन है, लेकिन मुझे निरंतर विकास के लिए अलग-अलग प्रेरणाएँ मिली हैं।
टैबी मेरा अब तक का पहला एलएलएम प्रोजेक्ट था। यह किसी तरह समुदाय के भीतर एक लोकप्रिय नाम बन गया और मुझे प्रबंधन के गहरे अंत में डाल दिया गया। यह जानते हुए, यहां कुछ विचार हैं जो मैंने इस अनुभव से सीखे हैं।
जानें कि आप किसे सेवा देना चाहते हैं: कोई भी ओपन सोर्स प्रोजेक्ट का उपयोग कर सकता है। टैबी के लिए, मैं उन सुविधाओं को प्राथमिकता देता हूं जिनसे प्रोजेक्ट के उपयोग में आसानी, मेरे दोस्तों और मुझे फायदा होगा। इस दर्शन को ध्यान में रखते हुए, मैं अपना शेड्यूल प्रबंधित कर सकता हूं और मुझे पता चल जाएगा कि किन सुविधाओं पर काम करना है।
अपनी सीमाएं समझें: बर्नआउट मज़ेदार नहीं है। जो मैंने किया वह मत करो और अपने आप को बर्बाद मत करो क्योंकि एक उपयोगकर्ता के पास अनगिनत बार कोई समस्या है। यदि निराशा, क्रोध, या ऊब की भावनाएँ कभी प्रकट हों, तो विराम लें। कभी-कभी आराम करना अच्छा होता है।
हर किसी के लिए पीछे की ओर न झुकें: एक विचार पहली बार प्रस्तुत होने पर अच्छा लग सकता है, लेकिन लोग यह नहीं समझते हैं कि डेवलपर को बाद में इस सुविधा को बनाए रखने की आवश्यकता है। यदि यह कष्टकारी है और इसका अधिक उपयोग नहीं किया गया है, तो सुविधा कायम नहीं रह पाएगी और तकनीकी ऋण बन जाएगी। याद रखें कि इंटरनेट पर यादृच्छिक अजनबियों के पास हमेशा विचार होते हैं। यह आप पर या आपकी टीम पर निर्भर करता है कि किसे दिमागी ताकत देनी है।
कुछ ऐसा बनाएं जो आपको पसंद हो और जिसका आनंद लें: डेवलपर्स अक्सर किसी प्रोजेक्ट का आनंद खो देते हैं क्योंकि इसे बनाए रखना परेशानी भरा हो सकता है और इसमें लंबा समय लग सकता है। यह विशेष रूप से सच है यदि डेवलपर अब परियोजना का सक्रिय रूप से उपयोग नहीं करता है। पता लगाएँ कि आपकी प्रेरणा क्या है, और यदि यह बदलती है, तो ठीक है।
मैं संभवतः किसी अन्य लेख में इनके बारे में विस्तार से बताऊंगा क्योंकि यह अपना विषय हो सकता है, लेकिन मुझे लगता है कि टैबी पर काम करने से मुझे इस बारे में अधिक जानकारी मिली है कि मैं अपनी परियोजनाओं को कैसे काम करना चाहता हूं। इसके अलावा, ओपन सोर्स समुदाय के बारे में मेरा ज्ञान विस्तारित हुआ है।
मैं उन सभी लोगों का आभारी हूं जो TabbyAPI और ExllamaV2 दोनों को बेहतर बनाने के लिए प्रतिदिन योगदान देते हैं और सुझाव देते हैं। सामान्य उपयोग के लिए बेहतर काम करने के लिए हर कोई कार्यक्रमों को परिष्कृत और बेहतर बनाने में मदद करता है। मैं एक व्यक्ति हूं और मदद करने से मुझे बहुत कुछ मिलता है।
निकट भविष्य के लिए, मैं टैबी पर जितना काम कर रहा हूं उसमें कटौती करने जा रहा हूं। परियोजना अभी भी मजबूती से चल रही है और कई लोग इसे सुधारने के लिए प्रतिबद्ध हैं, लेकिन मेरा मानसिक स्वास्थ्य अधिक महत्वपूर्ण है और ब्रेक लेने से इसमें मदद मिलेगी।
इस पूर्वव्यापी को पढ़ने के लिए धन्यवाद। यदि आप मेरे बारे में और मैं क्या करता हूं इसके बारे में अधिक जानना चाहते हैं, तो कृपया Kingbri.dev पर जाएं।
ब्रायन डेशोर की निजी वेबसाइट
महत्वपूर्ण
रीडमी के अलावा, आरंभ करने के बारे में जानकारी के लिए कृपया विकी पेज पढ़ें!
टिप्पणी
मदद की ज़रूरत है? डिस्कॉर्ड सर्वर से जुड़ें और टैबी भूमिका प्राप्त करें। प्रश्न पूछते समय कृपया अच्छा व्यवहार करें।
एक फास्टएपीआई आधारित एप्लिकेशन जो Exllamav2 बैकएंड का उपयोग करके एलएलएम (बड़े भाषा मॉडल) का उपयोग करके टेक्स्ट उत्पन्न करने की अनुमति देता है
यह प्रोजेक्ट रोलिंग रिलीज़ के रूप में चिह्नित है। आगे चलकर इसमें बग और परिवर्तन हो सकते हैं। कृपया ध्यान रखें कि आवश्यकता पड़ने पर आपको निर्भरताएँ पुनः स्थापित करने की आवश्यकता हो सकती है।
TabbyAPI केवल कुछ ही उपयोगकर्ताओं के लिए एक हॉबी प्रोजेक्ट है। यह उत्पादन सर्वर पर चलने के लिए नहीं है। उसके लिए, कृपया अन्य बैकएंड देखें जो उन कार्यभार का समर्थन करते हैं।
महत्वपूर्ण
यह README आरंभ करने के लिए नहीं है। कृपया विकी पढ़ें।
अधिक जानकारी के लिए विकी पढ़ें। इसमें इंस्टॉलेशन, कॉन्फ़िगरेशन, सैंपलिंग, एपीआई उपयोग और बहुत कुछ के लिए उपयोगकर्ता-सामना वाले दस्तावेज़ शामिल हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3