Amazon SageMaker آٹو پائلٹ ماڈلز کو سرور لیس انفرنس اینڈ پوائنٹس PlatoBlockchain ڈیٹا انٹیلی جنس پر تعینات کریں۔ عمودی تلاش۔ عی

Amazon SageMaker آٹو پائلٹ ماڈلز کو سرور لیس انفرنس اینڈ پوائنٹس پر تعینات کریں۔

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

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

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

اس پوسٹ میں، ہم دکھاتے ہیں کہ آٹو پائلٹ کے تربیت یافتہ ماڈلز کو سرور لیس انفرنس اینڈ پوائنٹس پر کیسے تعینات کیا جائے بوٹو 3 لائبریریاں لیے ایمیزون سیج میکر.

آٹو پائلٹ ٹریننگ کے طریقے

آٹو پائلٹ تجربہ بنانے سے پہلے، آپ یا تو آٹو پائلٹ کو ٹریننگ موڈ خود بخود منتخب کرنے دے سکتے ہیں، یا آپ ٹریننگ موڈ کو دستی طور پر منتخب کر سکتے ہیں۔

آٹو پائلٹ فی الحال تین تربیتی طریقوں کی حمایت کرتا ہے:

  • آٹو - ڈیٹا سیٹ کے سائز کی بنیاد پر، آٹو پائلٹ خود بخود یا تو جوڑ یا HPO موڈ کا انتخاب کرتا ہے۔ 100 MB سے بڑے ڈیٹا سیٹس کے لیے، آٹو پائلٹ HPO کا انتخاب کرتا ہے۔ دوسری صورت میں، یہ ensembling کا انتخاب کرتا ہے.
  • جوڑنا - آٹو پائلٹ استعمال کرتا ہے۔ آٹوگلون ماڈل اسٹیکنگ کا استعمال کرتے ہوئے جوڑنے والی تکنیک اور ایک بہترین پیش گوئی کرنے والا ماڈل تیار کرتا ہے۔
  • ہائپر پیرامیٹر آپٹیمائزیشن (HPO) - آٹو پائلٹ آپ کے ڈیٹاسیٹ پر تربیتی ملازمتیں چلاتے ہوئے Bayesian آپٹیمائزیشن یا ملٹی فیڈیلیٹی آپٹیمائزیشن کا استعمال کرتے ہوئے ہائپر پیرامیٹر کو ٹیوننگ کرکے ماڈل کا بہترین ورژن تلاش کرتا ہے۔ HPO موڈ آپ کے ڈیٹاسیٹ سے سب سے زیادہ متعلقہ الگورتھم کا انتخاب کرتا ہے اور آپ کے ماڈلز کو ٹیون کرنے کے لیے ہائپر پیرامیٹر کی بہترین رینج کا انتخاب کرتا ہے۔

آٹو پائلٹ ٹریننگ کے طریقوں کے بارے میں مزید جاننے کے لیے، رجوع کریں۔ تربیت کے طریقے.

حل جائزہ

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

ہم استعمال کرتے ہوئے دو آٹو پائلٹ نوکریاں شروع کرتے ہیں۔ سیج میکر کے لیے بوٹو 3 لائبریریاں. پہلا کام منتخب ٹریننگ موڈ کے طور پر ensembling کا استعمال کرتا ہے. اس کے بعد ہم بغیر سرور کے اختتامی نقطہ پر تیار کردہ واحد جوڑ ماڈل کو تعینات کرتے ہیں اور اس میزبان اختتامی نقطہ پر تخمینہ کی درخواستیں بھیجتے ہیں۔

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

رجعت اور درجہ بندی کے مسائل کی اقسام کے بارے میں مزید معلومات کے لیے، رجوع کریں۔ رجعت اور درجہ بندی کے مسئلے کی اقسام کے لیے انفرنس کنٹینر کی تعریف.

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

شرائط

یقینی بنائیں کہ آپ کے پاس Boto3 کا تازہ ترین ورژن اور SageMaker Python پیکجز انسٹال ہیں:

pip install -U boto3 sagemaker

ہمیں سیج میکر پیکیج ورژن کی ضرورت ہے۔ >= 2.110.0 اور بوٹو 3 ورژن >= boto3-1.24.84.

انسمبلنگ موڈ کے ساتھ آٹو پائلٹ جاب شروع کریں۔

SageMaker Boto3 لائبریریوں کا استعمال کرتے ہوئے آٹو پائلٹ جاب شروع کرنے کے لیے، ہم استعمال کرتے ہیں۔ تخلیق_آٹو_ایم ایل_جاب API پھر ہم اندر داخل ہوتے ہیں۔ AutoMLJobConfig, InputDataConfig، اور AutoMLJobObjective کو ان پٹ کے طور پر create_auto_ml_job. درج ذیل کوڈ دیکھیں:

bucket = session.default_bucket()
role = sagemaker.get_execution_role()
prefix = "autopilot/bankadditional"
sm_client = boto3.Session().client(service_name='sagemaker',region_name=region)

timestamp_suffix = strftime('%d%b%Y-%H%M%S', gmtime())
automl_job_name = f"uci-bank-marketing-{timestamp_suffix}"
max_job_runtime_seconds = 3600
max_runtime_per_job_seconds = 1200
target_column = "y"
problem_type="BinaryClassification"
objective_metric = "F1"
training_mode = "ENSEMBLING"

automl_job_config = {
    'CompletionCriteria': {
      'MaxRuntimePerTrainingJobInSeconds': max_runtime_per_job_seconds,
      'MaxAutoMLJobRuntimeInSeconds': max_job_runtime_seconds
    },    
    "Mode" : training_mode
}

automl_job_objective= { "MetricName": objective_metric }

input_data_config = [
    {
      'DataSource': {
        'S3DataSource': {
          'S3DataType': 'S3Prefix',
          'S3Uri': f's3://{bucket}/{prefix}/raw/bank-additional-full.csv'
        }
      },
      'TargetAttributeName': target_column
    }
  ]

output_data_config = {
	    'S3OutputPath': f's3://{bucket}/{prefix}/output'
	}


sm_client.create_auto_ml_job(
				AutoMLJobName=auto_ml_job_name,
				InputDataConfig=input_data_config,
				OutputDataConfig=output_data_config,
				AutoMLJobConfig=automl_job_config,
				ProblemType=problem_type,
				AutoMLJobObjective=automl_job_objective,
				RoleArn=role)

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

job_response = sm_client.describe_auto_ml_job(AutoMLJobName=automl_job_name)
best_candidate = job_response['BestCandidate']
inference_container = job_response['BestCandidate']['InferenceContainers'][0]
print(inference_container)

تربیت یافتہ ماڈل تعینات کریں۔

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

ہم آپ کو منتخب کرنے کی سفارش کرتے ہیں۔ اختتامی نقطہ کی میموری کا سائز آپ کے ماڈل کے سائز کے مطابق۔ میموری کا سائز کم از کم آپ کے ماڈل کے سائز جتنا بڑا ہونا چاہیے۔ آپ کے سرور لیس اینڈ پوائنٹ کا کم از کم RAM سائز 1024 MB (1 GB) ہے، اور زیادہ سے زیادہ RAM سائز جو آپ منتخب کر سکتے ہیں 6144 MB (6 GB) ہے۔

آپ جو میموری سائز منتخب کر سکتے ہیں وہ ہیں 1024 MB، 2048 MB، 3072 MB، 4096 MB، 5120 MB، یا 6144 MB۔

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

نوٹ کریں کہ سرور لیس اینڈ پوائنٹ صرف قبول کرتے ہیں۔ SingleModel تخمینہ کنٹینرز کے لئے. انسمبلنگ موڈ میں آٹو پائلٹ ایک ہی ماڈل تیار کرتا ہے، لہذا ہم اس ماڈل کے کنٹینر کو اینڈ پوائنٹ پر تعینات کر سکتے ہیں۔ درج ذیل کوڈ دیکھیں:

# Create Model
	model_response = sm_client.create_model(
				ModelName=model_name,
				ExecutionRoleArn=role,
				Containers=[inference_container]
	)

# Create Endpoint Config
	epc_response = sm_client.create_endpoint_config(
		EndpointConfigName = endpoint_config_name,
		ProductionVariants=[
			{
				"ModelName": model_name,
				"VariantName": "AllTraffic",
				"ServerlessConfig": {
					"MemorySizeInMB": memory,
					"MaxConcurrency": max_concurrency
				}
			}
		]
	)

# Create Endpoint
	ep_response = sm_client.create_endpoint(
		EndpointName=endpoint_name,
		EndpointConfigName=endpoint_config_name
	)

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

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

تربیت یافتہ ماڈل کو تخمینہ کی درخواست بھیجیں۔

انسمبلنگ موڈ کا استعمال کرتے ہوئے تربیت یافتہ اپنے ماڈل کا اندازہ بھیجنے کے لیے درج ذیل کوڈ کا استعمال کریں:

from sagemaker.predictor import Predictor
from sagemaker.serializers import CSVSerializer


payload = "34,blue-collar,married,basic.4y,no,no,no,telephone,may,tue,800,4,999,0,nonexistent,1.1,93.994,-36.4,4.857,5191.0"

predictor = Predictor(
        endpoint_name=endpoint,
        sagmaker_session=session,
        serializer=CSVSerializer(),
    )

prediction = predictor.predict(payload).decode(‘utf-8’)
print(prediction)

HPO موڈ کے ساتھ آٹو پائلٹ جاب شروع کریں۔

HPO موڈ میں، کے لیے CompletionCriteriaکے علاوہ ، MaxRuntimePerTrainingJobInSeconds اور MaxAutoMLJobRuntimeInSeconds, ہم بھی وضاحت کر سکتے ہیں MaxCandidates امیدواروں کی تعداد کو محدود کرنے کے لیے آٹو پائلٹ جاب پیدا ہوگا۔ نوٹ کریں کہ یہ اختیاری پیرامیٹرز ہیں اور صرف مظاہرے کے لیے کام کے رن ٹائم کو محدود کرنے کے لیے سیٹ کیے گئے ہیں۔ درج ذیل کوڈ دیکھیں:

training_mode = "HYPERPARAMETER_TUNING"

automl_job_config["Mode"] = training_mode
automl_job_config["CompletionCriteria"]["MaxCandidates"] = 15
hpo_automl_job_name =  f"{model_prefix}-HPO-{timestamp_suffix}"

response = sm_client.create_auto_ml_job(
					  AutoMLJobName=hpo_automl_job_name,
					  InputDataConfig=input_data_config,
					  OutputDataConfig=output_data_config,
					  AutoMLJobConfig=automl_job_config,
					  ProblemType=problem_type,
					  AutoMLJobObjective=automl_job_objective,
					  RoleArn=role,
					  Tags=tags_config
				)

حاصل کرنے کے لئے BestCandidate پچھلے کام کے لیے، ہم دوبارہ استعمال کر سکتے ہیں۔ describe_automl_job فنکشن:

job_response = sm_client.describe_auto_ml_job(AutoMLJobName=automl_job_name)
best_candidate = job_response['BestCandidate']
inference_containers = job_response['BestCandidate']['InferenceContainers']
print(inference_containers)

تربیت یافتہ ماڈل تعینات کریں۔

درجہ بندی کے مسئلے کی قسم کے لیے HPO موڈ میں آٹو پائلٹ تین انفرنس کنٹینرز تیار کرتا ہے۔

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

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

مندرجہ ذیل خاکہ اس سیٹ اپ کے فن تعمیر کو واضح کرتا ہے۔ خاکہ جو HPO موڈ میں آٹو پائلٹ ماڈل کو تین سرور لیس اینڈ پوائنٹس پر تعینات کرتا ہے

ہم سے تین انفرنس کنٹینرز نکالتے ہیں۔ BestCandidate درج ذیل کوڈ کے ساتھ:

job_response = sm_client.describe_auto_ml_job(AutoMLJobName=automl_job_name)
inference_containers = job_response['BestCandidate']['InferenceContainers']

models = list()
endpoint_configs = list()
endpoints = list()

# For brevity, we've encapsulated create_model, create endpoint_config and create_endpoint as helper functions
for idx, container in enumerate(inference_containers):
    (status, model_arn) = create_autopilot_model(
								    sm_client,
								    automl_job_name,
            						role,
								    container,
								    idx)
    model_name = model_arn.split('/')[1]
    models.append(model_name)

    endpoint_config_name = f"epc-{model_name}"
    endpoint_name = f"ep-{model_name}"
    (status, epc_arn) = create_serverless_endpoint_config(
								    sm_client,
								    endpoint_config_name,
								    model_name,
            						memory=2048,
								    max_concurrency=10)
	endpoint_configs.append(endpoint_config_name)

	response = create_serverless_endpoint(
								    sm_client,
								    endpoint_name,
								    endpoint_config_name)
	endpoints.append(endpoint_name)

تربیت یافتہ ماڈل کو تخمینہ کی درخواست بھیجیں۔

اندازہ لگانے کے لیے، ہم پے لوڈ کو ترتیب سے بھیجتے ہیں: پہلے فیچر ٹرانسفارم کنٹینر کو، پھر ماڈل کنٹینر کو، اور آخر میں الٹا لیبل ٹرانسفارم کنٹینر کو۔

HPO موڈ سے تین انفرنس کنٹینرز کے تخمینہ کی درخواست کے بہاؤ کا بصری

درج ذیل کوڈ دیکھیں:

from sagemaker.predictor import Predictor
from sagemaker.serializers import CSVSerializer

payload = "51,technician,married,professional.course,no,yes,no,cellular,apr,thu,687,1,0,1,success,-1.8,93.075,-47.1,1.365,5099.1"


for _, endpoint in enumerate(endpoints):
    try:
        print(f"payload: {payload}")
        predictor = Predictor(
            endpoint_name=endpoint,
            sagemaker_session=session,
            serializer=CSVSerializer(),
        )
        prediction = predictor.predict(payload)
        payload=prediction
    except Exception as e:
        print(f"Error invoking Endpoint; {endpoint} n {e}")
        break

اس مثال کا مکمل نفاذ درج ذیل jupyter میں دستیاب ہے۔ نوٹ بک.

صاف کرو

وسائل کو صاف کرنے کے لیے، آپ تخلیق کردہ سرور لیس اینڈ پوائنٹس، اینڈ پوائنٹ کنفیگس اور ماڈلز کو حذف کر سکتے ہیں:

sm_client = boto3.Session().client(service_name='sagemaker',region_name=region)

for _, endpoint in enumerate(endpoints):
    try:
        sm_client.delete_endpoint(EndpointName=endpoint)
    except Exception as e:
        print(f"Exception:n{e}")
        continue
        
for _, endpoint_config in enumerate(endpoint_configs):
    try:
        sm_client.delete_endpoint_config(EndpointConfigName=endpoint_config)
    except Exception as e:
        print(f"Exception:n{e}")
        continue

for _, autopilot_model in enumerate(models):
    try:
        sm_client.delete_model(ModelName=autopilot_model)
    except Exception as e:
        print(f"Exception:n{e}")
        continue

نتیجہ

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

ہم آپ کی حوصلہ افزائی کرتے ہیں کہ آپ اپنے کاروبار کے KPIs سے متعلقہ ڈیٹاسیٹ کے ساتھ اس حل کو آزمائیں۔ آپ Jupyter نوٹ بک میں نافذ کردہ حل کا حوالہ دے سکتے ہیں۔ GitHub repo.

اضافی حوالہ جات


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

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

ٹائم اسٹیمپ:

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