LLM Inference API की मदद से, लार्ज लैंग्वेज मॉडल (एलएलएम) को डिवाइस पर ही चलाया जा सकता है. इसका इस्तेमाल कई तरह के कामों के लिए किया जा सकता है. जैसे, टेक्स्ट जनरेट करना, सामान्य भाषा में जानकारी हासिल करना, और दस्तावेज़ों की खास जानकारी पाना. इस टास्क में, टेक्स्ट से टेक्स्ट में बदलने वाले कई लार्ज लैंग्वेज मॉडल के लिए, पहले से सहायता उपलब्ध होती है. इससे, डिवाइस पर मौजूद जनरेटिव एआई मॉडल को अपने ऐप्लिकेशन और प्रॉडक्ट में लागू किया जा सकता है.
यह टास्क, Gemma के इन वैरिएंट के साथ काम करता है: Gemma-2 2B, Gemma 2B, और Gemma 7B. Gemma एक लाइटवेट और बेहतरीन ओपन मॉडल है. इसे Gemini मॉडल में इस्तेमाल की गई रिसर्च और तकनीक का इस्तेमाल करके बनाया गया है. यह इन एक्सटर्नल मॉडल के साथ भी काम करता है: Phi-2, Falcon-RW-1B, और StableLM-3B.
काम करने वाले मॉडल के अलावा, Google के AI Edge
Torch का इस्तेमाल करके, PyTorch के मॉडल को मल्टी-सिग्नेचर LiteRT (tflite
) मॉडल में एक्सपोर्ट किया जा सकता है. ये मॉडल, tokenizer पैरामीटर के साथ बंडल किए जाते हैं, ताकि LLM के अनुमान लगाने वाले एपीआई के साथ काम करने वाले टास्क बंडल बनाए जा सकें. एआई Edge Torch की मदद से बदले गए मॉडल, सिर्फ़ सीपीयू बैकएंड पर चल सकते हैं. इसलिए, ये Android और iOS पर ही काम करते हैं.
शुरू करें
अपने टारगेट प्लैटफ़ॉर्म के लिए, लागू करने से जुड़ी इनमें से किसी एक गाइड का पालन करके, इस टास्क का इस्तेमाल शुरू करें. प्लैटफ़ॉर्म के हिसाब से बनी इन गाइड में, इस टास्क को लागू करने के बुनियादी तरीके के बारे में बताया गया है. साथ ही, उपलब्ध मॉडल और सुझाए गए कॉन्फ़िगरेशन के विकल्पों का इस्तेमाल करने वाले कोड के उदाहरण भी दिए गए हैं:
वेब:
Android:
iOS
टास्क की जानकारी
इस सेक्शन में, इस टास्क की सुविधाओं, इनपुट, आउटपुट, और कॉन्फ़िगरेशन के विकल्पों के बारे में बताया गया है.
सुविधाएं
LLM Inference API में ये मुख्य सुविधाएं शामिल हैं:
- टेक्स्ट से टेक्स्ट जनरेट करना - इनपुट टेक्स्ट प्रॉम्प्ट के आधार पर टेक्स्ट जनरेट करना.
- एलएलएम चुनना - ऐप्लिकेशन को अपने खास इस्तेमाल के उदाहरणों के हिसाब से बनाने के लिए, एक से ज़्यादा मॉडल लागू करें. मॉडल को फिर से ट्रेन किया जा सकता है और उस पर पसंद के मुताबिक वेट लागू किए जा सकते हैं.
- LoRA मॉडल के साथ काम करना - अपने सभी डेटासेट पर ट्रेनिंग देकर या ओपन-सोर्स कम्यूनिटी से पहले से तैयार LoRA मॉडल का इस्तेमाल करके, LoRA मॉडल की मदद से एलएलएम की सुविधा को बढ़ाएं और उसे पसंद के मुताबिक बनाएं. यह सुविधा, AI Edge Torch Generative API की मदद से बदले गए मॉडल के साथ काम नहीं करती.
टास्क के इनपुट | टास्क के आउटपुट |
---|---|
LLM Inference API, इन इनपुट को स्वीकार करता है:
|
LLM Inference API ये नतीजे दिखाता है:
|
कॉन्फ़िगरेशन के विकल्प
इस टास्क के लिए, कॉन्फ़िगरेशन के ये विकल्प उपलब्ध हैं:
विकल्प का नाम | ब्यौरा | वैल्यू की रेंज | डिफ़ॉल्ट मान |
---|---|---|---|
modelPath |
प्रोजेक्ट डायरेक्ट्री में मॉडल को सेव करने का पाथ. | पाथ | लागू नहीं |
maxTokens |
मॉडल, ज़्यादा से ज़्यादा कितने टोकन (इनपुट टोकन + आउटपुट टोकन) हैंडल कर सकता है. | पूर्णांक | 512 |
topK |
जनरेट करने के हर चरण में, मॉडल जिन टोकन का इस्तेमाल करता है उनकी संख्या. सबसे ज़्यादा संभावित टोकन के लिए, अनुमान लगाने की सुविधा को सीमित करता है. | पूर्णांक | 40 |
temperature |
जनरेट करने के दौरान, रैंडम तरीके से जोड़े गए एलिमेंट की संख्या. ज़्यादा तापमान से जनरेट किए गए टेक्स्ट में ज़्यादा क्रिएटिविटी दिखती है, जबकि कम तापमान से अनुमान लगाने लायक टेक्स्ट जनरेट होता है. | फ़्लोट | 0.8 |
randomSeed |
टेक्स्ट जनरेट करने के दौरान इस्तेमाल किया जाने वाला रैंडम सीड. | पूर्णांक | 0 |
loraPath |
डिवाइस पर मौजूद LoRA मॉडल का ऐब्सलूट पाथ. ध्यान दें: यह सुविधा सिर्फ़ GPU मॉडल के साथ काम करती है. | पाथ | लागू नहीं |
resultListener |
नतीजे असींक्रोनस तरीके से पाने के लिए, नतीजा सुनने वाले को सेट करता है. यह सिर्फ़ तब लागू होता है, जब आस्काइन जनरेशन के लिए असाइन किए गए फ़ंक्शन को सिंक किए बिना, उसके नतीजे का इस्तेमाल किया जा रहा हो. | लागू नहीं | लागू नहीं |
errorListener |
गड़बड़ी सुनने वाले को वैकल्पिक तौर पर सेट करता है. | लागू नहीं | लागू नहीं |
मॉडल
एलएलएम इंफ़रेंस एपीआई, टेक्स्ट-टू-टेक्स्ट के कई बड़े लैंग्वेज मॉडल के साथ काम करता है. इसमें ब्राउज़र और मोबाइल डिवाइसों पर चलने के लिए ऑप्टिमाइज़ किए गए कई मॉडल के लिए, पहले से मौजूद सहायता भी शामिल है. इन छोटे मॉडल का इस्तेमाल, पूरी तरह से डिवाइस पर अनुमान लगाने के लिए किया जा सकता है.
LLM Inference API को शुरू करने से पहले, कोई मॉडल डाउनलोड करें और फ़ाइल को अपनी प्रोजेक्ट डायरेक्ट्री में सेव करें. पहले से बदले गए मॉडल का इस्तेमाल किया जा सकता है या किसी मॉडल को MediaPipe के साथ काम करने वाले फ़ॉर्मैट में बदला जा सकता है.
LLM Inference API, दो कैटगरी के मॉडल के साथ काम करता है. इनमें से कुछ मॉडल के लिए, मॉडल कन्वर्ज़न की ज़रूरत होती है. अपने मॉडल के लिए ज़रूरी चरणों के तरीके की पहचान करने के लिए, टेबल का इस्तेमाल करें.
मॉडल | कन्वर्ज़न का तरीका | इन प्लैटफ़ॉर्म पर काम करता है | फ़ाइल टाइप | |
---|---|---|---|---|
इन मॉडल पर काम करता है | Gemma 2B, Gemma 7B, Gemma-2 2B, Phi-2, StableLM, Falcon | MediaPipe | Android, iOS, वेब | .bin |
PyTorch के अन्य मॉडल | PyTorch LLM के सभी मॉडल | AI Edge Torch जनरेटिव लाइब्रेरी | Android, iOS | .task |
हम Gemma 2B, Gemma 7B, और Gemma-2 2B के लिए, बदली गई .bin
फ़ाइलों को Kaggle पर होस्ट कर रहे हैं. इन मॉडल को सीधे तौर पर, हमारे एलएलएम इंफ़रेंस एपीआई का इस्तेमाल करके डिप्लॉय किया जा सकता है. अन्य मॉडल को बदलने का तरीका जानने के लिए, मॉडल बदलना सेक्शन देखें.
जेमा-2 2B
Gemma-2 2B, Gemma फ़ैमिली का सबसे नया मॉडल है. यह लाइटवेट और बेहतरीन ओपन मॉडल है. इसे Gemini मॉडल में इस्तेमाल की गई रिसर्च और तकनीक का इस्तेमाल करके बनाया गया है. इस मॉडल में 2B पैरामीटर और ओपन वेट शामिल हैं. Gemma-2 2B, अपनी क्लास के मॉडल के लिए, बेहतरीन तरीके से तर्क करने की सुविधाओं के लिए जाना जाता है.
Gemma-2 2B मॉडल इन वैरिएंट में उपलब्ध हैं:
- gemma2-2b-it-cpu-int8: Gemma-2 2B 8-बिट मॉडल, जो सीपीयू के साथ काम करता है.
- gemma2-2b-it-gpu-int8: Gemma-2 2B 8-बिट मॉडल, जो जीपीयू के साथ काम करता है.
मॉडल को ऐप्लिकेशन में जोड़ने से पहले, उसे ट्यून किया जा सकता है और उसमें नए वेट जोड़े जा सकते हैं. Gemma को ट्यून करने और उसे पसंद के मुताबिक बनाने के बारे में ज़्यादा जानने के लिए, Gemma को ट्यून करना लेख पढ़ें. Kaggle मॉडल से Gemma-22B डाउनलोड करने के बाद, यह मॉडल पहले से ही MediaPipe Tasks के साथ इस्तेमाल करने के लिए सही फ़ॉर्मैट में होता है.
जेमा 2B
Gemma 2B, लाइटवेट और बेहतरीन ओपन मॉडल के परिवार का हिस्सा है. इसे Gemini मॉडल में इस्तेमाल की गई रिसर्च और तकनीक का इस्तेमाल करके बनाया गया है. इस मॉडल में 2B पैरामीटर और ओपन वेट शामिल हैं. यह मॉडल, टेक्स्ट जनरेट करने से जुड़े कई कामों के लिए बेहतर है. जैसे, सवालों के जवाब देना, खास जानकारी देना, और तर्क देना.
Gemma 2B मॉडल इन वैरिएंट में उपलब्ध हैं:
- gemma-2b-it-cpu-int4: सीपीयू के साथ काम करने वाला Gemma 2B 4-बिट मॉडल.
- gemma-2b-it-cpu-int8: सीपीयू के साथ काम करने वाला Gemma 2B 8-बिट मॉडल.
- gemma-2b-it-gpu-int4: Gemma 2B 4-बिट मॉडल, जो जीपीयू के साथ काम करता है.
- gemma-2b-it-gpu-int8: Gemma 2B 8-बिट मॉडल, जो जीपीयू के साथ काम करता है.
मॉडल को ऐप्लिकेशन में जोड़ने से पहले, उसे ट्यून किया जा सकता है और उसमें नए वेट जोड़े जा सकते हैं. Gemma को ट्यून करने और उसे पसंद के मुताबिक बनाने के बारे में ज़्यादा जानने के लिए, Gemma को ट्यून करना लेख पढ़ें. Kaggle मॉडल से Gemma 2B को डाउनलोड करने के बाद, यह मॉडल MediaPipe Tasks के साथ इस्तेमाल करने के लिए सही फ़ॉर्मैट में पहले से ही मौजूद होता है.
जेमा 7B
Gemma 7B, Gemma का एक बड़ा मॉडल है. इसमें 7B पैरामीटर और ओपन वेट हैं. यह मॉडल, टेक्स्ट जनरेट करने से जुड़े कई टास्क के लिए ज़्यादा बेहतर है. जैसे, सवालों के जवाब देना, खास जानकारी देना, और तर्क देना. Gemma 7B सिर्फ़ वेब पर काम करता है.
Gemma 7B मॉडल एक वैरिएंट में उपलब्ध है:
- gemma-1.1-7b-it-gpu-int8: Gemma 7B 8-बिट मॉडल, जो जीपीयू के साथ काम करता है.
Kaggle के मॉडल से Gemma 7B डाउनलोड करने के बाद, यह मॉडल MediaPipe के साथ इस्तेमाल करने के लिए पहले से ही सही फ़ॉर्मैट में होता है.
Falcon 1B
Falcon-1B, सिर्फ़ एक अरब पैरामीटर वाला ऐसा मॉडल है जिसे RefinedWeb के 350 अरब टोकन पर ट्रेन किया गया है. यह एक कैज़ल डिकोडर मॉडल है.
LLM Inference API के लिए, यहां दी गई फ़ाइलों को डाउनलोड करके स्थानीय तौर पर सेव करना ज़रूरी है:
tokenizer.json
tokenizer_config.json
pytorch_model.bin
Falcon मॉडल की फ़ाइलें डाउनलोड करने के बाद, मॉडल को कन्वर्ज़न स्क्रिप्ट की मदद से MediaPipe फ़ॉर्मैट में बदला जा सकता है. काम करने वाले मॉडल के लिए कन्वर्ज़न स्क्रिप्ट सेक्शन में दिया गया तरीका अपनाएं.
StableLM 3B
StableLM-3B, सिर्फ़ डिकोडर वाला 3 अरब पैरामीटर वाला लैंग्वेज मॉडल है. इसे चार युगों के लिए, अंग्रेज़ी और कोड के अलग-अलग डेटासेट के 1 ट्रिलियन टोकन पर ट्रेन किया गया है.
LLM Inference API के लिए, यहां दी गई फ़ाइलों को डाउनलोड करके स्थानीय तौर पर सेव करना ज़रूरी है:
tokenizer.json
tokenizer_config.json
model.safetensors
StableLM मॉडल की फ़ाइलें डाउनलोड करने के बाद, मॉडल को कन्वर्ज़न स्क्रिप्ट की मदद से MediaPipe फ़ॉर्मैट में बदला जा सकता है. काम करने वाले मॉडल के लिए कन्वर्ज़न स्क्रिप्ट सेक्शन में दिया गया तरीका अपनाएं.
Phi-2
Phi-2, 2.7 बिलियन पैरामीटर वाला ट्रांसफ़ॉर्मर मॉडल है. इसे अलग-अलग एनएलपी सिंथेटिक टेक्स्ट और फ़िल्टर की गई वेबसाइटों का इस्तेमाल करके ट्रेन किया गया था. यह मॉडल, सवाल-जवाब, चैट, और कोड फ़ॉर्मैट का इस्तेमाल करने वाले प्रॉम्प्ट के लिए सबसे सही है.
LLM Inference API के लिए, यहां दी गई फ़ाइलों को डाउनलोड करके स्थानीय तौर पर सेव करना ज़रूरी है:
tokenizer.json
tokenizer_config.json
model-00001-of-00002.safetensors
model-00002-of-00002.safetensors
Phi-2 मॉडल की फ़ाइलें डाउनलोड करने के बाद, मॉडल को कन्वर्ज़न स्क्रिप्ट की मदद से MediaPipe फ़ॉर्मैट में बदला जा सकता है. काम करने वाले मॉडल के लिए कन्वर्ज़न स्क्रिप्ट सेक्शन में दिया गया तरीका अपनाएं.
जनरेटिव PyTorch मॉडल
PyTorch के जनरेटिव मॉडल को AI Edge Torch जनरेटिव एपीआई की मदद से, MediaPipe के साथ काम करने वाले फ़ॉर्मैट में बदला जा सकता है. PyTorch मॉडल को मल्टी-सिग्नेचर LiteRT (TensorFlow Lite) मॉडल में बदलने के लिए, एपीआई का इस्तेमाल किया जा सकता है. मॉडल को मैप करने और एक्सपोर्ट करने के बारे में ज़्यादा जानकारी के लिए, AI Edge Torch के GitHub पेज पर जाएं.
अगर आपको PyTorch मॉडल को बदलने के लिए, एआई एज Torch जनरेटिव एपीआई का इस्तेमाल करना है, तो PyTorch मॉडल के लिए Torch जनरेटिव कन्वर्टर सेक्शन में दिए गए निर्देशों का पालन करें.
मॉडल कन्वर्ज़न
MediaPipe LLM Inference API की मदद से, डिवाइस पर कई तरह के लार्ज लैंग्वेज मॉडल चलाए जा सकते हैं. इसमें ऐसे मॉडल शामिल हैं जिन्हें पहले से MediaPipe के साथ काम करने वाले फ़ॉर्मैट में बदल दिया गया है. साथ ही, ऐसे अन्य मॉडल भी शामिल हैं जिन्हें कन्वर्ज़न स्क्रिप्ट या AI Edge Torch लाइब्रेरी की मदद से बदला जा सकता है.
LLM Inference API, .bin
और .task
फ़ाइल फ़ॉर्मैट में मॉडल स्वीकार करता है.
पहले से बदले गए मॉडल और कन्वर्ज़न स्क्रिप्ट की मदद से बदले गए मॉडल, .bin
फ़ाइलें होंगी. वहीं, एआई Edge Torch लाइब्रेरी की मदद से बदले गए मॉडल, .task
फ़ाइलें होंगी. बदले गए मॉडल के फ़ाइल फ़ॉर्मैट को मैन्युअल तरीके से न बदलें.
LLM Inference API में तीन मॉडल कन्वर्ज़न पाथ होते हैं:
- पहले से बदले गए मॉडल (Gemma 2B, Gemma 7B, Gemma-2 2B): बदलाव करने की ज़रूरत नहीं है.
- इस्तेमाल किए जा सकने वाले मॉडल (Phi-2, StableLM, Falcon): MediaPipe ट्रांसफ़ॉर्मेशन स्क्रिप्ट.
- अन्य PyTorch मॉडल (सभी PyTorch एलएलएम मॉडल): AI Edge Torch जनरेटिव एपीआई.
पहले से बदले गए मॉडल
Gemma-2 2B, Gemma 2B, और Gemma 7B मॉडल, MediaPipe फ़ॉर्मैट में पहले से बदले हुए मॉडल के तौर पर उपलब्ध हैं. इन मॉडल के लिए, उपयोगकर्ता को कन्वर्ज़न से जुड़े किसी और चरण को पूरा करने की ज़रूरत नहीं होती. साथ ही, इन्हें LLM Inference API के साथ, जैसा है वैसा चलाया जा सकता है.
Gemma-2 2B को Kaggle Models से डाउनलोड किया जा सकता है:
- gemma2-2b-it-cpu-int8: Gemma-2 2B 8-बिट मॉडल, जो सीपीयू के साथ काम करता है.
- gemma2-2b-it-gpu-int8: Gemma-2 2B 8-बिट मॉडल, जो जीपीयू के साथ काम करता है.
Kaggle मॉडल से Gemma 2B के वैरिएंट डाउनलोड किए जा सकते हैं:
- gemma-2b-it-cpu-int4: सीपीयू के साथ काम करने वाला Gemma 2B 4-बिट मॉडल.
- gemma-2b-it-cpu-int8: सीपीयू के साथ काम करने वाला Gemma 2B 8-बिट मॉडल.
- gemma-2b-it-gpu-int4: Gemma 2B 4-बिट मॉडल, जो जीपीयू के साथ काम करता है.
- gemma-2b-it-gpu-int8: Gemma 2B 8-बिट मॉडल, जो जीपीयू के साथ काम करता है.
Gemma 7B को Kaggle Models से डाउनलोड किया जा सकता है:
- gemma-1.1-7b-it-gpu-int8: Gemma 7B 8-बिट मॉडल, जो जीपीयू के साथ काम करता है.
Gemma मॉडल के बारे में ज़्यादा जानने के लिए, Gemma-2 2B, Gemma 2B, और Gemma 7B के दस्तावेज़ देखें.
काम करने वाले मॉडल के लिए कन्वर्ज़न स्क्रिप्ट
MediaPipe पैकेज में, कन्वर्ज़न स्क्रिप्ट उपलब्ध होती है. इसकी मदद से, नीचे दिए गए बाहरी मॉडल को MediaPipe के साथ काम करने वाले फ़ॉर्मैट में बदला जा सकता है:
काम करने वाले बाहरी मॉडल के बारे में ज़्यादा जानकारी के लिए, Falcon 1B, StableLM 3B, और Phi-2 के दस्तावेज़ देखें.
मॉडल को बदलने की प्रोसेस के लिए, MediaPipe PyPI पैकेज की ज़रूरत होती है. 0.10.11
के बाद, कन्वर्ज़न स्क्रिप्ट सभी MediaPipe पैकेज में उपलब्ध है.
इनके साथ डिपेंडेंसी इंस्टॉल और इंपोर्ट करें:
$ python3 -m pip install mediapipe
मॉडल को बदलने के लिए, genai.converter
लाइब्रेरी का इस्तेमाल करें:
import mediapipe as mp
from mediapipe.tasks.python.genai import converter
config = converter.ConversionConfig(
input_ckpt=INPUT_CKPT,
ckpt_format=CKPT_FORMAT,
model_type=MODEL_TYPE,
backend=BACKEND,
output_dir=OUTPUT_DIR,
combine_file_only=False,
vocab_model_file=VOCAB_MODEL_FILE,
output_tflite_file=OUTPUT_TFLITE_FILE,
)
converter.convert_checkpoint(config)
LoRA मॉडल को बदलने के लिए, ConversionConfig
में बेस मॉडल के विकल्पों के साथ-साथ LoRA के अन्य विकल्पों की जानकारी होनी चाहिए. ध्यान दें कि एपीआई सिर्फ़ GPU के साथ LoRA इंफ़रेंस के साथ काम करता है. इसलिए, बैकएंड को 'gpu'
पर सेट करना ज़रूरी है.
import mediapipe as mp
from mediapipe.tasks.python.genai import converter
config = converter.ConversionConfig(
# Other params related to base model
...
# Must use gpu backend for LoRA conversion
backend='gpu',
# LoRA related params
lora_ckpt=LORA_CKPT,
lora_rank=LORA_RANK,
lora_output_tflite_file=LORA_OUTPUT_TFLITE_FILE,
)
converter.convert_checkpoint(config)
कनवर्टर, दो TFLite फ़्लैटबफ़र फ़ाइलें आउटपुट करेगा. एक बेस मॉडल के लिए और दूसरी LoRA मॉडल के लिए.
पैरामीटर | ब्यौरा | स्वीकार की जा सकने वाली वैल्यू |
---|---|---|
input_ckpt |
model.safetensors या pytorch.bin फ़ाइल का पाथ. ध्यान दें कि कभी-कभी मॉडल के safetensors फ़ॉर्मैट को कई फ़ाइलों में बांटा जाता है, जैसे कि model-00001-of-00003.safetensors , model-00001-of-00003.safetensors . आपके पास फ़ाइल का कोई पैटर्न तय करने का विकल्प होता है, जैसे कि model*.safetensors . |
पाथ |
ckpt_format |
मॉडल का फ़ाइल फ़ॉर्मैट. | {"safetensors", "pytorch"} |
model_type |
एलएलएम को बदला जा रहा है. | {"PHI_2", "FALCON_RW_1B", "STABLELM_4E1T_3B", "GEMMA_2B"} |
backend |
मॉडल को चलाने के लिए इस्तेमाल किया जाने वाला प्रोसेसर (डेलिगेट). | {"cpu", "gpu"} |
output_dir |
आउटपुट डायरेक्ट्री का पाथ, जिसमें हर लेयर की वेट फ़ाइलें होस्ट की जाती हैं. | पाथ |
output_tflite_file |
आउटपुट फ़ाइल का पाथ. उदाहरण के लिए, "model_cpu.bin" या "model_gpu.bin". यह फ़ाइल सिर्फ़ LLM Inference API के साथ काम करती है. इसका इस्तेमाल सामान्य `tflite` फ़ाइल के तौर पर नहीं किया जा सकता. | पाथ |
vocab_model_file |
tokenizer.json और
tokenizer_config.json फ़ाइलों को सेव करने वाली डायरेक्ट्री का पाथ. जेमा के लिए, tokenizer.model फ़ाइल पर कर्सर ले जाएं. |
पाथ |
lora_ckpt |
safetensors फ़ाइल के LoRA ckpt का पाथ, जो LoRA अडैप्टर का वज़न सेव करता है. | पाथ |
lora_rank |
LoRA ckpt की रैंक दिखाने वाला इंटीजर. लॉरा वेट को बदलने के लिए ज़रूरी है. अगर यह वैल्यू नहीं दी जाती है, तो कन्वर्टर यह मान लेता है कि कोई LoRA वेट नहीं है. ध्यान दें: सिर्फ़ GPU बैकएंड, LoRA के साथ काम करता है. | पूर्णांक |
lora_output_tflite_file |
LoRA वेट के लिए, tflite फ़ाइल का नाम. | पाथ |
PyTorch मॉडल के लिए Torch जनरेटिव कन्वर्टर
PyTorch के जनरेटिव मॉडल को AI Edge Torch जनरेटिव एपीआई की मदद से, MediaPipe के साथ काम करने वाले फ़ॉर्मैट में बदला जा सकता है. एपीआई का इस्तेमाल करके, PyTorch LLMs को लिखा, बदला, और क्वांटिज़ किया जा सकता है, ताकि उन्हें LLM इंफ़रेंस एपीआई के साथ इस्तेमाल किया जा सके. Torch Generative Converter सिर्फ़ सीपीयू के लिए बदलाव करता है. इसके लिए, कम से कम 64 जीबी रैम वाली Linux मशीन की ज़रूरत होती है.
AI Edge Torch जनरेटिव एपीआई की मदद से, PyTorch मॉडल को बदलने के लिए, ये काम करने होंगे:
- PyTorch मॉडल के चेकपॉइंट डाउनलोड करना
- AI Edge Torch जनरेटिव एपीआई का इस्तेमाल करके, मॉडल को लिखें, बदलें, और उसे MediaPipe के साथ काम करने वाले फ़ाइल फ़ॉर्मैट (
.tflite
) में बदलें. - tflite फ़ाइल और मॉडल टॉकेनेटर से टास्क बंडल (
.task
) बनाएं.
टास्क बंडल बनाने के लिए, टास्क बंडल बनाने के लिए बंडलिंग स्क्रिप्ट का इस्तेमाल करें. बंडलिंग की प्रोसेस, मैप किए गए मॉडल को अतिरिक्त मेटाडेटा के साथ पैक करती है. उदाहरण के लिए, Tokenizer पैरामीटर) की ज़रूरत होती है.
मॉडल को बंडल करने की प्रोसेस के लिए, MediaPipe PyPI पैकेज की ज़रूरत होती है. 0.10.14
के बाद, कन्वर्ज़न स्क्रिप्ट सभी MediaPipe पैकेज में उपलब्ध है.
इनके साथ डिपेंडेंसी इंस्टॉल और इंपोर्ट करें:
$ python3 -m pip install mediapipe
मॉडल को बंडल करने के लिए, genai.bundler
लाइब्रेरी का इस्तेमाल करें:
import mediapipe as mp
from mediapipe.tasks.python.genai import bundler
config = bundler.BundleConfig(
tflite_model=TFLITE_MODEL,
tokenizer_model=TOKENIZER_MODEL,
start_token=START_TOKEN,
stop_tokens=STOP_TOKENS,
output_filename=OUTPUT_FILENAME,
enable_bytes_to_unicode_mapping=ENABLE_BYTES_TO_UNICODE_MAPPING,
)
bundler.create_bundle(config)
पैरामीटर | ब्यौरा | स्वीकार की जा सकने वाली वैल्यू |
---|---|---|
tflite_model |
एआई एज से एक्सपोर्ट किए गए TFLite मॉडल का पाथ. | पाथ |
tokenizer_model |
SentencePiece टॉकेनेटर मॉडल का पाथ. | पाथ |
start_token |
मॉडल के हिसाब से शुरू होने का टोकन. दिए गए टोकनेटर मॉडल में, शुरू करने वाला टोकन मौजूद होना चाहिए. | स्ट्रिंग |
stop_tokens |
स्टॉप के लिए खास टोकन मॉडल करें. दिए गए टॉकेनेटर मॉडल में स्टॉप टोकन मौजूद होने चाहिए. | LIST[STRING] |
output_filename |
आउटपुट टास्क बंडल फ़ाइल का नाम. | पाथ |
LoRA को पसंद के मुताबिक बनाना
Mediapipe LLM inference API को कॉन्फ़िगर करके, लार्ज लैंग्वेज मॉडल के लिए कम रैंक वाले अडैप्टेशन (LoRA) का इस्तेमाल किया जा सकता है. बेहतर बनाए गए LoRA मॉडल का इस्तेमाल करके, डेवलपर कम लागत वाली ट्रेनिंग प्रोसेस की मदद से एलएलएम के व्यवहार को पसंद के मुताबिक बना सकते हैं.LLM इंफ़रेंस एपीआई के LoRA सपोर्ट की सुविधा, जीपीयू बैकएंड के लिए Gemma के सभी वैरिएंट और Phi-2 मॉडल के साथ काम करती है. इसमें, LoRA वेट सिर्फ़ ध्यान देने वाली लेयर पर लागू होते हैं. शुरुआती तौर पर लागू किए गए इस एपीआई को, आने वाले समय में होने वाली नई सुविधाओं के लिए प्रयोग के तौर पर इस्तेमाल किया जाएगा. आने वाले अपडेट में, ज़्यादा मॉडल और अलग-अलग तरह की लेयर के साथ काम करने की सुविधाएं जोड़ी जाएंगी.
LoRA मॉडल तैयार करना
अपने डेटासेट पर बेहतर LoRA मॉडल को ट्रेन करने के लिए, HuggingFace पर दिए गए निर्देशों का पालन करें. इसके लिए, Gemma या Phi-2 जैसे काम करने वाले मॉडल टाइप का इस्तेमाल करें. Gemma-2 2B, Gemma
2B, और
Phi-2 मॉडल, HuggingFace पर, सुरक्षित टेंसर फ़ॉर्मैट में उपलब्ध हैं. LLM Inference API, सिर्फ़ ध्यान देने वाली लेयर पर LoRA का इस्तेमाल करता है. इसलिए, LoraConfig
बनाते समय सिर्फ़ ध्यान देने वाली लेयर तय करें. इसके लिए, यह तरीका अपनाएं:
# For Gemma
from peft import LoraConfig
config = LoraConfig(
r=LORA_RANK,
target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
)
# For Phi-2
config = LoraConfig(
r=LORA_RANK,
target_modules=["q_proj", "v_proj", "k_proj", "dense"],
)
जांच के लिए, सार्वजनिक तौर पर ऐक्सेस किए जा सकने वाले ऐसे LoRA मॉडल उपलब्ध हैं जिन्हें HuggingFace पर उपलब्ध LLM के अनुमान लगाने वाले API के साथ इस्तेमाल किया जा सकता है. उदाहरण के लिए, Gemma-2B के लिए monsterapi/gemma-2b-lora-maths-orca-200k और Phi-2 के लिए lole25/phi-2-sft-ultrachat-lora.
तैयार किए गए डेटासेट पर ट्रेनिंग देने और मॉडल को सेव करने के बाद, आपको एक adapter_model.safetensors
फ़ाइल मिलती है. इसमें, बेहतर बनाए गए LoRA मॉडल के वेट होते हैं.
safetensors फ़ाइल, मॉडल कन्वर्ज़न में इस्तेमाल किया जाने वाला LoRA चेकपॉइंट है.
अगले चरण में, आपको MediaPipe Python पैकेज का इस्तेमाल करके, मॉडल के वेट को TensorFlow Lite
Flatbuffer में बदलना होगा. ConversionConfig
में, बेस मॉडल के विकल्पों के साथ-साथ LoRA के अन्य विकल्पों के बारे में जानकारी होनी चाहिए. ध्यान दें कि एपीआई सिर्फ़ जीपीयू के साथ LoRA इंफ़रेंस के साथ काम करता है. इसलिए, बैकएंड को 'gpu'
पर सेट किया जाना चाहिए.
import mediapipe as mp
from mediapipe.tasks.python.genai import converter
config = converter.ConversionConfig(
# Other params related to base model
...
# Must use gpu backend for LoRA conversion
backend='gpu',
# LoRA related params
lora_ckpt=LORA_CKPT,
lora_rank=LORA_RANK,
lora_output_tflite_file=LORA_OUTPUT_TFLITE_FILE,
)
converter.convert_checkpoint(config)
कनवर्टर, दो TFLite फ़्लैटबफ़र फ़ाइलें आउटपुट करेगा. एक बेस मॉडल के लिए और दूसरी LoRA मॉडल के लिए.
LoRA मॉडल का अनुमान
वेब, Android, और iOS LLM इंफ़रेंस एपीआई को अपडेट किया गया है, ताकि LoRA मॉडल के इंफ़रेंस की सुविधा काम कर सके.
Android, शुरू करने के दौरान स्टैटिक LoRA का इस्तेमाल करता है. LoRA मॉडल लोड करने के लिए, उपयोगकर्ताओं को LoRA मॉडल पाथ के साथ-साथ बेस LLM की जानकारी देनी होती है.// Set the configuration options for the LLM Inference task
val options = LlmInferenceOptions.builder()
.setModelPath('<path to base model>')
.setMaxTokens(1000)
.setTopK(40)
.setTemperature(0.8)
.setRandomSeed(101)
.setLoraPath('<path to LoRA model>')
.build()
// Create an instance of the LLM Inference task
llmInference = LlmInference.createFromOptions(context, options)
LoRA के साथ एलएलएम इंफ़रेंस चलाने के लिए, बेस मॉडल के generateResponse()
या
generateResponseAsync()
तरीकों का इस्तेमाल करें.