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.
Erstellen eines Multimodell-Endpunkts
Sie können die SageMaker Konsole verwenden oder AWS SDK for Python (Boto) um einen Endpunkt mit mehreren Modellen zu erstellen. Informationen zum Erstellen eines Endpunkts CPU oder eines GPU gesicherten Endpunkts über die Konsole finden Sie im Konsolenverfahren in den folgenden Abschnitten. Wenn Sie einen Endpunkt mit mehreren Modellen erstellen möchten, verwenden Sie AWS SDK for Python (Boto), verwenden Sie entweder das GPU Verfahren CPU oder in den folgenden Abschnitten. Die GPU Workflows CPU und die Workflows sind ähnlich, weisen jedoch mehrere Unterschiede auf, z. B. in Bezug auf die Container-Anforderungen.
Themen
Erstellen eines Multimodell-Endpunkts (Konsole)
Über die Konsole können Sie CPU sowohl Endgeräte als auch GPU gesicherte Multimodell-Endpoints erstellen. Gehen Sie wie folgt vor, um über die Konsole einen Endpunkt mit mehreren Modellen zu erstellen. SageMaker
So erstellen Sie einen Multimodell-Endpunkt (Konsole)
-
Öffnen Sie die SageMaker Amazon-Konsole unter https://console.aws.amazon.com/sagemaker/
. -
Wählen Sie Model (Modell) und wählen Sie dann aus der Gruppe Inference (Inferenz) die Option Create model (Modell erstellen) aus.
-
Geben Sie für Model name (Modellname) einen Namen ein.
-
Wählen Sie IAMunter Rolle eine Rolle aus oder erstellen Sie eine IAM Rolle, der die
AmazonSageMakerFullAccess
IAM Richtlinie beigefügt ist. -
Wählen Sie im Abschnitt Containerdefinition für Modellartefakte und Optionen für Inference-Bilder bereitstellen die Option Mehrere Modelle verwenden aus.
-
Geben Sie für das Inference-Container-Image den ECR Amazon-Pfad für Ihr gewünschtes Container-Image ein.
Für GPU Modelle müssen Sie einen Container verwenden, der vom NVIDIA Triton Inference Server unterstützt wird. Eine Liste der Container-Images, die mit GPU unterstützten Endpunkten funktionieren, finden Sie in den NVIDIATriton Inference Containers (
nur SM-Unterstützung). Weitere Informationen zum Triton Inference Server finden Sie unter NVIDIA Triton Inference Server verwenden mit. SageMaker -
Wählen Sie Modell erstellen aus.
-
Stellen Sie Ihren Multimodell-Endpunkt genauso wie einen Einzelmodell-Endpunkt bereit. Detaillierte Anweisungen finden Sie unter Stellen Sie das Modell für SageMaker Hosting-Services bereit.
Erstellen Sie einen Endpunkt mit mehreren Modellen mithilfe von CPUs AWS SDK for Python (Boto3)
Verwenden Sie den folgenden Abschnitt, um einen durch CPU Instances gestützten Endpunkt mit mehreren Modellen zu erstellen. Sie erstellen einen Endpunkt mit mehreren Modellen mithilfe von Amazon SageMaker create_model
create_endpoint_config
create_endpoint
Mode
-Parameterwert übergeben, MultiModel
. Sie müssen auch das Feld ModelDataUrl
übergeben, das das Präfix in Amazon S3 angibt, in dem sich die Modellartefakte befinden, anstatt den Pfad zu einem Artefakt mit nur einem Modell, wie beim Bereitstellen eines einzelnen Modells.
Ein Beispielnotizbuch, mit dem mehrere XGBoost Modelle SageMaker auf einem Endpunkt bereitgestellt werden, finden Sie unter XGBoostBeispielnotizbuch für Endgeräte mit mehreren Modellen
Im folgenden Verfahren werden die wichtigsten Schritte beschrieben, die in diesem Beispiel zur Erstellung eines CPU gesicherten Endpunkts mit mehreren Modellen verwendet wurden.
Um das Modell bereitzustellen (AWS SDKfür Python (Boto 3)
-
Besorgen Sie sich einen Container mit einem Image, das die Bereitstellung von Multimodell-Endpunkten unterstützt. Eine Liste der integrierten Algorithmen und Framework-Container, die Multimodell-Endpunkte unterstützen, finden Sie unter Unterstützte Algorithmen, Frameworks und Instances. In diesem Beispiel verwenden wir den integrierten Algorithmus K-nearest neighbors (k-NN)-Algorithmus. Wir rufen die SageMaker SDKPython-Utility-Funktion
image_uris.retrieve()
auf, um die Adresse für das integrierte Algorithmus-Image von K-Nearest Neighbors abzurufen.import sagemaker region = sagemaker_session.boto_region_name image = sagemaker.image_uris.retrieve("knn",region=region) container = { 'Image': image, 'ModelDataUrl': 's3://
<BUCKET_NAME>
/<PATH_TO_ARTIFACTS>
', 'Mode': 'MultiModel' } -
Holen Sie sich ein AWS SDK for Python (Boto3) SageMaker Client und erstellen Sie das Modell, das diesen Container verwendet.
import boto3 sagemaker_client = boto3.client('sagemaker') response = sagemaker_client.create_model( ModelName =
'<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [container]) -
(Optional) Wenn Sie eine serielle Inferenz-Pipeline verwenden, rufen Sie die zusätzlichen Container ab, die in der Pipeline enthalten sein sollen, und fügen sie in das Argument
Containers
vonCreateModel
ein:preprocessor_container = { 'Image': '
<ACCOUNT_ID>
.dkr.ecr.<REGION_NAME>
.amazonaws.com/<PREPROCESSOR_IMAGE>
:<TAG>
' } multi_model_container = { 'Image': '<ACCOUNT_ID>
.dkr.ecr.<REGION_NAME>
.amazonaws.com/<IMAGE>
:<TAG>
', 'ModelDataUrl': 's3://<BUCKET_NAME>
/<PATH_TO_ARTIFACTS>
', 'Mode': 'MultiModel' } response = sagemaker_client.create_model( ModelName ='<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [preprocessor_container, multi_model_container] )Anmerkung
Sie können nur einen multi-model-enabled Endpunkt in einer seriellen Inferenzpipeline verwenden.
-
(Optional) Wenn Ihr Anwendungsfall vom Modell-Caching nicht profitiert, setzen Sie den Wert des Feldes
ModelCacheSetting
des ParametersMultiModelConfig
aufDisabled
und nehmen Sie ihn in das ArgumentContainer
des Aufrufs voncreate_model
auf. Der Wert für das FeldModelCacheSetting
ist standardmäßigEnabled
.container = { 'Image': image, 'ModelDataUrl': 's3://
<BUCKET_NAME>
/<PATH_TO_ARTIFACTS>
', 'Mode': 'MultiModel' 'MultiModelConfig': { // Default value is 'Enabled' 'ModelCacheSetting': 'Disabled' } } response = sagemaker_client.create_model( ModelName ='<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [container] ) -
Konfigurieren Sie den Multimodell-Endpunkt für das Modell. Wir empfehlen, Ihre Endpunkte mit mindestens zwei Instances zu konfigurieren. Dies ermöglicht SageMaker die Bereitstellung eines hochverfügbaren Satzes von Vorhersagen in mehreren Availability Zones für die Modelle.
response = sagemaker_client.create_endpoint_config( EndpointConfigName =
'<ENDPOINT_CONFIG_NAME>'
, ProductionVariants=[ { 'InstanceType': 'ml.m4.xlarge', 'InitialInstanceCount': 2, 'InitialVariantWeight': 1, 'ModelName':'<MODEL_NAME>'
, 'VariantName': 'AllTraffic' } ] )Anmerkung
Sie können nur einen multi-model-enabled Endpunkt in einer seriellen Inferenzpipeline verwenden.
-
Erstellen Sie den Multimodell-Endpunkt mit den Parametern
EndpointName
undEndpointConfigName
.response = sagemaker_client.create_endpoint( EndpointName =
'<ENDPOINT_NAME>'
, EndpointConfigName ='<ENDPOINT_CONFIG_NAME>'
)
Erstellen Sie einen Endpunkt mit mehreren Modellen mithilfe von GPUs AWS SDK for Python (Boto3)
Verwenden Sie den folgenden Abschnitt, um einen GPU gesicherten Endpunkt mit mehreren Modellen zu erstellen. Sie erstellen einen Endpunkt mit mehreren Modellen mithilfe von Amazon SageMaker create_model
create_endpoint_config
create_endpoint
Mode
-Parameterwert übergeben, MultiModel
. Sie müssen auch das Feld ModelDataUrl
übergeben, das das Präfix in Amazon S3 angibt, in dem sich die Modellartefakte befinden, anstatt den Pfad zu einem Artefakt mit nur einem Modell, wie beim Bereitstellen eines einzelnen Modells. Für GPU gesicherte Endpunkte mit mehreren Modellen müssen Sie außerdem einen Container mit dem NVIDIA Triton Inference Server verwenden, der für die Ausführung auf Instances optimiert ist. GPU Eine Liste der Container-Images, die mit GPU unterstützten Endpunkten funktionieren, finden Sie in den NVIDIATriton Inference
Ein Beispiel-Notizbuch, das demonstriert, wie Sie einen Multimodell-Endpoint erstellen, der von unterstützt wirdGPUs, finden Sie unter Ausführen mehrerer Deep-Learning-Modelle auf GPUs Amazon SageMaker Multi-Model-Endpoints
Das folgende Verfahren beschreibt die wichtigsten Schritte zur Erstellung eines gesicherten Endpunkts mit mehreren Modellen. GPU
Um das Modell bereitzustellen (AWS SDKfür Python (Boto 3)
-
Definieren Sie das Container-Image. Um einen Endpunkt mit mehreren Modellen mit GPU Unterstützung für ResNet Modelle zu erstellen, definieren Sie den Container so, dass er das NVIDIATriton Server-Image verwendet. Dieser Container unterstützt Endpunkte mit mehreren Modellen und ist für die Ausführung auf Instanzen optimiert. GPU Wir rufen die SageMaker SDKPython-Utility-Funktion
image_uris.retrieve()
auf, um die Adresse für das Bild abzurufen. Beispielsweise:import sagemaker region = sagemaker_session.boto_region_name // Find the sagemaker-tritonserver image at // https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-triton/resnet50/triton_resnet50.ipynb // Find available tags at https://github.com/aws/deep-learning-containers/blob/master/available_images.md#nvidia-triton-inference-containers-sm-support-only image = "
<ACCOUNT_ID>
.dkr.ecr.<REGION_NAME>
.amazonaws.com/sagemaker-tritonserver:<TAG>
".format( account_id=account_id_map[region], region=region ) container = { 'Image': image, 'ModelDataUrl': 's3://<BUCKET_NAME>
/<PATH_TO_ARTIFACTS>
', 'Mode': 'MultiModel', "Environment": {"SAGEMAKER_TRITON_DEFAULT_MODEL_NAME": "resnet"}, } -
Holen Sie sich eine AWS SDK for Python (Boto3) SageMaker Client und erstellen Sie das Modell, das diesen Container verwendet.
import boto3 sagemaker_client = boto3.client('sagemaker') response = sagemaker_client.create_model( ModelName =
'<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [container]) -
(Optional) Wenn Sie eine serielle Inferenz-Pipeline verwenden, rufen Sie die zusätzlichen Container ab, die in der Pipeline enthalten sein sollen, und fügen sie in das Argument
Containers
vonCreateModel
ein:preprocessor_container = { 'Image': '
<ACCOUNT_ID>
.dkr.ecr.<REGION_NAME>
.amazonaws.com/<PREPROCESSOR_IMAGE>
:<TAG>
' } multi_model_container = { 'Image': '<ACCOUNT_ID>
.dkr.ecr.<REGION_NAME>
.amazonaws.com/<IMAGE>
:<TAG>
', 'ModelDataUrl': 's3://<BUCKET_NAME>
/<PATH_TO_ARTIFACTS>
', 'Mode': 'MultiModel' } response = sagemaker_client.create_model( ModelName ='<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [preprocessor_container, multi_model_container] )Anmerkung
Sie können nur einen multi-model-enabled Endpunkt in einer seriellen Inferenzpipeline verwenden.
-
(Optional) Wenn Ihr Anwendungsfall vom Modell-Caching nicht profitiert, setzen Sie den Wert des Feldes
ModelCacheSetting
des ParametersMultiModelConfig
aufDisabled
und nehmen Sie ihn in das ArgumentContainer
des Aufrufs voncreate_model
auf. Der Wert für das FeldModelCacheSetting
ist standardmäßigEnabled
.container = { 'Image': image, 'ModelDataUrl': 's3://
<BUCKET_NAME>
/<PATH_TO_ARTIFACTS>
', 'Mode': 'MultiModel' 'MultiModelConfig': { // Default value is 'Enabled' 'ModelCacheSetting': 'Disabled' } } response = sagemaker_client.create_model( ModelName ='<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [container] ) -
Konfigurieren Sie den Endpunkt mit mehreren Modellen mit GPU unterstützten Instanzen für das Modell. Wir empfehlen, Ihre Endpunkte mit mehr als einer Instance zu konfigurieren, um eine hohe Verfügbarkeit und höhere Cache-Zugriffe zu gewährleisten.
response = sagemaker_client.create_endpoint_config( EndpointConfigName =
'<ENDPOINT_CONFIG_NAME>'
, ProductionVariants=[ { 'InstanceType': 'ml.g4dn.4xlarge', 'InitialInstanceCount': 2, 'InitialVariantWeight': 1, 'ModelName':'<MODEL_NAME>'
, 'VariantName': 'AllTraffic' } ] ) -
Erstellen Sie den Multimodell-Endpunkt mit den Parametern
EndpointName
undEndpointConfigName
.response = sagemaker_client.create_endpoint( EndpointName =
'<ENDPOINT_NAME>'
, EndpointConfigName ='<ENDPOINT_CONFIG_NAME>'
)