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

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

المتطلبات

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

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

إنشاء نقطة نهاية وتعيين تقسيم نسبة استخدام الشبكة الأولي

يمكنك إنشاء نقاط نهاية خدمة النموذج باستخدام Databricks التعلم الآلي API. يمكن أن تخدم نقطة النهاية أي نموذج Python MLflow مسجل في تسجيل النموذج.

ينشئ مثال واجهة برمجة التطبيقات التالي نقطة نهاية واحدة مع نموذجين ويعين تقسيم نسبة استخدام الشبكة لنقطة النهاية بين هذه النماذج. يستضيف النموذج المقدم، current، الإصدار 1 من model-A ويحصل على 90٪ من نسبة استخدام الشبكة لنقطة النهاية، بينما يستضيف النموذج challengerالآخر المقدم، الإصدار 1 من model-B ويحصل على 10٪ من نسبة استخدام الشبكة لنقطة النهاية.

POST /api/2.0/serving-endpoints

{
   "name":"multi-model"
   "config":{
      "served_entities":[
         {
            "name":"current",
            "entity_name":"model-A",
            "entity_version":"1",
            "workload_size":"Small",
            "scale_to_zero_enabled":true
         },
         {
            "name":"challenger",
            "entity_name":"model-B",
            "entity_version":"1",
            "workload_size":"Small",
            "scale_to_zero_enabled":true
         }
      ],
      "traffic_config":{
         "routes":[
            {
               "served_model_name":"current",
               "traffic_percentage":"90"
            },
            {
               "served_model_name":"challenger",
               "traffic_percentage":"10"
            }
         ]
      }
   }
}

تحديث تقسيم نسبة استخدام الشبكة بين النماذج المقدمة

يمكنك أيضا تحديث تقسيم نسبة استخدام الشبكة بين النماذج المقدمة. يعين مثال واجهة برمجة التطبيقات التالي النموذج الذي تم تقديمه، current، للحصول على 50٪ من نسبة استخدام الشبكة لنقطة النهاية والنموذج الآخر، challenger، للحصول على 50٪ المتبقية من نسبة استخدام الشبكة.

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

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

{
   "served_entities":[
      {
         "name":"current",
         "entity_name":"model-A",
         "entity_version":"1",
         "workload_size":"Small",
         "scale_to_zero_enabled":true
      },
      {
         "name":"challenger",
         "entity_name":"model-B",
         "entity_version":"1",
         "workload_size":"Small",
         "scale_to_zero_enabled":true
      }
   ],
   "traffic_config":{
      "routes":[
         {
            "served_model_name":"current",
            "traffic_percentage":"50"
         },
         {
            "served_model_name":"challenger",
            "traffic_percentage":"50"
         }
      ]
   }
}

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

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

يمكنك القيام بذلك باستخدام:

POST /serving-endpoints/{endpoint-name}/served-models/{served-model-name}/invocations

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

في سياق multi-model مثال نقطة النهاية، إذا تم إرسال جميع الطلبات إلى /serving-endpoints/multi-model/served-models/challenger/invocations، فسيتم تقديم جميع الطلبات بواسطة challenger النموذج المقدم.

دفتر الملاحظات: حزم نماذج متعددة في نموذج واحد

لتوفير تكاليف الحساب، يمكنك أيضا حزم نماذج متعددة في نموذج واحد.

حزم نماذج MLflow متعددة في دفتر ملاحظات نموذج MLflow واحد

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