كيفية نشر نماذج لغة كبيرة باستخدام Azure الذكاء الاصطناعي Studio

هام

قد تتوفر بعض الميزات الموضحة في هذه المقالة فقط في المعاينة. يتم توفير هذه المعاينة دون اتفاقية على مستوى الخدمة، ولا نوصي بها لأحمال عمل الإنتاج. بعض الميزات ربما لا تكون مدعمة أو بها بعض القدرات المقيدة. لمزيد من المعلومات، راجع ⁧⁩شروط الاستخدام التكميلية لمعاينات Microsoft Azure⁧⁩.

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

في هذه المقالة، ستتعلم كيفية نشر نماذج لغة كبيرة في Azure الذكاء الاصطناعي Studio. يمكنك نشر النماذج من كتالوج النموذج أو من مشروعك. يمكنك أيضا نشر النماذج باستخدام Azure التعلم الآلي SDK. تتناول المقالة أيضا كيفية إجراء الاستدلال على النموذج المنشور.

نشر نموذج API بلا خادم والاستدلال عليه باستخدام التعليمات البرمجية

نشر نموذج

نماذج واجهة برمجة التطبيقات بلا خادم هي النماذج التي يمكنك نشرها باستخدام فوترة الدفع أولا بأول. ومن الأمثلة على ذلك Phi-3 و Llama-2 و Command R و Mistral Large والمزيد. بالنسبة لنماذج واجهة برمجة التطبيقات بلا خادم، تتم محاسبتك فقط على الاستدلال، إلا إذا اخترت ضبط النموذج.

الحصول على معرف النموذج

يمكنك نشر نماذج واجهة برمجة التطبيقات بلا خادم باستخدام Azure التعلم الآلي SDK، ولكن أولا، دعنا نستعرض كتالوج النموذج ونحصل على معرف النموذج الذي تحتاجه للتوزيع.

  1. سجل الدخول إلى الذكاء الاصطناعي Studio وانتقل إلى الصفحة الرئيسية .

  2. حدد Model catalog من الشريط الجانبي الأيسر.

  3. في عامل تصفية خيارات النشر، حدد Serverless API.

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

  4. حدد نموذجا.

  5. انسخ معرف النموذج من صفحة التفاصيل الخاصة بالنموذج الذي حددته. يبدو شيئا مثل هذا: azureml://registries/azureml-cohere/models/Cohere-command-r-plus/versions/3

تثبيت Azure التعلم الآلي SDK

بعد ذلك، تحتاج إلى تثبيت Azure التعلم الآلي SDK. تشغيل الأوامر التالية في الوحدة الطرفية:

pip install azure-ai-ml
pip install azure-identity

توزيع نموذج واجهة برمجة التطبيقات بلا خادم

أولا، تحتاج إلى المصادقة في Azure الذكاء الاصطناعي.

from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import MarketplaceSubscription, ServerlessEndpoint

# You can find your credential information in project settings.
client = MLClient(
    credential=DefaultAzureCredential(),
    subscription_id="your subscription name goes here",
    resource_group_name="your resource group name goes here",
    workspace_name="your project name goes here",
)

ثانيا، دعنا نشير إلى معرف النموذج الذي وجدته سابقا.

# You can find the model ID on the model catalog.
model_id="azureml://registries/azureml-meta/models/Llama-2-70b-chat/versions/18" 

تتطلب نماذج واجهة برمجة التطبيقات بلا خادم من موفري النماذج التابعين لجهة خارجية اشتراك Azure Marketplace لاستخدام النموذج. دعونا ننشئ اشتراكا في السوق.

إشعار

يمكنك تخطي الجزء إذا كنت تقوم بنشر نموذج واجهة برمجة تطبيقات بلا خادم من Microsoft، مثل Phi-3.

# You can customize the subscription name.
subscription_name="Meta-Llama-2-70b-chat" 

marketplace_subscription = MarketplaceSubscription(
    model_id=model_id,
    name=subscription_name,
)

marketplace_subscription = client.marketplace_subscriptions.begin_create_or_update(
    marketplace_subscription
).result()

وأخيرا، دعنا ننشئ نقطة نهاية بلا خادم.


endpoint_name="Meta-Llama-2-70b-chat-qwerty" # Your endpoint name must be unique

serverless_endpoint = ServerlessEndpoint(
    name=endpoint_name,
    model_id=model_id
)

created_endpoint = client.serverless_endpoints.begin_create_or_update(
    serverless_endpoint
).result()

الحصول على نقطة نهاية ومفاتيح واجهة برمجة التطبيقات بلا خادم

endpoint_keys = client.serverless_endpoints.get_keys(endpoint_name)
print(endpoint_keys.primary_key)
print(endpoint_keys.secondary_key)

الاستدلال على النشر

للاستدلال، تريد استخدام التعليمات البرمجية التي تلبي على وجه التحديد أنواع النماذج المختلفة وSDK التي تستخدمها. يمكنك العثور على نماذج التعليمات البرمجية في مستودع عينة Azure/azureml-examples.

نشر واستنتاج نشر حساب مدار باستخدام التعليمات البرمجية

نشر نموذج

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

الحصول على معرف النموذج

يمكنك نشر نماذج الحوسبة المدارة باستخدام Azure التعلم الآلي SDK، ولكن أولا، دعنا نستعرض كتالوج النموذج ونحصل على معرف النموذج الذي تحتاجه للتوزيع.

  1. سجل الدخول إلى الذكاء الاصطناعي Studio وانتقل إلى الصفحة الرئيسية .

  2. حدد Model catalog من الشريط الجانبي الأيسر.

  3. في عامل تصفية خيارات النشر، حدد الحوسبة المدارة.

    لقطة شاشة توضح كيفية التصفية حسب نماذج الحوسبة المدارة في الكتالوج.

  4. حدد نموذجا.

  5. انسخ معرف النموذج من صفحة التفاصيل الخاصة بالنموذج الذي حددته. يبدو شيئا مثل هذا: azureml://registries/azureml/models/deepset-roberta-base-squad2/versions/16

تثبيت Azure التعلم الآلي SDK

لهذه الخطوة، تحتاج إلى تثبيت Azure التعلم الآلي SDK.

pip install azure-ai-ml
pip install azure-identity

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

أولا، تحتاج إلى المصادقة في Azure الذكاء الاصطناعي.

from azure.ai.ml import MLClient
from azure.identity import InteractiveBrowserCredential

client = MLClient(
    credential=InteractiveBrowserCredential,
    subscription_id="your subscription name goes here",
    resource_group_name="your resource group name goes here",
    workspace_name="your project name goes here",
)

لننشر النموذج.

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

import time, sys
from azure.ai.ml.entities import (
    ManagedOnlineEndpoint,
    ManagedOnlineDeployment,
    ProbeSettings,
)

# Make the endpoint name unique
timestamp = int(time.time())
online_endpoint_name = "customize your endpoint name here" + str(timestamp)

# Create an online endpoint
endpoint = ManagedOnlineEndpoint(
    name=online_endpoint_name,
    auth_mode="key",
)
workspace_ml_client.begin_create_or_update(endpoint).wait()

إنشاء نشر. يمكنك العثور على معرف النموذج في كتالوج النموذج.

model_name = "azureml://registries/azureml/models/deepset-roberta-base-squad2/versions/16" 

demo_deployment = ManagedOnlineDeployment(
    name="demo",
    endpoint_name=online_endpoint_name,
    model=model_name,
    instance_type="Standard_DS3_v2",
    instance_count=2,
    liveness_probe=ProbeSettings(
        failure_threshold=30,
        success_threshold=1,
        timeout=2,
        period=10,
        initial_delay=1000,
    ),
    readiness_probe=ProbeSettings(
        failure_threshold=10,
        success_threshold=1,
        timeout=10,
        period=10,
        initial_delay=1000,
    ),
)
workspace_ml_client.online_deployments.begin_create_or_update(demo_deployment).wait()
endpoint.traffic = {"demo": 100}
workspace_ml_client.begin_create_or_update(endpoint).result()

الاستدلال على النشر

تحتاج إلى عينة من بيانات json لاختبار الاستدلال. إنشاء sample_score.json بالمثال التالي.

{
  "inputs": {
    "question": [
      "Where do I live?",
      "Where do I live?",
      "What's my name?",
      "Which name is also used to describe the Amazon rainforest in English?"
    ],
    "context": [
      "My name is Wolfgang and I live in Berlin",
      "My name is Sarah and I live in London",
      "My name is Clara and I live in Berkeley.",
      "The Amazon rainforest (Portuguese: Floresta Amaz\u00f4nica or Amaz\u00f4nia; Spanish: Selva Amaz\u00f3nica, Amazon\u00eda or usually Amazonia; French: For\u00eat amazonienne; Dutch: Amazoneregenwoud), also known in English as Amazonia or the Amazon Jungle, is a moist broadleaf forest that covers most of the Amazon basin of South America. This basin encompasses 7,000,000 square kilometres (2,700,000 sq mi), of which 5,500,000 square kilometres (2,100,000 sq mi) are covered by the rainforest. This region includes territory belonging to nine nations. The majority of the forest is contained within Brazil, with 60% of the rainforest, followed by Peru with 13%, Colombia with 10%, and with minor amounts in Venezuela, Ecuador, Bolivia, Guyana, Suriname and French Guiana. States or departments in four nations contain \"Amazonas\" in their names. The Amazon represents over half of the planet's remaining rainforests, and comprises the largest and most biodiverse tract of tropical rainforest in the world, with an estimated 390 billion individual trees divided into 16,000 species."
    ]
  }
}

دعونا نستنتج مع sample_score.json. قم بتغيير الموقع استنادا إلى المكان الذي حفظت فيه ملف json النموذجي.

scoring_file = "./sample_score.json" 
response = workspace_ml_client.online_endpoints.invoke(
    endpoint_name=online_endpoint_name,
    deployment_name="demo",
    request_file=scoring_file,
)
response_json = json.loads(response)
print(json.dumps(response_json, indent=2))

حذف نقطة نهاية النشر

لحذف عمليات النشر في الذكاء الاصطناعي Studio، حدد الزر حذف في اللوحة العلوية من صفحة تفاصيل التوزيع.

اعتبارات الحصة النسبية

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

الخطوات التالية