Hosten Sie mehrere Modelle, die unterschiedliche Container hinter einem Endpunkt verwenden - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Hosten Sie mehrere Modelle, die unterschiedliche Container hinter einem Endpunkt verwenden

SageMaker Endpunkte mit mehreren Containern ermöglichen es Kunden, mehrere Container, die unterschiedliche Modelle oder Frameworks verwenden, auf einem einzigen SageMaker Endpunkt bereitzustellen. Die Container können nacheinander als Inferenz-Pipeline ausgeführt werden, oder auf jeden Container kann mithilfe eines direkten Aufrufs einzeln zugegriffen werden, um die Endpunktauslastung zu verbessern und die Kosten zu optimieren.

Hinweise zum sequenziellen Aufrufen der Container in einem Endpunkt mit mehreren Containern finden Sie unter Hostmodelle zusammen mit Vorverarbeitungslogik als serielle Inferenz-Pipeline hinter einem Endpunkt.

Hinweise zum Aufrufen eines bestimmten Containers in einem Endpunkt mit mehreren Containern finden Sie unter Verwenden Sie einen Endpunkt mit mehreren Containern und direktem Aufruf

Erstellen eines Multicontainer-Endpunkts (Boto 3)

Erstellen Sie einen Multi-Container-EndpunktCreateModel, indem Sie die CreateEndpoint APIs CreateEndpointConfig, und aufrufen, wie Sie andere Endpunkte erstellen würden. Sie können diese Container sequentiell als Inferenzpipeline ausführen oder jeden einzelnen Container mithilfe eines direkten Aufrufs ausführen. Multi-Container Endpunkte haben die folgenden Anforderungen, wenn Sie create_model aufrufen:

  • Verwenden Sie den Containers Parameter anstelle von PrimaryContainer und schließen Sie mehr als einen Container in den Containers Parameter ein.

  • Der ContainerHostname Parameter ist für jeden Container in einem Endpunkt mit mehreren Containern und direktem Aufruf erforderlich.

  • Setzen Sie den Mode Parameter des InferenceExecutionConfig Felds auf Direct für den direkten Aufruf jedes Containers oder Serial auf die Verwendung von Containern als Inferenz-Pipeline. Der Standardmodus ist Serial.

Anmerkung

Derzeit gibt es ein Limit von bis zu 15 Containern, die auf einem Endpunkt mit mehreren Containern unterstützt werden.

Im folgenden Beispiel wird ein Modell mit mehreren Containern für den direkten Aufruf erstellt.

  1. Erstellen Sie Containerelemente und InferenceExecutionConfig mit direktem Aufruf.

    container1 = { 'Image': '123456789012.dkr.ecr.us-east-1.amazonaws.com/myimage1:mytag', 'ContainerHostname': 'firstContainer' } container2 = { 'Image': '123456789012.dkr.ecr.us-east-1.amazonaws.com/myimage2:mytag', 'ContainerHostname': 'secondContainer' } inferenceExecutionConfig = {'Mode': 'Direct'}
  2. Erstellen Sie das Modell mit den Containerelementen und legen Sie das InferenceExecutionConfig Feld fest.

    import boto3 sm_client = boto3.Session().client('sagemaker') response = sm_client.create_model( ModelName = 'my-direct-mode-model-name', InferenceExecutionConfig = inferenceExecutionConfig, ExecutionRoleArn = role, Containers = [container1, container2] )

Um einen Endpunkt zu erstellen, würden Sie dann create_endpoint_config und create_endpoint aufrufen, als würden Sie jeden anderen Endpunkt erstellen.

Aktualisieren Sie einen Endpunkt mit mehreren Containern

Aktualisieren eines Endpunkts mit mehreren Containern, indem Sie die folgenden Schritte ausführen.

  1. Rufen Sie create_model auf, um ein neues Modell mit einem neuen Wert für den Mode Parameter im InferenceExecutionConfig Feld zu erstellen.

  2. Rufen Sie create_endpoint_config auf, um mithilfe des neuen Modells, das Sie im vorherigen Schritt erstellt haben, eine neue Endpunktkonfiguration mit einem anderen Namen zu erstellen.

  3. Rufen Sie update_endpoint auf, um den Endpunkt mit der neuen Endpunktkonfiguration zu aktualisieren, die Sie im vorherigen Schritt erstellt haben.

Löschen eines Endpunkts mit mehreren Containern

Um einen Endpunkt zu löschen, rufen Sie delete_endpoint auf und geben Sie den Namen des Endpunkts, den Sie löschen möchten, als EndpointName Parameter an.