Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Creación de un punto de conexión multimodelo
Puede usar la SageMaker consola o la AWS SDK for Python (Boto) para crear un punto final multimodelo. Para crear un punto final CPU o uno GPU respaldado a través de la consola, consulte el procedimiento de la consola en las siguientes secciones. Si desea crear un punto final multimodelo con el AWS SDK for Python (Boto), utilice el GPU procedimiento CPU o de las siguientes secciones. Los flujos de GPU trabajo CPU y los flujos de trabajo son similares, pero presentan varias diferencias, como los requisitos del contenedor.
Temas
Creación de un punto de conexión multimodelo (consola)
Puede crear puntos de conexión multimodelo CPU y de varios modelos GPU respaldados a través de la consola. Utilice el siguiente procedimiento para crear un punto final multimodelo a través de la consola. SageMaker
Para crear un punto de conexión multimodelo (consola)
-
Abre la SageMaker consola de Amazon en https://console.aws.amazon.com/sagemaker/
. -
Elija Modelo y, a continuación, en el grupo Inferencia, elija Crear modelo.
-
En Nombre del modelo, escriba un nombre.
-
Para IAMel rol, elija o cree un IAM rol que tenga la
AmazonSageMakerFullAccess
IAM política adjunta. -
En la sección Definición de contenedor, en Proporcionar opciones de imagen de inferencia y artefactos de modelo, elija Utilizar modelos múltiples.
-
Para la imagen del contenedor de inferencia, introduce la ECR ruta de Amazon de la imagen de contenedor que desees.
Para GPU los modelos, debe utilizar un contenedor respaldado por el servidor de inferencia NVIDIA Triton. Para obtener una lista de imágenes de contenedores que funcionan con puntos finales GPU respaldados, consulte los contenedores de inferencia NVIDIA Triton (
solo compatibles con SM). Para obtener más información sobre el servidor de inferencia NVIDIA Triton, consulte Utilizar el servidor de inferencia Triton con. SageMaker -
Seleccione Crear modelo.
-
Implemente el punto de conexión multimodelo como lo haría con un punto de conexión de modelo único. Para obtener instrucciones, consulte Implemente el modelo en los servicios SageMaker de alojamiento.
Cree un punto final multimodelo utilizando el CPUs AWS SDK for Python (Boto3)
Utilice la siguiente sección para crear un punto final multimodelo respaldado por CPU instancias. Puede crear un punto final multimodelo con Amazon SageMaker create_model
create_endpoint_config
create_endpoint
Mode
, MultiModel
. También debe transferir el campo ModelDataUrl
que especifica el prefijo en Amazon S3 donde se encuentran los artefactos del modelo, en lugar de la ruta a un solo artefacto del modelo, como haría cuando se implementa un solo modelo.
Para ver un ejemplo de cuaderno que se utiliza SageMaker para implementar varios XGBoost modelos en un punto final, consulte el XGBoostejemplo de cuaderno de puntos finales multimodelo
El siguiente procedimiento describe los pasos clave utilizados en ese ejemplo para crear un dispositivo de punto final multimodelo CPU respaldado.
Para implementar el modelo (AWS SDKpara Python (Boto 3))
-
Obtenga un contenedor con una imagen que permita implementar puntos de conexión multimodelo. Para obtener una lista de los algoritmos integrados y contenedores de marcos que admiten puntos de conexión multimodelo, consulte Algoritmos, marcos e instancias compatibles para terminales multimodelo. Para este ejemplo, utilizamos el algoritmo integrado Algoritmo k vecinos más próximos (k-NN) (K-Nearest Neighbors). Llamamos a la función de SDK utilidad SageMaker Python
image_uris.retrieve()
para obtener la dirección de la imagen del algoritmo integrado K-Nearest Neighbors.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' } -
Obtenga un AWS SDK for Python (Boto3) SageMaker cliente y cree el modelo que usa este contenedor.
import boto3 sagemaker_client = boto3.client('sagemaker') response = sagemaker_client.create_model( ModelName =
'<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [container]) -
(Opcional) Si usa una canalización de inferencia en serie, obtenga los contenedores adicionales que se incluirán en la canalización e inclúyalos en el argumento
Containers
deCreateModel
: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] )nota
Solo puede usar un multi-model-enabled punto final en una canalización de inferencia en serie.
-
(Opcional) Si su caso de uso no aprovecha almacenamiento en caché del modelo, defina el valor del campo
ModelCacheSetting
del parámetroMultiModelConfig
enDisabled
e inclúyalo en el argumentoContainer
de la llamada acreate_model
. El valor predeterminado del campoModelCacheSetting
esEnabled
.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] ) -
Configure el punto de conexión multimodelo para el modelo. Recomendamos configurar los puntos de conexión con al menos dos instancias. Esto permite SageMaker proporcionar un conjunto de predicciones de alta disponibilidad en varias zonas de disponibilidad para los modelos.
response = sagemaker_client.create_endpoint_config( EndpointConfigName =
'<ENDPOINT_CONFIG_NAME>'
, ProductionVariants=[ { 'InstanceType': 'ml.m4.xlarge', 'InitialInstanceCount': 2, 'InitialVariantWeight': 1, 'ModelName':'<MODEL_NAME>'
, 'VariantName': 'AllTraffic' } ] )nota
Solo puede usar un multi-model-enabled punto final en una canalización de inferencia en serie.
-
Creación del punto de conexión multimodelo utilizando los parámetros
EndpointName
yEndpointConfigName
.response = sagemaker_client.create_endpoint( EndpointName =
'<ENDPOINT_NAME>'
, EndpointConfigName ='<ENDPOINT_CONFIG_NAME>'
)
Cree un punto final multimodelo utilizando el GPUs AWS SDK for Python (Boto3)
Utilice la siguiente sección para crear un punto final multimodelo GPU respaldado. Se crea un punto final multimodelo mediante Amazon y SageMaker create_model
create_endpoint_config
create_endpoint
Mode
, MultiModel
. También debe transferir el campo ModelDataUrl
que especifica el prefijo en Amazon S3 donde se encuentran los artefactos del modelo, en lugar de la ruta a un solo artefacto del modelo, como haría cuando se implementa un solo modelo. Para los puntos finales multimodelo GPU respaldados, también debe usar un contenedor con el servidor de inferencia NVIDIA Triton que esté optimizado para ejecutarse en instancias. GPU Para obtener una lista de las imágenes de contenedores que funcionan con puntos de enlace GPU respaldados, consulte los contenedores de inferencia NVIDIA Triton
Para ver un ejemplo de bloc de notas que muestra cómo crear un punto final multimodelo respaldado porGPUs, consulte Ejecutar varios modelos de aprendizaje profundo con puntos de enlace SageMaker multimodelo de GPUs Amazon
El siguiente procedimiento describe los pasos clave para crear un punto final multimodelo respaldado. GPU
Para implementar el modelo (AWS SDKpara Python (Boto 3))
-
Defina la imagen del contenedor. Para crear un punto final multimodelo GPU compatible con ResNet modelos, defina el contenedor para usar la imagen del servidor NVIDIATriton. Este contenedor admite puntos finales multimodelo y está optimizado para ejecutarse en instancias. GPU Llamamos a la función de SDK utilidad de SageMaker Python
image_uris.retrieve()
para obtener la dirección de la imagen. Por ejemplo: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"}, } -
Obtenga un AWS SDK for Python (Boto3) SageMaker cliente y cree el modelo que usa este contenedor.
import boto3 sagemaker_client = boto3.client('sagemaker') response = sagemaker_client.create_model( ModelName =
'<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [container]) -
(Opcional) Si usa una canalización de inferencia en serie, obtenga los contenedores adicionales que se incluirán en la canalización e inclúyalos en el argumento
Containers
deCreateModel
: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] )nota
Solo puede usar un multi-model-enabled punto final en una canalización de inferencia en serie.
-
(Opcional) Si su caso de uso no aprovecha almacenamiento en caché del modelo, defina el valor del campo
ModelCacheSetting
del parámetroMultiModelConfig
enDisabled
e inclúyalo en el argumentoContainer
de la llamada acreate_model
. El valor predeterminado del campoModelCacheSetting
esEnabled
.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] ) -
Configure el punto final multimodelo con instancias GPU respaldadas para el modelo. Recomendamos configurar los puntos de conexión con más de una instancia para permitir una alta disponibilidad y un mayor número de visitas a la memoria caché.
response = sagemaker_client.create_endpoint_config( EndpointConfigName =
'<ENDPOINT_CONFIG_NAME>'
, ProductionVariants=[ { 'InstanceType': 'ml.g4dn.4xlarge', 'InitialInstanceCount': 2, 'InitialVariantWeight': 1, 'ModelName':'<MODEL_NAME>'
, 'VariantName': 'AllTraffic' } ] ) -
Creación del punto de conexión multimodelo utilizando los parámetros
EndpointName
yEndpointConfigName
.response = sagemaker_client.create_endpoint( EndpointName =
'<ENDPOINT_NAME>'
, EndpointConfigName ='<ENDPOINT_CONFIG_NAME>'
)