قم بتحسين البحث عالي القيمة باستخدام Hugging Face و Amazon SageMaker لنقاط نهاية الاستدلال غير المتزامن من PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

قم بتحسين البحث عالي القيمة باستخدام Hugging Face و Amazon SageMaker لنقاط نهاية الاستدلال غير المتزامن

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

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

نعتقد أن العملاء سيستفيدون بشكل كبير من القدرة على تقليص حجمهم إلى الصفر وزيادة قدرتهم على الاستدلال على أساس الحاجة. يؤدي هذا إلى تحسين تكلفة البحث ولا يزال لا يساوم على جودة الاستدلالات. يناقش هذا المنشور كيف تعانق الوجه مع الأمازون SageMaker يمكن أن يساعد الاستدلال غير المتزامن في تحقيق ذلك.

يمكنك إنشاء نماذج تلخيص نصية باستخدام العديد من أطر عمل التعلم العميق مثل TensorFlow و PyTorch و Apache MXNet. تحتوي هذه النماذج عادةً على حمولة إدخال كبيرة من مستندات نصية متعددة ذات أحجام مختلفة. تتطلب نماذج التعلم العميق المتقدمة معالجة مسبقة كثيفة الحوسبة قبل استدلال النموذج. يمكن أن تصل أوقات المعالجة إلى بضع دقائق ، مما يزيل خيار تشغيل الاستدلال في الوقت الفعلي عن طريق تمرير الحمولات عبر واجهة برمجة تطبيقات HTTP. بدلاً من ذلك ، تحتاج إلى معالجة حمولات الإدخال بشكل غير متزامن من ملف تخزين كائنات مثل خدمة تخزين أمازون البسيطة (Amazon S3) مع قائمة انتظار تلقائية وعتبة التزامن محددة مسبقًا. يجب أن يكون النظام قادرًا على تلقي إشعارات الحالة وتقليل التكاليف غير الضرورية عن طريق تنظيف الموارد عند اكتمال المهام.

يساعد SageMaker علماء البيانات والمطورين على إعداد وبناء وتدريب ونشر نماذج عالية الجودة للتعلم الآلي (ML) بسرعة من خلال الجمع بين مجموعة واسعة من القدرات المصممة لغرض التعلم الآلي. يوفر SageMaker حاويات تقديم النماذج مفتوحة المصدر الأكثر تقدمًا لـ XGBoost (حاوية, SDK) ، Scikit-Learn (حاوية, SDK) ، PyTorch (حاوية, SDK) ، TensorFlow (حاوية, SDK) و Apache MXNet (حاوية, SDK).

يوفر SageMaker أربعة خيارات لنشر نماذج ML المدربة لإنشاء استنتاجات حول البيانات الجديدة.
  1. الاستدلال في الوقت الحقيقي تعد نقاط النهاية مناسبة لأحمال العمل التي يجب معالجتها بمتطلبات زمن انتقال منخفض في حدود مللي ثانية إلى ثانية.
  2. تحويل دفعة مثالي للتنبؤات في وضع عدم الاتصال على مجموعات كبيرة من البيانات.
  3. استدلال Amazon SageMaker Serverless (في وضع المعاينة وغير موصى به لأحمال العمل الإنتاجية حتى كتابة هذه السطور) هو خيار استدلال مبني لغرض معين يسهل عليك نشر نماذج ML وقياسها. يعد الاستدلال بدون خادم مثاليًا لأحمال العمل التي لها فترات خمول بين طفرات حركة المرور ويمكن أن تتسامح مع عمليات البدء الباردة.
  4. الاستدلال غير المتزامن قائمة انتظار الطلبات الواردة. إنها مثالية لأحمال العمل حيث تكون أحجام الطلبات كبيرة (حتى 1 غيغابايت) وتكون أوقات معالجة الاستدلال في حدود الدقائق (حتى 15 دقيقة). يمكّنك الاستدلال غير المتزامن من توفير التكاليف عن طريق القياس التلقائي لعدد المثيلات إلى الصفر في حالة عدم وجود طلبات للمعالجة.

حل نظرة عامة

في هذا المنشور ، نقوم بنشر ملف نموذج PEGASUS تم تدريبه مسبقًا لإجراء تلخيص نصي من وجه يعانق إلى خدمات استضافة SageMaker. نحن نستخدم النموذج كما هو من Hugging Face من أجل البساطة. ومع ذلك ، يمكنك ذلك صقل النموذج بناءً على مجموعة بيانات مخصصة. يمكنك أيضًا تجربة الطرز الأخرى المتوفرة في معانقة الوجه النموذجي المحور. نوفر أيضًا نقطة نهاية الاستدلال غير المتزامن التي تستضيف هذا النموذج ، والتي يمكنك من خلالها الحصول على تنبؤات.

يتوقع معالج الاستدلال غير المتزامن لنقطة النهاية مقالة باعتبارها حمولة إدخال. النص الملخص للمقال هو الإخراج. يتم تخزين المخرجات في قاعدة البيانات لتحليل الاتجاهات أو يتم تغذيتها في نهاية المطاف لمزيد من التحليلات. يستمد تحليل المصب رؤى البيانات التي تساعد في البحث.

نوضح كيف تمكّنك نقاط نهاية الاستدلال غير المتزامن من الحصول على إعلامات التزامن وإكمال المعرفة من قبل المستخدم. نقوم بتكوين القياس التلقائي للمثيلات الموجودة خلف نقطة النهاية لتقليصها إلى الصفر عند انخفاض حركة المرور وتوسيع نطاقها احتياطيًا مع امتلاء قائمة انتظار الطلبات.

نحن نستخدم أيضا الأمازون CloudWatch مقاييس لمراقبة حجم قائمة الانتظار وإجمالي وقت المعالجة والاستدعاءات التي تتم معالجتها.

في الرسم البياني التالي ، نعرض الخطوات المتضمنة أثناء إجراء الاستدلال باستخدام نقطة نهاية الاستدلال غير المتزامن.

قم بتحسين البحث عالي القيمة باستخدام Hugging Face و Amazon SageMaker لنقاط نهاية الاستدلال غير المتزامن من PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

  1. لدينا تدريب مسبق PEGASUS يتم استضافة نموذج ML أولاً على نقطة نهاية القياس.
  2. يقوم المستخدم بتحميل المقالة ليتم تلخيصها في حاوية إدخال S3.
  3. يتم استدعاء نقطة نهاية الاستدلال غير المتزامن باستخدام API.
  4. بعد اكتمال الاستدلال ، يتم حفظ النتيجة في حاوية الإخراج S3.
  5. An خدمة إعلام أمازون البسيطة يتم إرسال إشعار (Amazon SNS) إلى المستخدم لإخطاره بنجاح أو فشل.

إنشاء نقطة نهاية الاستدلال غير المتزامن

نقوم بإنشاء نقطة نهاية الاستدلال غير المتزامن المشابهة لنقطة النهاية المستضافة في الوقت الفعلي. تتضمن الخطوات إنشاء نموذج SageMaker ، متبوعًا بتكوين نقطة النهاية ونشر نقطة النهاية. يتمثل الاختلاف بين نوعي نقاط النهاية في أن تكوين نقطة نهاية الاستدلال غير المتزامن يحتوي على ملف AsyncInferenceConfig الجزء. نحدد هنا مسار إخراج S3 للنتائج من استدعاء نقطة النهاية ونقوم اختياريًا بتضمين موضوعات SNS للإخطارات الخاصة بالنجاح والفشل. نحدد أيضًا الحد الأقصى لعدد الاستدعاءات المتزامنة لكل مثيل على النحو الذي يحدده العميل. انظر الكود التالي:

AsyncInferenceConfig={ "OutputConfig": { "S3OutputPath": f"s3://{bucket}/{bucket_prefix}/output", # Optionally specify Amazon SNS topics for notifications "NotificationConfig": { "SuccessTopic": success_topic, "ErrorTopic": error_topic, } }, "ClientConfig": { "MaxConcurrentInvocationsPerInstance": 2 #increase this value up to throughput peak for ideal performance } }

للحصول على تفاصيل حول API لإنشاء تكوين نقطة نهاية للاستدلال غير المتزامن ، راجع قم بإنشاء نقطة نهاية للاستدلال غير المتزامن.

استدعاء نقطة نهاية الاستدلال غير المتزامن

تُظهر لقطة الشاشة التالية مقالة موجزة نستخدمها كحمولة إدخال لدينا:
قم بتحسين البحث عالي القيمة باستخدام Hugging Face و Amazon SageMaker لنقاط نهاية الاستدلال غير المتزامن من PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

الكود التالي يقوم بتحميل المقال كملف input.json ملف إلى Amazon S3:

sm_session.upload_data( input_location, bucket=sm_session.default_bucket(), key_prefix=prefix, extra_args={"ContentType": "text/plain"})

نستخدم Amazon S3 URI لملف حمولة الإدخال لاستدعاء نقطة النهاية. يحتوي كائن الاستجابة على موقع الإخراج في Amazon S3 لاسترداد النتائج بعد الاكتمال:

response = sm_runtime.invoke_endpoint_async(EndpointName=endpoint_name, InputLocation=input_1_s3_location)
output_location = response['OutputLocation']

تُظهر لقطة الشاشة التالية نموذج تلخيص ما بعد الإخراج:
قم بتحسين البحث عالي القيمة باستخدام Hugging Face و Amazon SageMaker لنقاط نهاية الاستدلال غير المتزامن من PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

للحصول على تفاصيل حول API لاستدعاء نقطة نهاية الاستدلال غير المتزامن ، راجع استدعاء نقطة نهاية الاستدلال غير المتزامن.

ضع طلبات الاستدعاء في قائمة انتظار مع التزامن المعرفة من قبل المستخدم

تضع نقطة نهاية الاستدلال غير المتزامن طلبات الاستدعاء في قائمة انتظار تلقائيًا. هذه قائمة انتظار مُدارة بالكامل مع مقاييس مراقبة متنوعة ولا تتطلب أي تكوين إضافي. يستخدم MaxConcurrentInvocationsPerInstance المعلمة في تكوين نقطة النهاية السابقة لمعالجة الطلبات الجديدة من قائمة الانتظار بعد اكتمال الطلبات السابقة. MaxConcurrentInvocationsPerInstance هو الحد الأقصى لعدد الطلبات المتزامنة التي يرسلها عميل SageMaker إلى حاوية النموذج. إذا لم يتم تقديم أي قيمة ، فإن SageMaker يختار القيمة المثلى لك.

مثيلات القياس التلقائي داخل نقطة نهاية الاستدلال غير المتزامن

لقد قمنا بتعيين سياسة القياس التلقائي بحد أدنى للسعة صفر وبسعة قصوى تبلغ خمس مثيلات. على عكس نقاط النهاية المستضافة في الوقت الفعلي ، تدعم نقاط نهاية الاستدلال غير المتزامن تصغير الحالات إلى الصفر عن طريق تعيين الحد الأدنى للسعة على صفر. نحن نستخدم ال ApproximateBacklogSizePerInstance مقياس لتكوين سياسة القياس مع تراكم قائمة انتظار مستهدفة من خمسة لكل مثيل للتوسع بشكل أكبر. حددنا فترة التهدئة لـ ScaleInCooldown إلى 120 ثانية و ScaleOutCooldown إلى 120 ثانية. قيمة ApproximateBacklogSizePerInstance يتم اختياره بناءً على حركة المرور وحساسيتك لسرعة القياس. كلما توسعت بشكل أسرع ، قلت التكلفة التي تتحملها ، ولكن كلما زاد احتمال أن تضطر إلى التوسع مرة أخرى عند ورود طلبات جديدة. وكلما كان التوسع أبطأ ، زادت التكلفة التي تتحملها ، ولكنك أقل احتمالًا يأتي طلب عندما تكون أقل من الحجم.

client = boto3.client('application-autoscaling') # Common class representing Application Auto Scaling for SageMaker amongst other services resource_id='endpoint/' + endpoint_name + '/variant/' + 'variant1' # This is the format in which application autoscaling references the endpoint response = client.register_scalable_target(
ServiceNamespace='sagemaker', #
ResourceId=resource_id,
ScalableDimension='sagemaker:variant:DesiredInstanceCount',
MinCapacity=0,
MaxCapacity=5
) response = client.put_scaling_policy(
PolicyName='Invocations-ScalingPolicy',
ServiceNamespace='sagemaker', # The namespace of the AWS service that provides the resource.
ResourceId=resource_id, # Endpoint name
ScalableDimension='sagemaker:variant:DesiredInstanceCount', # SageMaker supports only Instance Count
PolicyType='TargetTrackingScaling', # 'StepScaling'|'TargetTrackingScaling'
TargetTrackingScalingPolicyConfiguration={ 'TargetValue': 5.0, # The target value for the metric. 'CustomizedMetricSpecification': { 'MetricName': 'ApproximateBacklogSizePerInstance', 'Namespace': 'AWS/SageMaker', 'Dimensions': [{'Name': 'EndpointName', 'Value': endpoint_name }], 'Statistic': 'Average',
}, 'ScaleInCooldown': 120, # ScaleInCooldown - The amount of time, in seconds, after a scale-in activity completes before another scale in activity can start. 'ScaleOutCooldown': 120 # ScaleOutCooldown - The amount of time, in seconds, after a scale-out activity completes before another scale out activity can start.
# 'DisableScaleIn': True|False - indicates whether scale in by the target tracking policy is disabled.
# If the value is true, scale-in is disabled and the target tracking policy won't remove capacity from the scalable resource.
}
)

للحصول على تفاصيل حول واجهة برمجة التطبيقات للقياس التلقائي لنقطة نهاية الاستدلال غير المتزامن ، راجع ملف مقياس تلقائي لنقطة نهاية الاستدلال غير المتزامن.

تكوين الإخطارات من نقطة نهاية الاستدلال غير المتزامن

نقوم بإنشاء موضوعين منفصلين SNS لإشعارات النجاح والخطأ لكل نتيجة استدعاء لنقطة النهاية:

sns_client = boto3.client('sns')
response = sns_client.create_topic(Name="Async-Demo-ErrorTopic2")
error_topic = response['TopicArn']
response = sns_client.create_topic(Name="Async-Demo-SuccessTopic2")
success_topic = response['TopicArn']

تتضمن الخيارات الأخرى للإشعارات التحقق بشكل دوري من إخراج حاوية S3 ، أو استخدام إشعارات حاوية S3 لتهيئة AWS لامدا وظيفة عند تحميل الملف. يتم تضمين إخطارات SNS في قسم تكوين نقطة النهاية كما هو موضح سابقًا.

للحصول على تفاصيل حول كيفية إعداد الإعلامات من نقطة نهاية الاستدلال غير المتزامن ، راجع تحقق من نتائج التنبؤ.

مراقبة نقطة نهاية الاستدلال غير المتزامن

نحن نراقب نقطة نهاية الاستدلال غير المتزامن مع مقاييس CloudWatch الإضافية المضمنة الخاصة بالاستدلال غير المتزامن. على سبيل المثال ، نراقب طول قائمة الانتظار في كل حالة باستخدام ApproximateBacklogSizePerInstance وإجمالي طول قائمة الانتظار مع ApproximateBacklogSize.

للحصول على قائمة كاملة من المقاييس ، يرجى الرجوع إلى مراقبة نقاط نهاية الاستدلال غير المتزامن.

يمكننا تحسين تكوين نقطة النهاية للحصول على المثيل الأكثر فعالية من حيث التكلفة مع الأداء العالي. على سبيل المثال ، يمكننا استخدام مثيل مع Amazon Elastic Inference أو AWS Inferentia. يمكننا أيضًا زيادة مستوى التزامن تدريجيًا وصولاً إلى ذروة الإنتاجية أثناء تعديل معلمات الخادم والحاوية النموذجية الأخرى.

الرسوم البيانية CloudWatch

لقد قمنا بمحاكاة حركة مرور من 10,000 طلب استنتاج تتدفق خلال فترة زمنية إلى نقطة نهاية الاستدلال غير المتزامن التي تم تمكينها باستخدام سياسة القياس التلقائي الموضحة في القسم السابق.

تُظهر لقطة الشاشة التالية مقاييس المثيل قبل بدء تدفق الطلبات. نبدأ بنقطة نهاية مباشرة بدون أي مثيلات قيد التشغيل:
قم بتحسين البحث عالي القيمة باستخدام Hugging Face و Amazon SageMaker لنقاط نهاية الاستدلال غير المتزامن من PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

يوضح الرسم البياني التالي كيف أن ملف BacklogSize و BacklogSizePerInstance تتغير المقاييس عندما يبدأ القياس التلقائي ويتم مشاركة الحمل على نقطة النهاية بواسطة مثيلات متعددة تم توفيرها كجزء من عملية القياس التلقائي.
قم بتحسين البحث عالي القيمة باستخدام Hugging Face و Amazon SageMaker لنقاط نهاية الاستدلال غير المتزامن من PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

كما هو موضح في لقطة الشاشة التالية ، زاد عدد المثيلات مع زيادة عدد الاستدلالات:
قم بتحسين البحث عالي القيمة باستخدام Hugging Face و Amazon SageMaker لنقاط نهاية الاستدلال غير المتزامن من PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

توضح لقطة الشاشة التالية كيف يعيد القياس نقطة النهاية إلى الحالة الأولية لعدم وجود مثيلات قيد التشغيل:
قم بتحسين البحث عالي القيمة باستخدام Hugging Face و Amazon SageMaker لنقاط نهاية الاستدلال غير المتزامن من PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

تنظيف

بعد اكتمال جميع الطلبات ، يمكننا حذف نقطة النهاية المشابهة لحذف نقاط النهاية المستضافة في الوقت الفعلي. لاحظ أنه إذا قمنا بتعيين الحد الأدنى من سعة نقاط نهاية الاستدلال غير المتزامن على صفر ، فلن يتم تكبد رسوم مثيل بعد تقليصها إلى الصفر.

إذا قمت بتمكين القياس التلقائي لنقطة النهاية الخاصة بك ، فتأكد من إلغاء تسجيل نقطة النهاية كهدف قابل للتحجيم قبل حذف نقطة النهاية. للقيام بذلك ، قم بتشغيل الكود التالي:

response = client.deregister_scalable_target(ServiceNamespace='sagemaker',ResourceId='resource_id',ScalableDimension='sagemaker:variant:DesiredInstanceCount')

تذكر حذف نقطة النهاية الخاصة بك بعد الاستخدام حيث سيتم محاسبتك على المثيلات المستخدمة في هذا العرض التوضيحي.

sm_client.delete_endpoint(EndpointName=endpoint_name)

تحتاج أيضًا إلى حذف كائنات S3 وموضوعات SNS. إذا قمت بإنشاء أي موارد AWS أخرى لاستهلاك إعلامات SNS واتخاذ إجراء بشأنها ، فقد ترغب أيضًا في حذفها.

وفي الختام

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

لتبدأ مع SageMaker الاستدلال غير المتزامن ، تحقق من الاستدلال غير المتزامن.


حول المؤلف

قم بتحسين البحث عالي القيمة باستخدام Hugging Face و Amazon SageMaker لنقاط نهاية الاستدلال غير المتزامن من PlatoBlockchain Data Intelligence. البحث العمودي. عاي.دينيش كومار سوبراماني هو مهندس حلول أول مع فريق UKIR SMB ، ومقره في إدنبرة ، اسكتلندا. وهو متخصص في الذكاء الاصطناعي والتعلم الآلي. يستمتع Dinesh بالعمل مع العملاء عبر الصناعات لمساعدتهم على حل مشكلاتهم مع خدمات AWS. خارج العمل ، يحب قضاء الوقت مع أسرته ولعب الشطرنج والاستمتاع بالموسيقى من مختلف الأنواع.

قم بتحسين البحث عالي القيمة باستخدام Hugging Face و Amazon SageMaker لنقاط نهاية الاستدلال غير المتزامن من PlatoBlockchain Data Intelligence. البحث العمودي. عاي.راغو راميشا هو مهندس حلول ML مع فريق Amazon SageMaker Service. إنه يركز على مساعدة العملاء في بناء ونشر وترحيل أعباء عمل إنتاج ML إلى SageMaker على نطاق واسع. وهو متخصص في مجالات التعلم الآلي والذكاء الاصطناعي ورؤية الكمبيوتر ، وهو حاصل على درجة الماجستير في علوم الكمبيوتر من جامعة UT Dallas. في أوقات فراغه يستمتع بالسفر والتصوير.

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

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