कई कारोबारों को चलाने के लिए, ईमेल के साथ-साथ ग्राहकों के सवालों का जवाब देना ज़रूरी है. हालांकि, यह काम जल्दी बोझिल हो सकता है. थोड़ी मेहनत करके, Gemma जैसे आर्टिफ़िशियल इंटेलिजेंस (एआई) मॉडल की मदद से, इस काम को आसान बनाया जा सकता है.
हर कारोबार ईमेल जैसी पूछताछ को अलग तरीके से हैंडल करता है, इसलिए यह जनरेटिव एआई जैसी टेक्नोलॉजी को लोगों की ज़रूरतों के हिसाब से तैयार करना ज़रूरी है आपका कारोबार. इस प्रोजेक्ट में, बेकरी को भेजे गए ईमेल से ऑर्डर की जानकारी को स्ट्रक्चर्ड डेटा में बदलने की समस्या को हल किया गया है. इससे, ऑर्डर मैनेज करने वाले सिस्टम में जानकारी को तुरंत जोड़ा जा सकता है. 10 से 20 सवालों के उदाहरणों और अपने मनमुताबिक आउटपुट का इस्तेमाल करके, Gemma मॉडल को अपने ग्राहकों के ईमेल प्रोसेस करने के लिए ट्यून किया जा सकता है. इससे, आपको तुरंत जवाब देने में मदद मिलती है. साथ ही, इसे अपने मौजूदा कारोबारी सिस्टम के साथ इंटिग्रेट किया जा सकता है. इस प्रोजेक्ट को एआई (AI) ऐप्लिकेशन पैटर्न के तौर पर बनाया गया है. इसे अपने कारोबार के लिए, Gemma मॉडल से फ़ायदा पाने के लिए, बढ़ाया और अडैप्ट किया जा सकता है.
प्रोजेक्ट के वीडियो के बारे में खास जानकारी पाने और इसे बढ़ाने का तरीका जानने के लिए, जिसमें प्रोजेक्ट से जुड़ी अहम जानकारी भी शामिल है जिन लोगों ने इसे बनाया है, वहीं से देखें बिज़नेस ईमेल में एआई असिस्टेंट की सुविधा Google के एआई की मदद से बनाया गया वीडियो. Gemma Cookbook के कोड रिपॉज़िटरी में जाकर, इस प्रोजेक्ट का कोड भी देखा जा सकता है. इसके अलावा, प्रोजेक्ट को बढ़ाने के लिए, यहां दिया गया तरीका अपनाएं निर्देश.
खास जानकारी
इस ट्यूटोरियल में, Gemma, Python, और Flask की मदद से बनाए गए, कारोबार के लिए ईमेल सहायता ऐप्लिकेशन को सेट अप करने, चलाने, और उसे बेहतर बनाने का तरीका बताया गया है. प्रोजेक्ट इस टूल से एक बेसिक वेब यूज़र इंटरफ़ेस मिलता है. इसमें अपनी ज़रूरत के हिसाब से बदलाव किया जा सकता है. इस ऐप्लिकेशन को, ग्राहक के ईमेल से डेटा निकालकर, किसी काल्पनिक बेकरी के लिए स्ट्रक्चर में बदलने के लिए बनाया गया है. इस ऐप्लिकेशन पैटर्न का इस्तेमाल किसी भी कारोबार के लिए किया जा सकता है एक ऐसा टास्क है जो टेक्स्ट इनपुट और टेक्स्ट आउटपुट का इस्तेमाल करता है.
पहला डायग्राम. बेकरी से जुड़ी ईमेल क्वेरी को प्रोसेस करने के लिए प्रोजेक्ट का यूज़र इंटरफ़ेस
हार्डवेयर की आवश्यकताएं
ट्यूनिंग की यह प्रोसेस, ऐसे कंप्यूटर पर चलाएं जिसमें ग्राफ़िक्स प्रोसेसिंग यूनिट (जीपीयू) या टेन्सर प्रोसेसिंग यूनिट (टीपीयू) हो. साथ ही, उसमें मौजूदा मॉडल और ट्यूनिंग डेटा को सेव करने के लिए, ज़रूरत के मुताबिक जीपीयू या टीपीयू मेमोरी हो. इस प्रोजेक्ट में ट्यूनिंग कॉन्फ़िगरेशन को चलाने के लिए, आपको करीब 16 जीबी जीपीयू मेमोरी, इतनी ही सामान्य रैम, और कम से कम 50 जीबी डिस्क स्पेस की ज़रूरत होगी.
Colab का इस्तेमाल करके, इस ट्यूटोरियल के Gemma मॉडल की ट्यूनिंग वाले हिस्से को चलाया जा सकता है T4 जीपीयू रनटाइम वाला एनवायरमेंट. अगर आपको यह प्रोजेक्ट, Google Cloud के वीएम इंस्टेंस पर बनाना है, तो इन ज़रूरी शर्तों के हिसाब से इंस्टेंस को कॉन्फ़िगर करें:
- जीपीयू हार्डवेयर: इस प्रोजेक्ट को चलाने के लिए, NVIDIA T4 की ज़रूरत होती है. हालांकि, NVIDIA L4 या इसके बाद के वर्शन का इस्तेमाल करने का सुझाव दिया जाता है
- ऑपरेटिंग सिस्टम: Linux पर डीप लर्निंग विकल्प चुनें. खास तौर पर, पहले से इंस्टॉल किए गए GPU सॉफ़्टवेयर ड्राइवर के साथ CUDA 12.3 M124 वाला डीप लर्निंग VM.
- बूट डिस्क का साइज़: अपने डिवाइस के लिए डिस्क में कम से कम 50 जीबी जगह खाली करें डेटा, मॉडल, और सपोर्ट करने वाले सॉफ़्टवेयर के बारे में जानकारी शामिल होती है.
प्रोजेक्ट सेटअप करना
इन निर्देशों की मदद से, इस प्रोजेक्ट को डेवलपमेंट और टेस्टिंग के लिए तैयार किया जा सकता है. सामान्य सेटअप चरणों में आवश्यक सॉफ़्टवेयर इंस्टॉल करना, कोड रिपॉज़िटरी से प्रोजेक्ट की क्लोनिंग करना, कुछ एनवायरमेंट सेट करना वैरिएबल के साथ-साथ Python लाइब्रेरी इंस्टॉल करना और वेब ऐप्लिकेशन की जांच करना.
इंस्टॉल और कॉन्फ़िगर करना
यह प्रोजेक्ट पैकेज मैनेज करने के लिए, Python 3 और वर्चुअल एनवायरमेंट (venv
) का इस्तेमाल करता है
और एप्लिकेशन को चलाएं. Linux के लिए, इंस्टॉल करने के ये निर्देश हैं
होस्ट मशीन.
ज़रूरी सॉफ़्टवेयर इंस्टॉल करने के लिए:
Python 3 और Python के लिए
venv
वर्चुअल एनवायरमेंट पैकेज इंस्टॉल करें:sudo apt update sudo apt install git pip python3-venv
प्रोजेक्ट का क्लोन बनाएं
अपने डेवलपमेंट कंप्यूटर पर प्रोजेक्ट कोड डाउनलोड करें. आपको इनकी ज़रूरत होगी git सोर्स कंट्रोल सॉफ़्टवेयर का इस्तेमाल करके, प्रोजेक्ट का सोर्स कोड.
प्रोजेक्ट कोड डाउनलोड करने के लिए:
यहां दिए गए कमांड का इस्तेमाल करके, Git डेटा स्टोर करने की जगह को क्लोन करें:
git clone https://github.com/google-gemini/gemma-cookbook.git
इसके अलावा, स्पार्स चेकआउट का इस्तेमाल करने के लिए, अपना लोकल GitHub रिपॉज़िटरी कॉन्फ़िगर करें, इसलिए आपके पास केवल प्रोजेक्ट की फ़ाइलें हों:
cd gemma-cookbook/ git sparse-checkout set Demos/business-email-assistant/ git sparse-checkout init --cone
Python लाइब्रेरी इंस्टॉल करना
venv
Python वर्चुअल एनवायरमेंट के साथ Python लाइब्रेरी इंस्टॉल करें
Python पैकेज और डिपेंडेंसी को मैनेज करने के लिए चालू किया गया है. pip
इंस्टॉलर की मदद से Python लाइब्रेरी इंस्टॉल करने से पहले, Python वर्चुअल एनवायरमेंट चालू करना न भूलें. Python वर्चुअल एनवायरमेंट का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, यहां जाएं:
Python venv दस्तावेज़.
Python लाइब्रेरी इंस्टॉल करने के लिए:
टर्मिनल विंडो में,
business-email-assistant
डायरेक्ट्री पर जाएं:cd Demos/business-email-assistant/
इस प्रोजेक्ट के लिए, Python वर्चुअल एनवायरमेंट (venv) को कॉन्फ़िगर और चालू करें:
python3 -m venv venv source venv/bin/activate
setup_python
स्क्रिप्ट का इस्तेमाल करके, इस प्रोजेक्ट के लिए ज़रूरी Python लाइब्रेरी इंस्टॉल करें:./setup_python.sh
एनवायरमेंट वैरिएबल सेट करना
इस प्रोजेक्ट को चलाने के लिए, कुछ एनवायरमेंट वैरिएबल की ज़रूरत होती है. इनमें Kaggle उपयोगकर्ता नाम और Kaggle एपीआई टोकन शामिल है. आपके पास Kaggle होना चाहिए
साथ ही, Gemma मॉडल ऐक्सेस करने का अनुरोध करें, ताकि आप उन्हें डाउनलोड कर पाएँ. इस प्रोजेक्ट के लिए, आपको दो .env
फ़ाइलों में अपना Kaggle उपयोगकर्ता नाम और Kaggle एपीआई टोकन जोड़ना होगा. ये फ़ाइलें, वेब ऐप्लिकेशन और ट्यूनिंग प्रोग्राम, दोनों के लिए पढ़ी जाती हैं.
एनवायरमेंट वैरिएबल सेट करने के लिए:
- Kaggle के दस्तावेज़ में दिए गए निर्देशों का पालन करके, अपना Kaggle उपयोगकर्ता नाम और टोकन कुंजी पाएं.
- Gemma सेटअप पेज पर, Gemma का ऐक्सेस पाएं के निर्देशों का पालन करके, Gemma मॉडल का ऐक्सेस पाएं.
- प्रोजेक्ट के लिए एनवायरमेंट वैरिएबल फ़ाइलें बनाएं. ऐसा करने के लिए,
प्रोजेक्ट के क्लोन में, इन हर जगह पर
.env
टेक्स्ट फ़ाइल मौजूद है:email-processing-webapp/.env model-tuning/.env
.env
टेक्स्ट फ़ाइलें बनाने के बाद, दोनों फ़ाइलों में ये सेटिंग जोड़ें:KAGGLE_USERNAME=<YOUR_KAGGLE_USERNAME_HERE> KAGGLE_KEY=<YOUR_KAGGLE_KEY_HERE>
ऐप्लिकेशन को चलाना और उसकी जांच करना
प्रोजेक्ट को इंस्टॉल और कॉन्फ़िगर करने के बाद, वेब ऐप्लिकेशन को चलाकर पुष्टि करें कि आपने इसे सही तरीके से कॉन्फ़िगर किया है. आपको ऐसा करना चाहिए अपने इस्तेमाल के लिए प्रोजेक्ट में बदलाव करने से पहले, इसे बेसलाइन जांच के तौर पर करें.
प्रोजेक्ट को चलाने और उसकी जांच करने के लिए:
टर्मिनल विंडो में,
email-processing-webapp
डायरेक्ट्री पर जाएं:cd business-email-assistant/email-processing-webapp/
run_app
स्क्रिप्ट का इस्तेमाल करके ऐप्लिकेशन चलाएं:./run_app.sh
वेब ऐप्लिकेशन शुरू करने के बाद, प्रोग्राम कोड उस यूआरएल की सूची बनाता है जहां तो ब्राउज़ करके टेस्ट किया जा सकता है. आम तौर पर, यह पता:
http://127.0.0.1:5000/
वेब इंटरफ़ेस में, पहले इनपुट के नीचे दिया गया डेटा पाएं बटन दबाएं फ़ील्ड का इस्तेमाल करके, मॉडल से रिस्पॉन्स जनरेट किया जा सकता है.
ऐप्लिकेशन चलाने के बाद, मॉडल से मिलने वाली पहली प्रतिक्रिया में ज़्यादा समय लगता है क्योंकि इसे पहली जनरेशन में रन करने के दौरान शुरुआती चरण पूरे करने होते हैं. बाद में अनुरोध और पहले से चल रहे वेब ऐप्लिकेशन पर जनरेट करना कम समय में पूरा हो जाता है.
ऐप्लिकेशन की अवधि बढ़ाएं
एक बार आपके ऐप्लिकेशन को चलाने पर, आप उपयोगकर्ता को संशोधित करके उसे इंटरफ़ेस और बिज़नेस लॉजिक, ताकि यह आपके काम के टास्क के लिए काम करे या आपके कारोबार को. Gemma मॉडल के व्यवहार में बदलाव करने के लिए, ऐप्लिकेशन कोड को, ऐप्लिकेशन से भेजे जाने वाले प्रॉम्प्ट के कॉम्पोनेंट बदलकर जनरेटिव एआई मॉडल की ज़रूरत है.
ऐप्लिकेशन, उपयोगकर्ता से मिले इनपुट डेटा के साथ-साथ मॉडल को निर्देश देता है. आपके पास इन निर्देशों में बदलाव करने का विकल्प है मॉडल के व्यवहार में बदलाव करने के लिए. जैसे, पैरामीटर के नाम तय करना और JSON के स्ट्रक्चर की जानकारी होनी चाहिए. के व्यवहार को बदलने का एक आसान तरीका यह मॉडल, इस मॉडल के लिए अतिरिक्त निर्देश या दिशा-निर्देश देता है जवाब, जैसे कि यह तय करना कि जनरेट किए गए जवाबों में, मार्कडाउन फ़ॉर्मैटिंग.
प्रॉम्प्ट के निर्देशों में बदलाव करने के लिए:
- डेवलपमेंट प्रोजेक्ट में,
business-email-assistant/email-processing-webapp/app.py
कोड फ़ाइल खोलें. app.py
कोड में,get_prompt():
फ़ंक्शन में अतिरिक्त निर्देश जोड़ें:def get_prompt(): return """ Extract the relevant details of this request and return them in JSON code, with no additional markdown formatting:\n"""
इस उदाहरण में "अतिरिक्त मार्कडाउन फ़ॉर्मैटिंग के बिना" वाक्यांश जोड़ा गया है तक निर्देश.
प्रॉम्प्ट के लिए अतिरिक्त निर्देश देने से, जनरेट होने वाली प्रोसेस पर काफ़ी असर पड़ सकता है साथ ही, इसे लागू करने में कम मेहनत लगती है. आपको यह आज़माना चाहिए विधि का उपयोग करके यह देखा जा सकता है कि क्या आप मॉडल से अपना पसंदीदा व्यवहार प्राप्त कर सकते हैं. हालांकि, Gemma मॉडल के व्यवहार में बदलाव करने के लिए प्रॉम्प्ट से जुड़े निर्देशों का इस्तेमाल करने पर, सीमाएं तय करें. खास तौर पर, मॉडल की कुल इनपुट टोकन की सीमा, जो Gemma 2 के लिए 8,192 टोकन. इसके लिए, आपको प्रॉम्प्ट की ज़्यादा जानकारी वाले निर्देशों का पालन करना होगा आपके द्वारा उपलब्ध कराए जाने वाले नए डेटा के आकार के साथ साथ आप उस सीमा के अंदर रहें.
मॉडल को ट्यून करना
जेमा मॉडल की फ़ाइन-ट्यूनिंग करके इसे पाने का सुझाया गया तरीका ख़ास टास्क के लिए ज़्यादा भरोसे के साथ जवाब दें. खास तौर पर, अगर आपको मॉडल से किसी खास स्ट्रक्चर में JSON जनरेट करना है, जिसमें खास नाम वाले पैरामीटर शामिल हों, तो आपको उस व्यवहार के लिए मॉडल को ट्यून करना चाहिए. मॉडल से जिस टास्क को पूरा करना है उसके आधार पर, 10 से 20 उदाहरणों वाली सुविधा. ट्यूटोरियल के इस सेक्शन में, किसी खास टास्क के लिए Gemma मॉडल पर फ़ाइन-ट्यूनिंग को सेट अप करने और चलाने का तरीका बताया गया है.
नीचे दिए गए निर्देश बताते हैं कि किसी साइट पर फ़ाइन-ट्यूनिंग ऑपरेशन कैसे करना है हालांकि, VM एनवायरमेंट का इस्तेमाल करके ट्यूनिंग कार्रवाई की जा सकती है जुड़ा हुआ Colab Noteboook को शामिल किया है.
हार्डवेयर की ज़रूरी शर्तें
फ़ाइन-ट्यूनिंग के लिए कंप्यूट की ज़रूरी शर्तें बाकी प्रोजेक्ट के लिए हार्डवेयर की ज़रूरी शर्तें पूरी करें. T4 जीपीयू रनटाइम के साथ Colab एनवायरमेंट में ट्यूनिंग ऑपरेशन चलाया जा सकता है. इसके लिए, इनपुट टोकन की संख्या को 256 और बैच साइज़ को 1 पर सेट करें.
डेटा तैयार करना
Gemma मॉडल को ट्यून करने से पहले, आपको ट्यूनिंग के लिए डेटा तैयार करना होगा. टास्क कब शुरू होगा आप किसी खास टास्क के लिए मॉडल ट्यून कर रहे हैं, तो आपको अनुरोध के एक सेट की ज़रूरत होगी और रिस्पॉन्स के उदाहरण. इन उदाहरणों में अनुरोध का टेक्स्ट दिखना चाहिए, बिना किसी विज्ञापन के निर्देश और अपेक्षित रिस्पॉन्स टेक्स्ट शामिल करें. शुरुआत करने के लिए आपको तैयारी करनी होगी. करीब 10 उदाहरणों वाला डेटासेट. इन उदाहरणों में, अलग-अलग तरह के अनुरोध और उनका सही जवाब होना चाहिए. पक्का करें कि अनुरोध और जवाब एक जैसे न हों. ऐसा होने पर, मॉडल के जवाब एक जैसे हो सकते हैं और अनुरोधों में बदलाव होने पर, वे सही तरीके से अडजस्ट नहीं हो पाएंगे. अगर आप मॉडल को ट्यून करके स्ट्रक्चर्ड डेटा फ़ॉर्मैट बनाने के लिए, पक्का करें कि प्रतिक्रियाएं आपके मनचाहे डेटा आउटपुट फ़ॉर्मैट के पूरी तरह से उनके अनुरूप हों. इस टेबल में, उदाहरण के तौर पर दिए गए कोड के डेटासेट के कुछ सैंपल रिकॉर्ड दिखाए गए हैं:
अनुरोध | जवाब |
---|---|
नमस्ते इंडियन बेकरी सेंट्रल,\nक्या आपको 10 पेंडा मिलते हैं, और क्या हाथ में तीस बंडी लड्डू हैं? क्या आप वैनिला फ़्रॉस्टिंग भी बेचते हैं और चॉकलेट फ़्लेवर के केक. मुझे छह इंच का साइज़ चाहिए | { "type": "inquiry", "items": [ { "name": "pendas", "quantity": 10 }, { "name": "bundi ladoos", "quantity": 30 }, { "name": "केक", "filling": null, "फ़्रॉस्टिंग": "वैनिला", "फ़्लेवर": "चॉकलेट", "size": "6 इंच" } } |
मैंने Google Maps पर आपका कारोबार देखा. क्या आपके स्टोर में जेलाबी और गुलाब मिलते हैं जामुन? | { "type": "inquiry", "items": [ { "name": "jellabi", "quantity": null }, { "name": "gulab jamun", "quantity": null } ] } |
टेबल 1. बेकरी के ईमेल डेटा को निकालने वाले टूल के लिए, ट्यूनिंग डेटासेट की आंशिक सूची.
डेटा फ़ॉर्मैट और लोड करना
ट्यूनिंग डेटा को अपने हिसाब से किसी भी फ़ॉर्मैट में सेव किया जा सकता है. जैसे, डेटाबेस रिकॉर्ड, JSON फ़ाइलें, CSV या सादा टेक्स्ट फ़ाइलें. हालांकि, इसके लिए ज़रूरी है कि आपके पास Python कोड की मदद से रिकॉर्ड वापस पाने का तरीका हो. यह प्रोजेक्ट JSON फ़ाइलों को पढ़ता है
डिक्शनरी के ऑब्जेक्ट के कलेक्शन में, data
डायरेक्ट्री से शामिल किया जाता है.
इस उदाहरण में, ट्यूनिंग प्रोग्राम में prepare_tuning_dataset()
फ़ंक्शन का इस्तेमाल करके, ट्यूनिंग डेटासेट को model-tuning/main.py
मॉड्यूल में लोड किया गया है:
def prepare_tuning_dataset():
# collect data from JSON files
prompt_data = read_json_files_to_dicts("./data")
...
जैसा कि पहले बताया गया है, डेटासेट को किसी भी फ़ॉर्मैट में सेव किया जा सकता है. हालांकि, यह ज़रूरी है कि आप उससे जुड़े जवाबों के साथ अनुरोधों को वापस पा सकें और उन्हें टेक्स्ट स्ट्रिंग में इकट्ठा कर सकें. इस टेक्स्ट स्ट्रिंग का इस्तेमाल ट्यूनिंग रिकॉर्ड के तौर पर किया जाता है.
ट्यूनिंग रिकॉर्ड इकट्ठा करना
असल ट्यूनिंग प्रोसेस के लिए, प्रोग्राम हर अनुरोध और जवाब को एक स्ट्रिंग में इकट्ठा करता है. इसमें प्रॉम्प्ट निर्देश और जवाब का कॉन्टेंट शामिल होता है. इसके बाद, ट्यूनिंग प्रोग्राम, मॉडल के इस्तेमाल के लिए स्ट्रिंग को टोकने में बदल देता है. ट्यूनिंग रिकॉर्ड को इकट्ठा करने का कोड यहां देखा जा सकता है:
model-tuning/main.py
मॉड्यूल prepare_tuning_dataset()
फ़ंक्शन के बारे में नीचे बताया गया है:
def prepare_tuning_dataset():
...
# prepare data for tuning
tuning_dataset = []
template = "{instruction}\n{response}"
for prompt in prompt_data:
tuning_dataset.append(template.format(instruction=prompt["prompt"],
response=prompt["response"]))
return tuning_dataset
यह फ़ंक्शन, डेटा को इनपुट के तौर पर लेता है और लाइन ब्रेक जोड़कर उसे फ़ॉर्मैट करता है निर्देश और प्रतिक्रिया के बीच में सेट करें.
मॉडल का वेट जनरेट करें
ट्यूनिंग का डेटा जगह पर मौजूद और लोड हो जाने पर, ट्यूनिंग शुरू की जा सकती है कार्यक्रम. इस उदाहरण के ऐप्लिकेशन के लिए ट्यूनिंग की प्रोसेस, Keras NLP लाइब्रेरी का इस्तेमाल करती है. इससे, मॉडल को लो रैंक अडैप्टेशन या LoRA तकनीक की मदद से ट्यून किया जाता है. इससे, मॉडल के नए वेट जनरेट होते हैं. पूरी सटीक ट्यूनिंग की तुलना में, LoRA का इस्तेमाल करना कितना है बहुत कम मेमोरी बचाई जाती है, क्योंकि यह मॉडल का वज़न. इसके बाद, मॉडल के व्यवहार को बदलने के लिए, इन अनुमानित वेट को मौजूदा मॉडल के वेट पर ओवरले किया जा सकता है.
ट्यूनिंग रन करने और नए वेट का हिसाब लगाने के लिए:
टर्मिनल विंडो में,
model-tuning/
डायरेक्ट्री पर जाएं.cd business-email-assistant/model-tuning/
tune_model
स्क्रिप्ट का इस्तेमाल करके ट्यून करने की प्रोसेस चलाएं:./tune_model.sh
ट्यून करने की प्रोसेस में कुछ मिनट लगते हैं. यह समय, आपके उपलब्ध कंप्यूट रिसॉर्स पर निर्भर करता है. इसके पूरा होने पर, ट्यूनिंग प्रोग्राम नया *.h5
लिखता है
model-tuning/weights
डायरेक्ट्री में नीचे दिए गए फ़ॉर्मैट वाली फ़ाइल के साथ वज़न शुरू करें:
gemma2-2b_inquiry_tuned_4_epoch##.lora.h5
समस्या का हल
अगर ट्यूनिंग पूरी नहीं होती है, तो इसकी दो वजहें हो सकती हैं:
- मेमोरी खत्म हो गई है या संसाधन खत्म हो गए: ये गड़बड़ियां तब होती हैं, जब
ट्यूनिंग प्रोसेस ऐसी मेमोरी का अनुरोध करती है जो उपलब्ध जीपीयू मेमोरी या सीपीयू से ज़्यादा होती है
मेमोरी. पक्का करें कि ट्यून करने की प्रोसेस के दौरान, वेब ऐप्लिकेशन न चल रहा हो. अगर 16 जीबी जीपीयू मेमोरी वाले डिवाइस को ट्यून किया जा रहा है, तो
पक्का करता है कि आपने
token_limit
को 256 औरbatch_size
पर सेट किया हो 1 पर सेट करें. - GPU ड्राइवर इंस्टॉल नहीं हैं या JAX के साथ काम नहीं करते: पलटने की प्रोसेस यह ज़रूरी है कि कंप्यूट डिवाइस में हार्डवेयर ड्राइवर इंस्टॉल हों नए वर्शन के साथ काम करता है JAX लाइब्रेरी. ज़्यादा जानकारी के लिए, यह देखें JAX इंस्टॉल करना दस्तावेज़.
ट्यून किए गए मॉडल को डिप्लॉय करें
ट्यूनिंग की प्रोसेस, ट्यूनिंग डेटा और ट्यूनिंग ऐप्लिकेशन में सेट किए गए एपिसोड की कुल संख्या के आधार पर कई वेट जनरेट करती है. डिफ़ॉल्ट रूप से, ट्यूनिंग प्रोग्राम, तीन मॉडल के वेट वाली फ़ाइलें जनरेट करता है. हर ट्यूनिंग epoch के लिए एक फ़ाइल जनरेट होती है. ट्यूनिंग के हर चरण में वेट बनते हैं, जो ट्यूनिंग डेटा के नतीजों को ज़्यादा सटीक तरीके से दिखाते हैं. हर epoch के लिए, सटीक होने की दर यहां देखी जा सकती है: ट्यूनिंग प्रोसेस का टर्मिनल आउटपुट, यहां दिया गया है:
...
8/8 ━━━━━━━━━━━━━━━━━━━━ 121s 195ms/step - loss: 0.5432 - sparse_categorical_accuracy: 0.5982
Epoch 2/3
8/8 ━━━━━━━━━━━━━━━━━━━━ 2s 194ms/step - loss: 0.3320 - sparse_categorical_accuracy: 0.6966
Epoch 3/3
8/8 ━━━━━━━━━━━━━━━━━━━━ 2s 192ms/step - loss: 0.2135 - sparse_categorical_accuracy: 0.7848
हालांकि, आपको सटीक दर की तुलना करनी है, लेकिन यह 0.80 के आस-पास है, लेकिन आप चाहते हैं कि दर बहुत ज़्यादा हो या 1.00 के बहुत करीब हो, क्योंकि इसका मतलब है कि ट्यूनिंग के डेटा को ज़रूरत से ज़्यादा बढ़ाया जा रहा है. ऐसा होने पर, मॉडल उन अनुरोधों पर अच्छा प्रदर्शन नहीं करता जो इससे काफ़ी अलग हैं ट्यूनिंग के उदाहरण. डिफ़ॉल्ट रूप से, डिप्लॉयमेंट स्क्रिप्ट में epoch 3 को चुना जाता है हैं, जो आम तौर पर 0.80 के आस-पास सटीक होते हैं.
जनरेट किए गए वेट को वेब ऐप्लिकेशन में डिप्लॉय करने के लिए:
टर्मिनल विंडो में,
model-tuning
डायरेक्ट्री पर जाएं:cd business-email-assistant/model-tuning/
deploy_weights
स्क्रिप्ट का इस्तेमाल करके ट्यूनिंग की प्रोसेस चलाएं:./deploy_weights.sh
इस स्क्रिप्ट को चलाने के बाद, आपको email-processing-webapp/weights/
डायरेक्ट्री में एक नई *.h5
फ़ाइल दिखेगी.
नए मॉडल की जांच करें
ऐप्लिकेशन में नई सीमाएं लागू करने के बाद, उसे आज़माने का समय आ जाता है ट्यून किया जाने वाला नया मॉडल. आप वेब ऐप्लिकेशन को फिर से चलाकर ऐसा कर सकते हैं और कोई जवाब जनरेट कर रहा है.
प्रोजेक्ट को चलाने और उसकी जांच करने के लिए:
टर्मिनल विंडो में,
email-processing-webapp
डायरेक्ट्री पर जाएं:cd business-email-assistant/email-processing-webapp/
run_app
स्क्रिप्ट का इस्तेमाल करके ऐप्लिकेशन चलाएं:./run_app.sh
वेब ऐप्लिकेशन शुरू करने के बाद, प्रोग्राम कोड उस यूआरएल की सूची बनाता है जहां ब्राउज़ करके जांच की जा सकती है, आम तौर पर यह पता है:
http://127.0.0.1:5000/
मॉडल से जवाब पाने के लिए, वेब इंटरफ़ेस में पहले इनपुट फ़ील्ड के नीचे मौजूद, डेटा पाएं बटन दबाएं.
अब आपने Gemma मॉडल को किसी ऐप्लिकेशन में ट्यून और डिप्लॉय कर लिया है! ऐप्लिकेशन के साथ प्रयोग करें और अपने टास्क के लिए, ट्यून किए गए मॉडल की जनरेशन क्षमता की सीमाएं तय करने की कोशिश करें. अगर आपको ऐसे मामले मिलते हैं जहां मॉडल की परफ़ॉर्मेंस अच्छी नहीं है, तो उनमें से कुछ अनुरोधों को ट्यूनिंग के उदाहरण के तौर पर दिए गए डेटा की सूची में जोड़ें. इसके लिए, अनुरोध जोड़ें और सही जवाब दें. इसके बाद, ट्यूनिंग की प्रोसेस फिर से चलाएं, नए वेट को फिर से डिप्लॉय करें, और आउटपुट की जांच करें.
अन्य संसाधन
इस प्रोजेक्ट के बारे में ज़्यादा जानकारी के लिए, Gemma Cookbook कोड रिपॉज़िटरी देखें. अगर आपको ऐप्लिकेशन बनाने में मदद चाहिए या आपको दूसरे डेवलपर के साथ मिलकर काम करना है, तो Google Developers Community Discord सर्वर पर जाएं. 'Google के एआई का इस्तेमाल करके बनाए गए प्रोजेक्ट' के बारे में ज़्यादा जानने के लिए, वीडियो प्लेलिस्ट देखें.