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

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

يدعم موزاييك الذكاء الاصطناعي Model Serving النماذج التالية:

  • أحدث نماذج الأساس المفتوحة التي توفرها واجهات برمجة تطبيقات نموذج المؤسسة. هذه النماذج هي بنيات نموذج أساسي منسقة تدعم الاستدلال الأمثل. تتوفر النماذج الأساسية، مثل Llama-2-70B-chat وBGE-Large و Mistral-7B للاستخدام الفوري مع تسعير الدفع لكل رمز مميز . يمكن نشر أحمال عمل الإنتاج، باستخدام النماذج الأساسية أو المضبطة، مع ضمانات الأداء باستخدام معدل النقل المقدم.
  • نماذج خارجية. هذه نماذج إنشاءية تتم استضافتها خارج Databricks. يمكن التحكم مركزيا في نقاط النهاية التي تخدم النماذج الخارجية ويمكن للعملاء وضع حدود للمعدل والتحكم في الوصول لهم. وتشمل الأمثلة نماذج الذكاء الاصطناعي التوليدية مثل، GPT-4 من OpenAI، وكلود Anthropic، وغيرها.

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

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

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

المتطلبات

import mlflow.deployments

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

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

يمكنك إنشاء نقطة نهاية تخدم متغيرات دقيقة من نماذج الأساس المتوفرة باستخدام واجهات برمجة التطبيقات لنموذج الأساس التي تم توفيرها معدل النقل. راجع إنشاء نقطة نهاية معدل النقل المتوفرة باستخدام واجهة برمجة تطبيقات REST.

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

للاستعلام عن نقاط النهاية هذه، راجع الاستعلام عن نماذج الأساس والنماذج الخارجية.

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

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

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

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

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

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

هام

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

ينشئ المثال التالي نقطة نهاية تخدم الإصدار الأول من النموذج الذي text-embedding-ada-002 يوفره OpenAI.

راجع POST /api/2.0/serving-endpoints لمعلمات تكوين نقطة النهاية.

{
  "name": "openai_endpoint",
  "config":
  {
    "served_entities":
    [
      {
        "name": "openai_embeddings",
        "external_model":{
          "name": "text-embedding-ada-002",
          "provider": "openai",
          "task": "llm/v1/embeddings",
          "openai_config":{
            "openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
          }
        }
      }
    ]
  },
  "rate_limits": [
    {
      "calls": 100,
      "key": "user",
      "renewal_period": "minute"
    }
  ],
  "tags": [
    {
      "key": "team",
      "value": "gen-ai"
    }
  ]
}

فيما يلي مثال على الاستجابة.

{
  "name": "openai_endpoint",
  "creator": "user@email.com",
  "creation_timestamp": 1699617587000,
  "last_updated_timestamp": 1699617587000,
  "state": {
    "ready": "READY"
  },
  "config": {
    "served_entities": [
      {
        "name": "openai_embeddings",
        "external_model": {
          "provider": "openai",
          "name": "text-embedding-ada-002",
          "task": "llm/v1/embeddings",
          "openai_config": {
            "openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
          }
        },
        "state": {
          "deployment": "DEPLOYMENT_READY",
          "deployment_state_message": ""
        },
        "creator": "user@email.com",
        "creation_timestamp": 1699617587000
      }
  ],
    "traffic_config": {
      "routes": [
        {
          "served_model_name": "openai_embeddings",
          "traffic_percentage": 100
        }
      ]
    },
    "config_version": 1
  },
  "tags": [
    {
      "key": "team",
      "value": "gen-ai"
    }
  ],
  "id": "69962db6b9db47c4a8a222d2ac79d7f8",
  "permission_level": "CAN_MANAGE",
  "route_optimized": false
}

MLflow Deployments SDK

ينشئ التالي نقطة نهاية للتضمينات باستخدام OpenAI text-embedding-ada-002.

بالنسبة لنقاط نهاية النموذج الخارجي، يجب توفير مفاتيح API لموفر النموذج الذي تريد استخدامه. راجع POST /api/2.0/serving-endpoints في واجهة برمجة تطبيقات REST للحصول على تفاصيل مخطط الطلب والاستجابة. للحصول على دليل خطوة بخطوة، راجع البرنامج التعليمي: إنشاء نقاط نهاية نموذج خارجي للاستعلام عن نماذج OpenAI.

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


from mlflow.deployments import get_deploy_client

client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
    name="chat",
    config={
        "served_entities": [
            {
                "name": "completions",
                "external_model": {
                    "name": "gpt-4",
                    "provider": "openai",
                    "task": "llm/v1/chat",
                    "openai_config": {
                        "openai_api_key": "{{secrets/scope/key}}",
                    },
                },
            }
        ],
    },
)
assert endpoint == {
    "name": "chat",
    "creator": "alice@company.com",
    "creation_timestamp": 0,
    "last_updated_timestamp": 0,
    "state": {...},
    "config": {...},
    "tags": [...],
    "id": "88fd3f75a0d24b0380ddc40484d7a31b",
}

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

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

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

external_model عندما يكون موجودا في تكوين نقطة نهاية، يمكن أن تحتوي قائمة الكيانات المقدمة على كائن served_entity واحد فقط. لا يمكن تحديث نقاط النهاية الموجودة مع external_model لم تعد تحتوي على external_model. إذا تم إنشاء نقطة النهاية بدون external_model، فلا يمكنك تحديثها لإضافة external_model.

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

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

{
  "name": "openai_endpoint",
  "served_entities":
  [
    {
      "name": "openai_chat",
      "external_model":{
        "name": "gpt-4",
        "provider": "openai",
        "task": "llm/v1/chat",
        "openai_config":{
          "openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
        }
      }
    }
  ]
}

MLflow Deployments SDK

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

from mlflow.deployments import get_deploy_client

client = get_deploy_client("databricks")
endpoint = client.update_endpoint(
    endpoint="chat",
    config={
        "served_entities": [
            {
                "name": "chats",
                "external_model": {
                    "name": "gpt-4",
                    "provider": "openai",
                    "task": "llm/v1/chat",
                    "openai_config": {
                        "openai_api_key": "{{secrets/scope/key}}",
                    },
                },
            }
        ],
    },
)
assert endpoint == {
    "name": "chats",
    "creator": "alice@company.com",
    "creation_timestamp": 0,
    "last_updated_timestamp": 0,
    "state": {...},
    "config": {...},
    "tags": [...],
    "id": "88fd3f75a0d24b0380ddc40484d7a31b",
  }

rate_limits = client.update_endpoint(
    endpoint="chat",
    config={
        "rate_limits": [
            {
                "key": "user",
                "renewal_period": "minute",
                "calls": 10,
            }
        ],
    },
)
assert rate_limits == {
    "rate_limits": [
        {
            "key": "user",
            "renewal_period": "minute",
            "calls": 10,
        }
    ],
}

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