مشاركة عبر


ما هي خدمة ميزة Databricks؟

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

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

متى تستخدم خدمة الميزة

لماذا تستخدم خدمة الميزات؟

توفر خدمة ميزة Databricks واجهة واحدة تخدم ميزات مجسدة مسبقا عند الطلب. ويتضمن أيضا المزايا التالية:

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

المتطلبات

  • Databricks Runtime 14.2 ML أو أعلى.
  • لاستخدام واجهة برمجة تطبيقات Python، تتطلب خدمة الميزات databricks-feature-engineering الإصدار 0.1.2 أو أعلى، المضمن في Databricks Runtime 14.2 ML. بالنسبة لإصدارات Databricks Runtime ML السابقة، قم بتثبيت الإصدار المطلوب يدويا باستخدام %pip install databricks-feature-engineering>=0.1.2. إذا كنت تستخدم دفتر ملاحظات Databricks، فيجب عليك بعد ذلك إعادة تشغيل نواة Python عن طريق تشغيل هذا الأمر في خلية جديدة: dbutils.library.restartPython().
  • لاستخدام Databricks SDK، تتطلب خدمة الميزات databricks-sdk الإصدار 0.18.0 أو أعلى. لتثبيت الإصدار المطلوب يدويا، استخدم %pip install databricks-sdk>=0.18.0. إذا كنت تستخدم دفتر ملاحظات Databricks، فيجب عليك بعد ذلك إعادة تشغيل نواة Python عن طريق تشغيل هذا الأمر في خلية جديدة: dbutils.library.restartPython().

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

  • واجهة مستخدم Databricks
  • واجهة برمجة تطبيقات REST
  • Python API
  • Databricks SDK

لاستخدام REST API أو MLflow Deployments SDK، يجب أن يكون لديك رمز مميز لواجهة برمجة تطبيقات Databricks.

هام

كأفضل ممارسة أمان لسيناريوهات الإنتاج، توصي Databricks باستخدام رموز OAuth المميزة من جهاز إلى جهاز للمصادقة أثناء الإنتاج.

للاختبار والتطوير، توصي Databricks باستخدام رمز وصول شخصي ينتمي إلى كيانات الخدمة بدلا من مستخدمي مساحة العمل. لإنشاء رموز مميزة لكيانات الخدمة، راجع إدارة الرموز المميزة لكيان الخدمة.

المصادقة لخدمة الميزات

للحصول على معلومات حول المصادقة، راجع مصادقة الوصول إلى موارد Azure Databricks.

إنشاء FeatureSpec

A FeatureSpec هي مجموعة محددة من الميزات والوظائف من قبل المستخدم. يمكنك الجمع بين الميزات والوظائف في FeatureSpec. FeatureSpecs يتم تخزينها وإدارتها بواسطة كتالوج Unity وتظهر في مستكشف الكتالوج.

يجب نشر الجداول المحددة في FeatureSpec إلى جدول عبر الإنترنت أو مخزن خارجي عبر الإنترنت. راجع استخدام الجداول عبر الإنترنت لخدمة الميزات في الوقت الحقيقي أو متاجر الجهات الخارجية عبر الإنترنت.

يجب استخدام الحزمة databricks-feature-engineering لإنشاء FeatureSpec.

from databricks.feature_engineering import (
  FeatureFunction,
  FeatureLookup,
  FeatureEngineeringClient,
)

fe = FeatureEngineeringClient()

features = [
  # Lookup column `average_yearly_spend` and `country` from a table in UC by the input `user_id`.
  FeatureLookup(
    table_name="main.default.customer_profile",
    lookup_key="user_id",
    feature_names=["average_yearly_spend", "country"]
  ),
  # Calculate a new feature called `spending_gap` - the difference between `ytd_spend` and `average_yearly_spend`.
  FeatureFunction(
    udf_name="main.default.difference",
    output_name="spending_gap",
    # Bind the function parameter with input from other features or from request.
    # The function calculates a - b.
    input_bindings={"a": "ytd_spend", "b": "average_yearly_spend"},
  ),
]

# Create a `FeatureSpec` with the features defined above.
# The `FeatureSpec` can be accessed in Unity Catalog as a function.
fe.create_feature_spec(
  name="main.default.customer_features",
  features=features,
)

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

FeatureSpec يعرف نقطة النهاية. لمزيد من المعلومات، راجع إنشاء نموذج مخصص يخدم نقاط النهاية أو وثائق واجهة برمجة تطبيقات Python أو وثائق Databricks SDK للحصول على التفاصيل.

إشعار

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

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

curl -X POST -u token:$DATABRICKS_API_TOKEN ${WORKSPACE_URL}/api/2.0/serving-endpoints \
    -H 'Content-Type: application/json' \
    -d '"name": "customer-features",
   "config": {
       "served_entities": [
           {
               "entity_name": "main.default.customer_features",
               "workload_size": "Small",
               "scale_to_zero_enabled": true
           }
       ]
   }'

Databricks SDK - Python

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import EndpointCoreConfigInput, ServedEntityInput

workspace = WorkspaceClient()

# Create endpoint
workspace.serving_endpoints.create(
  name="my-serving-endpoint",
  config = EndpointCoreConfigInput(
    served_entities=[
    ServedEntityInput(
        entity_name="main.default.customer_features",
        scale_to_zero_enabled=True,
        workload_size="Small"
      )
    ]
  )
)

Python API

from databricks.feature_engineering.entities.feature_serving_endpoint import (
  ServedEntity,
  EndpointCoreConfig,
)

fe.create_feature_serving_endpoint(
  name="customer-features",
    config=EndpointCoreConfig(
    served_entities=ServedEntity(
      feature_spec_name="main.default.customer_features",
             workload_size="Small",
             scale_to_zero_enabled=True,
             instance_profile_arn=None,
    )
  )
)

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

الحصول على نقطة نهاية

يمكنك استخدام Databricks SDK أو واجهة برمجة تطبيقات Python للحصول على بيانات التعريف وحالة نقطة النهاية.

Databricks SDK - Python

endpoint = workspace.serving_endpoints.get(name="customer-features")
# print(endpoint)

Python API

endpoint = fe.get_feature_serving_endpoint(name="customer-features")
# print(endpoint)

الحصول على مخطط نقطة نهاية

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

ACCESS_TOKEN=<token>
ENDPOINT_NAME=<endpoint name>

curl "https://example.databricks.com/api/2.0/serving-endpoints/$ENDPOINT_NAME/openapi" -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json"

الاستعلام عن نقطة نهاية

يمكنك استخدام واجهة برمجة تطبيقات REST أو MLflow Deployments SDK أو واجهة مستخدم تقديم للاستعلام عن نقطة نهاية.

توضح التعليمات البرمجية التالية كيفية إعداد بيانات الاعتماد وإنشاء العميل عند استخدام MLflow Deployments SDK.

  # Set up credentials
  export DATABRICKS_HOST=...
  export DATABRICKS_TOKEN=...
  # Set up the client
  import mlflow.deployments

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

إشعار

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

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

يتضمن هذا القسم أمثلة للاستعلام عن نقطة نهاية باستخدام REST API أو MLflow Deployments SDK.

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

curl -X POST -u token:$DATABRICKS_API_TOKEN $ENDPOINT_INVOCATION_URL \
  -H 'Content-Type: application/json' \
  -d '{"dataframe_records": [
          {"user_id": 1, "ytd_spend": 598},
          {"user_id": 2, "ytd_spend": 280}
      ]}'

MLflow Deployments SDK

هام

يستخدم predict() المثال التالي واجهة برمجة التطبيقات من MLflow Deployments SDK. واجهة برمجة التطبيقات هذه تجريبية وقد يتغير تعريف واجهة برمجة التطبيقات.

import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")
response = client.predict(
    endpoint="test-feature-endpoint",
    inputs={
        "dataframe_records": [
            {"user_id": 1, "ytd_spend": 598},
            {"user_id": 2, "ytd_spend": 280},
        ]
    },
)

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

يمكنك الاستعلام عن نقطة نهاية خدمة مباشرة من واجهة مستخدم تقديم الخدمة. تتضمن واجهة المستخدم أمثلة التعليمات البرمجية التي تم إنشاؤها والتي يمكنك استخدامها للاستعلام عن نقطة النهاية.

  1. في الشريط الجانبي الأيسر لمساحة عمل Azure Databricks، انقر فوق تقديم.

  2. انقر فوق نقطة النهاية التي تريد الاستعلام فيها.

  3. في الزاوية العلوية اليسرى من الشاشة، انقر فوق نقطة نهاية الاستعلام.

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

  4. في مربع الطلب ، اكتب نص الطلب بتنسيق JSON.

  5. انقر فوق إرسال طلب.

// Example of a request body.
{
  "dataframe_records": [
    {"user_id": 1, "ytd_spend": 598},
    {"user_id": 2, "ytd_spend": 280}
  ]
}

يتضمن مربع حوار نقطة نهاية الاستعلام التعليمات البرمجية المثال الذي تم إنشاؤه في curl وPython وSQL. انقر فوق علامات التبويب لعرض مثال التعليمات البرمجية ونسخه.

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

لنسخ التعليمات البرمجية، انقر فوق أيقونة النسخ في الزاوية العلوية اليسرى من مربع النص.

الزر

تحديث نقطة نهاية

يمكنك تحديث نقطة نهاية باستخدام واجهة برمجة تطبيقات REST أو Databricks SDK أو واجهة مستخدم العرض.

تحديث نقطة نهاية باستخدام واجهات برمجة التطبيقات

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

curl -X PUT -u token:$DATABRICKS_API_TOKEN ${WORKSPACE_URL}/api/2.0/serving-endpoints/<endpoint_name>/config \
  -H 'Content-Type: application/json' \
  -d '"served_entities": [
        {
            "name": "customer-features",
            "entity_name": "main.default.customer_features_new",
            "workload_size": "Small",
            "scale_to_zero_enabled": True
        }
    ]'

Databricks SDK - Python

workspace.serving_endpoints.update_config(
  name="my-serving-endpoint",
  served_entities=[
    ServedEntityInput(
      entity_name="main.default.customer_features",
      scale_to_zero_enabled=True,
      workload_size="Small"
    )
  ]
)

تحديث نقطة نهاية باستخدام واجهة المستخدم

اتبع هذه الخطوات لاستخدام واجهة مستخدم الخدمة:

  1. في الشريط الجانبي الأيسر لمساحة عمل Azure Databricks، انقر فوق تقديم.
  2. في الجدول، انقر فوق اسم نقطة النهاية التي تريد تحديثها. تظهر شاشة نقطة النهاية.
  3. في الزاوية العلوية اليسرى من الشاشة، انقر فوق تحرير نقطة النهاية.
  4. في مربع الحوار تحرير نقطة نهاية الخدمة، قم بتحرير إعدادات نقطة النهاية حسب الحاجة.
  5. انقر فوق تحديث لحفظ التغييرات.

تحديث نقطة نهاية

حذف نقطة نهاية

تحذير

لا يمكن التراجع عن هذا الإجراء.

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

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

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

curl -X DELETE -u token:$DATABRICKS_API_TOKEN ${WORKSPACE_URL}/api/2.0/serving-endpoints/<endpoint_name>

Databricks SDK - Python

workspace.serving_endpoints.delete(name="customer-features")

Python API

fe.delete_feature_serving_endpoint(name="customer-features")

حذف نقطة نهاية باستخدام واجهة المستخدم

اتبع هذه الخطوات لحذف نقطة نهاية باستخدام واجهة مستخدم العرض:

  1. في الشريط الجانبي الأيسر لمساحة عمل Azure Databricks، انقر فوق تقديم.
  2. في الجدول، انقر فوق اسم نقطة النهاية التي تريد حذفها. تظهر شاشة نقطة النهاية.
  3. في الزاوية العلوية اليسرى من الشاشة، انقر فوق قائمة قائمة كباب الكباب وحدد حذف.

حذف نقطة نهاية

مراقبة صحة نقطة النهاية

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

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

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

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

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

مثال لدفتر الملاحظات الخاص بخدمة الميزة مع جداول عبر الإنترنت

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