Amazon SageMaker पर OpenChatkit मॉडल का उपयोग करके कस्टम चैटबॉट एप्लिकेशन बनाएं अमेज़न वेब सेवाएँ

Amazon SageMaker पर OpenChatkit मॉडल का उपयोग करके कस्टम चैटबॉट एप्लिकेशन बनाएं अमेज़न वेब सेवाएँ

ओपन-सोर्स बड़े भाषा मॉडल (एलएलएम) लोकप्रिय हो गए हैं, जिससे शोधकर्ताओं, डेवलपर्स और संगठनों को नवाचार और प्रयोग को बढ़ावा देने के लिए इन मॉडलों तक पहुंचने की इजाजत मिलती है। यह एलएलएम के विकास और सुधार में योगदान करने के लिए ओपन-सोर्स समुदाय के सहयोग को प्रोत्साहित करता है। ओपन-सोर्स एलएलएम मॉडल आर्किटेक्चर, प्रशिक्षण प्रक्रिया और प्रशिक्षण डेटा में पारदर्शिता प्रदान करते हैं, जो शोधकर्ताओं को यह समझने की अनुमति देता है कि मॉडल कैसे काम करता है और संभावित पूर्वाग्रहों की पहचान करता है और नैतिक चिंताओं का समाधान करता है। ये ओपन-सोर्स एलएलएम मिशन-महत्वपूर्ण व्यावसायिक अनुप्रयोगों के निर्माण के लिए उपयोगकर्ताओं की एक विस्तृत श्रृंखला के लिए उन्नत प्राकृतिक भाषा प्रसंस्करण (एनएलपी) तकनीक उपलब्ध कराकर जेनेरिक एआई का लोकतंत्रीकरण कर रहे हैं। GPT-NeoX, LLaMA, अल्पाका, GPT4All, विकुना, डॉली और ओपनअसिस्टेंट कुछ लोकप्रिय ओपन-सोर्स एलएलएम हैं।

ओपनचैटकिट एक ओपन-सोर्स एलएलएम है जिसका उपयोग सामान्य-उद्देश्य और विशेष चैटबॉट एप्लिकेशन बनाने के लिए किया जाता है, जिसे अपाचे-2023 लाइसेंस के तहत मार्च 2.0 में टुगेदर कंप्यूटर द्वारा जारी किया गया है। यह मॉडल डेवलपर्स को चैटबॉट के व्यवहार पर अधिक नियंत्रण रखने और इसे अपने विशिष्ट अनुप्रयोगों के अनुरूप बनाने की अनुमति देता है। OpenChatKit पूरी तरह से अनुकूलित, शक्तिशाली चैटबॉट बनाने के लिए टूल, बेस बॉट और बिल्डिंग ब्लॉक्स का एक सेट प्रदान करता है। प्रमुख घटक इस प्रकार हैं:

  • एक निर्देश-ट्यून एलएलएम, 20% कार्बन नकारात्मक गणना पर 43 मिलियन से अधिक निर्देशों के साथ EleutherAI के GPT-NeoX-100B से चैट के लिए ठीक-ठीक। GPT-NeoXT-Chat-Base-20B मॉडल EleutherAI के GPT-NeoX मॉडल पर आधारित है, और संवाद-शैली इंटरैक्शन पर ध्यान केंद्रित करने वाले डेटा के साथ ठीक से ट्यून किया गया है।
  • आपके कार्यों में उच्च सटीकता प्राप्त करने के लिए मॉडल को बेहतर बनाने के लिए अनुकूलन विधियाँ।
  • एक एक्स्टेंसिबल पुनर्प्राप्ति प्रणाली आपको अनुमान के समय दस्तावेज़ भंडार, एपीआई, या अन्य लाइव-अपडेटिंग सूचना स्रोत से जानकारी के साथ बॉट प्रतिक्रियाओं को बढ़ाने में सक्षम बनाती है।
  • एक मॉडरेशन मॉडल, जिसे GPT-JT-6B से बेहतर बनाया गया है, जिसे फ़िल्टर करने के लिए डिज़ाइन किया गया है कि बॉट किस प्रश्न का उत्तर देता है।

गहन शिक्षण मॉडल के बढ़ते पैमाने और आकार इन मॉडलों को जेनरेटिव एआई अनुप्रयोगों में सफलतापूर्वक तैनात करने में बाधाएं पेश करते हैं। कम विलंबता और उच्च थ्रूपुट की मांगों को पूरा करने के लिए, मॉडल समानता और परिमाणीकरण जैसे परिष्कृत तरीकों को नियोजित करना आवश्यक हो जाता है। इन विधियों के अनुप्रयोग में दक्षता की कमी के कारण, कई उपयोगकर्ताओं को जेनरेटिव एआई उपयोग मामलों के लिए बड़े मॉडल की होस्टिंग शुरू करने में कठिनाइयों का सामना करना पड़ता है।

इस पोस्ट में, हम दिखाते हैं कि OpenChatKit मॉडल को कैसे तैनात किया जाए (GPT-NeoXT-Chat-Base-20B and GPT-JT-Moderation-6B) मॉडल चालू अमेज़न SageMaker डीजेएल सर्विंग और ओपन-सोर्स मॉडल समानांतर लाइब्रेरी जैसे डीपस्पीड और हगिंग फेस एक्सेलेरेट का उपयोग करना। हम डीजेएल सर्विंग का उपयोग करते हैं, जो डीप जावा लाइब्रेरी (डीजेएल) द्वारा संचालित एक उच्च प्रदर्शन वाला सार्वभौमिक मॉडल सर्विंग समाधान है जो प्रोग्रामिंग भाषा अज्ञेयवादी है। हम प्रदर्शित करते हैं कि कैसे हगिंग फेस एक्सेलेरेट लाइब्रेरी बड़े मॉडलों को कई जीपीयू में तैनात करना आसान बनाती है, जिससे वितरित तरीके से एलएलएम चलाने का बोझ कम हो जाता है। आएँ शुरू करें!

विस्तारणीय पुनर्प्राप्ति प्रणाली

एक एक्स्टेंसिबल पुनर्प्राप्ति प्रणाली OpenChatKit के प्रमुख घटकों में से एक है। यह आपको बंद डोमेन ज्ञान आधार के आधार पर बॉट प्रतिक्रिया को अनुकूलित करने में सक्षम बनाता है। यद्यपि एलएलएम अपने मॉडल मापदंडों में तथ्यात्मक ज्ञान को बनाए रखने में सक्षम हैं और ठीक होने पर डाउनस्ट्रीम एनएलपी कार्यों पर उल्लेखनीय प्रदर्शन प्राप्त कर सकते हैं, बंद डोमेन ज्ञान तक पहुंचने और सटीक रूप से भविष्यवाणी करने की उनकी क्षमता प्रतिबंधित रहती है। इसलिए, जब उन्हें ज्ञान-गहन कार्य प्रस्तुत किए जाते हैं, तो उनका प्रदर्शन कार्य-विशिष्ट आर्किटेक्चर के अनुरूप होता है। आप विकिपीडिया, दस्तावेज़ रिपॉजिटरी, एपीआई और अन्य सूचना स्रोतों जैसे बाहरी ज्ञान स्रोतों से उनकी प्रतिक्रियाओं में ज्ञान बढ़ाने के लिए ओपनचैटकिट पुनर्प्राप्ति प्रणाली का उपयोग कर सकते हैं।

पुनर्प्राप्ति प्रणाली चैटबॉट को एक विशिष्ट क्वेरी के जवाब में प्रासंगिक विवरण प्राप्त करके वर्तमान जानकारी तक पहुंचने में सक्षम बनाती है, जिससे मॉडल को उत्तर उत्पन्न करने के लिए आवश्यक संदर्भ की आपूर्ति होती है। इस पुनर्प्राप्ति प्रणाली की कार्यक्षमता को स्पष्ट करने के लिए, हम विकिपीडिया लेखों की एक अनुक्रमणिका के लिए समर्थन प्रदान करते हैं और सूचना पुनर्प्राप्ति के लिए वेब खोज एपीआई को कैसे लागू किया जाए, यह प्रदर्शित करने वाला उदाहरण कोड प्रदान करते हैं। दिए गए दस्तावेज़ का पालन करके, आप अनुमान प्रक्रिया के दौरान पुनर्प्राप्ति प्रणाली को किसी भी डेटासेट या एपीआई के साथ एकीकृत कर सकते हैं, जिससे चैटबॉट को अपनी प्रतिक्रियाओं में गतिशील रूप से अद्यतन डेटा को शामिल करने की अनुमति मिलती है।

मॉडरेशन मॉडल

सामग्री फ़िल्टरिंग, गुणवत्ता नियंत्रण, उपयोगकर्ता सुरक्षा और कानूनी और अनुपालन कारणों को लागू करने के लिए चैटबॉट अनुप्रयोगों में मॉडरेशन मॉडल महत्वपूर्ण हैं। मॉडरेशन एक कठिन और व्यक्तिपरक कार्य है, और चैटबॉट एप्लिकेशन के डोमेन पर बहुत कुछ निर्भर करता है। OpenChatKit चैटबॉट एप्लिकेशन को मॉडरेट करने और किसी भी अनुचित सामग्री के लिए इनपुट टेक्स्ट संकेतों की निगरानी करने के लिए उपकरण प्रदान करता है। मॉडरेशन मॉडल एक अच्छी आधार रेखा प्रदान करता है जिसे विभिन्न आवश्यकताओं के अनुसार अनुकूलित और अनुकूलित किया जा सकता है।

OpenChatKit में 6 बिलियन-पैरामीटर मॉडरेशन मॉडल है, GPT-JT-Moderation-6B, जो मॉडरेट किए गए विषयों तक इनपुट को सीमित करने के लिए चैटबॉट को मॉडरेट कर सकता है। हालाँकि मॉडल में स्वयं कुछ मॉडरेशन अंतर्निहित है, टुगेदरकंप्यूटर ने प्रशिक्षित किया है जीपीटी-जेटी-मॉडरेशन-6बी Ontocord.ai के साथ मॉडल OIG-मॉडरेशन डेटासेट. यह मॉडल यह जांचने के लिए मुख्य चैटबॉट के साथ चलता है कि उपयोगकर्ता इनपुट और बॉट के उत्तर दोनों में अनुचित परिणाम न हों। आप इसका उपयोग चैटबॉट के डोमेन से बाहर के किसी भी प्रश्न का पता लगाने के लिए भी कर सकते हैं और जब प्रश्न चैटबॉट के डोमेन का हिस्सा नहीं है तो उसे ओवरराइड कर सकते हैं।

निम्नलिखित चित्र OpenChatKit वर्कफ़्लो को दर्शाता है।

Amazon SageMaker | पर OpenChatkit मॉडल का उपयोग करके कस्टम चैटबॉट एप्लिकेशन बनाएं अमेज़ॅन वेब सेवाएँ प्लेटोब्लॉकचेन डेटा इंटेलिजेंस। लंबवत खोज. ऐ.

एक्स्टेंसिबल पुनर्प्राप्ति प्रणाली उपयोग के मामले

यद्यपि हम इस तकनीक को विभिन्न उद्योगों में जेनेरिक एआई अनुप्रयोगों के निर्माण के लिए लागू कर सकते हैं, इस पोस्ट के लिए हम वित्तीय उद्योग में उपयोग के मामलों पर चर्चा करते हैं। विशिष्ट कंपनियों, उद्योगों या वित्तीय उत्पादों पर स्वचालित रूप से अनुसंधान रिपोर्ट तैयार करने के लिए पुनर्प्राप्ति संवर्धित पीढ़ी को वित्तीय अनुसंधान में नियोजित किया जा सकता है। आंतरिक ज्ञान के आधारों, वित्तीय अभिलेखागार, समाचार लेखों और शोध पत्रों से प्रासंगिक जानकारी प्राप्त करके, आप व्यापक रिपोर्ट तैयार कर सकते हैं जो प्रमुख अंतर्दृष्टि, वित्तीय मैट्रिक्स, बाजार के रुझान और निवेश सिफारिशों का सारांश देती है। आप इस समाधान का उपयोग वित्तीय समाचार, बाज़ार की भावना और रुझानों की निगरानी और विश्लेषण करने के लिए कर सकते हैं।

समाधान अवलोकन

OpenChatKit मॉडल का उपयोग करके चैटबॉट बनाने और उन्हें SageMaker पर तैनात करने के लिए निम्नलिखित चरण शामिल हैं:

  1. चैट बेस डाउनलोड करें GPT-NeoXT-Chat-Base-20B अपलोड की जाने वाली मॉडल कलाकृतियों को मॉडल और पैकेज करें अमेज़न सरल भंडारण सेवा (अमेज़न S3)।
  2. सेजमेकर बड़े मॉडल अनुमान (एलएमआई) कंटेनर का उपयोग करें, गुणों को कॉन्फ़िगर करें, और इस मॉडल को तैनात करने के लिए कस्टम अनुमान कोड सेट करें।
  3. मॉडल समानांतर तकनीकों को कॉन्फ़िगर करें और डीजेएल सेवारत गुणों में अनुमान अनुकूलन पुस्तकालयों का उपयोग करें। हम डीजेएल सर्विंग के लिए इंजन के रूप में हगिंग फेस एक्सीलरेट का उपयोग करेंगे। इसके अतिरिक्त, हम मॉडल को विभाजित करने के लिए टेंसर समानांतर कॉन्फ़िगरेशन को परिभाषित करते हैं।
  4. एक सेजमेकर मॉडल और एंडपॉइंट कॉन्फ़िगरेशन बनाएं, और सेजमेकर एंडपॉइंट को तैनात करें।

आप नोटबुक को इसमें चलाकर अनुसरण कर सकते हैं गीथहब रेपो.

OpenChatKit मॉडल डाउनलोड करें

सबसे पहले, हम OpenChatKit बेस मॉडल डाउनलोड करते हैं। हम उपयोग करते हैं huggingface_hub और उपयोग करें स्नैपशॉट_डाउनलोड मॉडल को डाउनलोड करने के लिए, जो किसी दिए गए संशोधन पर संपूर्ण रिपॉजिटरी को डाउनलोड करता है। प्रक्रिया को तेज़ करने के लिए डाउनलोड समवर्ती रूप से किए जाते हैं। निम्नलिखित कोड देखें:

from huggingface_hub import snapshot_download
from pathlib import Path
import os
# - This will download the model into the current directory where ever the jupyter notebook is running
local_model_path = Path("./openchatkit")
local_model_path.mkdir(exist_ok=True)
model_name = "togethercomputer/GPT-NeoXT-Chat-Base-20B"
# Only download pytorch checkpoint files
allow_patterns = ["*.json", "*.pt", "*.bin", "*.txt", "*.model"]
# - Leverage the snapshot library to donload the model since the model is stored in repository using LFS
chat_model_download_path = snapshot_download( repo_id=model_name,#A user or an organization name and a repo name cache_dir=local_model_path, #Path to the folder where cached files are stored. allow_patterns=allow_patterns, #only files matching at least one pattern are downloaded.
)

डीजेएल सर्विंग प्रॉपर्टीज

आप अपना स्वयं का अनुमान कोड प्रदान किए बिना कस्टम अनुमान कोड के साथ बड़े जेनरेटिव एआई मॉडल को होस्ट करने के लिए सेजमेकर एलएमआई कंटेनर का उपयोग कर सकते हैं। यह बेहद उपयोगी है जब इनपुट डेटा की कोई कस्टम प्रीप्रोसेसिंग या मॉडल की भविष्यवाणियों की पोस्टप्रोसेसिंग नहीं होती है। आप कस्टम अनुमान कोड का उपयोग करके एक मॉडल भी तैनात कर सकते हैं। इस पोस्ट में, हम प्रदर्शित करते हैं कि कस्टम अनुमान कोड के साथ OpenChatKit मॉडल को कैसे तैनात किया जाए।

सेजमेकर टार प्रारूप में मॉडल कलाकृतियों की अपेक्षा करता है। हम प्रत्येक OpenChatKit मॉडल को निम्नलिखित फ़ाइलों के साथ बनाते हैं: serving.properties और model.py.

RSI serving.properties कॉन्फ़िगरेशन फ़ाइल डीजेएल सर्विंग को इंगित करती है कि आप किस मॉडल समानांतरीकरण और अनुमान अनुकूलन लाइब्रेरी का उपयोग करना चाहते हैं। इस कॉन्फ़िगरेशन फ़ाइल में हमारे द्वारा उपयोग की जाने वाली सेटिंग्स की सूची निम्नलिखित है:

openchatkit/serving.properties
engine = Python
option.tensor_parallel_degree = 4
option.s3url = {{s3url}}

इसमें निम्नलिखित पैरामीटर शामिल हैं:

  • इंजन - डीजेएल के उपयोग के लिए इंजन।
  • option.entryPoint - प्रवेश बिंदु पायथन फ़ाइल या मॉड्यूल। यह उस इंजन के साथ संरेखित होना चाहिए जिसका उपयोग किया जा रहा है।
  • option.s3url - इसे S3 बकेट के URI पर सेट करें जिसमें मॉडल है।
  • option.modelid - अगर आप huggingface.co से मॉडल डाउनलोड करना चाहते हैं तो सेट कर सकते हैं option.modelid Huggingface.co पर एक मॉडल रिपॉजिटरी के अंदर होस्ट किए गए पूर्व-प्रशिक्षित मॉडल की मॉडल आईडी पर (https://huggingface.co/models). कंटेनर इस मॉडल आईडी का उपयोग huggingface.co पर संबंधित मॉडल रिपॉजिटरी को डाउनलोड करने के लिए करता है।
  • विकल्प.टेन्सर_समानांतर_डिग्री - इसे उन GPU उपकरणों की संख्या पर सेट करें जिन पर डीपस्पीड को मॉडल को विभाजित करने की आवश्यकता है। यह पैरामीटर प्रति मॉडल श्रमिकों की संख्या को भी नियंत्रित करता है जो डीजेएल सर्विंग चलने पर शुरू किए जाएंगे। उदाहरण के लिए, यदि हमारे पास 8 जीपीयू मशीन है और हम आठ विभाजन बना रहे हैं, तो अनुरोधों को पूरा करने के लिए हमारे पास प्रति मॉडल एक कर्मचारी होगा। समानता की डिग्री को ट्यून करना और किसी दिए गए मॉडल आर्किटेक्चर और हार्डवेयर प्लेटफ़ॉर्म के लिए इष्टतम मूल्य की पहचान करना आवश्यक है। इसे हम क्षमता कहते हैं अनुमान-अनुकूलित समानता.

का संदर्भ लें कॉन्फ़िगरेशन और सेटिंग्स विकल्पों की विस्तृत सूची के लिए.

ओपनचैटकिट मॉडल

OpenChatKit बेस मॉडल कार्यान्वयन में निम्नलिखित चार फ़ाइलें हैं:

  • model.py - यह फ़ाइल मुख्य OpenChatKit GPT-NeoX मॉडल के लिए हैंडलिंग तर्क लागू करती है। यह अनुमान इनपुट अनुरोध प्राप्त करता है, मॉडल लोड करता है, विकिपीडिया सूचकांक लोड करता है, और प्रतिक्रिया प्रदान करता है। को देखें model.py(नोटबुक का निर्मित भाग) अतिरिक्त विवरण के लिए। model.py निम्नलिखित प्रमुख वर्गों का उपयोग करता है:
    • ओपनचैटकिटसेवा - यह GPT-NeoX मॉडल, Faiss खोज और वार्तालाप ऑब्जेक्ट के बीच डेटा पास करने का प्रबंधन करता है। WikipediaIndex और Conversation वस्तुओं को आरंभीकृत किया जाता है और विकिपीडिया से प्रासंगिक सामग्री की खोज के लिए इनपुट चैट वार्तालापों को सूचकांक में भेजा जाता है। यदि संकेतों को संग्रहीत करने के उद्देश्य से कोई आईडी प्रदान नहीं की गई है तो यह प्रत्येक आमंत्रण के लिए एक अद्वितीय आईडी भी उत्पन्न करता है अमेज़ॅन डायनेमोडीबी.
    • चैटमॉडल - यह वर्ग मॉडल और टोकननाइज़र को लोड करता है और प्रतिक्रिया उत्पन्न करता है। यह कई GPU का उपयोग करके मॉडल को विभाजित करने का काम संभालता है tensor_parallel_degree, और कॉन्फ़िगर करता है dtypes और device_map. प्रतिक्रियाएँ उत्पन्न करने के लिए मॉडल को संकेत भेजे जाते हैं। एक रोक मानदंड StopWordsCriteria केवल अनुमान पर बॉट प्रतिक्रिया उत्पन्न करने के लिए पीढ़ी के लिए कॉन्फ़िगर किया गया है।
    • मॉडरेशनमॉडल - हम इसमें दो मॉडरेशन मॉडल का उपयोग करते हैं ModerationModel वर्ग: चैट मॉडल को इंगित करने के लिए इनपुट मॉडल कि इनपुट अनुमान परिणाम को ओवरराइड करने के लिए अनुपयुक्त है, और आउटपुट मॉडल अनुमान परिणाम को ओवरराइड करने के लिए। हम इनपुट प्रॉम्प्ट और आउटपुट प्रतिक्रिया को निम्नलिखित संभावित लेबल के साथ वर्गीकृत करते हैं:
      • आकस्मिक
      • सावधानी की जरूरत है
      • हस्तक्षेप की आवश्यकता है (इसे मॉडल द्वारा संचालित करने के लिए चिह्नित किया गया है)
      • संभवतः सावधानी की आवश्यकता है
      • शायद सावधानी की जरूरत है
  • wikipedia_prepare.py - यह फ़ाइल विकिपीडिया इंडेक्स को डाउनलोड करने और तैयार करने का काम संभालती है। इस पोस्ट में, हम हगिंग फेस डेटासेट पर उपलब्ध विकिपीडिया इंडेक्स का उपयोग करते हैं। प्रासंगिक पाठ के लिए विकिपीडिया दस्तावेज़ों को खोजने के लिए, सूचकांक को हगिंग फेस से डाउनलोड करना होगा क्योंकि यह कहीं और पैक नहीं किया गया है। wikipedia_prepare.py फ़ाइल आयात होने पर डाउनलोड को संभालने के लिए ज़िम्मेदार है। अनुमान के लिए चल रहे एकाधिक में केवल एक ही प्रक्रिया रिपॉजिटरी को क्लोन कर सकती है। बाकी फ़ाइलें स्थानीय फ़ाइल सिस्टम में मौजूद होने तक प्रतीक्षा करें।
  • wikipedia.py - इस फ़ाइल का उपयोग प्रासंगिक रूप से प्रासंगिक दस्तावेज़ों के लिए विकिपीडिया अनुक्रमणिका खोजने के लिए किया जाता है। इनपुट क्वेरी को टोकन किया जाता है और एम्बेडिंग का उपयोग करके बनाया जाता है mean_pooling. हम प्रासंगिक रूप से प्रासंगिक विकिपीडिया वाक्यों को पुनः प्राप्त करने के लिए क्वेरी एम्बेडिंग और विकिपीडिया सूचकांक के बीच कोसाइन समानता दूरी मेट्रिक्स की गणना करते हैं। को देखें wikipedia.py कार्यान्वयन विवरण के लिए।
#function to create sentence embedding using mean_pooling
def mean_pooling(token_embeddings, mask): token_embeddings = token_embeddings.masked_fill(~mask[..., None].bool(), 0.0) sentence_embeddings = token_embeddings.sum(dim=1) / mask.sum(dim=1)[..., None] return sentence_embeddings #function to compute cosine similarity distance between 2 embeddings def cos_sim_2d(x, y): norm_x = x / np.linalg.norm(x, axis=1, keepdims=True) norm_y = y / np.linalg.norm(y, axis=1, keepdims=True) return np.matmul(norm_x, norm_y.T)

  • बातचीत.py - इस फ़ाइल का उपयोग मॉडल और उपयोगकर्ता को पास करने के लिए DynamoDB में वार्तालाप थ्रेड को संग्रहीत करने और पुनर्प्राप्त करने के लिए किया जाता है। conversation.py ओपन-सोर्स OpenChatKit रिपॉजिटरी से अनुकूलित किया गया है। यह फ़ाइल उस ऑब्जेक्ट को परिभाषित करने के लिए ज़िम्मेदार है जो मानव और मॉडल के बीच की बातचीत को संग्रहीत करती है। इसके साथ, मॉडल बातचीत के लिए एक सत्र बनाए रखने में सक्षम है, जिससे उपयोगकर्ता पिछले संदेशों को संदर्भित कर सकता है। क्योंकि सेजमेकर एंडपॉइंट इनवोकेशन स्टेटलेस हैं, इसलिए इस वार्तालाप को एंडपॉइंट इंस्टेंस के बाहर किसी स्थान पर संग्रहीत करने की आवश्यकता है। स्टार्टअप पर, यदि यह मौजूद नहीं है तो इंस्टेंस एक DynamoDB तालिका बनाता है। बातचीत के सभी अपडेट इसके आधार पर DynamoDB में संग्रहीत किए जाते हैं session_id कुंजी, जो समापन बिंदु द्वारा उत्पन्न होती है। सत्र आईडी वाला कोई भी आह्वान संबंधित वार्तालाप स्ट्रिंग को पुनः प्राप्त करेगा और आवश्यकतानुसार इसे अपडेट करेगा।

कस्टम निर्भरता के साथ एक एलएमआई अनुमान कंटेनर बनाएं

सूचकांक खोज फेसबुक का उपयोग करती है फैस समानता खोज करने के लिए लाइब्रेरी। चूँकि यह आधार LMI छवि में शामिल नहीं है, इसलिए इस लाइब्रेरी को स्थापित करने के लिए कंटेनर को अनुकूलित करने की आवश्यकता है। निम्नलिखित कोड एक डॉकरफाइल को परिभाषित करता है जो बॉट एंडपॉइंट के लिए आवश्यक अन्य पुस्तकालयों के साथ स्रोत से फैस को स्थापित करता है। हम उपयोग करते हैं sm-docker छवि बनाने और आगे बढ़ाने के लिए उपयोगिता अमेज़ॅन इलास्टिक कंटेनर रजिस्ट्री (अमेज़ॅन ईसीआर) से अमेज़ॅन सैजमेकर स्टूडियो। को देखें Amazon SageMaker Studio Image का उपयोग करके अपने स्टूडियो नोटबुक से कंटेनर चित्र बनाने के लिए CLI बनाएँ अधिक जानकारी के लिए.

डीजेएल कंटेनर में कॉनडा स्थापित नहीं है, इसलिए फ़ैस को स्रोत से क्लोन और संकलित करने की आवश्यकता है। फ़ैस को स्थापित करने के लिए, बीएलएएस एपीआई और पायथन समर्थन का उपयोग करने के लिए निर्भरता स्थापित करने की आवश्यकता है। इन पैकेजों को स्थापित करने के बाद, पायथन एक्सटेंशन स्थापित करने से पहले Faiss को AVX2 और CUDA का उपयोग करने के लिए कॉन्फ़िगर किया गया है।

pandas, fastparquet, boto3, तथा git-lfs बाद में इंस्टॉल किए जाते हैं क्योंकि ये इंडेक्स फ़ाइलों को डाउनलोड करने और पढ़ने के लिए आवश्यक होते हैं।

FROM 763104351884.dkr.ecr.us-east-1.amazonaws.com/djl-inference:0.21.0-deepspeed0.8.0-cu117
ARG FAISS_URL=https://github.com/facebookresearch/faiss.git
RUN apt-get update && apt-get install -y git-lfs wget cmake pkg-config build-essential apt-utils
RUN apt search openblas && apt-get install -y libopenblas-dev swig
RUN git clone $FAISS_URL && cd faiss && cmake -B build . -DFAISS_OPT_LEVEL=avx2 -DCMAKE_CUDA_ARCHITECTURES="86" && make -C build -j faiss && make -C build -j swigfaiss && make -C build -j swigfaiss_avx2 && (cd build/faiss/python && python -m pip install ) RUN pip install pandas fastparquet boto3 && git lfs install --skip-repo && apt-get clean all

मॉडल बनाएं

अब जब हमारे पास अमेज़ॅन ईसीआर में डॉकर छवि है, तो हम ओपनचैटकिट मॉडल के लिए सेजमेकर मॉडल ऑब्जेक्ट बनाने के लिए आगे बढ़ सकते हैं। हम तैनात करते हैं GPT-NeoXT-Chat-Base-20B इनपुट और आउटपुट मॉडरेशन मॉडल का उपयोग करना GPT-JT-Moderation-6B। को देखें create_model अधिक जानकारी के लिए.

from sagemaker.utils import name_from_base chat_model_name = name_from_base(f"gpt-neoxt-chatbase-ds")
print(chat_model_name) create_model_response = sm_client.create_model( ModelName=chat_model_name, ExecutionRoleArn=role, PrimaryContainer={ "Image": chat_inference_image_uri, "ModelDataUrl": s3_code_artifact, },
)
chat_model_arn = create_model_response["ModelArn"] print(f"Created Model: {chat_model_arn}")

समापनबिंदु कॉन्फ़िगर करें

इसके बाद, हम OpenChatKit मॉडल के लिए एंडपॉइंट कॉन्फ़िगरेशन को परिभाषित करते हैं। हम ml.g5.12xlarge इंस्टेंस प्रकार का उपयोग करके मॉडल तैनात करते हैं। को देखें create_endpoint_config अधिक जानकारी के लिए.

chat_endpoint_config_name = f"{chat_model_name}-config"
chat_endpoint_name = f"{chat_model_name}-endpoint" chat_endpoint_config_response = sm_client.create_endpoint_config( EndpointConfigName=chat_endpoint_config_name, ProductionVariants=[ { "VariantName": "variant1", "ModelName": chat_model_name, "InstanceType": "ml.g5.12xlarge", "InitialInstanceCount": 1, "ContainerStartupHealthCheckTimeoutInSeconds": 3600, }, ],
)

समापन बिंदु तैनात करें

अंत में, हम पिछले चरणों में परिभाषित मॉडल और एंडपॉइंट कॉन्फ़िगरेशन का उपयोग करके एक एंडपॉइंट बनाते हैं:

chat_create_endpoint_response = sm_client.create_endpoint(
EndpointName=f"{chat_endpoint_name}", EndpointConfigName=chat_endpoint_config_name
)
print(f"Created Endpoint: {chat_create_endpoint_response['EndpointArn']},")

OpenChatKit मॉडल से अनुमान चलाएँ

अब मॉडल को अनुमान अनुरोध भेजने और प्रतिक्रिया प्राप्त करने का समय आ गया है। हम इनपुट टेक्स्ट प्रॉम्प्ट और मॉडल पैरामीटर जैसे पास करते हैं temperature, top_k, तथा max_new_tokens. चैटबॉट प्रतिक्रियाओं की गुणवत्ता निर्दिष्ट मापदंडों पर आधारित है, इसलिए आपके उपयोग के मामले के लिए इष्टतम सेटिंग खोजने के लिए इन मापदंडों के खिलाफ मॉडल के प्रदर्शन को बेंचमार्क करने की सिफारिश की जाती है। इनपुट प्रॉम्प्ट को पहले इनपुट मॉडरेशन मॉडल पर भेजा जाता है, और आउटपुट को भेजा जाता है ChatModel प्रतिक्रियाएँ उत्पन्न करने के लिए। इस चरण के दौरान, मॉडल मॉडल से डोमेन-विशिष्ट प्रतिक्रियाएं प्राप्त करने के संकेत के रूप में मॉडल के प्रासंगिक रूप से प्रासंगिक अनुभागों को पुनः प्राप्त करने के लिए विकिपीडिया सूचकांक का उपयोग करता है। अंत में, मॉडल प्रतिक्रिया को वर्गीकरण की जांच के लिए आउटपुट मॉडरेशन मॉडल में भेजा जाता है, और फिर प्रतिक्रियाएं वापस कर दी जाती हैं। निम्नलिखित कोड देखें:

def chat(prompt, session_id=None, **kwargs): if session_id: chat_response_model = smr_client.invoke_endpoint( EndpointName=chat_endpoint_name, Body=json.dumps( { "inputs": prompt, "parameters": { "temperature": 0.6, "top_k": 40, "max_new_tokens": 512, "session_id": session_id, "no_retrieval": True, }, } ), ContentType="application/json", ) else: chat_response_model = smr_client.invoke_endpoint( EndpointName=chat_endpoint_name, Body=json.dumps( { "inputs": prompt, "parameters": { "temperature": 0.6, "top_k": 40, "max_new_tokens": 512, }, } ), ContentType="application/json", ) response = chat_response_model["Body"].read().decode("utf8") return response
prompts = "What does a data engineer do?"
chat(prompts)

नीचे नमूना चैट इंटरैक्शन देखें।

Amazon SageMaker | पर OpenChatkit मॉडल का उपयोग करके कस्टम चैटबॉट एप्लिकेशन बनाएं अमेज़ॅन वेब सेवाएँ प्लेटोब्लॉकचेन डेटा इंटेलिजेंस। लंबवत खोज. ऐ.

क्लीन अप

अनावश्यक शुल्कों से बचने के लिए इस पोस्ट के हिस्से के रूप में प्रावधानित संसाधनों को हटाने के लिए सफाई अनुभाग में दिए गए निर्देशों का पालन करें। को देखें अमेज़न SageMaker मूल्य निर्धारण अनुमान उदाहरणों की लागत के बारे में विवरण के लिए।

निष्कर्ष

इस पोस्ट में, हमने ओपन-सोर्स एलएलएम के महत्व और अगली पीढ़ी के चैटबॉट एप्लिकेशन बनाने के लिए सेजमेकर पर ओपनचैटकिट मॉडल को कैसे तैनात किया जाए, इस पर चर्चा की। हमने OpenChatKit मॉडल के विभिन्न घटकों, मॉडरेशन मॉडल और पुनर्प्राप्ति संवर्धित पीढ़ी (RAG) वर्कफ़्लो के लिए विकिपीडिया जैसे बाहरी ज्ञान स्रोत का उपयोग करने के तरीके पर चर्चा की। आप इसमें चरण-दर-चरण निर्देश पा सकते हैं गिटहब नोटबुक. हमें आपके द्वारा बनाए जा रहे अद्भुत चैटबॉट एप्लिकेशन के बारे में बताएं। प्रोत्साहित करना!


लेखक के बारे में

Amazon SageMaker | पर OpenChatkit मॉडल का उपयोग करके कस्टम चैटबॉट एप्लिकेशन बनाएं अमेज़ॅन वेब सेवाएँ प्लेटोब्लॉकचेन डेटा इंटेलिजेंस। लंबवत खोज. ऐ.धवल पटेल AWS में प्रिंसिपल मशीन लर्निंग आर्किटेक्ट हैं। उन्होंने वितरित कंप्यूटिंग और आर्टिफिशियल इंटेलिजेंस से संबंधित समस्याओं पर बड़े उद्यमों से लेकर मध्यम आकार के स्टार्टअप तक के संगठनों के साथ काम किया है। वह एनएलपी और कंप्यूटर विज़न डोमेन सहित डीप लर्निंग पर ध्यान केंद्रित करता है। वह ग्राहकों को सेजमेकर पर उच्च प्रदर्शन मॉडल अनुमान प्राप्त करने में मदद करता है।

Amazon SageMaker | पर OpenChatkit मॉडल का उपयोग करके कस्टम चैटबॉट एप्लिकेशन बनाएं अमेज़ॅन वेब सेवाएँ प्लेटोब्लॉकचेन डेटा इंटेलिजेंस। लंबवत खोज. ऐ.विक्रम एलंगो वर्जीनिया, अमेरिका में स्थित AWS में एक वरिष्ठ AIML स्पेशलिस्ट सॉल्यूशंस आर्किटेक्ट हैं। वह वर्तमान में जेनेरिक एआई, एलएलएम, प्रॉम्प्ट इंजीनियरिंग, बड़े मॉडल अनुमान अनुकूलन और उद्यमों में स्केलिंग एमएल पर केंद्रित है। विक्रम वित्तीय और बीमा उद्योग के ग्राहकों को बड़े पैमाने पर मशीन लर्निंग एप्लिकेशन बनाने और तैनात करने के लिए डिजाइन और विचार नेतृत्व के साथ मदद करता है। अपने खाली समय में, वह अपने परिवार के साथ यात्रा करना, लंबी पैदल यात्रा करना, खाना बनाना और शिविर लगाना पसंद करते हैं।

Amazon SageMaker | पर OpenChatkit मॉडल का उपयोग करके कस्टम चैटबॉट एप्लिकेशन बनाएं अमेज़ॅन वेब सेवाएँ प्लेटोब्लॉकचेन डेटा इंटेलिजेंस। लंबवत खोज. ऐ.एंड्रयू स्मिथ सिडनी, ऑस्ट्रेलिया स्थित AWS में सेजमेकर, विज़न और अन्य टीम में क्लाउड सपोर्ट इंजीनियर हैं। वह Amazon SageMaker के साथ काम करने में विशेषज्ञता के साथ AWS पर कई AI/ML सेवाओं का उपयोग करने वाले ग्राहकों का समर्थन करता है। काम के अलावा, वह दोस्तों और परिवार के साथ समय बिताने के साथ-साथ विभिन्न तकनीकों के बारे में सीखना भी पसंद करते हैं।

समय टिकट:

से अधिक AWS मशीन लर्निंग

अमेज़ॅन सेजमेकर कैनवस जेनरेटिव एआई | का उपयोग करके अपने व्यावसायिक उपयोगकर्ताओं को कंपनी दस्तावेज़ों से अंतर्दृष्टि निकालने के लिए सशक्त बनाएं अमेज़न वेब सेवाएँ

स्रोत नोड: 1906631
समय टिकट: अक्टूबर 26, 2023