Amazon SageMaker PlatoBlockchain Data Intelligence پر ensemble ML ماڈلز چلائیں۔ عمودی تلاش۔ عی

Amazon SageMaker پر ensemble ML ماڈل چلائیں۔

مشین لرننگ (ML) میں ماڈل کی تعیناتی تیزی سے پیچیدہ ہوتی جا رہی ہے۔ آپ صرف ایک ML ماڈل نہیں بلکہ ML ماڈلز کے بڑے گروپوں کو جوڑنا چاہتے ہیں جو کام کے بہاؤ کے طور پر پیش کیا جاتا ہے۔ یہ ورک فلوز متعدد ایم ایل ماڈلز پر مشتمل ہیں۔ ان ML ماڈلز کو تیار کرنا مشکل ہے کیونکہ آپ کو مختلف کارکردگی اور تاخیر کے تقاضوں پر عمل کرنے کی ضرورت ہے۔

ایمیزون سیج میکر کے ساتھ سنگل مثال کے ملبوسات کی حمایت کرتا ہے۔ ٹریٹن انفرنس سرور. یہ قابلیت آپ کو ایسے ماڈل کے جوڑ چلانے کی اجازت دیتی ہے جو کسی ایک مثال پر فٹ ہوں۔ پردے کے پیچھے، SageMaker لیوریج Triton Inference Server کو انتہائی کم (سنگل ڈیجٹ ملی سیکنڈز) انفرنس لیٹنسی کے ساتھ تھرو پٹ اور ہارڈویئر کے استعمال کو زیادہ سے زیادہ کرنے کے لیے اینڈ پوائنٹ کے پیچھے ہر مثال پر جوڑ کا انتظام کرنے کے لیے۔ ٹرائٹن کے ساتھ، آپ حمایت یافتہ ایم ایل فریم ورکس کی ایک وسیع رینج (بشمول TensorFlow، PyTorch، ONNX، XGBoost، اور NVIDIA TensorRT) اور انفراسٹرکچر بیک اینڈز بشمول GPUs، CPUs، اور AWS Inferentia.

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

حل جائزہ

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

کام کے بوجھ کو ان صلاحیتوں کو مدنظر رکھنا چاہیے جو ٹرائٹن فراہم کرتا ہے تاکہ یہ یقینی بنایا جا سکے کہ ان کے ماڈلز پیش کیے جا سکتے ہیں۔ ٹریٹن باکس سے باہر متعدد مشہور فریم ورکس کو سپورٹ کرتا ہے، بشمول TensorFlow، PyTorch، ONNX، XGBoost، اور NVIDIA TensorRT۔ ٹرائٹن مختلف بیک اینڈس کو بھی سپورٹ کرتا ہے۔ جو الگورتھم کو صحیح طریقے سے چلانے کے لیے درکار ہیں۔ آپ کو اس بات کو یقینی بنانا چاہیے کہ آپ کے ماڈلز کو ان بیک اینڈز سے سپورٹ کیا گیا ہے اور اس صورت میں کہ ایک بیک اینڈ نہیں کرتا ہے، Triton آپ کو خود کو لاگو کرنے اور اسے ضم کرنے کی اجازت دیتا ہے۔ آپ کو اس بات کی بھی توثیق کرنی چاہیے کہ آپ کا الگورتھم ورژن تعاون یافتہ ہے اور ساتھ ہی اس بات کو یقینی بنائیں کہ ماڈل کے نمونے متعلقہ پس منظر کے ذریعے قابل قبول ہیں۔ یہ چیک کرنے کے لیے کہ آیا آپ کا مخصوص الگورتھم تعاون یافتہ ہے، رجوع کریں۔ ٹرائٹن انفرنس سرور بیک اینڈ NVIDIA کے زیر انتظام مقامی طور پر حمایت یافتہ بیک اینڈز کی فہرست کے لیے۔

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

آئیے ایک تصویری درجہ بندی نیورل نیٹ ورک ماڈل لیتے ہیں اور دیکھتے ہیں کہ ہم اپنے کام کے بوجھ کو کیسے تیز کر سکتے ہیں۔ اس مثال میں، ہم اپنے جوڑ کے تناظر میں اپنی پری پروسیسنگ کو تیز کرنے کے لیے NVIDIA DALI بیک اینڈ کا استعمال کرتے ہیں۔

ٹریٹن ماڈل کے جوڑ بنائیں

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

ٹرائٹن انفرنس سرور ماڈل ریپوزٹریز سے ماڈل پیش کرتا ہے۔ آئیے DALI پری پروسیسنگ ماڈل، TensorFlow inception V3 ماڈل، اور ماڈل ensemble کنفیگریشن پر مشتمل ensemble ماڈل کے لیے ماڈل ریپوزٹری لے آؤٹ کو دیکھیں۔ ہر ذیلی ڈائرکٹری میں متعلقہ ماڈلز کے لیے مخزن کی معلومات ہوتی ہیں۔ دی config.pbtxt فائل ماڈلز کے لیے ماڈل کنفیگریشن کی وضاحت کرتی ہے۔ ہر ڈائرکٹری میں ماڈل کے ہر ورژن کے لیے ایک عددی ذیلی فولڈر ہونا چاہیے اور یہ ایک مخصوص بیک اینڈ کے ذریعے چلایا جاتا ہے جسے ٹرائٹن سپورٹ کرتا ہے۔

NVIDIA ٹرائٹن ماڈل ریپوزٹری

NVIDIA DALI

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

NVIDIA ڈالی۔

درج ذیل کوڈ DALI بیک اینڈ کے لیے ماڈل کنفیگریشن کو ظاہر کرتا ہے:

name: "dali"
backend: "dali"
max_batch_size: 256
input [
  {
    name: "DALI_INPUT_0"
    data_type: TYPE_UINT8
    dims: [ -1 ]
  }
]
output [
  {
    name: "DALI_OUTPUT_0"
    data_type: TYPE_FP32
    dims: [ 299, 299, 3 ]
  }
]
parameters: [
  {
    key: "num_threads"
    value: { string_value: "12" }
  }
]

آغاز V3 ماڈل

اس پوسٹ کے لیے، ہم دکھاتے ہیں کہ کیسے DALI کو Inception V3 کے ساتھ ماڈل کے جوڑ میں استعمال کیا جاتا ہے۔ Inception V3 TensorFlow پہلے سے تربیت یافتہ ماڈل کو گراف ڈیف فارمیٹ میں ایک فائل کے نام سے محفوظ کیا گیا ہے model.graphdef. config.pbtxt فائل میں ماڈل کے نام، پلیٹ فارم، کے بارے میں معلومات ہیں max_batch_size، اور ان پٹ اور آؤٹ پٹ معاہدے۔ ہم ترتیب دینے کی تجویز کرتے ہیں۔ max_batch_size آغاز V3 ماڈل بیچ سائز سے کم کنفیگریشن۔ لیبل فائل میں 1,000 مختلف کلاسوں کے لیے کلاس لیبلز ہیں۔ ہم آغاز کی درجہ بندی کے ماڈل لیبل کو کاپی کرتے ہیں۔ inception_graphdef ماڈل ریپوزٹری میں ڈائریکٹری۔ لیبل فائل میں 1,000 کلاس لیبلز شامل ہیں۔ تصویری نیٹ درجہ بندی ڈیٹاسیٹ

name: "inception_graphdef"
platform: "tensorflow_graphdef"
max_batch_size: 256
input [
  {
    name: "input"
    data_type: TYPE_FP32
    format: FORMAT_NHWC
    dims: [ 299, 299, 3 ]
  }
]
output [
  {
    name: "InceptionV3/Predictions/Softmax"
    data_type: TYPE_FP32
    dims: [ 1001 ]
    label_filename: "inception_labels.txt"
  }
]

ٹریٹن کا جوڑا

درج ذیل کوڈ DALI پری پروسیسنگ اور امیج کی درجہ بندی کے لیے ایک جوڑا ماڈل کی ترتیب کو ظاہر کرتا ہے:

name: "ensemble_dali_inception"
platform: "ensemble"
max_batch_size: 256
input [
  {
    name: "INPUT"
    data_type: TYPE_UINT8
    dims: [ -1 ]
  }
]
output [
  {
    name: "OUTPUT"
    data_type: TYPE_FP32
    dims: [ 1001 ]
  }
]
ensemble_scheduling {
  step [
    {
      model_name: "dali"
      model_version: -1
      input_map {
        key: "DALI_INPUT_0"
        value: "INPUT"
      }
      output_map {
        key: "DALI_OUTPUT_0"
        value: "preprocessed_image"
      }
    },
    {
      model_name: "inception_graphdef"
      model_version: -1
      input_map {
        key: "input"
        value: "preprocessed_image"
      }
      output_map {
        key: "InceptionV3/Predictions/Softmax"
        value: "OUTPUT"
      }
    }
  ]
}

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

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

آئیے ہم نے جو ماڈل نمونے اپ لوڈ کیے ہیں ان سے ایک SageMaker ماڈل بنائیں ایمیزون سادہ اسٹوریج سروس (ایمیزون S3)۔

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

اس کے علاوہ، آپ سیٹ کر سکتے ہیں SAGEMAKER_TRITON_BUFFER_MANAGER_THREAD_COUNT اور SAGEMAKER_TRITON_THREAD_COUNT دھاگے کی تعداد کو بہتر بنانے کے لیے۔

container = {
    "Image": triton_image_uri,
    "ModelDataUrl": model_uri,
    "Environment": {"SAGEMAKER_TRITON_DEFAULT_MODEL_NAME": "ensemble_dali_inception"},
}
create_model_response = sm_client.create_model(
    ModelName=sm_model_name, ExecutionRoleArn=role, PrimaryContainer=container
)

پچھلے ماڈل کے ساتھ، ہم ایک اینڈ پوائنٹ کنفیگریشن بناتے ہیں جہاں ہم ان مثالوں کی قسم اور تعداد کی وضاحت کر سکتے ہیں جو ہم اینڈ پوائنٹ میں چاہتے ہیں:

create_endpoint_config_response = sm_client.create_endpoint_config(
    EndpointConfigName=endpoint_config_name,
    ProductionVariants=[
        {
            "InstanceType": instance_type,
            "InitialVariantWeight": 1,
            "InitialInstanceCount": 1,
            "ModelName": sm_model_name,
            "VariantName": "AllTraffic",
        }
    ],
)
endpoint_config_arn = create_endpoint_config_response["EndpointConfigArn"]

ہم اس اینڈ پوائنٹ کنفیگریشن کو ایک نیا SageMaker اینڈ پوائنٹ بنانے کے لیے استعمال کرتے ہیں اور تعیناتی ختم ہونے کا انتظار کرتے ہیں۔ تعیناتی کامیاب ہونے پر حالت InService میں بدل جاتی ہے۔

create_endpoint_response = sm_client.create_endpoint(
    EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name
)
endpoint_arn = create_endpoint_response["EndpointArn"]

انفرنس پے لوڈ

ان پٹ پے لوڈ امیج پری پروسیسنگ DALI پائپ لائن سے گزرتی ہے اور اسے Triton Inference Server کے ذریعے فراہم کردہ ensemble شیڈولر میں استعمال کیا جاتا ہے۔ ہم پے لوڈ کو قیاس کے اختتامی نقطہ پر منتقل کرنے کے لیے بناتے ہیں:

payload = {
    "inputs": [
        {
            "name": "INPUT",
            "shape": rv2.shape,
            "datatype": "UINT8",
            "data": rv2.tolist(),
        }
    ]
}

جوڑ کا اندازہ

جب ہمارے پاس اینڈ پوائنٹ چل رہا ہے، تو ہم JSON کو پے لوڈ فارمیٹ کے طور پر استعمال کرتے ہوئے تخمینہ کی درخواست کرنے کے لیے نمونہ کی تصویر کا استعمال کر سکتے ہیں۔ تخمینہ کی درخواست کی شکل کے لیے، ٹرائٹن KFServing کمیونٹی کے معیاری انفرنس پروٹوکول کا استعمال کرتا ہے۔

response = runtime_sm_client.invoke_endpoint(
    EndpointName=endpoint_name, ContentType="application/octet-stream", Body=json.dumps(payload)
)
print(json.loads(response["Body"].read().decode("utf8")))

کے ساتہ binary+json فارمیٹ میں، ہمیں ہیڈر میں درخواست کے میٹا ڈیٹا کی لمبائی کی وضاحت کرنی ہوگی تاکہ ٹریٹن کو بائنری پے لوڈ کو صحیح طریقے سے پارس کرنے کی اجازت دی جاسکے۔ یہ ایک حسب ضرورت مواد کی قسم ہیڈر کا استعمال کرتے ہوئے کیا جاتا ہے۔ application/vnd.sagemaker-triton.binary+json;json-header-size={}.

یہ ایک استعمال کرنے سے مختلف ہے۔ Inference-Header-Content-Length اسٹینڈ اسٹون ٹرائٹن سرور پر ہیڈر کیونکہ سیج میکر میں کسٹم ہیڈرز کی اجازت نہیں ہے۔

ٹرائیٹونکلائنٹ پیکج تصریح کی تفصیلات جاننے کے بغیر پے لوڈ پیدا کرنے کے لیے افادیت کے طریقے فراہم کرتا ہے۔ ہم اپنی قیاس آرائی کی درخواست کو بائنری فارمیٹ میں تبدیل کرنے کے لیے درج ذیل طریقے استعمال کرتے ہیں، جو تخمینہ کے لیے کم تاخیر فراہم کرتا ہے۔ GitHub سے رجوع کریں۔ نوٹ بک عمل درآمد کی تفصیلات کے لیے۔

response = runtime_sm_client.invoke_endpoint(
    EndpointName=endpoint_name,
    ContentType="application/vnd.sagemaker-triton.binary+json;json-header-size={}".format(
        header_length
    ),
    Body=request_body,
)

نتیجہ

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

SageMaker پر Triton ensembles پر مزید نمونوں کے لیے، ملاحظہ کریں۔ GitHub repo. اسے آزمائیں!


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

Amazon SageMaker PlatoBlockchain Data Intelligence پر ensemble ML ماڈلز چلائیں۔ عمودی تلاش۔ عیجیمز پارک ایمیزون ویب سروسز میں ایک حل آرکیٹیکٹ ہے۔ وہ Amazon.com کے ساتھ AWS پر ٹکنالوجی کے حل کو ڈیزائن کرنے، بنانے اور ان کی تعیناتی کے لیے کام کرتا ہے، اور اسے AI اور مشین لرننگ میں خاص دلچسپی ہے۔ اپنے فارغ وقت میں، وہ نئی ثقافتوں، نئے تجربات، اور جدید ترین ٹیکنالوجی کے رجحانات کے ساتھ اپ ٹو ڈیٹ رہنے میں لطف اندوز ہوتا ہے۔

Amazon SageMaker PlatoBlockchain Data Intelligence پر ensemble ML ماڈلز چلائیں۔ عمودی تلاش۔ عیوکرم ایلنگو ورجینیا، US میں مقیم Amazon Web Services میں ایک سینئر AI/ML ماہر حل آرکیٹیکٹ ہیں۔ وکرم مالیاتی اور انشورنس انڈسٹری کے صارفین کو ڈیزائن اور سوچی سمجھی قیادت کے ساتھ مشین لرننگ ایپلی کیشنز کو بڑے پیمانے پر بنانے اور تعینات کرنے میں مدد کرتا ہے۔ وہ فی الحال پورے انٹرپرائز میں قدرتی زبان کی پروسیسنگ، ذمہ دار AI، انفرنس آپٹیمائزیشن، اور ML اسکیلنگ پر مرکوز ہے۔ اپنے فارغ وقت میں، وہ اپنے خاندان کے ساتھ سفر، پیدل سفر، کھانا پکانے اور کیمپنگ سے لطف اندوز ہوتا ہے۔

Amazon SageMaker PlatoBlockchain Data Intelligence پر ensemble ML ماڈلز چلائیں۔ عمودی تلاش۔ عیسوربھ تریکنڈے Amazon SageMaker Inference کے لیے ایک سینئر پروڈکٹ مینیجر ہے۔ وہ صارفین کے ساتھ کام کرنے کا شوق رکھتا ہے اور مشین لرننگ کو جمہوری بنانے کے مقصد سے حوصلہ افزائی کرتا ہے۔ وہ پیچیدہ ایم ایل ایپلی کیشنز، ملٹی ٹیننٹ ایم ایل ماڈلز، لاگت کی اصلاح، اور ڈیپ لرننگ ماڈلز کی تعیناتی کو مزید قابل رسائی بنانے سے متعلق بنیادی چیلنجوں پر توجہ مرکوز کرتا ہے۔ اپنے فارغ وقت میں، سوربھ کو پیدل سفر کرنا، اختراعی ٹیکنالوجیز کے بارے میں سیکھنا، TechCrunch کی پیروی کرنا اور اپنے خاندان کے ساتھ وقت گزارنا پسند ہے۔

ٹائم اسٹیمپ:

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