اقرأ باللغة الإنجليزية

مشاركة عبر


إنشاء نقاط نهاية خدمة نموذج مخصص

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

توفر خدمة النموذج الخيارات التالية لخدمة إنشاء نقطة النهاية:

  • واجهة مستخدم الخدمة
  • واجهة برمجة تطبيقات REST
  • MLflow Deployments SDK

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

المتطلبات

  • يجب أن تكون مساحة العمل الخاصة بك في منطقة مدعومة.
  • إذا كنت تستخدم مكتبات أو مكتبات مخصصة من خادم النسخ المتطابق الخاص مع النموذج الخاص بك، فشاهد استخدام مكتبات Python المخصصة مع خدمة النموذج قبل إنشاء نقطة نهاية النموذج.
  • لإنشاء نقاط نهاية باستخدام MLflow Deployments SDK، يجب تثبيت عميل نشر MLflow. لتثبيته، قم بتشغيل:
Python
import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")

عنصر تحكم الوصول

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

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

إنشاء نقطة نهاية

خدمة واجهة المستخدم

يمكنك إنشاء نقطة نهاية للنموذج الذي يخدم مع واجهة مستخدم الخدمة .

  1. انقر فوق تقديم في الشريط الجانبي لعرض واجهة مستخدم العرض.

  2. انقر فوق Create serving endpoint.

    جزء خدمة النموذج في واجهة مستخدم Databricks

بالنسبة للنماذج المسجلة في سجل نموذج مساحة العمل أو النماذج في كتالوج Unity:

  1. في حقل الاسم ، أدخل اسما لنقطة النهاية.

  2. في قسم الكيانات التي تم تقديمها

    1. انقر فوق الحقل Entity لفتح نموذج Select served entity .
    2. حدد نوع النموذج الذي تريد تقديمه. يتم تحديث النموذج ديناميكيا استنادا إلى اختيارك.
    3. حدد النموذج وإصدار النموذج الذي تريد تقديمه.
    4. حدد النسبة المئوية لنسبة استخدام الشبكة لتوجيهها إلى النموذج الذي تم تقديمه.
    5. حدد حجم الحساب الذي تريد استخدامه. يمكنك استخدام حسابات وحدة المعالجة المركزية أو وحدة معالجة الرسومات لأحمال العمل الخاصة بك. راجع أنواع حمل عمل وحدة معالجة الرسومات للحصول على مزيد من المعلومات حول حسابات وحدة معالجة الرسومات المتوفرة.
    6. حدد حجم الحساب الذي تريد استخدامه. يمكنك استخدام حسابات وحدة المعالجة المركزية أو وحدة معالجة الرسومات لأحمال العمل الخاصة بك. راجع أنواع حمل عمل وحدة معالجة الرسومات للحصول على مزيد من المعلومات حول حسابات وحدة معالجة الرسومات المتوفرة.
    7. ضمن Compute Scale-out، حدد حجم مقياس الحساب الذي يتوافق مع عدد الطلبات التي يمكن أن يعالجها هذا النموذج المقدم في نفس الوقت. يجب أن يكون هذا الرقم مساويا تقريبا لوقت تشغيل نموذج QPS x.
      1. الأحجام المتوفرة صغيرة للطلبات من 0 إلى 4 وطلبات متوسطة من 8 إلى 16 وطلبات كبيرة ل 16-64 طلبا.
    8. حدد ما إذا كان يجب تغيير حجم نقطة النهاية إلى الصفر عندما لا تكون قيد الاستخدام.
  3. انقر فوق Create. تظهر صفحة نقاط نهاية العرض مع عرض حالة نقطة نهاية العرض على أنها غير جاهزة.

    إنشاء نقطة نهاية خدمة نموذج

واجهة برمجة تطبيقات REST

يمكنك إنشاء نقاط نهاية باستخدام واجهة برمجة تطبيقات REST. راجع POST /api/2.0/serving-endpoints لمعلمات تكوين نقطة النهاية.

ينشئ المثال التالي نقطة نهاية تخدم الإصدار الأول من ads1 النموذج المسجل في سجل النموذج. لتحديد نموذج من كتالوج Unity، قم بتوفير اسم النموذج الكامل بما في ذلك الكتالوج الأصلي والمخطط مثل . catalog.schema.example-model

Bash

POST /api/2.0/serving-endpoints

{
  "name": "workspace-model-endpoint",
  "config":
  {
    "served_entities": [
      {
        "name": "ads-entity"
        "entity_name": "my-ads-model",
        "entity_version": "3",
        "workload_size": "Small",
        "scale_to_zero_enabled": true
      },
      {
        "entity_name": "my-ads-model",
        "entity_version": "4",
        "workload_size": "Small",
        "scale_to_zero_enabled": true
      }
    ],
    "traffic_config":
    {
      "routes": [
        {
          "served_model_name": "my-ads-model-3",
          "traffic_percentage": 100
        },
        {
          "served_model_name": "my-ads-model-4",
          "traffic_percentage": 20
        }
      ]
    }
  },
  "tags": [
    {
      "key": "team",
      "value": "data science"
    }
  ]
}

فيما يلي مثال على الاستجابة. حالة نقطة config_update النهاية هي NOT_UPDATING والنموذج الذي يتم تقديمه في READY حالة.

JSON
{
  "name": "workspace-model-endpoint",
  "creator": "user@email.com",
  "creation_timestamp": 1700089637000,
  "last_updated_timestamp": 1700089760000,
  "state": {
    "ready": "READY",
    "config_update": "NOT_UPDATING"
  },
  "config": {
    "served_entities": [
      {
        "name": "ads-entity",
        "entity_name": "my-ads-model-3",
        "entity_version": "3",
        "workload_size": "Small",
        "scale_to_zero_enabled": true,
        "workload_type": "CPU",
      "state": {
        "deployment": "DEPLOYMENT_READY",
        "deployment_state_message": ""
      },
      "creator": "user@email.com",
      "creation_timestamp": 1700089760000
      }
    ],
    "traffic_config": {
      "routes": [
        {
          "served_model_name": "my-ads-model-3",
          "traffic_percentage": 100
        }
      ]
    },
    "config_version": 1
  },
  "tags": [
    {
      "key": "team",
      "value": "data science"
    }
  ],
  "id": "e3bd3e471d6045d6b75f384279e4b6ab",
  "permission_level": "CAN_MANAGE",
  "route_optimized": false
}

MLflow Deployments SDK

توفر عمليات نشر MLflow واجهة برمجة تطبيقات لإنشاء مهام وتحديثها وحذفها. تقبل واجهات برمجة التطبيقات لهذه المهام نفس المعلمات مثل واجهة برمجة تطبيقات REST لخدمة نقاط النهاية. راجع POST /api/2.0/serving-endpoints لمعلمات تكوين نقطة النهاية.

Python

from mlflow.deployments import get_deploy_client

client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
    name="workspace-model-endpoint",
    config={
        "served_entities": [
            {
                "name": "ads-entity"
                "entity_name": "my-ads-model",
                "entity_version": "3",
                "workload_size": "Small",
                "scale_to_zero_enabled": true
            }
        ],
        "traffic_config": {
            "routes": [
                {
                    "served_model_name": "my-ads-model-3",
                    "traffic_percentage": 100
                }
            ]
        }
    }
)

يمكنك أيضًا:

أنواع حمل عمل GPU

توزيع GPU متوافق مع إصدارات الحزمة التالية:

  • Pytorch 1.13.0 - 2.0.1
  • TensorFlow 2.5.0 - 2.13.0
  • MLflow 2.4.0 وما فوق

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

Bash
{
  "served_entities": [{
    "name": "ads1",
    "entity_version": "2",
    "workload_type": "GPU_LARGE",
    "workload_size": "Small",
    "scale_to_zero_enabled": false,
  }]
}

يلخص الجدول التالي أنواع أحمال عمل GPU المتوفرة المدعومة.

نوع حمل عمل GPU مثيل وحدة معالجة الرسومات ذاكرة وحدة معالجة الرسومات
GPU_SMALL 1xT4 16 غيغابايت
GPU_LARGE 1xA100 80 غيغابايت
GPU_LARGE_2 2xA100 160 غيغابايت

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

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

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

خدمة واجهة المستخدم

بعد تمكين نقطة نهاية نموذج، حدد تحرير نقطة النهاية لتعديل تكوين الحساب لنقطة النهاية.

يمكنك القيام بما يلي:

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

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

واجهة برمجة تطبيقات REST

فيما يلي مثال على تحديث تكوين نقطة النهاية باستخدام واجهة برمجة تطبيقات REST. راجع PUT /api/2.0/serving-endpoints/{name}/config.

Bash

PUT /api/2.0/serving-endpoints/{name}/config

{
  "name": "unity-catalog-model-endpoint",
  "config":
  {
    "served_entities": [
      {
        "entity_name": "catalog.schema.my-ads-model",
        "entity_version": "5",
        "workload_size": "Small",
        "scale_to_zero_enabled": true
      }
    ],
    "traffic_config":
    {
      "routes": [
        {
          "served_model_name": "my-ads-model-5",
          "traffic_percentage": 100
        }
      ]
    }
  }
}

MLflow Deployments SDK

تستخدم MLflow Deployments SDK نفس المعلمات مثل واجهة برمجة تطبيقات REST، راجع PUT /api/2.0/serving-endpoints/{name}/config للحصول على تفاصيل مخطط الطلب والاستجابة.

يستخدم نموذج التعليمات البرمجية التالي نموذجا من سجل نموذج كتالوج Unity:

Python
import mlflow
from mlflow.deployments import get_deploy_client

mlflow.set_registry_uri("databricks-uc")
client = get_deploy_client("databricks")

endpoint = client.create_endpoint(
  name=f"{endpointname}",
  config={
    "served_entities": [
        {
            "entity_name": f"{catalog}.{schema}.{model_name}",
            "entity_version": "1",
            "workload_size": "Small",
            "scale_to_zero_enabled": True
        }
    ],
    "traffic_config": {
        "routes": [
            {
                "served_model_name": f"{model_name}-1",
                "traffic_percentage": 100
            }
        ]
    }
  }
)

تسجيل نقطة نهاية نموذج

لتسجيل نموذجك، أرسل طلبات إلى نقطة نهاية خدمة النموذج.

الموارد الإضافية

أمثلة دفتر الملاحظات

تتضمن دفاتر الملاحظات التالية نماذج مسجلة مختلفة في Databricks يمكنك استخدامها لبدء العمل باستخدام نقاط نهاية خدمة النموذج.

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

تدريب وتسجيل نموذج scikit-learn لدفتر ملاحظات تقديم النموذج

الحصول على دفتر الملاحظات

تدريب وتسجيل نموذج HuggingFace لدفتر ملاحظات تقديم النموذج

الحصول على دفتر الملاحظات