نشر نماذج من HuggingFace hub إلى Azure التعلم الآلي نقاط النهاية عبر الإنترنت للاستدلال في الوقت الفعلي

لقد اشتركت Microsoft مع Hugging Face لإحضار نماذج مفتوحة المصدر من Hugging Face Hub إلى Azure التعلم الآلي. معانقة الوجه هو منشئ المحولات، وهي مكتبة شائعة على نطاق واسع لبناء نماذج لغة كبيرة. مركز نموذج Hugging Face الذي يحتوي على الآلاف من النماذج مفتوحة المصدر. يتيح لك التكامل مع Azure التعلم الآلي نشر نماذج مفتوحة المصدر من اختيارك لتأمين البنية الأساسية للاستدلال وقابلة للتطوير على Azure. يمكنك البحث من آلاف نماذج المحولات في كتالوج نموذج Azure التعلم الآلي ونشر النماذج إلى نقطة النهاية المدارة عبر الإنترنت بسهولة من خلال المعالج الإرشادي. بمجرد نشرها، تمنحك نقطة النهاية المدارة عبر الإنترنت واجهة برمجة تطبيقات REST الآمنة لتسجيل نموذجك في الوقت الفعلي.

إشعار

تخضع النماذج من Hugging Face لشروط ترخيص الجهات الخارجية المتوفرة في صفحة تفاصيل نموذج Hugging Face. تقع على عاتقك مسؤولية الامتثال لشروط ترخيص النموذج.

فوائد استخدام نقاط النهاية عبر الإنترنت للاستدلال في الوقت الحقيقي

تساعدك نقاط النهاية المدارة عبر الإنترنت في Azure التعلم الآلي على نشر النماذج على أجهزة CPU وGPU القوية في Azure بطريقة تسليم المفتاح. تهتم نقاط النهاية المُدارة عبر الإنترنت بخدمة نماذجك، وتوسيع نطاقها، وتأمينها، ومراقبتها، مما يحررك من النفقات العامة لإعداد البنية الأساسية وإدارتها. يتم توفير الأجهزة الظاهرية نيابة عنك عند نشر النماذج. يمكنك الحصول على عمليات نشر متعددة خلف حركة المرور وتقسيمها أو عكس نسبة استخدام الشبكة إلى عمليات التوزيع هذه. تساعدك حركة المرور المعكوسة على اختبار إصدارات جديدة من النماذج على حركة مرور الإنتاج دون إصدار بيئات الإنتاج. يتيح لك تقسيم نسبة استخدام الشبكة زيادة نسبة استخدام الشبكة الإنتاجية تدريجيا إلى إصدارات النموذج الجديدة أثناء مراقبة الأداء. يتيح لك المقياس التلقائي زيادة الموارد أو تكثيفها ديناميكيا استنادا إلى أحمال العمل. يمكنك تكوين التحجيم استنادا إلى مقاييس الاستخدام أو جدول زمني محدد أو مزيج من كليهما. مثال على التحجيم استنادا إلى مقاييس الاستخدام هو إضافة عقد إذا كان استخدام وحدة المعالجة المركزية أعلى من 70٪. مثال على التحجيم المستند إلى الجدول الزمني هو إضافة عقد استنادا إلى ساعات الذروة في العمل.

نشر نماذج مركز HuggingFace باستخدام Studio

للعثور على نموذج لنشره، افتح كتالوج النموذج في Azure التعلم الآلي studio. حدد "All Filters"، ثم حدد "HuggingFace" في قسم Filter by collections. حدد تجانب النموذج لفتح صفحة النموذج.

توزيع النموذج

اختر خيار النشر في الوقت الحقيقي لفتح مربع حوار النشر السريع. حدد الخيارات التالية:

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

ملاحظة: إذا كنت تريد النشر إلى نقطة النهاية الموجودة، فحدد More options من مربع حوار النشر السريع واستخدم معالج النشر الكامل.

اختبار النموذج المنشور

بمجرد اكتمال النشر، يمكنك العثور على نقطة نهاية REST للنموذج في صفحة نقاط النهاية، والتي يمكن استخدامها لتسجيل النموذج. يمكنك العثور على خيارات لإضافة المزيد من عمليات النشر وإدارة نسبة استخدام الشبكة وتحجيم مركز نقاط النهاية. يمكنك أيضا استخدام علامة التبويب Test في صفحة نقطة النهاية لاختبار النموذج باستخدام مدخلات العينة. تتوفر نماذج المدخلات في صفحة النموذج. يمكنك العثور على تنسيق الإدخال والمعلمات ونماذج المدخلات على وثائق واجهة برمجة تطبيقات استدلال مركز Hugging Face.

توزيع نماذج مركز HuggingFace باستخدام Python SDK

إعداد Python SDK.

البحث عن النموذج المراد نشره

استعرض كتالوج النموذج في Azure التعلم الآلي studio وابحث عن النموذج الذي تريد نشره. انسخ اسم النموذج الذي تريد نشره. استيراد المكتبات المطلوبة. يتم سرد النماذج المعروضة في الكتالوج من HuggingFace السجل. model_id إنشاء باستخدام اسم النموذج الذي نسخته من كتالوج النموذج والسجلHuggingFace. يمكنك نشر bert_base_uncased النموذج مع أحدث إصدار في هذا المثال.

from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
    ManagedOnlineEndpoint,
    ManagedOnlineDeployment,
    Model,
    Environment,
    CodeConfiguration,
)
registry_name = "HuggingFace"
model_name = "bert_base_uncased"
model_id = f"azureml://registries/{registry_name}/models/{model_name}/labels/latest"

توزيع النموذج

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

import time
endpoint_name="hf-ep-" + str(int(time.time())) # endpoint name must be unique per Azure region, hence appending timestamp 
ml_client.begin_create_or_update(ManagedOnlineEndpoint(name=endpoint_name) ).wait()
ml_client.online_deployments.begin_create_or_update(ManagedOnlineDeployment(
    name="demo",
    endpoint_name=endpoint_name,
    model=model_id,
    instance_type="Standard_DS2_v2",
    instance_count=1,
)).wait()
endpoint = ml_client.online_endpoints.get(endpoint_name)
endpoint.traffic = {"demo": 100}
ml_client.begin_create_or_update(endpoint).result()

اختبار النموذج المنشور

إنشاء ملف مع مدخلات يمكن إرسالها إلى نقطة النهاية عبر الإنترنت لتسجيل النقاط. أسفل إدخال نموذج التعليمات البرمجية fill-mask للنوع منذ نشرنا bert-base-uncased النموذج. يمكنك العثور على تنسيق الإدخال والمعلمات ونماذج المدخلات على وثائق واجهة برمجة تطبيقات استدلال مركز Hugging Face.

import json
scoring_file = "./sample_score.json"
with open(scoring_file, "w") as outfile:
    outfile.write('{"inputs": ["Paris is the [MASK] of France.", "The goal of life is [MASK]."]}')   
response = workspace_ml_client.online_endpoints.invoke(
    endpoint_name=endpoint_name,
    deployment_name="demo",
    request_file=scoring_file,
)
response_json = json.loads(response)
print(json.dumps(response_json, indent=2))

نشر نماذج مركز HuggingFace باستخدام CLI

إعداد CLI.

البحث عن النموذج المراد نشره

استعرض كتالوج النموذج في Azure التعلم الآلي studio وابحث عن النموذج الذي تريد نشره. انسخ اسم النموذج الذي تريد نشره. يتم سرد النماذج المعروضة في الكتالوج من HuggingFace السجل. يمكنك نشر bert_base_uncased النموذج مع أحدث إصدار في هذا المثال.

توزيع النموذج

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

يتم سرد النماذج المعروضة في الكتالوج من HuggingFace السجل. يمكنك نشر bert_base_uncased النموذج مع أحدث إصدار في هذا المثال. معرف الأصل المؤهل model بالكامل استنادا إلى اسم النموذج والسجل هو azureml://registries/HuggingFace/models/bert-base-uncased/labels/latest. نقوم بإنشاء deploy.yml الملف المستخدم للأمر المضمن az ml online-deployment create .

إنشاء نقطة نهاية عبر الإنترنت. بعد ذلك، قم بإنشاء النشر.

# create endpoint
endpoint_name="hf-ep-"$(date +%s)
model_name="bert-base-uncased"
az ml online-endpoint create --name $endpoint_name 

# create deployment file. 
cat <<EOF > ./deploy.yml
name: demo
model: azureml://registries/HuggingFace/models/$model_name/labels/latest
endpoint_name: $endpoint_name
instance_type: Standard_DS3_v2
instance_count: 1
EOF
az ml online-deployment create --file ./deploy.yml --workspace-name $workspace_name --resource-group $resource_group_name

اختبار النموذج المنشور

إنشاء ملف مع مدخلات يمكن إرسالها إلى نقطة النهاية عبر الإنترنت لتسجيل النقاط. معانقة الوجه كإدخل عينة التعليمات البرمجية fill-mask لنوع النموذج المنشور لدينا bert-base-uncased . يمكنك العثور على تنسيق الإدخال والمعلمات ونماذج المدخلات على وثائق واجهة برمجة تطبيقات استدلال مركز Hugging Face.

scoring_file="./sample_score.json"
cat <<EOF > $scoring_file
{
  "inputs": [
    "Paris is the [MASK] of France.",
    "The goal of life is [MASK]."
  ]
}
EOF
az ml online-endpoint invoke --name $endpoint_name --request-file $scoring_file

التعليمات البرمجية لنموذج الوجه المعانق

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

استكشاف الأخطاء وإصلاحها: أخطاء التوزيع والنماذج غير المدعومة

يحتوي HuggingFace hub على آلاف النماذج مع تحديث المئات كل يوم. يتم اختبار النماذج الأكثر شيوعا فقط في المجموعة وقد تفشل نماذج أخرى مع أحد الأخطاء أدناه.

النماذج المسورة

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

النماذج التي تحتاج إلى تشغيل التعليمات البرمجية عن بعد

تستخدم النماذج عادة التعليمات البرمجية من SDK المحولات ولكن بعض النماذج تقوم بتشغيل التعليمات البرمجية من مستودع النموذج. تحتاج هذه النماذج إلى تعيين المعلمة trust_remote_code إلى True. اتبع هذا الارتباط لمعرفة المزيد حول استخدام التعليمات البرمجية البعيدة. هذه النماذج غير مدعومة من وضع الأمان في الاعتبار. ستفشل محاولة نشر مثل هذه النماذج مع الخطأ التالي: ValueError: Loading <model> requires you to execute the configuration file in that repo on your local machine. Make sure you have read the code there to avoid malicious use, then set the option trust_remote_code=True to remove this error.

نماذج ذات رموز مميزة غير صحيحة

يمكن أن يؤدي تحديد الرمز المميز أو فقدانه بشكل غير صحيح في حزمة النموذج إلى OSError: Can't load tokenizer for <model> حدوث خطأ.

المكتبات المفقودة

تحتاج بعض النماذج إلى مكتبات python إضافية. يمكنك تثبيت المكتبات المفقودة عند تشغيل النماذج محليا. ستفشل النماذج التي تحتاج إلى مكتبات خاصة تتجاوز مكتبات المحولات القياسية مع ModuleNotFoundError أو ImportError خطأ.

ذاكرة غير كافية

إذا رأيت OutOfQuota: Container terminated due to insufficient memory، فحاول استخدام instance_type بمزيد من الذاكرة.

الأسئلة الشائعة

أين يتم تخزين أوزان النموذج؟

يتم عرض نماذج Face المعانقة في كتالوج نموذج Azure التعلم الآلي من خلال HuggingFace السجل. يقوم Hugging Face بإنشاء هذا السجل وإدارته، ويتم توفيره ل Azure التعلم الآلي كسجل مجتمع. لا تتم استضافة أوزان النموذج على Azure. يتم تنزيل الأوزان مباشرة من Hugging Face hub إلى نقاط النهاية عبر الإنترنت في مساحة العمل الخاصة بك عند توزيع هذه النماذج. HuggingFaceيعمل السجل في AzureML ككتالوج للمساعدة في اكتشاف نماذج Hub HuggingFace ونشرها في Azure التعلم الآلي.

كيفية نشر النماذج للاستدلال الدفعي؟ نشر هذه النماذج إلى نقاط نهاية الدفعة للاستدلال الدفعي غير مدعوم حاليا.

هل يمكنني استخدام النماذج من HuggingFace السجل كإدخال إلى الوظائف بحيث يمكنني ضبط هذه النماذج باستخدام محولات SDK؟ نظرا إلى عدم تخزين أوزان النموذج في HuggingFace السجل، لا يمكنك الوصول إلى أوزان النموذج باستخدام هذه النماذج كمدخلات للوظائف.

كيف أعمل الحصول على الدعم إذا فشلت عمليات النشر الخاصة بي أو لم يعمل الاستدلال كما هو متوقع؟HuggingFace هو سجل مجتمعي ولا يغطيه دعم Microsoft. راجع سجلات النشر واكتشف ما إذا كانت المشكلة مرتبطة بالنظام الأساسي Azure التعلم الآلي أو خاصة بمحولات HuggingFace. اتصل بدعم Microsoft لأي مشكلات في النظام الأساسي. على سبيل المثال، عدم القدرة على إنشاء نقطة نهاية عبر الإنترنت أو المصادقة إلى واجهة برمجة تطبيقات REST لنقطة النهاية لا تعمل. بالنسبة إلى المشكلات المحددة للمحولات، استخدم منتدى HuggingFace أو دعم HuggingFace.

ما هو سجل المجتمع؟ سجلات المجتمع هي سجلات Azure التعلم الآلي التي أنشأها شركاء Azure التعلم الآلي الموثوق بهم ومتاحة لجميع مستخدمي Azure التعلم الآلي.

أين يمكن للمستخدمين إرسال الأسئلة والمخاوف المتعلقة بمعانقة الوجه داخل Azure التعلم الآلي؟ أرسل أسئلتك في منتدى مناقشة Azure التعلم الآلي.

التوفر الإقليمي

تتوفر مجموعة الوجوه المعانقة حاليا في جميع مناطق السحابة العامة فقط.