Amazon SageMaker پر BLOOM-176B اور OPT-30B کو بڑے ماڈل انفرنس ڈیپ لرننگ کنٹینرز اور DeepSpeed ​​PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ تعینات کریں۔ عمودی تلاش۔ عی

بڑے ماڈل انفرنس ڈیپ لرننگ کنٹینرز اور ڈیپ اسپیڈ کے ساتھ Amazon SageMaker پر BLOOM-176B اور OPT-30B تعینات کریں

پچھلے کچھ سالوں میں گہری تعلیم کے میدان میں تیزی سے ترقی ہوئی ہے۔ اگرچہ ہارڈ ویئر میں بہتری آئی ہے، جیسے کہ NVIDIA اور Amazon کے ایکسلریٹرز کی تازہ ترین نسل کے ساتھ، ایڈوانسڈ مشین لرننگ (ML) پریکٹیشنرز کو اب بھی باقاعدگی سے مسائل کا سامنا کرنا پڑتا ہے کہ وہ قدرتی زبان کی پروسیسنگ (NLP) جیسی ایپلی کیشنز کے لیے اپنے بڑے ڈیپ لرننگ ماڈلز کو تعینات کرتے ہیں۔

پہلے کی پوسٹ میں، ہم نے بات کی تھی۔ قابلیت اور قابل ترتیب ترتیبات in ایمیزون سیج میکر ماڈل کی تعیناتی۔ جو ان بڑے ماڈلز کے ساتھ آسانی سے اندازہ لگا سکتا ہے۔ آج، ہم ایک نیا اعلان کرتے ہیں ایمیزون سیج میکر ڈیپ لرننگ کنٹینر (DLC) جسے آپ چند منٹوں میں بڑے ماڈل کا اندازہ لگانے کے لیے استعمال کر سکتے ہیں۔ یہ DLC ماڈل کے متوازی انفرنس کے لیے کچھ مقبول اوپن سورس لائبریریوں کو پیک کرتا ہے، جیسے ڈیپ اسپیڈ اور ہگنگ فیس ایکسلریٹ۔

اس پوسٹ میں، ہم ایک نئے SageMaker بڑے ماڈل کا اندازہ DLC استعمال کرتے ہیں تاکہ دو مقبول ترین NLP ماڈلز کو تعینات کیا جا سکے: BigScience's BLOOM-176B اور میٹا کی OPT-30B گلے ملنے والے چہرے کے ذخیرے سے۔ خاص طور پر، ہم ڈیپ اسپیڈ سے ڈیپ جاوا لائبریری (DJL) سرونگ اور ٹینسر متوازی تکنیک استعمال کرتے ہیں تاکہ ٹیکسٹ جنریشن کے استعمال کے معاملے میں فی ٹوکن 0.1 سیکنڈ لیٹینسی حاصل کی جا سکے۔

آپ کو ہماری مکمل مثال نوٹ بکس میں مل سکتے ہیں۔ GitHub ذخیرہ.

بڑے ماڈل کا اندازہ لگانے کی تکنیک

زبان کے ماڈل حال ہی میں سائز اور مقبولیت دونوں میں پھٹ چکے ہیں۔ ہگنگ فیس جیسے ماڈل چڑیا گھر سے آسان رسائی اور درجہ بندی اور ٹیکسٹ جنریشن جیسے NLP کاموں میں بہتر درستگی اور کارکردگی کے ساتھ، پریکٹیشنرز تیزی سے ان بڑے ماڈلز تک پہنچ رہے ہیں۔ تاہم، بڑے ماڈل اکثر اتنے بڑے ہوتے ہیں کہ وہ ایک ہی ایکسلریٹر کی یادداشت میں فٹ ہو جائیں۔ مثال کے طور پر، BLOOM-176B ماڈل کو 350 گیگا بائٹس سے زیادہ ایکسلریٹر میموری کی ضرورت ہو سکتی ہے، جو آج دستیاب ہارڈویئر ایکسلریٹر کی صلاحیت سے کہیں زیادہ ہے۔ اس کے لیے ڈیپ اسپیڈ اور ہگنگ فیس ایکسلریٹ جیسی لائبریریوں سے ماڈل کی متوازی تکنیکوں کے استعمال کی ضرورت ہوتی ہے تاکہ ایک ماڈل کو ایک سے زیادہ ایکسلریٹروں میں تقسیم کیا جا سکے۔ اس پوسٹ میں، ہم استعمال کرتے ہیں سیج میکر بڑا ماڈل انفرنس کنٹینر ان دو اوپن سورس لائبریریوں کا استعمال کرتے ہوئے لیٹنسی اور تھرو پٹ کارکردگی پیدا کرنے اور موازنہ کرنے کے لیے۔

ڈیپ اسپیڈ اور ایکسلریٹ مختلف تکنیکوں کا استعمال کرتے ہیں تاکہ بڑے لینگویج ماڈلز کو بہتر بنایا جا سکے۔ کلیدی فرق ڈیپ اسپیڈ کا ہے۔ آپٹمائزڈ کرنل کا استعمال. یہ دانا ماڈل کے کمپیوٹیشن گراف میں رکاوٹوں کو کم کرکے انفرنس لیٹنسی کو ڈرامائی طور پر بہتر بنا سکتے ہیں۔ آپٹمائزڈ کرنل کو تیار کرنا مشکل ہو سکتا ہے اور یہ عام طور پر کسی خاص ماڈل کے فن تعمیر کے لیے مخصوص ہوتے ہیں۔ ڈیپ اسپیڈ مقبول بڑے ماڈلز جیسے کہ OPT اور BLOOM کو ان آپٹیمائزڈ کرنل کے ساتھ سپورٹ کرتا ہے۔ اس کے برعکس، Hugging Face کی Accelerate لائبریری میں لکھنے کے وقت آپٹمائزڈ کرنل شامل نہیں ہیں۔ جیسا کہ ہم اپنے نتائج کے سیکشن میں بحث کرتے ہیں، یہ فرق کارکردگی کے زیادہ تر حصے کے لیے ذمہ دار ہے جو ڈیپ اسپیڈ نے ایکسلریٹ سے زیادہ حاصل کیا ہے۔

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

حل جائزہ

بڑے زبان کے ماڈلز کی مؤثر طریقے سے میزبانی کرنے کے لیے، ہمیں درج ذیل کلیدی شعبوں میں خصوصیات اور تعاون کی ضرورت ہے:

  • تعمیر اور جانچ کے حل – ایم ایل ڈیولپمنٹ کی تکراری نوعیت کے پیش نظر، ہمیں اس کی تعمیر، تیزی سے اعادہ، اور جانچ کرنے کی صلاحیت کی ضرورت ہے کہ جب ان ماڈلز کی میزبانی کی جاتی ہے تو انفرنس اینڈ پوائنٹ کیسا برتاؤ کرے گا، بشمول تیزی سے ناکام ہونے کی صلاحیت۔ ان ماڈلز کو عام طور پر صرف p4dn یا g5 جیسی بڑی مثالوں پر ہی ہوسٹ کیا جا سکتا ہے، اور ماڈلز کے سائز کو دیکھتے ہوئے، انفرنس مثال کو گھمانے اور کسی بھی ٹیسٹ کی تکرار کو چلانے میں کچھ وقت لگ سکتا ہے۔ مقامی ٹیسٹنگ میں عام طور پر رکاوٹیں ہوتی ہیں کیونکہ آپ کو ٹیسٹ کرنے کے لیے سائز میں ایک جیسی مثال کی ضرورت ہوتی ہے، اور یہ ماڈلز حاصل کرنا آسان نہیں ہوتا ہے۔
  • تعیناتی اور پیمانے پر چل رہی ہے۔ - ماڈل فائلوں کو انفرنس مثالوں پر لوڈ کرنے کی ضرورت ہے، جو سائز کو دیکھتے ہوئے اپنے آپ میں ایک چیلنج پیش کرتی ہے۔ Tar/Un-Tar مثال کے طور پر Bloom-176B کو بنانے میں تقریباً 1 گھنٹہ اور لوڈ ہونے میں ایک گھنٹہ لگتا ہے۔ ہمیں ماڈل فائلوں تک آسان رسائی کی اجازت دینے کے لیے ایک متبادل طریقہ کار کی ضرورت ہے۔
  • ماڈل کو سنگلٹن کے طور پر لوڈ کیا جا رہا ہے۔ - ایک کثیر کارکن کے عمل کے لیے، ہمیں اس بات کو یقینی بنانا ہوگا کہ ماڈل صرف ایک بار لوڈ ہو تاکہ ہم ریس کے حالات میں نہ بھاگیں اور مزید غیر ضروری وسائل خرچ نہ کریں۔ اس پوسٹ میں، ہم براہ راست لوڈ کرنے کا ایک طریقہ دکھاتے ہیں۔ ایمیزون سادہ اسٹوریج سروس (ایمیزون S3)۔ تاہم، یہ صرف اس صورت میں کام کرتا ہے جب ہم DJL کی ڈیفالٹ ترتیبات استعمال کریں۔ مزید برآں، اختتامی نقطوں کی کسی بھی اسکیلنگ کو چند منٹوں میں گھومنے کے قابل ہونے کی ضرورت ہے، جس میں اس بات پر دوبارہ غور کرنے کی ضرورت ہے کہ ماڈلز کو کیسے لوڈ اور تقسیم کیا جا سکتا ہے۔
  • شارڈنگ فریم ورک - ان ماڈلز کو عام طور پر ٹینسر کے متوازی میکانزم کے ذریعے یا پائپ لائن شارڈنگ کے ذریعے عام شارڈنگ تکنیک کے طور پر ہونے کی ضرورت ہوتی ہے، اور ہمارے پاس ٹینسر شارڈنگ کے سب سے اوپر بنے ہوئے ZeRO شارڈنگ جیسے جدید تصورات ہیں۔ شارڈنگ کی تکنیک کے بارے میں مزید معلومات کے لیے، رجوع کریں۔ ماڈل متوازی. اس کو حاصل کرنے کے لیے، ہم NIVIDIA، DeepSpeed، اور دیگر سے مختلف مجموعے اور فریم ورک استعمال کر سکتے ہیں۔ اس کے لیے BYOC کی جانچ کرنے یا 1P کنٹینرز استعمال کرنے اور حل پر اعادہ کرنے اور بینچ مارکنگ ٹیسٹ چلانے کی صلاحیت کی ضرورت ہے۔ آپ ہوسٹنگ کے مختلف آپشنز جیسے غیر مطابقت پذیر، سرور لیس اور دیگر کو بھی جانچنا چاہتے ہیں۔
  • ہارڈ ویئر کا انتخاب - ہارڈ ویئر میں آپ کی پسند کا تعین تمام مذکورہ بالا پوائنٹس اور ٹریفک کے مزید نمونوں، کیس کی ضروریات اور ماڈل کے سائز سے ہوتا ہے۔

اس پوسٹ میں، ہم SageMaker پر BLOOM-176B اور OPT-30B کی میزبانی کے لیے DeepSpeed ​​کے آپٹمائزڈ کرنل اور ٹینسر کے متوازی تکنیک کا استعمال کرتے ہیں۔ ہم آپٹمائزڈ کرنل اور ٹینسر کے متوازی کارکردگی کے فوائد کو ظاہر کرنے کے لیے Accelerate سے نتائج کا موازنہ بھی کرتے ہیں۔ ڈیپ اسپیڈ اور ایکسلریٹ کے بارے میں مزید معلومات کے لیے رجوع کریں۔ ڈیپ اسپیڈ انفرنس: بے مثال پیمانے پر ٹرانسفارمر ماڈلز کے موثر انفرنس کو فعال کرنا اور ڈیپ اسپیڈ اور ایکسلریٹ کے ساتھ ناقابل یقین حد تک تیز بلوم کا اندازہ.

ہم اس مثال میں DJLServing کو ماڈل سرونگ سلوشن کے طور پر استعمال کرتے ہیں۔ DJLServing ڈیپ جاوا لائبریری (DJL) کے ذریعہ تقویت یافتہ ایک اعلی کارکردگی والا یونیورسل ماڈل ہے جو کہ پروگرامنگ لینگویج agnostic ہے۔ DJL اور DJLServing کے بارے میں مزید جاننے کے لیے، رجوع کریں۔ DJLServing اور DeepSpeed ​​ماڈل کے متوازی اندازہ کا استعمال کرتے ہوئے Amazon SageMaker پر بڑے ماڈلز تعینات کریں۔.

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

مندرجہ ذیل اقدامات یہ ظاہر کرتے ہیں کہ کس طرح DJLServing اور SageMaker بڑے ماڈل انفرنس کنٹینر کا استعمال کرتے ہوئے SageMaker میں BLOOM-176B ماڈل کو تعینات کیا جائے۔ مکمل مثال ہمارے ہاں بھی موجود ہے۔ GitHub ذخیرہ.

DJLServing SageMaker DLC امیج کا استعمال

اپنے مخصوص علاقے کے ساتھ ریجن کو تبدیل کرنے کے بعد DJLServing SageMaker DLC امیج کو استعمال کرنے کے لیے درج ذیل کوڈ کا استعمال کریں جس میں آپ نوٹ بک چلا رہے ہیں:

763104351884.dkr.ecr..amazonaws.com/djl-inference:0.19.0-deepspeed0.7.3-cu113
# example uri might be like 763104351884.dkr.ecr.us-east-1.amazonaws.com/djl-inference:0.19.0-deepspeed0.7.3-cu113

ہماری ماڈل فائل بنائیں

سب سے پہلے، ہم نامی ایک فائل بناتے ہیں۔ serving.properties جس میں کوڈ کی صرف ایک لائن ہوتی ہے۔ یہ DJL ماڈل سرور کو ڈیپ اسپیڈ انجن استعمال کرنے کو کہتا ہے۔ فائل مندرجہ ذیل کوڈ پر مشتمل ہے:

engine=DeepSpeed

serving.properties DJLServing کی طرف سے بیان کردہ ایک فائل ہے جو فی ماڈل کنفیگریشن کو ترتیب دینے کے لیے استعمال ہوتی ہے۔

اگلا، ہم اپنی تخلیق کرتے ہیں model.py فائل، جو ماڈل کو لوڈ کرنے اور پھر پیش کرنے کے لیے درکار کوڈ کی وضاحت کرتی ہے۔ ہمارے کوڈ میں، ہم پڑھتے ہیں۔ TENSOR_PARALLEL_DEGREE ماحولیاتی متغیر (پہلے سے طے شدہ قدر 1 ہے)۔ یہ ان آلات کی تعداد کا تعین کرتا ہے جن پر ٹینسر کے متوازی ماڈیول تقسیم کیے جاتے ہیں۔ نوٹ کریں کہ ڈیپ اسپیڈ چند بلٹ ان پارٹیشن تعریفیں فراہم کرتا ہے، بشمول بلوم ماڈلز کے لیے۔ ہم اسے مخصوص کرکے استعمال کرتے ہیں۔ replace_method اور relpace_with_kernel_inject. اگر آپ کے پاس حسب ضرورت ماڈل ہے اور مؤثر طریقے سے تقسیم کرنے کے لیے ڈیپ اسپیڈ کی ضرورت ہے، تو آپ کو تبدیل کرنے کی ضرورت ہے۔ relpace_with_kernel_inject کرنے کے لئے false اور شامل کریں۔ injection_policy رن ٹائم پارٹیشن کو کام کرنے کے لیے۔ مزید معلومات کے لیے رجوع کریں۔ انفرنس کے لیے شروع کیا جا رہا ہے۔. ہماری مثال کے طور پر، ہم نے ڈیپ اسپیڈ پر پہلے سے تقسیم شدہ بلوم ماڈل استعمال کیا۔

دوسرا، میں model.py فائل، اختتامی نقطہ ختم ہونے کے بعد ہم ایمیزون S3 سے ماڈل بھی لوڈ کرتے ہیں۔ ماڈل میں بھری ہوئی ہے۔ /tmp کنٹینر پر جگہ کیونکہ سیج میکر نقشہ بناتا ہے۔ /tmp کرنے کے لئے ایمیزون لچکدار بلاک اسٹور (ایمیزون ای بی ایس) والیوم جو اس وقت نصب ہوتا ہے جب ہم اختتامی نقطہ تخلیق پیرامیٹر کی وضاحت کرتے ہیں۔ VolumeSizeInGB. p4dn جیسی مثالوں کے لیے، جو کہ والیوم مثال کے ساتھ پہلے سے بنی ہوئی ہیں، ہم اس کا فائدہ اٹھانا جاری رکھ سکتے ہیں۔ /tmp کنٹینر پر. درج ذیل کوڈ دیکھیں:

from djl_python import Input, Output
import os
import deepspeed
import torch
import torch.distributed as dist
import sys
import subprocess
import time
from glob import glob
from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer
from transformers.models.opt.modeling_opt import OPTDecoderLayer

predictor = None

def check_config():
    local_rank = os.getenv('LOCAL_RANK')
    
    if not local_rank:
        return False
    return True
    
def get_model():

    if not check_config():
        raise Exception("DJL:DeepSpeed configurations are not default. This code does not support non default configurations") 
    
    tensor_parallel = int(os.getenv('TENSOR_PARALLEL_DEGREE', '1'))
    local_rank = int(os.getenv('LOCAL_RANK', '0'))
    model_dir = "/tmp/model"
    bucket = os.environ.get("MODEL_S3_BUCKET")
    key_prefix = os.environ.get("MODEL_S3_PREFIX")
    print(f"rank: {local_rank}")
    if local_rank == 0:
        if f"{model_dir}/DONE" not in glob(f"{model_dir}/*"):
            print("Starting Model downloading files")
            try:
                proc_run = subprocess.run(
                    ["aws", "s3", "cp", "--recursive", f"s3://{bucket}/{key_prefix}", model_dir]
                )
                print("Model downloading finished")
                # write file when download complete. Could use dist.barrier() but this makes it easier to check if model is downloaded in case of retry
                with open(f"{model_dir}/DONE", "w") as f:
                    f.write("download_complete")
                    
                proc_run.check_returncode() # to throw the error in case there was one
                
            except subprocess.CalledProcessError as e:
                print ( "Model download failed: Error:nreturn code: ", e.returncode, "nOutput: ", e.stderr )
                raise # FAIL FAST  
                               
    dist.barrier()
                
    
    tokenizer = AutoTokenizer.from_pretrained(model_dir)
    
    # has to be FP16 as Int8 model loading not yet supported
    with deepspeed.OnDevice(dtype=torch.float16, device="meta"):
        model = AutoModelForCausalLM.from_config(
            AutoConfig.from_pretrained(model_dir), torch_dtype=torch.bfloat16
        )
    model = model.eval()
    
    model = deepspeed.init_inference(
        model,
        mp_size=tensor_parallel,
        dtype=torch.int8,
        base_dir = model_dir,
        checkpoint=os.path.join(model_dir, "ds_inference_config.json"),
        replace_method='auto',
        replace_with_kernel_inject=True
    )

    model = model.module
    dist.barrier()
    return model, tokenizer

DJLServing کسی بھی پائپ پیکیجز پر رن ​​ٹائم انسٹالیشن کا انتظام کرتا ہے جس میں وضاحت کی گئی ہے۔ requirement.txt. اس فائل میں یہ ہوگا:

awscli
boto3

ہم نے ایک ڈائریکٹری بنائی ہے۔ code اور model.py, serving.properties، اور requirements.txt اس ڈائریکٹری میں فائلیں پہلے ہی بنی ہوئی ہیں۔ فائلوں کو دیکھنے کے لیے، آپ ٹرمینل سے درج ذیل کوڈ کو چلا سکتے ہیں:

mkdir -p code
cat code/model.py 
cat code/serving.properties 
cat code/requirements.txt 

مندرجہ ذیل اعداد و شمار کی ساخت کو ظاہر کرتا ہے model.tar.gz.

آخر میں، ہم ماڈل فائل بناتے ہیں اور اسے Amazon S3 پر اپ لوڈ کرتے ہیں:

tar cvfz model.tar.gz code
s3_code_artifact = sess.upload_data("model.tar.gz", bucket, s3_code_prefix)

ہگنگ فیس سے ماڈل ڈاؤن لوڈ اور اسٹور کریں (اختیاری)

اگر آپ ایمیزون S3 پر ماڈل ڈاؤن لوڈ کرنا چاہتے ہیں اور اسے وہاں سے استعمال کرنا چاہتے ہیں تو ہم نے اس سیکشن میں اقدامات فراہم کیے ہیں۔ اقدامات GitHub پر Jupyter فائل میں فراہم کیے گئے ہیں۔ مندرجہ ذیل اسکرین شاٹ اقدامات کا ایک سنیپ شاٹ دکھاتا ہے۔

Amazon SageMaker پر BLOOM-176B اور OPT-30B کو بڑے ماڈل انفرنس ڈیپ لرننگ کنٹینرز اور DeepSpeed ​​PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ تعینات کریں۔ عمودی تلاش۔ عی

سیج میکر ماڈل بنائیں

اب ہم ایک بناتے ہیں۔ سیج میکر ماڈل. ہم استعمال کرتے ہیں ایمیزون لچکدار کنٹینر رجسٹری (Amazon ECR) کی طرف سے فراہم کردہ تصویر اور SageMaker ماڈل بنانے کے لیے پچھلے مرحلے سے ماڈل آرٹفیکٹ۔ ماڈل سیٹ اپ میں، ہم ترتیب دیتے ہیں۔ TENSOR_PARALLEL_DEGREE=8، جس کا مطلب ہے کہ ماڈل کو 8 GPUs کے ساتھ تقسیم کیا گیا ہے۔ درج ذیل کوڈ دیکھیں:

PrimaryContainer={
        "Image": inference_image_uri,
        "ModelDataUrl": s3_code_artifact,
        "Environment": {
            "MODEL_S3_BUCKET": bucket,
            "MODEL_S3_PREFIX": s3_model_prefix,
            "TENSOR_PARALLEL_DEGREE": "8",
},

Jupyter فائل میں پچھلے سیل کو چلانے کے بعد، آپ کو مندرجہ ذیل سے ملتا جلتا آؤٹ پٹ نظر آئے گا۔

{
    "ModelArn": "arn:aws:sagemaker:us-east-1::model/bloom-djl-ds-"
}

سیج میکر اینڈ پوائنٹ بنائیں

آپ جانچ کے لیے متعدد GPUs کے ساتھ کسی بھی مثال کو استعمال کر سکتے ہیں۔ اس ڈیمو میں، ہم ایک p4d.24xlarge مثال استعمال کرتے ہیں۔ درج ذیل کوڈ میں، نوٹ کریں کہ ہم کس طرح سیٹ کرتے ہیں۔ ModelDataDownloadTimeoutInSeconds, ContainerStartupHealthCheckTimeoutInSeconds، اور VolumeSizeInGB بڑے ماڈل سائز کو ایڈجسٹ کرنے کے پیرامیٹرز۔ دی VolumeSizeInGB پیرامیٹر EBS والیوم اٹیچمنٹ کی حمایت کرنے والے GPU مثالوں پر لاگو ہوتا ہے۔

endpoint_config_response = sm_client.create_endpoint_config(
    EndpointConfigName=endpoint_config_name,
    ProductionVariants=[
        {
            "VariantName": "variant1",
            "ModelName": model_name,
            "InstanceType": "ml.p4d.24xlarge",
            "InitialInstanceCount": 1,
            #"VolumeSizeInGB" : 200,
            "ModelDataDownloadTimeoutInSeconds": 2400,
            "ContainerStartupHealthCheckTimeoutInSeconds": 2400,
        },
    ],
)'

آخر میں، ہم سیج میکر اینڈ پوائنٹ بناتے ہیں:

create_endpoint_response = sm_client.create_endpoint(
    EndpointName=f"{endpoint_name}", EndpointConfigName=endpoint_config_name
)

آپ اسے درج ذیل کوڈ میں پرنٹ آؤٹ دیکھتے ہیں:

{
    "EndpointArn": "arn:aws:sagemaker:us-east-1::endpoint/bloom-djl-ds-"
}

اختتامی نقطہ شروع ہونے میں کچھ وقت لگ سکتا ہے۔ اگر آپ اس میں بھاگتے ہیں تو آپ کچھ اور بار کوشش کر سکتے ہیں۔ InsufficientInstanceCapacity غلطی، یا آپ اپنے اکاؤنٹ میں حد بڑھانے کے لیے AWS سے درخواست کر سکتے ہیں۔

پرفارمنس ٹیوننگ

اگر آپ اس پوسٹ اور اس کے ساتھ والی نوٹ بک کو کسی مختلف ماڈل کے ساتھ استعمال کرنے کا ارادہ رکھتے ہیں، تو آپ سیج میکر، ڈیپ اسپیڈ، اور DJL پیش کردہ کچھ ٹیون ایبل پیرامیٹرز کو تلاش کرنا چاہتے ہیں۔ ان پیرامیٹرز کے ساتھ بار بار تجربہ کرنے سے آپ کے میزبان بڑے ماڈل کی تاخیر، تھرو پٹ اور لاگت پر مادی اثر پڑ سکتا ہے۔ ٹیوننگ پیرامیٹرز کے بارے میں مزید جاننے کے لیے جیسے کارکنوں کی تعداد، ٹینسر کے متوازی کی ڈگری، کام کی قطار کا سائز، اور دیگر، ملاحظہ کریں DJL سرونگ کنفیگریشنز اور DJLServing اور DeepSpeed ​​ماڈل کے متوازی اندازہ کا استعمال کرتے ہوئے Amazon SageMaker پر بڑے ماڈلز تعینات کریں۔.

نتائج کی نمائش

اس پوسٹ میں، ہم نے SageMaker ML مثالوں پر BLOOM-176B اور OPT-30B کی میزبانی کے لیے DeepSpeed ​​کا استعمال کیا۔ مندرجہ ذیل جدول ہماری کارکردگی کے نتائج کا خلاصہ کرتا ہے، بشمول Hugging Face's Accelerate کے ساتھ موازنہ۔ لیٹنسی ملی سیکنڈز کی تعداد کو ظاہر کرتی ہے جو 256 ٹوکن اسٹرنگ کو چار بار بنانے میں لیتی ہے (batch_size=4) ماڈل سے۔ تھرو پٹ ہر ٹیسٹ کے لیے فی سیکنڈ تیار کردہ ٹوکنز کی تعداد کو ظاہر کرتا ہے۔ Hugging Face Accelerate کے لیے، ہم نے GPU میموری میپنگ کے ساتھ لائبریری کی ڈیفالٹ لوڈنگ کا استعمال کیا۔ DeepSpeed ​​کے لیے، ہم نے اس کا تیز ترین چیک پوائنٹ لوڈنگ میکانزم استعمال کیا۔

ماڈل لائبریری ماڈل کی درستگی بیچ کا سائز متوازی ڈگری مثال لوڈ کرنے کا وقت
(ے)
تاخیر (4 x 256 ٹوکن آؤٹ پٹ) .
. . . . . . . P50
(محترمہ)
P90
(محترمہ)
P99
(محترمہ)
انحصار
(ٹوکن/سیکنڈ)
BLOOM-176B ڈیپ اسپیڈ INT8 4 8 p4d.24xlarge 74.9 27,564 27,580 32,179 37.1
BLOOM-176B تیز INT8 4 8 p4d.24xlarge 669.4 92,694 92,735 103,292 11.0
OPT-30B ڈیپ اسپیڈ FP16 4 4 g5.24x بڑا 239.4 11,299 11,302 11,576 90.6
OPT-30B تیز FP16 4 4 g5.24x بڑا 533.8 63,734 63,737 67,605 16.1

لیٹنسی کے نقطہ نظر سے، DeepSpeed ​​BLOOM-3.4B کے لیے تقریباً 176 گنا تیز اور OPT-5.6B کے لیے Accelerate سے 30 گنا تیز ہے۔ ڈیپ اسپیڈ کے آپٹمائزڈ کرنل تاخیر میں اس فرق کے زیادہ تر ذمہ دار ہیں۔ ان نتائج کو دیکھتے ہوئے، اگر آپ کی پسند کا ماڈل سپورٹ کرتا ہے تو ہم ڈیپ اسپیڈ اوور ایکسلریٹ استعمال کرنے کی تجویز کرتے ہیں۔

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

یہ نتائج مختلف ماڈل سائز کے تاخیر اور تھروپپٹ میں فرق کو بھی ظاہر کرتے ہیں۔ ہمارے ٹیسٹوں میں، OPT-30B ایک مثال کی قسم پر BLOOM-2.4B کے مقابلے میں فی یونٹ وقت میں 176 گنا زیادہ ٹوکن تیار کرتا ہے جو تین گنا سے زیادہ سستا ہے۔ قیمت فی یونٹ تھرو پٹ کی بنیاد پر، g30xl مثال پر OPT-5.24B p8.9d.176xl مثال پر BLOOM-4B سے 24 گنا بہتر ہے۔ اگر آپ کے پاس سخت تاخیر، تھرو پٹ، یا لاگت کی حدود ہیں، تو ممکنہ طور پر سب سے چھوٹا ماڈل استعمال کرنے پر غور کریں جو اب بھی فعال ضروریات کو پورا کرے گا۔

صاف کرو

بہترین طریقوں کے حصے کے طور پر یہ ہمیشہ بیکار مثالوں کو حذف کرنے کی سفارش کی جاتی ہے۔ ذیل کا کوڈ آپ کو دکھاتا ہے کہ مثالوں کو کیسے حذف کریں۔

# - Delete the end point
sm_client.delete_endpoint(EndpointName=endpoint_name)

# - In case the end point failed we still want to delete the model
sm_client.delete_endpoint_config(EndpointConfigName=endpoint_config_name)
sm_client.delete_model(ModelName=model_name)

اختیاری طور پر اپنے S3 سے ماڈل چیک پوائنٹ کو حذف کریں۔

!aws s3 rm --recursive s3:///{s3_model_prefix}

نتیجہ

اس پوسٹ میں، ہم نے دکھایا کہ SageMaker بڑے ماڈل انفرنس کنٹینرز کو دو بڑے لینگویج ماڈلز BLOOM-176B اور OPT-30B کی میزبانی کے لیے کیسے استعمال کیا جائے۔ ہم نے ایک ہی SageMaker ML مثال پر متعدد GPUs کے ساتھ DeepSpeed ​​کی ماڈل متوازی تکنیکوں کا استعمال کیا۔

Amazon SageMaker اور اس کے بڑے ماڈل کے تخمینے کی صلاحیتوں کے بارے میں مزید تفصیلات کے لیے، رجوع کریں۔ ایمیزون سیج میکر اب قابل ترتیب والیوم سائز اور ٹائم آؤٹ کوٹہ کے ذریعے بڑے ماڈلز کی تعیناتی کی حمایت کرتا ہے۔ اور ریئل ٹائم اندازہ.


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

Amazon SageMaker پر BLOOM-176B اور OPT-30B کو بڑے ماڈل انفرنس ڈیپ لرننگ کنٹینرز اور DeepSpeed ​​PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ تعینات کریں۔ عمودی تلاش۔ عیسائمن زمرین ایک AI/ML سلوشنز آرکیٹیکٹ ہے جس کی بنیادی توجہ صارفین کو ان کے ڈیٹا اثاثوں سے قیمت نکالنے میں مدد کرنا ہے۔ اپنے فارغ وقت میں، سائمن کو فیملی کے ساتھ وقت گزارنے، سائنس فائی پڑھنے، اور مختلف DIY ہاؤس پروجیکٹس پر کام کرنا پسند ہے۔

Amazon SageMaker پر BLOOM-176B اور OPT-30B کو بڑے ماڈل انفرنس ڈیپ لرننگ کنٹینرز اور DeepSpeed ​​PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ تعینات کریں۔ عمودی تلاش۔ عی روپندر گریوال AWS کے ساتھ ایک Sr Ai/ML ماہر حل آرکیٹیکٹ ہے۔ وہ فی الحال SageMaker پر ماڈلز اور MLOps کی خدمت پر توجہ مرکوز کرتا ہے۔ اس کردار سے پہلے وہ مشین لرننگ انجینئر بلڈنگ اور ہوسٹنگ ماڈل کے طور پر کام کر چکے ہیں۔ کام کے علاوہ وہ ٹینس کھیلنا اور پہاڑی پگڈنڈیوں پر بائیک چلانا پسند کرتا ہے۔

Amazon SageMaker پر BLOOM-176B اور OPT-30B کو بڑے ماڈل انفرنس ڈیپ لرننگ کنٹینرز اور DeepSpeed ​​PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ تعینات کریں۔ عمودی تلاش۔ عیفرینک لیو اے ڈبلیو ایس ڈیپ لرننگ کے لیے سافٹ ویئر انجینئر ہے۔ وہ سافٹ ویئر انجینئرز اور سائنسدانوں کے لیے جدید گہرے سیکھنے کے اوزار بنانے پر توجہ مرکوز کرتا ہے۔ اپنے فارغ وقت میں، وہ دوستوں اور خاندان کے ساتھ پیدل سفر کا لطف اٹھاتا ہے۔

Amazon SageMaker پر BLOOM-176B اور OPT-30B کو بڑے ماڈل انفرنس ڈیپ لرننگ کنٹینرز اور DeepSpeed ​​PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ تعینات کریں۔ عمودی تلاش۔ عیایلن ٹین SageMaker کے ساتھ ایک سینئر پروڈکٹ مینیجر ہے جو بڑے ماڈل کے تخمینے پر سرکردہ کوششیں کر رہا ہے۔ وہ تجزیات کے شعبے میں مشین لرننگ کو لاگو کرنے کا پرجوش ہے۔ کام سے باہر، وہ باہر سے لطف اندوز ہوتا ہے۔

Amazon SageMaker پر BLOOM-176B اور OPT-30B کو بڑے ماڈل انفرنس ڈیپ لرننگ کنٹینرز اور DeepSpeed ​​PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ تعینات کریں۔ عمودی تلاش۔ عیدھول پٹیل AWS میں پرنسپل مشین لرننگ آرکیٹیکٹ ہے۔ انہوں نے تقسیم شدہ کمپیوٹنگ اور مصنوعی ذہانت سے متعلق مسائل پر بڑے اداروں سے لے کر درمیانے درجے کے اسٹارٹ اپس تک کی تنظیموں کے ساتھ کام کیا ہے۔ وہ NLP اور کمپیوٹر ویژن ڈومینز سمیت گہری سیکھنے پر توجہ مرکوز کرتا ہے۔ وہ صارفین کو SageMaker پر اعلیٰ کارکردگی کے ماڈل کا اندازہ حاصل کرنے میں مدد کرتا ہے۔

Amazon SageMaker پر BLOOM-176B اور OPT-30B کو بڑے ماڈل انفرنس ڈیپ لرننگ کنٹینرز اور DeepSpeed ​​PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ تعینات کریں۔ عمودی تلاش۔ عیکنگ لین AWS میں سافٹ ویئر ڈویلپمنٹ انجینئر ہے۔ وہ Amazon میں کئی چیلنجنگ پروڈکٹس پر کام کر رہا ہے، بشمول ہائی پرفارمنس ایم ایل انفرنس سلوشنز اور ہائی پرفارمنس لاگنگ سسٹم۔ Qing کی ٹیم نے بہت کم تاخیر کے ساتھ Amazon Advertising میں پہلا بلین پیرامیٹر ماڈل کامیابی کے ساتھ لانچ کیا۔ کنگ کو بنیادی ڈھانچے کی اصلاح اور گہری سیکھنے کی سرعت کے بارے میں گہرائی سے علم ہے۔

Amazon SageMaker پر BLOOM-176B اور OPT-30B کو بڑے ماڈل انفرنس ڈیپ لرننگ کنٹینرز اور DeepSpeed ​​PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ تعینات کریں۔ عمودی تلاش۔ عیچنگ وی لی ایمیزون ویب سروسز میں مشین لرننگ کا ماہر ہے۔ انہوں نے پی ایچ ڈی کی ڈگری حاصل کی۔ آپریشنز ریسرچ میں جب اس نے اپنے مشیر کے ریسرچ گرانٹ اکاؤنٹ کو توڑا اور نوبل انعام دینے میں ناکام رہے جس کا اس نے وعدہ کیا تھا۔ فی الحال وہ مالیاتی خدمات اور انشورنس انڈسٹری میں صارفین کو AWS پر مشین لرننگ سلوشنز بنانے میں مدد کرتا ہے۔ اپنے فارغ وقت میں وہ پڑھنا اور پڑھانا پسند کرتے ہیں۔

Amazon SageMaker پر BLOOM-176B اور OPT-30B کو بڑے ماڈل انفرنس ڈیپ لرننگ کنٹینرز اور DeepSpeed ​​PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ تعینات کریں۔ عمودی تلاش۔ عیرابرٹ وان ڈوسن ایمیزون سیج میکر کے ساتھ ایک سینئر پروڈکٹ مینیجر ہے۔ وہ بڑے ماڈل کا اندازہ جیسی ایپلی کیشنز کے لیے گہری سیکھنے کے ماڈل کی اصلاح کی رہنمائی کرتا ہے۔

Amazon SageMaker پر BLOOM-176B اور OPT-30B کو بڑے ماڈل انفرنس ڈیپ لرننگ کنٹینرز اور DeepSpeed ​​PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ تعینات کریں۔ عمودی تلاش۔ عیسدھارتھ وینکٹیشن اے ڈبلیو ایس ڈیپ لرننگ میں سافٹ ویئر انجینئر ہے۔ وہ فی الحال بڑے ماڈل کے تخمینے کے حل کی تعمیر پر توجہ مرکوز کرتا ہے۔ AWS سے پہلے اس نے Amazon Grocery org میں دنیا بھر کے صارفین کے لیے ادائیگی کی نئی خصوصیات بنانے میں کام کیا۔ کام سے باہر، وہ اسکیئنگ، باہر، اور کھیل دیکھنے سے لطف اندوز ہوتا ہے۔

ٹائم اسٹیمپ:

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