Amazon SageMaker | پر OpenChatkit ماڈلز کا استعمال کرتے ہوئے اپنی مرضی کے مطابق چیٹ بوٹ ایپلی کیشنز بنائیں ایمیزون ویب سروسز

Amazon SageMaker | پر OpenChatkit ماڈلز کا استعمال کرتے ہوئے اپنی مرضی کے مطابق چیٹ بوٹ ایپلی کیشنز بنائیں ایمیزون ویب سروسز

اوپن سورس لارج لینگوئج ماڈل (LLMs) مقبول ہو چکے ہیں، جس سے محققین، ڈویلپرز، اور تنظیموں کو ان ماڈلز تک رسائی حاصل کرنے کی اجازت ملتی ہے تاکہ جدت اور تجربہ کو فروغ دیا جا سکے۔ یہ LLMs کی ترقی اور بہتری میں تعاون کرنے کے لیے اوپن سورس کمیونٹی کے تعاون کی حوصلہ افزائی کرتا ہے۔ اوپن سورس LLMs ماڈل کے فن تعمیر، تربیتی عمل، اور تربیتی ڈیٹا کو شفافیت فراہم کرتے ہیں، جو محققین کو یہ سمجھنے کی اجازت دیتا ہے کہ ماڈل کس طرح کام کرتا ہے اور ممکنہ تعصبات کی نشاندہی کرتا ہے اور اخلاقی خدشات کو دور کرتا ہے۔ یہ اوپن سورس LLMs جدید نیچرل لینگویج پروسیسنگ (NLP) ٹیکنالوجی کو وسیع پیمانے پر صارفین کے لیے مشن کے لیے اہم کاروباری ایپلی کیشنز بنانے کے لیے دستیاب کر کے جنریٹیو AI کو جمہوری بنا رہے ہیں۔ GPT-NeoX، LLaMA، Alpaca، GPT4All، Vicuna، Dolly، اور OpenAssistant کچھ مقبول اوپن سورس LLMs ہیں۔

اوپن چیٹ کٹ ایک اوپن سورس LLM ہے جسے عام مقصد اور خصوصی چیٹ بوٹ ایپلی کیشنز بنانے کے لیے استعمال کیا جاتا ہے، جسے ٹوگیدر کمپیوٹر نے مارچ 2023 میں Apache-2.0 لائسنس کے تحت جاری کیا تھا۔ یہ ماڈل ڈویلپرز کو چیٹ بوٹ کے رویے پر زیادہ کنٹرول رکھنے اور اسے اپنی مخصوص ایپلی کیشنز کے مطابق بنانے کی اجازت دیتا ہے۔ OpenChatKit مکمل طور پر حسب ضرورت، طاقتور چیٹ بوٹس بنانے کے لیے ٹولز، بیس بوٹ، اور بلڈنگ بلاکس کا ایک سیٹ فراہم کرتا ہے۔ اہم اجزاء مندرجہ ذیل ہیں:

  • 20% کاربن منفی کمپیوٹ پر 43 ملین سے زیادہ ہدایات کے ساتھ EleutherAI کے GPT-NeoX-100B سے چیٹ کے لیے ایک انسٹرکشن ٹیونڈ LLM۔ دی GPT-NeoXT-Chat-Base-20B ماڈل EleutherAI کے GPT-NeoX ماڈل پر مبنی ہے، اور ڈائیلاگ طرز کے تعاملات پر توجہ مرکوز کرنے والے ڈیٹا کے ساتھ ٹھیک ٹیون ہے۔
  • آپ کے کاموں میں اعلی درستگی حاصل کرنے کے لیے ماڈل کو ٹھیک کرنے کے لیے حسب ضرورت ترکیبیں۔
  • ایک قابل توسیع بازیافت کا نظام جو آپ کو دستاویز کے ذخیرے، API، یا دوسرے لائیو اپ ڈیٹ کرنے والے معلوماتی ماخذ سے معلومات کے ساتھ بوٹ کے جوابات کو بڑھانے کے قابل بناتا ہے۔
  • ایک اعتدال پسند ماڈل، جو GPT-JT-6B سے ٹھیک بنایا گیا ہے، جس کو فلٹر کرنے کے لیے ڈیزائن کیا گیا ہے کہ بوٹ کن سوالات کا جواب دیتا ہے۔

ڈیپ لرننگ ماڈلز کا بڑھتا ہوا پیمانہ اور سائز ان ماڈلز کو جنریٹیو AI ایپلی کیشنز میں کامیابی کے ساتھ تعینات کرنے میں رکاوٹیں پیش کرتا ہے۔ کم لیٹنسی اور ہائی تھرو پٹ کے تقاضوں کو پورا کرنے کے لیے، یہ ضروری ہو جاتا ہے کہ جدید ترین طریقوں کو استعمال کیا جائے جیسے ماڈل کی ہم آہنگی اور کوانٹائزیشن۔ ان طریقوں کے اطلاق میں مہارت کی کمی کی وجہ سے، متعدد صارفین کو جنریٹیو AI استعمال کے کیسز کے لیے بڑے ماڈلز کی میزبانی شروع کرنے میں مشکلات کا سامنا کرنا پڑتا ہے۔

اس پوسٹ میں، ہم دکھاتے ہیں کہ اوپن چیٹ کٹ ماڈلز کو کیسے تعینات کیا جائے (GPT-NeoXT-Chat-Base-20B and GPT-JT-Moderation-6Bپر ماڈلز ایمیزون سیج میکر ڈی جے ایل سرونگ اور اوپن سورس ماڈل متوازی لائبریریوں جیسے ڈیپ اسپیڈ اور ہگنگ فیس ایکسلریٹ کا استعمال۔ ہم DJL سرونگ کا استعمال کرتے ہیں، جو کہ ڈیپ جاوا لائبریری (DJL) کے ذریعے چلنے والا ایک اعلیٰ کارکردگی والا یونیورسل ماڈل سرونگ سلوشن ہے جو کہ پروگرامنگ لینگویج ایگنوسٹک ہے۔ ہم یہ ظاہر کرتے ہیں کہ کس طرح Hugging Face Accelerate لائبریری ایک سے زیادہ GPUs میں بڑے ماڈلز کی تعیناتی کو آسان بناتی ہے، اس طرح تقسیم شدہ انداز میں LLM چلانے کے بوجھ کو کم کرتی ہے۔ آو شروع کریں!

قابل توسیع بازیافت کا نظام

ایک قابل توسیع بازیافت نظام OpenChatKit کے کلیدی اجزاء میں سے ایک ہے۔ یہ آپ کو بند ڈومین نالج بیس کی بنیاد پر بوٹ کے جواب کو اپنی مرضی کے مطابق کرنے کے قابل بناتا ہے۔ اگرچہ LLMs اپنے ماڈل کے پیرامیٹرز میں حقائق سے متعلق علم کو برقرار رکھنے کے قابل ہیں اور جب اچھی طرح سے NLP کاموں میں نمایاں کارکردگی حاصل کر سکتے ہیں، تو بند ڈومین کے علم تک رسائی اور درست طریقے سے پیش گوئی کرنے کی ان کی صلاحیت محدود رہتی ہے۔ لہذا، جب انہیں علمی کاموں کے ساتھ پیش کیا جاتا ہے، تو ان کی کارکردگی کام سے متعلق مخصوص فن تعمیر کی طرح متاثر ہوتی ہے۔ آپ اوپن چیٹ کٹ کی بازیافت کا نظام استعمال کر سکتے ہیں تاکہ ان کے جوابات میں بیرونی معلوماتی ذرائع جیسے ویکیپیڈیا، دستاویز کے ذخیرے، APIs اور دیگر معلوماتی ذرائع سے معلومات کو بڑھا سکیں۔

بازیافت کا نظام چیٹ بوٹ کو ایک مخصوص سوال کے جواب میں متعلقہ تفصیلات حاصل کرکے موجودہ معلومات تک رسائی کے قابل بناتا ہے، اس طرح جوابات پیدا کرنے کے لیے ماڈل کے لیے ضروری سیاق و سباق فراہم کرتا ہے۔ اس بازیافت کے نظام کی فعالیت کو واضح کرنے کے لیے، ہم ویکیپیڈیا کے مضامین کے اشاریہ کے لیے معاونت فراہم کرتے ہیں اور مثال کے طور پر کوڈ پیش کرتے ہیں جس میں یہ ظاہر ہوتا ہے کہ معلومات کی بازیافت کے لیے ویب سرچ API کو کیسے استعمال کیا جائے۔ فراہم کردہ دستاویزات کی پیروی کرکے، آپ تخمینہ کے عمل کے دوران بازیافت کے نظام کو کسی بھی ڈیٹاسیٹ یا API کے ساتھ ضم کر سکتے ہیں، جس سے چیٹ بوٹ اپنے جوابات میں متحرک طور پر اپ ڈیٹ کردہ ڈیٹا کو شامل کر سکتا ہے۔

اعتدال کا ماڈل

مواد کی فلٹرنگ، کوالٹی کنٹرول، صارف کی حفاظت، اور قانونی اور تعمیل کی وجوہات کو نافذ کرنے کے لیے چیٹ بوٹ ایپلی کیشنز میں اعتدال پسندی کے ماڈل اہم ہیں۔ اعتدال ایک مشکل اور موضوعی کام ہے، اور یہ چیٹ بوٹ ایپلیکیشن کے ڈومین پر بہت زیادہ انحصار کرتا ہے۔ OpenChatKit چیٹ بوٹ ایپلیکیشن کو معتدل کرنے اور کسی بھی نامناسب مواد کے لیے ان پٹ ٹیکسٹ پرامپٹس کو مانیٹر کرنے کے لیے ٹولز فراہم کرتا ہے۔ اعتدال کا ماڈل ایک اچھی بیس لائن فراہم کرتا ہے جسے مختلف ضروریات کے مطابق ڈھال اور اپنی مرضی کے مطابق بنایا جا سکتا ہے۔

OpenChatKit میں 6-بلین پیرامیٹر ماڈریشن ماڈل ہے، GPT-JT-Moderation-6B، جو ان پٹ کو معتدل مضامین تک محدود کرنے کے لیے چیٹ بوٹ کو معتدل کر سکتا ہے۔ اگرچہ ماڈل میں خود کچھ اعتدال پیدا ہوتا ہے، TogetherComputer تربیت یافتہ a GPT-JT-Moderation-6B Ontocord.ai کے ساتھ ماڈل OIG-اعتدال پسند ڈیٹاسیٹ. یہ ماڈل مرکزی چیٹ بوٹ کے ساتھ ساتھ چلتا ہے تاکہ یہ چیک کیا جا سکے کہ بوٹ سے صارف کا ان پٹ اور جواب دونوں نامناسب نتائج پر مشتمل نہیں ہیں۔ آپ اسے چیٹ بوٹ کے ڈومین سے باہر کے سوالات کا پتہ لگانے کے لیے بھی استعمال کر سکتے ہیں اور جب سوال چیٹ بوٹ کے ڈومین کا حصہ نہیں ہے تو اسے اوور رائیڈ کر سکتے ہیں۔

درج ذیل خاکہ OpenChatKit ورک فلو کو واضح کرتا ہے۔

Build custom chatbot applications using OpenChatkit models on Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

قابل توسیع بازیافت نظام کے استعمال کے معاملات

اگرچہ ہم اس تکنیک کو مختلف صنعتوں میں جنریٹیو AI ایپلی کیشنز بنانے کے لیے لاگو کر سکتے ہیں، اس پوسٹ کے لیے ہم مالیاتی صنعت میں استعمال کے معاملات پر بات کرتے ہیں۔ مخصوص کمپنیوں، صنعتوں، یا مالیاتی مصنوعات کے بارے میں خود بخود تحقیقی رپورٹیں تیار کرنے کے لیے مالیاتی تحقیق میں بازیافت بڑھا ہوا نسل کا استعمال کیا جا سکتا ہے۔ اندرونی معلومات کے اڈوں، مالیاتی آرکائیوز، خبروں کے مضامین، اور تحقیقی مقالوں سے متعلقہ معلومات حاصل کرکے، آپ جامع رپورٹس تیار کر سکتے ہیں جو کلیدی بصیرت، مالیاتی میٹرکس، مارکیٹ کے رجحانات، اور سرمایہ کاری کی سفارشات کا خلاصہ کرتی ہیں۔ آپ اس حل کو مالی خبروں، مارکیٹ کے جذبات اور رجحانات کی نگرانی اور تجزیہ کرنے کے لیے استعمال کر سکتے ہیں۔

حل جائزہ

OpenChatKit ماڈلز کا استعمال کرتے ہوئے چیٹ بوٹ بنانے اور انہیں SageMaker پر تعینات کرنے کے لیے درج ذیل اقدامات شامل ہیں۔

  1. چیٹ بیس ڈاؤن لوڈ کریں۔ GPT-NeoXT-Chat-Base-20B ماڈل اور پیکج ماڈل نمونے جس پر اپ لوڈ کیے جائیں گے۔ ایمیزون سادہ اسٹوریج سروس (ایمیزون S3)۔
  2. SageMaker لارج ماڈل انفرنس (LMI) کنٹینر استعمال کریں، پراپرٹیز کو کنفیگر کریں، اور اس ماڈل کو ڈیپلائی کرنے کے لیے حسب ضرورت انفرنس کوڈ سیٹ کریں۔
  3. ماڈل کے متوازی تکنیک کو ترتیب دیں اور DJL پیش کرنے والی خصوصیات میں انفرنس آپٹیمائزیشن لائبریریوں کا استعمال کریں۔ ہم DJL سرونگ کے لیے Hugging Face Accelerate کو انجن کے طور پر استعمال کریں گے۔ مزید برآں، ہم ماڈل کو تقسیم کرنے کے لیے ٹینسر کے متوازی کنفیگریشنز کی وضاحت کرتے ہیں۔
  4. سیج میکر ماڈل اور اینڈ پوائنٹ کنفیگریشن بنائیں، اور سیج میکر اینڈ پوائنٹ کو تعینات کریں۔

آپ میں نوٹ بک چلا کر ساتھ چل سکتے ہیں۔ GitHub repo.

OpenChatKit ماڈل ڈاؤن لوڈ کریں۔

سب سے پہلے، ہم OpenChatKit بیس ماڈل ڈاؤن لوڈ کرتے ہیں۔ ہم استعمال کرتے ہیں huggingface_hub اور استعمال کریں snapshot_download ماڈل کو ڈاؤن لوڈ کرنے کے لیے، جو ایک دی گئی نظر ثانی پر ایک پورا ذخیرہ ڈاؤن لوڈ کرتا ہے۔ عمل کو تیز کرنے کے لیے بیک وقت ڈاؤن لوڈ کیے جاتے ہیں۔ درج ذیل کوڈ دیکھیں:

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.
)

DJL سرونگ پراپرٹیز

آپ SageMaker LMI کنٹینرز کا استعمال کر سکتے ہیں بڑے جنریٹیو AI ماڈلز کو اپنی مرضی کے مطابق انفرنس کوڈ کے ساتھ ہوسٹ کرنے کے لیے اپنا انفرنس کوڈ فراہم کیے بغیر۔ یہ انتہائی مفید ہے جب ان پٹ ڈیٹا کی کوئی حسب ضرورت پری پروسیسنگ یا ماڈل کی پیشین گوئیوں کی پوسٹ پروسیسنگ نہ ہو۔ آپ کسٹم انفرنس کوڈ کا استعمال کرتے ہوئے ماڈل بھی لگا سکتے ہیں۔ اس پوسٹ میں، ہم یہ ظاہر کرتے ہیں کہ اوپن چیٹ کٹ ماڈلز کو کسٹم انفرنس کوڈ کے ساتھ کیسے لگایا جائے۔

سیج میکر کو توقع ہے کہ ماڈل کے نمونے ٹار فارمیٹ میں ہوں گے۔ ہم مندرجہ ذیل فائلوں کے ساتھ ہر OpenChatKit ماڈل بناتے ہیں: serving.properties اور model.py.

۔ serving.properties کنفیگریشن فائل ڈی جے ایل سرونگ کی طرف اشارہ کرتی ہے کہ آپ کون سی ماڈل متوازی اور انفرنس آپٹیمائزیشن لائبریریوں کو استعمال کرنا چاہیں گے۔ ذیل میں ان ترتیبات کی فہرست ہے جو ہم اس کنفیگریشن فائل میں استعمال کرتے ہیں۔

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

یہ مندرجہ ذیل پیرامیٹرز پر مشتمل ہے:

  • انجن - DJL استعمال کرنے کے لیے انجن۔
  • option.entryPoint - انٹری پوائنٹ Python فائل یا ماڈیول۔ یہ اس انجن کے ساتھ سیدھ میں ہونا چاہئے جو استعمال کیا جا رہا ہے۔
  • option.s3url – اسے S3 بالٹی کے URI پر سیٹ کریں جس میں ماڈل ہے۔
  • option.modelid - اگر آپ huggingface.co سے ماڈل ڈاؤن لوڈ کرنا چاہتے ہیں، تو آپ سیٹ کر سکتے ہیں۔ option.modelid huggingface.co (https://huggingface.co/models)۔ کنٹینر اس ماڈل ID کو huggingface.co پر متعلقہ ماڈل ریپوزٹری ڈاؤن لوڈ کرنے کے لیے استعمال کرتا ہے۔
  • option.tensor_parallel_degree – اسے GPU آلات کی تعداد پر سیٹ کریں جن پر ڈیپ اسپیڈ کو ماڈل کو تقسیم کرنے کی ضرورت ہے۔ یہ پیرامیٹر فی ماڈل کارکنوں کی تعداد کو بھی کنٹرول کرتا ہے جو DJL سرونگ کے چلنے پر شروع کیے جائیں گے۔ مثال کے طور پر، اگر ہمارے پاس 8 GPU مشین ہے اور ہم آٹھ پارٹیشنز بنا رہے ہیں، تو ہمارے پاس درخواستوں کو پورا کرنے کے لیے فی ماڈل ایک کارکن ہوگا۔ متوازی ڈگری کو ٹیون کرنا اور دیئے گئے ماڈل آرکیٹیکچر اور ہارڈویئر پلیٹ فارم کے لیے بہترین قدر کی نشاندہی کرنا ضروری ہے۔ ہم اس صلاحیت کو کہتے ہیں۔ قیاس کے مطابق موافقت.

کا حوالہ دیتے ہیں کنفیگریشنز اور سیٹنگز اختیارات کی ایک مکمل فہرست کے لیے۔

اوپن چیٹ کٹ ماڈلز

OpenChatKit بیس ماڈل کے نفاذ میں درج ذیل چار فائلیں ہیں:

  • model.py - یہ فائل مرکزی OpenChatKit GPT-NeoX ماڈل کے لیے ہینڈلنگ منطق کو نافذ کرتی ہے۔ یہ انفرنس ان پٹ کی درخواست وصول کرتا ہے، ماڈل لوڈ کرتا ہے، ویکیپیڈیا انڈیکس لوڈ کرتا ہے، اور جواب پیش کرتا ہے۔ کا حوالہ دیتے ہیں model.py(نوٹ بک کا حصہ بنایا) اضافی تفصیلات کے لیے۔ model.py درج ذیل کلیدی کلاسز کا استعمال کرتا ہے:
    • OpenChatKitService - یہ GPT-NeoX ماڈل، Faiss سرچ، اور بات چیت کے آبجیکٹ کے درمیان ڈیٹا کو منتقل کرنے کا انتظام کرتا ہے۔ WikipediaIndex اور Conversation اشیاء کو شروع کیا جاتا ہے اور ان پٹ چیٹ مکالمات کو ویکیپیڈیا سے متعلقہ مواد کی تلاش کے لیے انڈیکس میں بھیجا جاتا ہے۔ یہ ہر ایک درخواست کے لیے ایک منفرد ID بھی تیار کرتا ہے اگر کوئی پرامپٹس کو اسٹور کرنے کے مقصد سے فراہم نہیں کیا جاتا ہے۔ ایمیزون ڈائنومو ڈی بی.
    • چیٹ ماڈل - یہ کلاس ماڈل اور ٹوکنائزر کو لوڈ کرتی ہے اور ردعمل پیدا کرتی ہے۔ یہ ایک سے زیادہ GPUs کا استعمال کرتے ہوئے ماڈل کی تقسیم کو سنبھالتا ہے۔ tensor_parallel_degree، اور ترتیب دیتا ہے۔ dtypes اور device_map. جوابات پیدا کرنے کے لیے پرامپٹس ماڈل کو بھیجے جاتے ہیں۔ روکنے کا معیار StopWordsCriteria نسل کے لیے ترتیب دیا گیا ہے تاکہ صرف تخمینہ پر بوٹ ردعمل پیدا کیا جا سکے۔
    • ماڈریشن ماڈل - ہم میں دو اعتدال پسند ماڈل استعمال کرتے ہیں۔ ModerationModel کلاس: چیٹ ماڈل کو اشارہ کرنے کے لیے ان پٹ ماڈل کہ ان پٹ قیاس نتیجہ کو اوور رائڈ کرنے کے لیے نامناسب ہے، اور آؤٹ پٹ ماڈل تخمینہ کے نتیجے کو اوور رائڈ کرنے کے لیے۔ ہم ان پٹ پرامپٹ اور آؤٹ پٹ رسپانس کو درج ذیل ممکنہ لیبلز کے ساتھ درجہ بندی کرتے ہیں:
      • انیت
      • احتیاط کی ضرورت ہے
      • مداخلت کی ضرورت ہے (اسے ماڈل کے ذریعہ معتدل کرنے کے لئے جھنڈا لگایا گیا ہے)
      • ممکنہ طور پر احتیاط کی ضرورت ہے
      • شاید احتیاط کی ضرورت ہے
  • wikipedia_prepare.py - یہ فائل ویکیپیڈیا انڈیکس کو ڈاؤن لوڈ اور تیار کرنے کا انتظام کرتی ہے۔ اس پوسٹ میں، ہم Hugging Face ڈیٹاسیٹس پر فراہم کردہ ویکیپیڈیا انڈیکس استعمال کرتے ہیں۔ متعلقہ متن کے لیے ویکیپیڈیا دستاویزات کو تلاش کرنے کے لیے، انڈیکس کو Hugging Face سے ڈاؤن لوڈ کرنے کی ضرورت ہے کیونکہ یہ کہیں اور پیک نہیں کیا گیا ہے۔ دی 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)

  • talk.py - یہ فائل ماڈل اور صارف کو منتقل کرنے کے لیے ڈائنامو ڈی بی میں گفتگو کے دھاگے کو اسٹور کرنے اور بازیافت کرنے کے لیے استعمال ہوتی ہے۔ conversation.py اوپن سورس اوپن چیٹ کٹ ریپوزٹری سے اخذ کیا گیا ہے۔ یہ فائل اس آبجیکٹ کی وضاحت کے لیے ذمہ دار ہے جو انسان اور ماڈل کے درمیان گفتگو کے موڑ کو محفوظ کرتی ہے۔ اس کے ساتھ، ماڈل گفتگو کے لیے ایک سیشن برقرار رکھنے کے قابل ہے، جس سے صارف کو پچھلے پیغامات کا حوالہ دینے کی اجازت ملتی ہے۔ چونکہ سیج میکر کے اختتامی نقطہ کی درخواستیں بے وطن ہیں، اس لیے اس گفتگو کو اختتامی نقطہ کی صورتوں سے باہر کے مقام پر ذخیرہ کرنے کی ضرورت ہے۔ اسٹارٹ اپ پر، مثال ایک DynamoDB ٹیبل بناتی ہے اگر یہ موجود نہیں ہے۔ اس کے بعد گفتگو کی تمام اپ ڈیٹس DynamoDB میں محفوظ کی جاتی ہیں۔ session_id کلید، جو اختتامی نقطہ کے ذریعہ تیار کی گئی ہے۔ سیشن ID کے ساتھ کوئی بھی درخواست منسلک گفتگو کی تار بازیافت کرے گی اور ضرورت کے مطابق اسے اپ ڈیٹ کرے گی۔

اپنی مرضی کے مطابق انحصار کے ساتھ ایک LMI انفرنس کنٹینر بنائیں

انڈیکس سرچ فیس بک کا استعمال کرتا ہے۔ فاس مماثلت کی تلاش کو انجام دینے کے لئے لائبریری۔ چونکہ یہ بنیادی LMI امیج میں شامل نہیں ہے، اس لیے اس لائبریری کو انسٹال کرنے کے لیے کنٹینر کو ڈھالنے کی ضرورت ہے۔ مندرجہ ذیل کوڈ ایک Dockerfile کی وضاحت کرتا ہے جو بوٹ اینڈ پوائنٹ کو درکار دیگر لائبریریوں کے ساتھ ذریعہ سے Faiss کو انسٹال کرتا ہے۔ ہم استعمال کرتے ہیں sm-docker تصویر کو بنانے اور آگے بڑھانے کی افادیت ایمیزون لچکدار کنٹینر رجسٹری (ایمیزون ای سی آر) سے ایمیزون سیج میکر اسٹوڈیو. کا حوالہ دیتے ہیں Amazon SageMaker Studio Image Build CLI کا استعمال کرتے ہوئے اپنی سٹوڈیو نوٹ بک سے کنٹینر امیجز بنانے کے لیے مزید تفصیلات کے لئے.

DJL کنٹینر میں Conda انسٹال نہیں ہے، اس لیے Faiss کو کلون کرنے اور ماخذ سے مرتب کرنے کی ضرورت ہے۔ Faiss کو انسٹال کرنے کے لیے، BLAS APIs اور Python سپورٹ استعمال کرنے کے لیے انحصار کو انسٹال کرنے کی ضرورت ہے۔ ان پیکجوں کے انسٹال ہونے کے بعد، فائیس کو AVX2 اور CUDA استعمال کرنے کے لیے ترتیب دیا جاتا ہے اس سے پہلے کہ Python ایکسٹینشنز انسٹال ہو جائیں۔

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

ماڈل بنائیں

اب جب کہ ہمارے پاس Amazon ECR میں Docker امیج ہے، ہم OpenChatKit ماڈلز کے لیے SageMaker ماڈل آبجیکٹ بنانے کے ساتھ آگے بڑھ سکتے ہیں۔ ہم تعینات کرتے ہیں۔ GPT-NeoXT-Chat-Base-20B ان پٹ اور آؤٹ پٹ اعتدال پسند ماڈل کا استعمال کرتے ہوئے GPT-JT-Moderation-6B. کا حوالہ دیتے ہیں تخلیق_ماڈل مزید تفصیلات کے لئے.

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)

ذیل میں نمونہ چیٹ تعاملات کا حوالہ دیں۔

Build custom chatbot applications using OpenChatkit models on Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

صاف کرو

غیر ضروری چارجز سے بچنے کے لیے اس پوسٹ کے حصے کے طور پر فراہم کردہ وسائل کو حذف کرنے کے لیے کلین اپ سیکشن میں دی گئی ہدایات پر عمل کریں۔ کا حوالہ دیتے ہیں ایمیزون سیج میکر قیمتوں کا تعین قیاس کی مثالوں کی قیمت کے بارے میں تفصیلات کے لیے۔

نتیجہ

اس پوسٹ میں، ہم نے اوپن سورس LLMs کی اہمیت اور اگلی نسل کی چیٹ بوٹ ایپلی کیشنز بنانے کے لیے SageMaker پر OpenChatKit ماڈل کو کیسے تعینات کیا جائے اس پر تبادلہ خیال کیا۔ ہم نے OpenChatKit ماڈلز کے مختلف اجزاء، اعتدال پسندی کے ماڈلز، اور وکی پیڈیا جیسے بیرونی علمی ماخذ کو دوبارہ حاصل کرنے کے لیے اگمینٹڈ جنریشن (RAG) ورک فلوز کے استعمال کے بارے میں تبادلہ خیال کیا۔ آپ کو میں قدم بہ قدم ہدایات مل سکتی ہیں۔ GitHub نوٹ بک. ہمیں ان حیرت انگیز چیٹ بوٹ ایپلی کیشنز کے بارے میں بتائیں جو آپ بنا رہے ہیں۔ شاباش!


مصنفین کے بارے میں

Build custom chatbot applications using OpenChatkit models on Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.دھول پٹیل AWS میں پرنسپل مشین لرننگ آرکیٹیکٹ ہے۔ انہوں نے تقسیم شدہ کمپیوٹنگ اور مصنوعی ذہانت سے متعلق مسائل پر بڑے اداروں سے لے کر درمیانے درجے کے اسٹارٹ اپس تک کی تنظیموں کے ساتھ کام کیا ہے۔ وہ NLP اور کمپیوٹر ویژن ڈومینز سمیت گہری سیکھنے پر توجہ مرکوز کرتا ہے۔ وہ صارفین کو SageMaker پر اعلیٰ کارکردگی کے ماڈل کا اندازہ حاصل کرنے میں مدد کرتا ہے۔

Build custom chatbot applications using OpenChatkit models on Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.وکرم ایلنگو ورجینیا، یو ایس میں مقیم AWS میں ایک Sr. AIML ماہر حل آرکیٹیکٹ ہیں۔ وہ فی الحال جنریٹو AI، LLMs، پرامپٹ انجینئرنگ، بڑے ماڈل کے انفرنس آپٹیمائزیشن، اور انٹرپرائزز میں ML کی پیمائش پر مرکوز ہے۔ وکرم مالیاتی اور انشورنس انڈسٹری کے صارفین کو ڈیزائن اور سوچی سمجھی قیادت کے ساتھ مشین لرننگ ایپلی کیشنز کو بڑے پیمانے پر بنانے اور تعینات کرنے میں مدد کرتا ہے۔ اپنے فارغ وقت میں، وہ اپنے خاندان کے ساتھ سفر، پیدل سفر، کھانا پکانے اور کیمپنگ سے لطف اندوز ہوتا ہے۔

Build custom chatbot applications using OpenChatkit models on Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.اینڈریو اسمتھ۔ سڈنی، آسٹریلیا میں مقیم AWS میں SageMaker، Vision اور دیگر ٹیم میں کلاؤڈ سپورٹ انجینئر ہے۔ وہ Amazon SageMaker کے ساتھ کام کرنے میں مہارت کے ساتھ AWS پر بہت سی AI/ML سروسز استعمال کرنے والے صارفین کی مدد کرتا ہے۔ کام سے باہر، وہ دوستوں اور خاندان کے ساتھ وقت گزارنے کے ساتھ ساتھ مختلف ٹیکنالوجیز کے بارے میں سیکھنے میں بھی لطف اندوز ہوتا ہے۔

ٹائم اسٹیمپ:

سے زیادہ AWS مشین لرننگ