مع قيام العملاء بتسريع عمليات ترحيلهم إلى السحابة وتحويل أعمالهم، يجد البعض أنفسهم في مواقف يتعين عليهم فيها إدارة عمليات تكنولوجيا المعلومات في بيئة متعددة السحابات. على سبيل المثال، ربما تكون قد استحوذت على شركة كانت تعمل بالفعل على موفر سحابي مختلف، أو قد يكون لديك عبء عمل يولد قيمة من الإمكانات الفريدة التي توفرها AWS. مثال آخر هو بائعو البرامج المستقلون (ISVs) الذين يجعلون منتجاتهم وخدماتهم متاحة في منصات سحابية مختلفة لإفادة عملائهم النهائيين. أو قد تعمل إحدى المؤسسات في منطقة لا يتوفر فيها موفر السحابة الأساسي، ومن أجل تلبية متطلبات سيادة البيانات أو موقع البيانات، يمكنها استخدام موفر السحابة الثانوي.
في هذه السيناريوهات، عندما تبدأ في تبني الذكاء الاصطناعي التوليدي ونماذج اللغات الكبيرة (LLMs) وتقنيات التعلم الآلي (ML) كجزء أساسي من عملك، فقد تبحث عن خيارات للاستفادة منها AWS AI وML قدرات خارج AWS في بيئة متعددة السحابة. على سبيل المثال، قد ترغب في الاستفادة من الأمازون SageMaker لبناء وتدريب نموذج ML، أو استخدامه أمازون سيج ميكر جومبستارت لنشر الأساس المبني مسبقًا أو نماذج التعلم الآلي التابعة لجهات خارجية، والتي يمكنك نشرها بنقرة واحدة على بضعة أزرار. أو قد ترغب في الاستفادة منها أمازون بيدروك لبناء وتوسيع نطاق تطبيقات الذكاء الاصطناعي التوليدية، أو يمكنك الاستفادة منها خدمات الذكاء الاصطناعي المدربة مسبقًا من AWS، والتي لا تتطلب منك تعلم مهارات التعلم الآلي. توفر AWS الدعم للسيناريوهات التي ترغب فيها المؤسسات جلب نموذجهم الخاص إلى Amazon SageMaker or في Amazon SageMaker Canvas للحصول على التنبؤات.
في هذا المنشور، نعرض أحد الخيارات العديدة المتاحة لك للاستفادة من أوسع وأعمق مجموعة من إمكانات الذكاء الاصطناعي/التعلم الآلي في AWS في بيئة متعددة السحابات. نعرض كيف يمكنك إنشاء نموذج تعلم الآلة وتدريبه في AWS ونشر النموذج في نظام أساسي آخر. نقوم بتدريب النموذج باستخدام Amazon SageMaker، ونخزن عناصر النموذج فيه خدمة تخزين أمازون البسيطة (Amazon S3)، ونشر النموذج وتشغيله في Azure. يُعد هذا الأسلوب مفيدًا إذا كنت تستخدم خدمات AWS لتعلم الآلة للحصول على مجموعة ميزاتها الأكثر شمولاً، ومع ذلك فأنت بحاجة إلى تشغيل النموذج الخاص بك في موفر سحابي آخر في إحدى المواقف التي ناقشناها.
المفاهيم الرئيسية
أمازون ساجميكر ستوديو هي بيئة تطوير متكاملة (IDE) قائمة على الويب للتعلم الآلي. يسمح SageMaker Studio لعلماء البيانات ومهندسي تعلم الآلة ومهندسي البيانات بإعداد البيانات وإنشاء نماذج تعلم الآلة وتدريبها ونشرها على واجهة ويب واحدة. باستخدام SageMaker Studio، يمكنك الوصول إلى الأدوات المصممة خصيصًا لكل مرحلة من مراحل دورة حياة تطوير ML، بدءًا من إعداد البيانات وحتى إنشاء نماذج ML الخاصة بك وتدريبها ونشرها، مما يؤدي إلى تحسين إنتاجية فريق علوم البيانات بما يصل إلى عشر مرات. دفاتر ملاحظات SageMaker Studio هي دفاتر ملاحظات تعاونية سريعة البداية تتكامل مع أدوات التعلم الآلي المصممة لهذا الغرض في SageMaker وخدمات AWS الأخرى.
SageMaker هي خدمة ML شاملة تمكن محللي الأعمال وعلماء البيانات ومهندسي MLOps من إنشاء نماذج ML وتدريبها ونشرها لأي حالة استخدام، بغض النظر عن خبرة ML.
توفر AWS حاويات التعلم العميق (المحتوى القابل للتنزيل) لأطر تعلم الآلة الشائعة مثل PyTorch وTensorFlow وApache MXNet، والتي يمكنك استخدامها مع SageMaker للتدريب والاستدلال. تتوفر المحتوى القابل للتنزيل (DLC) كصور Docker في سجل الأمازون المرنة للحاويات (أمازون إي سي آر). يتم تثبيت صور Docker مسبقًا واختبارها باستخدام أحدث الإصدارات من أطر التعلم العميق الشائعة بالإضافة إلى التبعيات الأخرى اللازمة للتدريب والاستدلال. للحصول على قائمة كاملة بصور Docker المعدة مسبقًا والتي يديرها SageMaker، راجع مسارات سجل Docker وكود المثال. يدعم Amazon ECR الفحص الأمني، وهو متكامل مع مفتش أمازون خدمة إدارة الثغرات الأمنية لتلبية متطلبات أمان توافق الصور في مؤسستك، ولأتمتة فحص تقييم الثغرات الأمنية. ويمكن للمنظمات أيضا استخدام تدريب AWS و استدلال AWS للحصول على أداء أفضل للسعر لتشغيل وظائف التدريب على تعلم الآلة أو الاستدلال.
حل نظرة عامة
في هذا القسم، نوضح كيفية إنشاء نموذج وتدريبه باستخدام SageMaker ونشر النموذج في Azure Functions. نحن نستخدم دفتر ملاحظات SageMaker Studio لبناء النموذج وتدريبه ونشره. نقوم بتدريب النموذج في SageMaker باستخدام صورة Docker مُصممة مسبقًا لـ PyTorch. على الرغم من أننا نقوم بنشر النموذج المُدرب على Azure في هذه الحالة، إلا أنه يمكنك استخدام نفس الأسلوب لنشر النموذج على أنظمة أساسية أخرى مثل الأنظمة المحلية أو الأنظمة الأساسية السحابية الأخرى.
عندما نقوم بإنشاء مهمة تدريبية، يقوم SageMaker بتشغيل مثيلات حساب ML ويستخدم كود التدريب الخاص بنا ومجموعة بيانات التدريب لتدريب النموذج. فهو يحفظ عناصر النموذج الناتجة والمخرجات الأخرى في حاوية S3 التي نحددها كمدخل لمهمة التدريب. عند اكتمال التدريب النموذجي، نستخدم افتح برنامج الشبكة العصبية (ONNX) مكتبة وقت التشغيل لتصدير نموذج PyTorch كنموذج ONNX.
أخيرًا، قمنا بنشر نموذج ONNX جنبًا إلى جنب مع رمز الاستدلال المخصص المكتوب بلغة Python إلى Azure Functions باستخدام Azure CLI. يدعم ONNX معظم أطر وأدوات ML شائعة الاستخدام. شيء واحد يجب ملاحظته هو أن تحويل نموذج ML إلى ONNX مفيد إذا كنت تريد استخدام إطار نشر مستهدف مختلف، مثل PyTorch إلى TensorFlow. إذا كنت تستخدم نفس إطار العمل على كل من المصدر والهدف، فلن تحتاج إلى تحويل النموذج إلى تنسيق ONNX.
ويوضح الرسم البياني التالي بنية هذا النهج.
نحن نستخدم دفتر ملاحظات SageMaker Studio مع SageMaker بيثون SDK لبناء وتدريب نموذجنا. SageMaker Python SDK هي مكتبة مفتوحة المصدر للتدريب ونشر نماذج تعلم الآلة على SageMaker. لمزيد من التفاصيل، راجع قم بإنشاء أو فتح دفتر ملاحظات Amazon SageMaker Studio.
تم اختبار مقتطفات التعليمات البرمجية الموجودة في الأقسام التالية في بيئة الكمبيوتر الدفتري SageMaker Studio باستخدام صورة Data Science 3.0 وPython 3.0 kernel.
وفي هذا الحل نوضح الخطوات التالية:
- تدريب نموذج PyTorch.
- قم بتصدير نموذج PyTorch كنموذج ONNX.
- حزمة النموذج ورمز الاستدلال.
- انشر النموذج في وظائف Azure.
المتطلبات الأساسية المسبقة
يجب أن يكون لديك المتطلبات الأساسية التالية:
- حساب AWS.
- مجال SageMaker ومستخدم SageMaker Studio. للحصول على تعليمات إنشاء هذه، راجع على متن الطائرة إلى مجال Amazon SageMaker باستخدام الإعداد السريع.
- أزور سطر الأوامر.
- الوصول إلى Azure وبيانات الاعتماد لمدير الخدمة الذي لديه أذونات لإنشاء وظائف Azure وإدارتها.
تدريب نموذج باستخدام PyTorch
في هذا القسم، نقوم بتفصيل خطوات تدريب نموذج PyTorch.
تثبيت التبعيات
قم بتثبيت المكتبات لتنفيذ الخطوات المطلوبة للتدريب النموذجي ونشر النموذج:
pip install torchvision onnx onnxruntime
استكمال الإعداد الأولي
نبدأ باستيراد AWS SDK لـ Python (Boto3) و SageMaker بيثون SDK. كجزء من الإعداد، نحدد ما يلي:
- كائن جلسة يوفر أساليب ملائمة في سياق SageMaker وحسابنا الخاص.
- دور SageMaker الذي يستخدمه ARN لتفويض الأذونات لخدمة التدريب والاستضافة. نحتاج إلى ذلك حتى تتمكن هذه الخدمات من الوصول إلى حاويات S3 حيث يتم تخزين بياناتنا ونموذجنا. للحصول على إرشادات حول إنشاء دور يلبي احتياجات عملك، راجع أدوار SageMaker. بالنسبة لهذا المنشور، نستخدم نفس دور التنفيذ مثل مثيل دفتر ملاحظات الاستوديو الخاص بنا. نحصل على هذا الدور عن طريق الاتصال
sagemaker.get_execution_role()
. - المنطقة الافتراضية التي سيتم فيها تشغيل مهمة التدريب لدينا.
- المجموعة الافتراضية والبادئة التي نستخدمها لتخزين مخرجات النموذج.
انظر الكود التالي:
import sagemaker
import boto3
import os execution_role = sagemaker.get_execution_role()
region = boto3.Session().region_name
session = sagemaker.Session()
bucket = session.default_bucket()
prefix = "sagemaker/mnist-pytorch"
إنشاء مجموعة بيانات التدريب
نحن نستخدم مجموعة البيانات المتاحة في المجموعة العامة sagemaker-example-files-prod-{region}
. تحتوي مجموعة البيانات على الملفات التالية:
- Train-images-idx3-ubyte.gz – يحتوي على صور مجموعة التدريب
- Train-labels-idx1-ubyte.gz – يحتوي على تسميات مجموعة التدريب
- t10k-images-idx3-ubyte.gz - يحتوي على صور مجموعة الاختبار
- t10k-labels-idx1-ubyte.gz - يحتوي على تسميات مجموعة الاختبار
نستخدمtorchvision.datasets
وحدة لتنزيل البيانات من المجموعة العامة محليًا قبل تحميلها إلى مجموعة بيانات التدريب الخاصة بنا. نقوم بتمرير موقع الحاوية هذا كمدخل لمهمة تدريب SageMaker. يستخدم البرنامج النصي للتدريب الخاص بنا هذا الموقع لتنزيل بيانات التدريب وإعدادها، ثم تدريب النموذج. انظر الكود التالي:
MNIST.mirrors = [ f"https://sagemaker-example-files-prod-{region}.s3.amazonaws.com/datasets/image/MNIST/"
] MNIST( "data", download=True, transform=transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))] ),
)
إنشاء البرنامج النصي للتدريب
باستخدام SageMaker، يمكنك إحضار النموذج الخاص بك باستخدام وضع البرنامج النصي. باستخدام وضع البرنامج النصي، يمكنك استخدام حاويات SageMaker المعدة مسبقًا وتوفير البرنامج النصي التدريبي الخاص بك، والذي يحتوي على تعريف النموذج، بالإضافة إلى أي مكتبات وتبعيات مخصصة. ال SageMaker بيثون SDK يمر البرنامج النصي لدينا باعتباره entry_point
إلى الحاوية، التي تقوم بتحميل وتشغيل وظيفة القطار من البرنامج النصي المقدم لتدريب نموذجنا.
عند اكتمال التدريب، يحفظ SageMaker مخرجات النموذج في حاوية S3 التي قدمناها كمعلمة لمهمة التدريب.
تم تعديل كود التدريب الخاص بنا مما يلي مثال البرنامج النصي PyTorch. يوضح المقتطف التالي من الكود تعريف النموذج ووظيفة القطار:
# define network class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout(0.25) self.dropout2 = nn.Dropout(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output
# train def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break
درب النموذج
الآن بعد أن قمنا بإعداد بيئتنا وإنشاء مجموعة بيانات الإدخال والبرنامج النصي للتدريب المخصص، يمكننا بدء تدريب النموذج باستخدام SageMaker. نستخدم مُقدِّر PyTorch في SageMaker Python SDK لبدء مهمة تدريبية على SageMaker. نقوم بتمرير المعلمات المطلوبة إلى المقدر ونستدعي الطريقة المناسبة. عندما نوافق على مقدر PyTorch، يبدأ SageMaker مهمة تدريبية باستخدام البرنامج النصي الخاص بنا كرمز تدريب:
from sagemaker.pytorch import PyTorch output_location = f"s3://{bucket}/{prefix}/output"
print(f"training artifacts will be uploaded to: {output_location}") hyperparameters={ "batch-size": 100, "epochs": 1, "lr": 0.1, "gamma": 0.9, "log-interval": 100
} instance_type = "ml.c4.xlarge"
estimator = PyTorch( entry_point="train.py", source_dir="code", # directory of your training script role=execution_role, framework_version="1.13", py_version="py39", instance_type=instance_type, instance_count=1, volume_size=250, output_path=output_location, hyperparameters=hyperparameters
) estimator.fit(inputs = { 'training': f"{inputs}", 'testing': f"{inputs}"
})
قم بتصدير النموذج المدرب كنموذج ONNX
بعد اكتمال التدريب وحفظ النموذج الخاص بنا في الموقع المحدد مسبقًا في Amazon S3، نقوم بتصدير النموذج إلى نموذج ONNX باستخدام وقت تشغيل ONNX.
نقوم بتضمين الكود لتصدير نموذجنا إلى ONNX في البرنامج النصي للتدريب الخاص بنا ليتم تشغيله بعد اكتمال التدريب.
تقوم PyTorch بتصدير النموذج إلى ONNX عن طريق تشغيل النموذج باستخدام مدخلاتنا وتسجيل تتبع العوامل المستخدمة لحساب المخرجات. نحن نستخدم مدخلات عشوائية من النوع الصحيح مع PyTorch torch.onnx.export
وظيفة لتصدير النموذج إلى ONNX. نحدد أيضًا البعد الأول في مدخلاتنا على أنه ديناميكي بحيث يقبل نموذجنا المتغير batch_size
من المدخلات أثناء الاستدلال.
def export_to_onnx(model, model_dir, device): logger.info("Exporting the model to onnx.") dummy_input = torch.randn(1, 1, 28, 28).to(device) input_names = [ "input_0" ] output_names = [ "output_0" ] path = os.path.join(model_dir, 'mnist-pytorch.onnx') torch.onnx.export(model, dummy_input, path, verbose=True, input_names=input_names, output_names=output_names, dynamic_axes={'input_0' : {0 : 'batch_size'}, # variable length axes 'output_0' : {0 : 'batch_size'}})
ONNX هو تنسيق قياسي مفتوح لنماذج التعلم العميق التي تتيح إمكانية التشغيل البيني بين أطر التعلم العميق مثل PyTorch وMicrosoft Cognitive Toolkit (CNTK) والمزيد. هذا يعني أنه يمكنك استخدام أي من هذه الأطر لتدريب النموذج ومن ثم تصدير النماذج المدربة مسبقًا بتنسيق ONNX. من خلال تصدير النموذج إلى ONNX، يمكنك الاستفادة من مجموعة واسعة من أجهزة النشر والأنظمة الأساسية.
تنزيل واستخراج التحف النموذجية
تم نسخ نموذج ONNX الذي حفظه البرنامج النصي للتدريب الخاص بنا بواسطة SageMaker إلى Amazon S3 في موقع الإخراج الذي حددناه عندما بدأنا مهمة التدريب. يتم تخزين العناصر النموذجية كملف أرشيف مضغوط يسمى model.tar.gz
. نقوم بتنزيل ملف الأرشيف هذا إلى دليل محلي في مثيل دفتر ملاحظات الاستوديو الخاص بنا ونستخرج عناصر النموذج، أي نموذج ONNX.
import tarfile local_model_file = 'model.tar.gz'
model_bucket,model_key = estimator.model_data.split('/',2)[-1].split('/',1)
s3 = boto3.client("s3")
s3.download_file(model_bucket,model_key,local_model_file) model_tar = tarfile.open(local_model_file)
model_file_name = model_tar.next().name
model_tar.extractall('.')
model_tar.close()
التحقق من صحة نموذج ONNX
يتم تصدير نموذج ONNX إلى ملف اسمه mnist-pytorch.onnx
من خلال البرنامج النصي التدريبي لدينا. بعد أن قمنا بتنزيل هذا الملف واستخراجه، يمكننا اختياريًا التحقق من صحة نموذج ONNX باستخدام ملف onnx.checker
وحدة. ال check_model
تعمل الوظيفة في هذه الوحدة على التحقق من اتساق النموذج. يتم رفع الاستثناء في حالة فشل الاختبار.
import onnx onnx_model = onnx.load("mnist-pytorch.onnx")
onnx.checker.check_model(onnx_model)
حزمة النموذج ورمز الاستدلال
في هذا المنشور، نستخدم نشر .zip لوظائف Azure. في هذه الطريقة، نقوم بتجميع نموذجنا والتعليمات البرمجية المصاحبة وإعدادات Azure Functions في ملف .zip ونشره على Azure Functions. يوضح التعليمة البرمجية التالية بنية الدليل لحزمة النشر الخاصة بنا:
mnist-onnx
├── function_app.py
├── model
│ └── mnist-pytorch.onnx
└── requirements.txt
قائمة التبعيات
نقوم بإدراج التبعيات لرمز الاستدلال الخاص بنا في ملف requirements.txt
الملف في جذر الحزمة الخاصة بنا. يتم استخدام هذا الملف لإنشاء بيئة Azure Functions عندما ننشر الحزمة.
azure-functions
numpy
onnxruntime
اكتب رمز الاستدلال
نستخدم لغة Python لكتابة كود الاستدلال التالي، باستخدام مكتبة ONNX Runtime لتحميل نموذجنا وتشغيل الاستدلال. يؤدي هذا إلى توجيه تطبيق Azure Functions لجعل نقطة النهاية متاحة على /classify
مسار نسبي.
import logging
import azure.functions as func
import numpy as np
import os
import onnxruntime as ort
import json app = func.FunctionApp() def preprocess(input_data_json): # convert the JSON data into the tensor input return np.array(input_data_json['data']).astype('float32') def run_model(model_path, req_body): session = ort.InferenceSession(model_path) input_data = preprocess(req_body) logging.info(f"Input Data shape is {input_data.shape}.") input_name = session.get_inputs()[0].name # get the id of the first input of the model try: result = session.run([], {input_name: input_data}) except (RuntimeError) as e: print("Shape={0} and error={1}".format(input_data.shape, e)) return result[0] def get_model_path(): d=os.path.dirname(os.path.abspath(__file__)) return os.path.join(d , './model/mnist-pytorch.onnx') @app.function_name(name="mnist_classify")
@app.route(route="classify", auth_level=func.AuthLevel.ANONYMOUS)
def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') # Get the img value from the post. try: req_body = req.get_json() except ValueError: pass if req_body: # run model result = run_model(get_model_path(), req_body) # map output to integer and return result string. digits = np.argmax(result, axis=1) logging.info(type(digits)) return func.HttpResponse(json.dumps({"digits": np.array(digits).tolist()})) else: return func.HttpResponse( "This HTTP triggered function successfully.", status_code=200 )
انشر النموذج في وظائف Azure
الآن بعد أن حصلنا على التعليمات البرمجية المجمعة في تنسيق .zip المطلوب، نحن جاهزون لنشرها على Azure Functions. نقوم بذلك باستخدام Azure CLI، وهي أداة مساعدة لسطر الأوامر لإنشاء موارد Azure وإدارتها. قم بتثبيت Azure CLI بالكود التالي:
!pip install -q azure-cli
ثم أكمل الخطوات التالية:
- تسجيل الدخول إلى أزور:
!az login
- قم بإعداد معلمات إنشاء الموارد:
import random random_suffix = str(random.randint(10000,99999)) resource_group_name = f"multicloud-{random_suffix}-rg" storage_account_name = f"multicloud{random_suffix}" location = "ukwest" sku_storage = "Standard_LRS" functions_version = "4" python_version = "3.9" function_app = f"multicloud-mnist-{random_suffix}"
- استخدم الأوامر التالية لإنشاء تطبيق Azure Functions مع الموارد المطلوبة مسبقًا:
!az group create --name {resource_group_name} --location {location} !az storage account create --name {storage_account_name} --resource-group {resource_group_name} --location {location} --sku {sku_storage} !az functionapp create --name {function_app} --resource-group {resource_group_name} --storage-account {storage_account_name} --consumption-plan-location "{location}" --os-type Linux --runtime python --runtime-version {python_version} --functions-version {functions_version}
- قم بإعداد وظائف Azure بحيث عندما نقوم بنشر حزمة الوظائف، فإن
requirements.txt
يتم استخدام الملف لبناء تبعيات تطبيقنا:!az functionapp config appsettings set --name {function_app} --resource-group {resource_group_name} --settings @./functionapp/settings.json
- قم بتكوين تطبيق الوظائف لتشغيل نموذج Python v2 وتنفيذ إنشاء على الكود الذي يتلقاه بعد نشر .zip:
{ "AzureWebJobsFeatureFlags": "EnableWorkerIndexing", "SCM_DO_BUILD_DURING_DEPLOYMENT": true }
- بعد أن يكون لدينا مجموعة الموارد وحاوية التخزين وتطبيق الوظائف بالتكوين الصحيح، قم بنشر التعليمات البرمجية على تطبيق الوظائف:
!az functionapp deployment source config-zip -g {resource_group_name} -n {function_app} --src {function_archive} --build-remote true
اختبر النموذج
لقد قمنا بنشر نموذج ML في Azure Functions كمشغل HTTP، مما يعني أنه يمكننا استخدام عنوان URL لتطبيق Functions لإرسال طلب HTTP إلى الوظيفة لاستدعاء الوظيفة وتشغيل النموذج.
لإعداد الإدخال، قم بتنزيل ملفات صور الاختبار من مجموعة ملفات أمثلة SageMaker وقم بإعداد مجموعة من العينات للتنسيق الذي يتطلبه النموذج:
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
import matplotlib.pyplot as plt transform=transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))]
) test_dataset = datasets.MNIST(root='../data', download=True, train=False, transform=transform)
test_loader = DataLoader(test_dataset, batch_size=16, shuffle=True) test_features, test_labels = next(iter(test_loader))
استخدم مكتبة الطلبات لإرسال طلب نشر إلى نقطة نهاية الاستدلال باستخدام نماذج المدخلات. تأخذ نقطة نهاية الاستدلال التنسيق كما هو موضح في الكود التالي:
import requests, json def to_numpy(tensor): return tensor.detach().cpu().numpy() if tensor.requires_grad else tensor.cpu().numpy() url = f"https://{function_app}.azurewebsites.net/api/classify"
response = requests.post(url, json.dumps({"data":to_numpy(test_features).tolist()}) )
predictions = json.loads(response.text)['digits']
تنظيف
عند الانتهاء من اختبار النموذج، احذف مجموعة الموارد بالإضافة إلى الموارد المضمنة، بما في ذلك حاوية التخزين وتطبيق الوظائف:
!az group delete --name {resource_group_name} --yes
بالإضافة إلى ذلك، يوصى بإيقاف تشغيل الموارد الخاملة داخل SageMaker Studio لتقليل التكاليف. لمزيد من المعلومات، راجع وفر التكاليف عن طريق الإغلاق التلقائي للموارد الخاملة داخل Amazon SageMaker Studio.
وفي الختام
في هذا المنشور، أظهرنا كيف يمكنك إنشاء نموذج تعلم الآلة وتدريبه باستخدام SageMaker ونشره على موفر سحابي آخر. في الحل، استخدمنا دفتر ملاحظات SageMaker Studio، ولكن بالنسبة لأحمال عمل الإنتاج، نوصي باستخدامه MLOps لإنشاء مسارات عمل تدريبية قابلة للتكرار لتسريع تطوير النموذج ونشره.
لم يُظهر هذا المنشور جميع الطرق الممكنة لنشر النموذج وتشغيله في بيئة متعددة السحابة. على سبيل المثال، يمكنك أيضًا تجميع النموذج الخاص بك في صورة حاوية جنبًا إلى جنب مع رمز الاستدلال ومكتبات التبعية لتشغيل النموذج كتطبيق موجود في حاوية في أي نظام أساسي. لمزيد من المعلومات حول هذا النهج، راجع انشر تطبيقات الحاويات في بيئة متعددة السحابية باستخدام Amazon CodeCatalyst. الهدف من هذا المنشور هو إظهار كيف يمكن للمؤسسات استخدام قدرات AWS AI/ML في بيئة متعددة السحابة.
عن المؤلفين
رجا فايدياناثان هو مهندس حلول في AWS يدعم عملاء الخدمات المالية العالمية. تعمل شركة Raja مع العملاء لتصميم حلول للمشاكل المعقدة ذات تأثير إيجابي طويل المدى على أعمالهم. وهو متخصص هندسي قوي ماهر في استراتيجية تكنولوجيا المعلومات، وإدارة بيانات المؤسسة، وهندسة التطبيقات، مع اهتمامات خاصة بالتحليلات والتعلم الآلي.
أمانديب باجوا هو مهندس حلول أول في AWS يدعم مؤسسات الخدمات المالية. فهو يساعد المؤسسات على تحقيق نتائج أعمالها من خلال تحديد استراتيجية التحول السحابي المناسبة بناءً على اتجاهات الصناعة والأولويات التنظيمية. بعض المجالات التي يستشيرها Amandeep هي الترحيل السحابي، واستراتيجية السحابة (بما في ذلك الهجين والسحابة المتعددة)، والتحول الرقمي، والبيانات والتحليلات، والتكنولوجيا بشكل عام.
بريما أيير هو مدير الحسابات الفنية الأول لدعم AWS Enterprise. وهي تعمل مع عملاء خارجيين في مجموعة متنوعة من المشاريع، مما يساعدهم على تحسين قيمة حلولهم عند استخدام AWS.
- محتوى مدعوم من تحسين محركات البحث وتوزيع العلاقات العامة. تضخيم اليوم.
- PlatoData.Network Vertical Generative Ai. تمكين نفسك. الوصول هنا.
- أفلاطونايستريم. ذكاء Web3. تضخيم المعرفة. الوصول هنا.
- أفلاطون كربون، كلينتك ، الطاقة، بيئة، شمسي، إدارة المخلفات. الوصول هنا.
- أفلاطون هيلث. التكنولوجيا الحيوية وذكاء التجارب السريرية. الوصول هنا.
- المصدر https://aws.amazon.com/blogs/machine-learning/train-and-deploy-ml-models-in-a-multicloud-environment-using-amazon-sagemaker/
- :لديها
- :يكون
- :ليس
- :أين
- $ UP
- 1
- 10
- 100
- 13
- 25
- 28
- 32
- 7
- 9
- a
- من نحن
- تسريع
- يقبل
- الوصول
- حسابي
- التأهيل
- المكتسبة
- مميزات
- بعد
- AI
- AI / ML
- الكل
- يسمح
- على طول
- سابقا
- أيضا
- بالرغم ان
- أمازون
- الأمازون SageMaker
- قماش أمازون سيج ميكر
- أمازون ساجميكر ستوديو
- أمازون ويب سيرفيسز
- an
- المحللين
- تحليلات
- و
- مجهول
- آخر
- أي وقت
- أباتشي
- التطبيق
- تطبيق
- التطبيقات
- نهج
- مناسب
- هندسة معمارية
- أرشيف
- هي
- المناطق
- AS
- التقييم المناسبين
- At
- أتمتة
- تلقائيا
- متاح
- AWS
- محاور
- Azure
- على أساس
- BE
- كان
- قبل
- بدأ
- مفيد
- تستفيد
- أفضل
- ما بين
- على حد سواء
- جلب
- أوسع
- نساعدك في بناء
- ابني
- الأعمال
- لكن
- by
- دعوة
- تسمى
- دعوة
- CAN
- قماش
- قدرات
- حمل
- حقيبة
- الشيكات
- فئة
- صنف
- انقر
- سحابة
- الكود
- المعرفية
- متعاون
- حول الشركة
- إكمال
- مجمع
- الالتزام
- شامل
- إحصاء
- الاعداد
- الواردة
- وعاء
- حاويات
- يحتوي
- سياق الكلام
- ملاءمة
- تحول
- التحول
- جوهر
- التكاليف
- استطاع
- خلق
- خلق
- خلق
- خلق
- أوراق اعتماد
- على
- العملاء
- البيانات
- إدارة البيانات
- تحضير البيانات
- علم البيانات
- قواعد البيانات
- عميق
- التعلم العميق
- أعمق
- الترتيب
- حدد
- تعريف
- شرح
- التبعيات
- التبعية
- نشر
- نشر
- نشر
- نشر
- وصف
- التفاصيل
- تفاصيل
- التطوير التجاري
- جهاز
- الأجهزة
- مختلف
- رقمي
- التحول الرقمي
- الأرقام
- بعد
- ناقش
- do
- عامل في حوض السفن
- نطاق
- فعل
- لا
- إلى أسفل
- بإمكانك تحميله
- أثناء
- ديناميكي
- e
- آخر
- احتضان
- تمكن
- تمكين
- النهاية
- نقطة النهاية
- الهندسة
- المهندسين
- مشروع
- الشركات
- البيئة
- عصر
- عهود
- كل
- مثال
- إلا
- استثناء
- خبرة
- تصدير
- صادرات
- خارجي
- استخراج
- فشل
- المميزات
- قليل
- قم بتقديم
- ملفات
- مالي
- الخدمات المالية
- الاسم الأول
- تناسب
- متابعيك
- في حالة
- شكل
- دورة تأسيسية
- الإطار
- الأطر
- تبدأ من
- وظيفة
- وظائف
- العلاجات العامة
- يولد
- توليدي
- الذكاء الاصطناعي التوليدي
- دولار فقط واحصل على خصم XNUMX% على جميع
- العالمية
- المالية العالمية
- تجمع
- يملك
- he
- مساعدة
- يساعد
- استضافة
- كيفية
- كيفية
- HTML
- HTTP
- HTTPS
- مهجنة
- ID
- تحديد
- الخمول
- if
- يوضح
- صورة
- صور
- التأثير
- استيراد
- استيراد
- تحسن
- تحسين
- in
- تتضمن
- بما فيه
- مستقل
- العالمية
- معلومات
- في البداية
- إدخال
- المدخلات
- تثبيت
- مثل
- تعليمات
- دمج
- المتكاملة
- نية
- السريرية
- السطح البيني
- التوافقية
- إلى
- IT
- انها
- وظيفة
- المشــاريــع
- JPG
- جسون
- لغة
- كبير
- آخر
- تطلق
- تعلم
- تعلم
- الطول
- الرافعة المالية
- المكتبات
- المكتبة
- دورة حياة
- خط
- لينكس
- قائمة
- تحميل
- الأحمال
- محلي
- محليا
- موقع
- تسجيل
- طويل الأجل
- أبحث
- خسارة
- آلة
- آلة التعلم
- جعل
- إدارة
- تمكن
- إدارة
- مدير
- كثير
- رسم خريطة
- matplotlib
- مايو..
- يعني
- تعرف علي
- يجتمع
- طريقة
- طرق
- مایکروسافت
- ربما
- هجرة
- ML
- MLOps
- موضة
- نموذج
- عارضات ازياء
- وحدة
- الأكثر من ذلك
- أكثر
- الاسم
- عين
- أي
- حاجة
- بحاجة
- إحتياجات
- صاف
- شبكة
- عصبي
- الشبكة العصبية
- مفكرة
- نمباي
- موضوع
- of
- on
- ONE
- جاكيت
- المصدر المفتوح
- تعمل
- عمليات
- مشغلي
- مزيد من الخيارات
- or
- طلب
- منظمة
- التنظيمية
- المنظمات
- OS
- أخرى
- لنا
- خارج
- النتائج
- الناتج
- في الخارج
- الخاصة
- صفقة
- معلب
- المعلمة
- المعلمات
- جزء
- خاص
- حفلة
- pass
- يمر
- مسار
- نفذ
- أذونات
- المنصة
- منصات التداول
- أفلاطون
- الذكاء افلاطون البيانات
- أفلاطون داتا
- الرائج
- إيجابي
- ممكن
- منشور
- تنبؤات
- إعداد
- الشروط
- ابتدائي
- رئيسي
- مشاكل
- معالجتها
- الإنتــاج
- إنتاجية
- المنتجات
- محترف
- مشروع ناجح
- تزود
- المقدمة
- مزود
- ويوفر
- جمهور
- نشر
- بايثون
- pytorch
- سريع
- رفع
- عشوائية
- استعداد
- يتلقى
- موصى به
- تسجيل
- تخفيض
- الرجوع
- بغض النظر
- منطقة
- سجل
- نسبي
- تكرار
- طلب
- طلبات
- تطلب
- مطلوب
- المتطلبات الأساسية
- مورد
- الموارد
- استجابة
- نتيجة
- مما أدى
- عائد أعلى
- حق
- النوع
- جذر
- يجري
- تشغيل
- يدير
- sagemaker
- نفسه
- تم الحفظ
- حجم
- مسح
- سيناريوهات
- علوم
- العلماء
- سيناريو
- الإستراحة
- ثانوي
- القسم
- أقسام
- أمن
- انظر تعريف
- اختيار
- SELF
- إرسال
- كبير
- الخدمة
- خدماتنا
- الجلسة
- طقم
- إعدادات
- الإعداد
- الشكل
- هي
- ينبغي
- إظهار
- أظهرت
- أظهرت
- يظهر
- غلق
- اغلاق
- الاشارات
- حالات
- ماهر
- مهارات
- So
- تطبيقات الكمبيوتر
- حل
- الحلول
- بعض
- مصدر
- سيادة
- محدد
- المسرح
- معيار
- بداية
- بدأت
- يبدأ
- خطوات
- تخزين
- متجر
- تخزين
- الإستراتيجيات
- خيط
- قوي
- بناء
- ستوديو
- بعد ذلك
- بنجاح
- هذه
- الدعم
- دعم
- الدعم
- أخذ
- يأخذ
- الهدف
- فريق
- تقني
- التكنولوجيا
- تكنولوجيا
- عشرة
- tensorflow
- تجربه بالعربي
- اختبار
- الاختبار
- نص
- أن
- •
- المصدر
- من مشاركة
- منهم
- أنفسهم
- then
- تشبه
- هم
- شيء
- الثالث
- مرات
- إلى
- أدوات
- أدوات
- شعلة
- تورشفيجن
- أثر
- قطار
- متدرب
- قادة الإيمان
- تحول
- تحول
- استراتيجية التحول
- التحويلات
- جديد الموضة
- يثير
- أثار
- صحيح
- محاولة
- نوع
- فريد من نوعه
- تم التحميل
- تحميل
- URL
- تستخدم
- حالة الاستخدام
- مستعمل
- مستخدم
- يستخدم
- استخدام
- سهل حياتك
- التحقق من صحة
- قيمنا
- متغير
- تشكيلة
- الباعة
- الإصدارات
- الضعف
- تريد
- وكان
- طرق
- we
- الويب
- خدمات ويب
- على شبكة الإنترنت
- حسن
- متى
- التي
- سوف
- مع
- في غضون
- سير العمل
- أعمال
- اكتب
- مكتوب
- X
- حتى الآن
- أنت
- حل متجر العقارات الشامل الخاص بك في جورجيا
- زفيرنت
- الرمز البريدي