توسيع نطاق التدريب والاستدلال لآلاف نماذج ML باستخدام Amazon SageMaker | خدمات أمازون ويب

توسيع نطاق التدريب والاستدلال لآلاف نماذج ML باستخدام Amazon SageMaker | خدمات أمازون ويب

نظرًا لانتشار التعلم الآلي (ML) بشكل متزايد في مجموعة واسعة من الصناعات ، تجد المؤسسات الحاجة إلى تدريب أعداد كبيرة من نماذج التعلم الآلي وتقديمها لتلبية الاحتياجات المتنوعة لعملائها. بالنسبة لمقدمي البرامج كخدمة (SaaS) على وجه الخصوص ، فإن القدرة على تدريب وخدمة آلاف النماذج بكفاءة وفعالية من حيث التكلفة أمر بالغ الأهمية للبقاء في المنافسة في سوق سريع التطور.

يتطلب تدريب آلاف النماذج وخدمتها بنية تحتية قوية وقابلة للتطوير ، وهذا هو المكان المناسب الأمازون SageMaker استطيع المساعدة. SageMaker عبارة عن نظام أساسي مُدار بالكامل يُمكِّن المطورين وعلماء البيانات من إنشاء نماذج ML وتدريبها ونشرها بسرعة ، مع تقديم مزايا توفير التكلفة لاستخدام البنية التحتية السحابية لـ AWS.

في هذا المنشور ، نستكشف كيف يمكنك استخدام ميزات SageMaker ، بما في ذلك أمازون SageMaker معالجة، ووظائف تدريب SageMaker ، ونقاط النهاية متعددة النماذج من SageMaker (MMEs) ، لتدريب آلاف النماذج وخدمتهم بطريقة فعالة من حيث التكلفة. لبدء استخدام الحل الموصوف ، يمكنك الرجوع إلى دفتر الملاحظات المصاحب على GitHub جيثب:.

حالة الاستخدام: التنبؤ بالطاقة

بالنسبة لهذا المنشور ، نفترض دور شركة ISV التي تساعد عملائها على أن يصبحوا أكثر استدامة من خلال تتبع استهلاكهم للطاقة وتقديم التوقعات. تضم شركتنا 1,000 عميل يرغبون في فهم استخدامهم للطاقة بشكل أفضل واتخاذ قرارات مستنيرة حول كيفية تقليل تأثيرهم على البيئة. للقيام بذلك ، نستخدم مجموعة بيانات تركيبية ونقوم بتدريب نموذج ML بناءً على نبي لكل عميل لعمل تنبؤات باستهلاك الطاقة. مع SageMaker ، يمكننا تدريب وخدمة هذه النماذج البالغ عددها 1,000 نموذج بكفاءة ، وتزويد عملائنا برؤى دقيقة وقابلة للتنفيذ حول استخدامهم للطاقة.

هناك ثلاث ميزات في مجموعة البيانات التي تم إنشاؤها:

  • CUSTOMER_ID - هذا رقم صحيح لكل زبون ، يتراوح من 0-999.
  • الطابع الزمني - هذه قيمة تاريخ / وقت تشير إلى الوقت الذي تم فيه قياس استهلاك الطاقة. يتم إنشاء الطوابع الزمنية بشكل عشوائي بين تاريخي البدء والانتهاء المحددين في الكود.
  • استهلاك - هذه قيمة عائمة تشير إلى استهلاك الطاقة ، ويتم قياسها في بعض الوحدات التعسفية. يتم إنشاء قيم الاستهلاك بشكل عشوائي بين 0-1,000 مع موسمية جيبية.

حل نظرة عامة

لتدريب الآلاف من نماذج ML وتقديمها بكفاءة ، يمكننا استخدام ميزات SageMaker التالية:

  • معالجة SageMaker - SageMaker Processing هي خدمة تحضير بيانات مُدارة بالكامل تمكنك من أداء معالجة البيانات ومهام تقييم النماذج على بيانات الإدخال الخاصة بك. يمكنك استخدام معالجة SageMaker لتحويل البيانات الأولية إلى التنسيق المطلوب للتدريب والاستدلال ، بالإضافة إلى تشغيل التقييمات المجمعة وعبر الإنترنت لنماذجك.
  • وظائف تدريب SageMaker - يمكنك استخدام وظائف تدريب SageMaker لتدريب النماذج على مجموعة متنوعة من الخوارزميات وأنواع بيانات الإدخال ، وتحديد موارد الحساب اللازمة للتدريب.
  • SageMaker MMEs - تمكّنك نقاط النهاية متعددة النماذج من استضافة نماذج متعددة على نقطة نهاية واحدة ، مما يجعل من السهل تقديم التنبؤات من نماذج متعددة باستخدام واجهة برمجة تطبيقات واحدة. يمكن لـ SageMaker MME توفير الوقت والموارد عن طريق تقليل عدد نقاط النهاية اللازمة لخدمة التنبؤات من نماذج متعددة. تدعم MME استضافة النماذج المدعومة من وحدة المعالجة المركزية ووحدة معالجة الرسومات. لاحظ أنه في السيناريو الخاص بنا ، نستخدم 1,000 نموذج ، لكن هذا لا يقتصر على الخدمة نفسها.

يوضح الرسم البياني التالي بنية الحل.

العمارة التي تعرض العملية الموصوفة

يتضمن سير العمل الخطوات التالية:

  1. نستخدم SageMaker Processing لمعالجة البيانات وإنشاء ملف CSV واحد لكل عميل وتخزينه فيه خدمة تخزين أمازون البسيطة (أمازون S3).
  2. تم تكوين وظيفة تدريب SageMaker لقراءة مخرجات مهمة معالجة SageMaker وتوزيعها بطريقة round robin على مثيلات التدريب. لاحظ أنه يمكن تحقيق ذلك أيضًا باستخدام خطوط أنابيب Amazon SageMaker.
  3. يتم تخزين القطع الأثرية للنموذج في Amazon S3 من خلال مهمة التدريب ، ويتم تقديمها مباشرة من SageMaker MME.

نطاق التدريب لآلاف النماذج

يمكن توسيع نطاق تدريب الآلاف من النماذج عبر distribution المعلمة من التدريب فئة في SageMaker Python SDK ، والتي تتيح لك تحديد كيفية توزيع البيانات عبر مثيلات تدريب متعددة لوظيفة تدريبية. هناك ثلاثة خيارات لـ distribution المعلمة: FullyReplicated, ShardedByS3Keyو ShardedByRecord. ShardedByS3Key الخيار يعني أن بيانات التدريب يتم تجزئتها بواسطة مفتاح كائن S3 ، مع تلقي كل مثيل تدريب مجموعة فرعية فريدة من البيانات ، لتجنب الازدواجية. بعد نسخ البيانات بواسطة SageMaker إلى حاويات التدريب ، يمكننا قراءة بنية المجلد والملفات لتدريب نموذج فريد لكل ملف عميل. فيما يلي مثال على مقتطف الشفرة:

# Assume that the training data is in an S3 bucket already, pass the parent folder
s3_input_train = sagemaker.inputs.TrainingInput( s3_data='s3://my-bucket/customer_data', distribution='ShardedByS3Key'
) # Create a SageMaker estimator and set the training input
estimator = sagemaker.estimator.Estimator(...)
estimator.fit(inputs=s3_input_train)

تقوم كل وظيفة تدريبية في SageMaker بتخزين النموذج المحفوظ في ملف /opt/ml/model مجلد حاوية التدريب قبل أرشفته في ملف model.tar.gz ملف ، ثم تحميله إلى Amazon S3 عند الانتهاء من مهمة التدريب. يمكن للمستخدمين المتمرسين أيضًا أتمتة هذه العملية باستخدام خطوط أنابيب SageMaker. عند تخزين نماذج متعددة عبر نفس الوظيفة التدريبية ، يقوم SageMaker بإنشاء نموذج واحد model.tar.gz ملف يحتوي على جميع الموديلات المدربة. هذا يعني أنه من أجل خدمة النموذج ، سنحتاج إلى تفريغ الأرشيف أولاً. لتجنب هذا نستخدم نقاط التفتيش لحفظ حالة النماذج الفردية. يوفر SageMaker وظيفة لنسخ نقاط التحقق التي تم إنشاؤها أثناء مهمة التدريب إلى Amazon S3. هنا ، يجب حفظ نقاط التفتيش في مكان محدد مسبقًا ، مع الوضع الافتراضي /opt/ml/checkpoints. يمكن استخدام نقاط التفتيش هذه لاستئناف التدريب في وقت لاحق أو كنموذج للنشر على نقطة نهاية. للحصول على ملخص عالي المستوى لكيفية إدارة النظام الأساسي للتدريب SageMaker مسارات التخزين لمجموعات بيانات التدريب ، ونماذج التحف ، ونقاط التفتيش ، والمخرجات بين التخزين السحابي لـ AWS ووظائف التدريب في SageMaker ، يرجى الرجوع إلى مجلدات تخزين تدريب Amazon SageMaker لمجموعات بيانات التدريب ونقاط التحقق والنتائج الأثرية النموذجية والمخرجات.

يستخدم الكود التالي رمزًا وهميًا model.save() تعمل داخل train.py نص يحتوي على منطق التدريب:

import tarfile
import boto3
import os [ ... argument parsing ... ] for customer in os.list_dir(args.input_path): # Read data locally within the Training job df = pd.read_csv(os.path.join(args.input_path, customer, 'data.csv')) # Define and train the model model = MyModel() model.fit(df) # Save model to output directory with open(os.path.join(output_dir, 'model.json'), 'w') as fout: fout.write(model_to_json(model)) # Create the model.tar.gz archive containing the model and the training script with tarfile.open(os.path.join(output_dir, '{customer}.tar.gz'), "w:gz") as tar: tar.add(os.path.join(output_dir, 'model.json'), "model.json") tar.add(os.path.join(args.code_dir, "training.py"), "training.py")

مقياس الاستدلال إلى آلاف النماذج باستخدام SageMaker MMEs

تتيح لك وحدات SageMaker MME خدمة نماذج متعددة في نفس الوقت عن طريق إنشاء تكوين نقطة نهاية يتضمن قائمة بجميع النماذج المراد عرضها ، ثم إنشاء نقطة نهاية باستخدام تكوين نقطة النهاية. ليست هناك حاجة لإعادة نشر نقطة النهاية في كل مرة تضيف فيها نموذجًا جديدًا لأن نقطة النهاية ستخدم تلقائيًا جميع الطرز المخزنة في مسارات S3 المحددة. يتم تحقيق ذلك مع خادم متعدد النماذج (MMS) ، وهو إطار عمل مفتوح المصدر لخدمة نماذج ML التي يمكن تثبيتها في حاويات لتوفير الواجهة الأمامية التي تفي بمتطلبات واجهات برمجة تطبيقات حاوية MME الجديدة. بالإضافة إلى ذلك ، يمكنك استخدام خوادم نموذجية أخرى بما في ذلك تورش سيرف و تريتون نصف إله عند الإغريق. يمكن تثبيت MMS في الحاوية المخصصة الخاصة بك عبر ملف مجموعة أدوات الاستدلال SageMaker. لمعرفة المزيد حول كيفية تكوين Dockerfile الخاص بك لتضمين MMS واستخدامه لخدمة النماذج الخاصة بك ، ارجع إلى قم ببناء الحاوية الخاصة بك لنقاط النهاية متعددة النماذج من SageMaker.

يوضح مقتطف الشفرة التالي كيفية إنشاء MME باستخدام SageMaker Python SDK:

from sagemaker.multidatamodel import MultiDataModel # Create the MultiDataModel definition
multimodel = MultiDataModel( name='customer-models', model_data_prefix=f's3://{bucket}/scaling-thousand-models/models', model=your_model,
) # Deploy on a real-time endpoint
predictor = multimodel.deploy( initial_instance_count=1, instance_type='ml.c5.xlarge',
)

عندما تكون MME حية ، يمكننا استدعاؤها لإنشاء تنبؤات. يمكن إجراء الدعوات في أي AWS SDK وكذلك باستخدام SageMaker Python SDK ، كما هو موضح في مقتطف الشفرة التالي:

predictor.predict( data='{"period": 7}', # the payload, in this case JSON target_model='{customer}.tar.gz' # the name of the target model
)

عند استدعاء أحد النماذج ، يتم تحميل النموذج مبدئيًا من Amazon S3 على المثيل ، مما قد يؤدي إلى بداية باردة عند استدعاء نموذج جديد. النماذج المستخدمة بشكل متكرر يتم تخزينها مؤقتًا في الذاكرة وعلى القرص لتوفير استنتاج منخفض زمن الوصول.

وفي الختام

SageMaker عبارة عن منصة قوية وفعالة من حيث التكلفة للتدريب وخدمة الآلاف من نماذج ML. تعمل ميزاته ، بما في ذلك SageMaker Processing ووظائف التدريب و MME ، على تمكين المؤسسات من تدريب الآلاف من النماذج وتقديمها بكفاءة على نطاق واسع ، مع الاستفادة أيضًا من مزايا توفير التكلفة لاستخدام البنية التحتية السحابية لـ AWS. لمعرفة المزيد حول كيفية استخدام SageMaker للتدريب وخدمة آلاف النماذج ، ارجع إلى معالجة البيانات, تدريب نموذج مع Amazon SageMaker و استضف عدة نماذج في حاوية واحدة خلف نقطة نهاية واحدة.


حول المؤلف

صورة دافيددافيد جاليتيلي مهندس حلول متخصص للذكاء الاصطناعي / تعلم الآلة في منطقة أوروبا والشرق الأوسط وإفريقيا. يقيم في بروكسل ويعمل بشكل وثيق مع العملاء في جميع أنحاء البنلوكس. لقد كان مطورًا منذ أن كان صغيرًا جدًا ، حيث بدأ البرمجة في سن السابعة. بدأ تعلم الذكاء الاصطناعي / تعلم الآلة في الجامعة ، ووقع في حبها منذ ذلك الحين.

صورة موريتسموريتس دي جروت هو مهندس حلول في Amazon Web Services ، ومقره أمستردام. إنه يحب العمل على الموضوعات المتعلقة بالتعلم الآلي ولديه ميل للشركات الناشئة. في أوقات فراغه ، يستمتع بالتزلج ولعب الاسكواش.

الطابع الزمني:

اكثر من التعلم الآلي من AWS