Implemente modelos para inferencias en tiempo real - Amazon SageMaker

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.

Implemente modelos para inferencias en tiempo real

importante

Las políticas de IAM personalizadas que permiten a Amazon SageMaker Studio o Amazon SageMaker Studio Classic crear SageMaker recursos de Amazon también deben conceder permisos para añadir etiquetas a esos recursos. El permiso para añadir etiquetas a los recursos es obligatorio porque Studio y Studio Classic etiquetan automáticamente todos los recursos que crean. Si una política de IAM permite a Studio y Studio Classic crear recursos, pero no permite el etiquetado, se pueden producir errores AccessDenied «» al intentar crear recursos. Para obtener más información, consulte Proporcione permisos para etiquetar SageMaker los recursos.

AWS Políticas gestionadas para Amazon SageMakerque otorgan permisos para crear SageMaker recursos ya incluyen permisos para añadir etiquetas al crear esos recursos.

Existen varias opciones para implementar un modelo mediante servicios SageMaker de alojamiento. Puede implementar un modelo de forma interactiva con SageMaker Studio. O bien, puede implementar un modelo mediante programación mediante un AWS SDK, como el SDK de SageMaker Python o el SDK para Python (Boto3). También puede implementarlo mediante. AWS CLI

Antes de empezar

Antes de implementar un SageMaker modelo, busque y tome nota de lo siguiente:

  • El Región de AWS lugar en el que se encuentra su bucket de Amazon S3

  • La ruta URI de Amazon S3 donde se almacenan los artefactos del modelo

  • La función de IAM para SageMaker

  • La ruta de registro de URI de Amazon ECR de Docker para la imagen personalizada que contiene el código de inferencia, o el marco y la versión de una imagen de Docker integrada que es compatible y por AWS

Para obtener una lista de las Servicios de AWS disponibles en cada una de ellas Región de AWS, consulte Region Maps y Edge Networks. Consulte Creación de roles de IAM para obtener información sobre cómo crear roles de IAM.

importante

El depósito de Amazon S3 en el que se almacenan los artefactos del modelo debe estar en el Región de AWS mismo lugar que el modelo que está creando.

Utilización de recursos compartidos con varios modelos

Puedes implementar uno o más modelos en un punto final con Amazon SageMaker. Cuando varios modelos comparten un punto final, utilizan conjuntamente los recursos que están alojados allí, como las instancias de procesamiento de aprendizaje automático, las CPU y los aceleradores. La forma más flexible de implementar varios modelos en un punto final es definir cada modelo como un componente de inferencia.

Componentes de inferencias

Un componente de inferencia es un objeto de SageMaker alojamiento que se puede utilizar para implementar un modelo en un punto final. En la configuración del componente de inferencia, se especifica el modelo, el punto final y la forma en que el modelo utiliza los recursos que aloja el punto final. Para especificar el modelo, puede especificar un objeto SageMaker modelo o puede especificar directamente los artefactos y la imagen del modelo.

En la configuración, puede optimizar la utilización de los recursos adaptando la forma en que se asignan al modelo los núcleos de CPU, los aceleradores y la memoria necesarios. Puede implementar varios componentes de inferencia en un punto final, donde cada componente de inferencia contenga un modelo y las necesidades de utilización de recursos de ese modelo.

Tras implementar un componente de inferencia, puede invocar directamente el modelo asociado cuando utilice la InvokeEndpoint acción en la API. SageMaker

Los componentes de inferencia ofrecen las siguientes ventajas:

Flexibilidad

El componente de inferencia desacopla los detalles del alojamiento del modelo del propio punto final. Esto proporciona más flexibilidad y control sobre cómo se alojan y sirven los modelos con un punto final. Puede alojar varios modelos en la misma infraestructura y puede agregar o eliminar modelos de un punto final según sea necesario. Puede actualizar cada modelo de forma independiente.

Escalabilidad

Puede especificar el número de copias de cada modelo que desee alojar y puede establecer un número mínimo de copias para garantizar que el modelo se cargue en la cantidad necesaria para atender las solicitudes. Puede reducir a cero la copia de cualquier componente de inferencia, lo que deja espacio para que otra copia se amplíe.

SageMaker empaqueta sus modelos como componentes de inferencia cuando los implementa mediante:

  • SageMaker Studio Classic.

  • El SDK de SageMaker Python para implementar un objeto modelo (en el que se establece el tipo de punto finalEndpointType.INFERENCE_COMPONENT_BASED).

  • El AWS SDK for Python (Boto3) para definir InferenceComponent los objetos que se implementan en un punto final.

Implemente modelos con SageMaker Studio

Complete los siguientes pasos para crear e implementar su modelo de forma interactiva a través de SageMaker Studio. Para obtener más información sobre Studio, consulta la documentación de Studio. Para obtener más información sobre varios escenarios de implementación, consulte el blog Package and deploy modelos de ML clásicos y LLM fácilmente con Amazon SageMaker — Part 2.

Prepare sus artefactos y permisos

Complete esta sección antes de crear un modelo en SageMaker Studio.

Tienes dos opciones para traer tus artefactos y crear un modelo en Studio:

  1. Puedes traer un tar.gz archivo preempaquetado, que debería incluir los artefactos del modelo, cualquier código de inferencia personalizado y todas las dependencias enumeradas en un archivo. requirements.txt

  2. SageMaker puede empaquetar sus artefactos por usted. Solo tiene que incluir los artefactos del modelo sin procesar y cualquier dependencia en un requirements.txt archivo, y SageMaker puede proporcionarle el código de inferencia predeterminado (o puede anular el código predeterminado con su propio código de inferencia personalizado). SageMakeradmite esta opción para los siguientes marcos: XGBoost. PyTorch

Además de incluir su modelo, su función AWS Identity and Access Management (IAM) y un contenedor de Docker (o el marco y la versión que prefieran y que SageMaker cuenten con un contenedor prediseñado), también debe conceder permisos para crear e implementar modelos a través de Studio. SageMaker

Debe tener la política de AmazonSageMakerFullacceso asociada a su función de IAM para poder acceder a SageMaker otros servicios relevantes. Para ver los precios de los tipos de instancias en Studio, también debes adjuntar la política de AWS PriceListServiceFullacceso (o, si no quieres adjuntar la política completa, más específicamente, la pricing:GetProducts acción).

Si decide cargar los artefactos de su modelo al crear un modelo (o cargar un archivo de carga útil de muestra para obtener recomendaciones de inferencia), debe crear un bucket de Amazon S3. El nombre del bucket debe ir precedido de la palabra. SageMaker También se aceptan mayúsculas alternativas SageMaker de: o. Sagemaker sagemaker

Le recomendamos que utilice la convención de nomenclatura de los cubos. sagemaker-{Region}-{accountID} Este depósito se utiliza para almacenar los artefactos que subas.

Tras crear el depósito, adjunta la siguiente política CORS (intercambio de recursos entre orígenes cruzados) al depósito:

[ { "AllowedHeaders": ["*"], "ExposeHeaders": ["Etag"], "AllowedMethods": ["PUT", "POST"], "AllowedOrigins": ['https://*.sagemaker.aws'], } ]

Puede adjuntar una política CORS a un bucket de Amazon S3 mediante cualquiera de los siguientes métodos:

Cree un modelo desplegable

En este paso, debe crear una versión desplegable de su modelo SageMaker proporcionando sus artefactos junto con las especificaciones adicionales, como el contenedor y el marco que desee, cualquier código de inferencia personalizado y la configuración de red.

Cree un modelo desplegable en SageMaker Studio de la siguiente manera:

  1. Abre la aplicación SageMaker Studio.

  2. En el panel de navegación izquierdo, elija Models (Modelos).

  3. Seleccione la pestaña Modelos desplegables.

  4. En la página de modelos desplegables, seleccione Crear.

  5. En la página Crear modelo desplegable, en el campo Nombre del modelo, introduzca un nombre para el modelo.

Hay varias secciones más que puede rellenar en la página Crear un modelo desplegable.

La sección de definición del contenedor tiene el aspecto de la siguiente captura de pantalla:

Captura de pantalla de la sección de definición de contenedores para crear un modelo en Studio.
Para la sección de definición de contenedores, haga lo siguiente:
  1. En Tipo de contenedor, selecciona Contenedor prediseñado si quieres usar un contenedor SageMaker gestionado, o selecciona Traiga su propio contenedor si tiene su propio contenedor.

  2. Si seleccionaste un contenedor prediseñado, selecciona el marco del contenedor, la versión del marco y el tipo de hardware que quieras usar.

  3. Si seleccionó Traiga su propio contenedor, introduzca una ruta de Amazon ECR como imagen de la ruta de ECR al contenedor.

A continuación, rellena la sección de artefactos, que se parece a la siguiente captura de pantalla:

Captura de pantalla de la sección de artefactos para crear un modelo en Studio.
Para la sección de artefactos, haga lo siguiente:
  1. Si utilizas uno de los marcos SageMaker compatibles con el empaquetado de artefactos modelo (PyTorch o XGBoost), en el caso de Artifacts, puedes elegir la opción Cargar artefactos. Con esta opción, solo tiene que especificar los artefactos del modelo sin procesar, cualquier código de inferencia personalizado que tenga y su archivo requirements.txt, y se SageMaker encargará de empaquetar el archivo por usted. Haga lo siguiente:

    1. En el caso de los artefactos, seleccione Cargar artefactos para seguir proporcionando los archivos. De lo contrario, si ya tiene un tar.gz archivo que contiene los archivos del modelo, el código de inferencia y el requirements.txt archivo, seleccione Introducir el URI de S3 para los artefactos preempaquetados.

    2. Si opta por cargar sus artefactos, en el caso del depósito S3, introduzca la ruta de Amazon S3 hasta el depósito en el que SageMaker desee almacenar los artefactos después de empaquetarlos por usted. A continuación, complete los siguientes pasos.

    3. En Cargar artefactos del modelo, cargue los archivos del modelo.

    4. En Código de inferencia, seleccione Usar código de inferencia predeterminado si quiere usar un código predeterminado que sirva para realizar SageMaker inferencias. De lo contrario, selecciona Cargar código de inferencia personalizado para usar tu propio código de inferencia.

    5. En Upload requirements.txt, suba un archivo de texto que enumere las dependencias que desee instalar en tiempo de ejecución.

  2. Si no está utilizando un marco que permita SageMaker empaquetar artefactos de modelos, Studio le mostrará la opción de artefactos preempaquetados y deberá proporcionar todos los artefactos ya empaquetados como un tar.gz archivo. Haga lo siguiente:

    1. En el caso de los artefactos preempaquetados, seleccione Introducir el URI de S3 para los artefactos del modelo preempaquetados si ya ha cargado el tar.gz archivo en Amazon S3. Seleccione Cargar artefactos modelo preempaquetados si desea cargar directamente su archivo a. SageMaker

    2. Si seleccionó el URI de S3 de entrada para los artefactos del modelo preempaquetados, introduzca la ruta de Amazon S3 a su archivo para el URI de S3. De lo contrario, seleccione y cargue el archivo desde su máquina local.

La siguiente sección es Seguridad, que se parece a la siguiente captura de pantalla:

Captura de pantalla de la sección de seguridad para crear un modelo en Studio.
Para la sección de seguridad, haga lo siguiente:
  1. Para el rol de IAM, introduzca el ARN de un rol de IAM.

  2. (Opcional) En el caso de la nube privada virtual (VPC), puede seleccionar una Amazon VPC para almacenar la configuración y los artefactos del modelo.

  3. (Opcional) Active la opción de aislamiento de la red si quiere restringir el acceso a Internet de su contenedor.

Por último, si lo desea, puede rellenar la sección de opciones avanzadas, que tiene el aspecto de la siguiente captura de pantalla:

Captura de pantalla de la sección de opciones avanzadas para crear un modelo en Studio.
(Opcional) Para la sección de opciones avanzadas, haga lo siguiente:
  1. Activa la opción Recomendaciones de instancias personalizadas si quieres ejecutar un trabajo de Amazon SageMaker Inference Recommender en tu modelo después de su creación. El Recomendador de inferencias es una función que le proporciona los tipos de instancias recomendados para optimizar el rendimiento y el costo de las inferencias. Puedes ver estas recomendaciones de instancias cuando te prepares para implementar tu modelo.

  2. En Añadir variables de entorno, introduce una variable de entorno para tu contenedor como pares clave-valor.

  3. En el caso de las etiquetas, introduce cualquier etiqueta como pares clave-valor.

  4. Una vez finalizada la configuración del modelo y el contenedor, elija Crear modelo desplegable.

Ahora debería tener un modelo en SageMaker Studio listo para su implementación.

Implementar el modelo

Por último, debe implementar el modelo que configuró en el paso anterior en un punto final HTTPS. Puede implementar un modelo único o varios modelos en el punto final.

Compatibilidad entre el modelo y el punto final

Antes de poder implementar un modelo en un punto final, el modelo y el punto final deben ser compatibles y tener los mismos valores para los siguientes ajustes:

  • La función de IAM

  • Amazon VPC, incluidas sus subredes y grupos de seguridad

  • El aislamiento de la red (activado o desactivado)

Studio impide implementar modelos en puntos finales incompatibles de las siguientes maneras:

  • Si intenta implementar un modelo en un nuevo punto final, SageMaker configura el punto final con una configuración inicial que sea compatible. Si se rompe la compatibilidad cambiando estos ajustes, Studio muestra una alerta e impide el despliegue.

  • Si intentas realizar el despliegue en un dispositivo de punto final existente y ese punto final no es compatible, Studio muestra una alerta e impide el despliegue.

  • Si intentas añadir varios modelos a una implementación, Studio te impedirá implementar modelos que sean incompatibles entre sí.

Cuando Studio muestre la alerta sobre la incompatibilidad entre el modelo y el punto final, puede seleccionar Ver detalles en la alerta para ver qué ajustes son incompatibles.

Una forma de implementar un modelo es hacer lo siguiente en Studio:

  1. Abre la aplicación SageMaker Studio.

  2. En el panel de navegación izquierdo, elija Models (Modelos).

  3. En la página de modelos, seleccione uno o más modelos de la lista de SageMaker modelos.

  4. Elija Implementar.

  5. Para el nombre de Endpoint, abra el menú desplegable. Puede seleccionar un punto final existente o puede crear uno nuevo en el que implementar el modelo.

  6. En Tipo de instancia, seleccione el tipo de instancia que quiere usar para el punto final. Si anteriormente realizaste un trabajo de recomendación de inferencias para el modelo, los tipos de instancia recomendados aparecen en la lista bajo el título Recomendado. De lo contrario, verás algunas posibles instancias que podrían ser adecuadas para tu modelo.

    Compatibilidad de tipos de instancia para JumpStart

    Si vas a implementar un JumpStart modelo, Studio solo muestra los tipos de instancias compatibles con el modelo.

  7. En Recuento inicial de instancias, introduce el número inicial de instancias que te gustaría aprovisionar para tu punto final.

  8. En Número máximo de instancias, especifica el número máximo de instancias que el punto final puede aprovisionar cuando se amplíe para adaptarse a un aumento del tráfico.

  9. Si el modelo que vas a implementar es uno de los JumpStart LLM más utilizados en Model Hub, aparecerá la opción Configuraciones alternativas después de los campos tipo de instancia y recuento de instancias.

    Para los JumpStart LLM más populares, AWS tiene tipos de instancias previamente evaluados para optimizar el costo o el rendimiento. Estos datos pueden ayudarle a decidir qué tipo de instancia usar para implementar su LLM. Elija Configuraciones alternativas para abrir un cuadro de diálogo que contiene los datos previamente evaluados. El panel tiene el aspecto de la siguiente captura de pantalla:

    Captura de pantalla del cuadro de configuraciones alternativas

    En el cuadro Configuraciones alternativas, haga lo siguiente:

    1. Seleccione un tipo de instancia. Puede elegir el coste por hora o el mejor rendimiento para ver los tipos de instancias que optimizan el coste o el rendimiento para el modelo especificado. También puedes elegir Otras instancias compatibles para ver una lista de otros tipos de instancias que son compatibles con el JumpStart modelo. Ten en cuenta que al seleccionar un tipo de instancia aquí se sobrescribe cualquier selección de instancia anterior especificada en el paso 6.

    2. (Opcional) Active la opción Personalizar la configuración seleccionada para especificar el número máximo total de tokens (el número máximo de tokens que desea permitir, que es la suma de los tokens de entrada y la salida generada por el modelo), la longitud máxima del token de entrada (el número máximo de tokens que desea permitir para la entrada de cada solicitud) y el número máximo de solicitudes simultáneas (el número máximo de solicitudes que el modelo puede procesar a la vez).

    3. Elija Seleccionar para confirmar el tipo de instancia y los ajustes de configuración.

  10. El campo Modelo ya debería estar rellenado con el nombre del modelo o los modelos que va a implementar. Puede elegir Añadir modelo para añadir más modelos a la implementación. Para cada modelo que añada, rellene los siguientes campos:

    1. En Número de núcleos de CPU, introduce los núcleos de CPU que quieres dedicar al uso del modelo.

    2. En Número mínimo de copias, introduzca el número mínimo de copias del modelo que desee alojar en el terminal en un momento dado.

    3. En Memoria mínima de CPU (MB), introduzca la cantidad mínima de memoria (en MB) que requiere el modelo.

    4. En Memoria máxima de CPU (MB), introduzca la cantidad máxima de memoria (en MB) que desea permitir que utilice el modelo.

  11. (Opcional) Para las opciones avanzadas, haga lo siguiente:

    1. Para el rol de IAM, utilice el rol de ejecución de SageMaker IAM predeterminado o especifique su propio rol con los permisos que necesita. Tenga en cuenta que esta función de IAM debe ser la misma que la que especificó al crear el modelo desplegable.

    2. En el caso de la Nube Privada Virtual (VPC), puede especificar una VPC en la que desee alojar su punto final.

    3. En la clave de cifrado KMS, seleccione una AWS KMS clave para cifrar los datos del volumen de almacenamiento adjunto a la instancia de procesamiento de aprendizaje automático que aloja el punto final.

    4. Activa la opción Habilitar el aislamiento de la red para restringir el acceso a Internet de tu contenedor.

    5. Para configurar el tiempo de espera, introduzca los valores de los campos Tiempo de espera de descarga de datos del modelo (segundos) y Tiempo de espera de comprobación del estado del contenedor (segundos). Estos valores determinan el tiempo máximo que se tarda SageMaker en descargar el modelo en el contenedor y ponerlo en marcha, respectivamente.

    6. En el caso de las etiquetas, introduzca las etiquetas como pares clave-valor.

    nota

    SageMaker configura la función de IAM, la VPC y el aislamiento de la red con valores iniciales que son compatibles con el modelo que se está implementando. Si rompes la compatibilidad cambiando estos ajustes, Studio mostrará una alerta e impedirá el despliegue.

Tras configurar las opciones, la página debería tener el aspecto de la siguiente captura de pantalla.

Captura de pantalla de la página del modelo Deploy en Studio.

Tras configurar la implementación, elija Deploy para crear el punto final e implementar el modelo.

Implemente modelos con los SDK de Python

Con el SDK de SageMaker Python, puede crear su modelo de dos maneras. La primera consiste en crear un objeto modelo a partir de la ModelBuilder clase Model o. Si usa la Model clase para crear su Model objeto, debe especificar el paquete del modelo o el código de inferencia (según el servidor del modelo), los scripts para gestionar la serialización y deserialización de los datos entre el cliente y el servidor y cualquier dependencia que deba cargarse en Amazon S3 para su consumo. La segunda forma de crear el modelo consiste en utilizar el código de inferencia o ModelBuilder los artefactos del modelo. ModelBuildercaptura automáticamente las dependencias, deduce las funciones de serialización y deserialización necesarias y empaqueta las dependencias para crear el objeto. Model Para obtener más información acerca de ModelBuilder, consulte Crea un modelo en Amazon SageMaker con ModelBuilder.

En la siguiente sección, se describen ambos métodos para crear el modelo e implementar el objeto del modelo.

Configuración

Los siguientes ejemplos preparan el proceso de despliegue del modelo. Importan las bibliotecas necesarias y definen la URL de S3 que localiza los artefactos del modelo.

SageMaker Python SDK
ejemplo declaraciones de importación

El siguiente ejemplo importa módulos del SDK de SageMaker Python, el SDK para Python (Boto3) y la biblioteca estándar de Python. Estos módulos proporcionan métodos útiles que ayudan a implementar modelos y se utilizan en el resto de los ejemplos que aparecen a continuación.

import boto3 from datetime import datetime from sagemaker.compute_resource_requirements.resource_requirements import ResourceRequirements from sagemaker.predictor import Predictor from sagemaker.enums import EndpointType from sagemaker.model import Model from sagemaker.session import Session
boto3 inference components
ejemplo declaraciones de importación

En el siguiente ejemplo, se importan módulos del SDK para Python (Boto3) y de la biblioteca estándar de Python. Estos módulos proporcionan métodos útiles que ayudan a implementar modelos y se utilizan en el resto de los ejemplos que aparecen a continuación.

import boto3 import botocore import sys import time
boto3 models (without inference components)
ejemplo declaraciones de importación

En el siguiente ejemplo, se importan módulos del SDK para Python (Boto3) y de la biblioteca estándar de Python. Estos módulos proporcionan métodos útiles que ayudan a implementar modelos y se utilizan en el resto de los ejemplos que aparecen a continuación.

import boto3 import botocore import datetime from time import gmtime, strftime
ejemplo URL del artefacto modelo

El siguiente código crea un ejemplo de URL de Amazon S3. La URL localiza los artefactos del modelo de un modelo previamente entrenado en un bucket de Amazon S3.

# Create a variable w/ the model S3 URL # The name of your S3 bucket: s3_bucket = "DOC-EXAMPLE-BUCKET" # The directory within your S3 bucket your model is stored in: bucket_prefix = "sagemaker/model/path" # The file name of your model artifact: model_filename = "my-model-artifact.tar.gz" # Relative S3 path: model_s3_key = f"{bucket_prefix}/"+model_filename # Combine bucket name, model file name, and relate S3 path to create S3 model URL: model_url = f"s3://{s3_bucket}/{model_s3_key}"

La URL completa de Amazon S3 se almacena en la variablemodel_url, que se utiliza en los ejemplos siguientes.

Información general

Existen varias formas de implementar modelos con el SDK de SageMaker Python o el SDK para Python (Boto3). En las siguientes secciones se resumen los pasos que debe seguir para varios enfoques posibles. Estos pasos se muestran en los ejemplos siguientes.

SageMaker Python SDK

Con el SDK de SageMaker Python, puede crear su modelo de cualquiera de las siguientes maneras:

  • Cree un objeto modelo a partir de la Model clase: debe especificar el paquete del modelo o el código de inferencia (en función del servidor modelo), los scripts para gestionar la serialización y deserialización de los datos entre el cliente y el servidor y cualquier dependencia que deba cargarse en Amazon S3 para su consumo.

  • Cree un objeto modelo a partir de la ModelBuilder clase: proporciona artefactos del modelo o código de inferencia y captura ModelBuilder automáticamente las dependencias, deduce las funciones de serialización y deserialización necesarias y empaqueta las dependencias para crear el Model objeto.

    Para obtener más información acerca de ModelBuilder, consulte Crea un modelo en Amazon SageMaker con ModelBuilder. También puede consultar el blog Package and deploy modelos de ML clásicos y LLM fácilmente con SageMaker — Part 1 para obtener más información.

En los ejemplos siguientes se describen ambos métodos para crear el modelo y desplegar el objeto del modelo. Para implementar un modelo de estas formas, siga estos pasos:

  1. Defina los recursos de punto final que se van a asignar al modelo con un ResourceRequirements objeto.

  2. Cree un objeto modelo a partir de las ModelBuilder clases Model o. El ResourceRequirements objeto se especifica en la configuración del modelo.

  3. Implemente el modelo en un punto final mediante el deploy método del Model objeto.

boto3 inference components

Los ejemplos siguientes muestran cómo asignar un modelo a un componente de inferencia y, a continuación, implementar el componente de inferencia en un punto final. Para implementar un modelo de esta manera, complete los siguientes pasos:

  1. (Opcional) Cree un objeto SageMaker modelo mediante el create_modelmétodo.

  2. Especifique la configuración de su punto final mediante la creación de un objeto de configuración de punto final. Para crear uno, utilice el create_endpoint_configmétodo.

  3. Cree su punto final mediante el create_endpointmétodo y, en su solicitud, proporcione la configuración del punto final que creó.

  4. Cree un componente de inferencia mediante el create_inference_component método. En la configuración, se especifica un modelo mediante una de las siguientes acciones:

    • Especificar un objeto de SageMaker modelo

    • Especificar el URI de la imagen del modelo y la URL de S3

    También se asignan recursos de punto final al modelo. Al crear el componente de inferencia, se implementa el modelo en el punto final. Puede implementar varios modelos en un punto final mediante la creación de varios componentes de inferencia, uno para cada modelo.

boto3 models (without inference components)

Los ejemplos siguientes muestran cómo crear un objeto de modelo y, a continuación, implementar el modelo en un punto final. Para implementar un modelo de esta manera, siga estos pasos:

  1. Cree un SageMaker modelo mediante el create_modelmétodo.

  2. Especifique la configuración de su punto final mediante la creación de un objeto de configuración de punto final. Para crear uno, utilice el create_endpoint_configmétodo. En la configuración del punto final, se asigna el objeto modelo a una variante de producción.

  3. Cree su punto final mediante el create_endpointmétodo. En su solicitud, proporcione la configuración del punto final que creó.

    Al crear el punto final, SageMaker aprovisiona los recursos del punto final y este despliega el modelo en el punto final.

Configuración

Los siguientes ejemplos configuran los recursos que necesita para implementar un modelo en un punto final.

SageMaker Python SDK

El siguiente ejemplo asigna recursos de punto final a un modelo con un ResourceRequirements objeto. Estos recursos incluyen núcleos de CPU, aceleradores y memoria. A continuación, el ejemplo crea un objeto modelo a partir de la Model clase. Como alternativa, puede crear un objeto modelo creando una instancia de la ModelBuilderclase y ejecutándolobuild; este método también se muestra en el ejemplo. ModelBuilderproporciona una interfaz unificada para el empaquetado de modelos y, en este caso, prepara un modelo para la implementación de un modelo grande. El ejemplo se utiliza ModelBuilder para construir un modelo de Hugging Face. (También puedes pasar un JumpStart modelo). Una vez creado el modelo, puede especificar los requisitos de recursos en el objeto del modelo. En el siguiente paso, utilizará este objeto para implementar el modelo en un punto final.

resources = ResourceRequirements( requests = { "num_cpus": 2, # Number of CPU cores required: "num_accelerators": 1, # Number of accelerators required "memory": 8192, # Minimum memory required in Mb (required) "copies": 1, }, limits = {}, ) now = datetime.now() dt_string = now.strftime("%d-%m-%Y-%H-%M-%S") model_name = "my-sm-model"+dt_string # build your model with Model class model = Model( name = "model-name", image_uri = "image-uri", model_data = model_url, role = "arn:aws:iam::111122223333:role/service-role/role-name", resources = resources, predictor_cls = Predictor, ) # Alternate mechanism using ModelBuilder # uncomment the following section to use ModelBuilder /* model_builder = ModelBuilder( model="<HuggingFace-ID>", # like "meta-llama/Llama-2-7b-hf" schema_builder=SchemaBuilder(sample_input,sample_output), env_vars={ "HUGGING_FACE_HUB_TOKEN": "<HuggingFace_token>}" } ) # build your Model object model = model_builder.build() # create a unique name from string 'mb-inference-component' model.model_name = unique_name_from_base("mb-inference-component") # assign resources to your model model.resources = resources */
boto3 inference components

El siguiente ejemplo configura un punto final con el create_endpoint_config método. Esta configuración se asigna a un punto final al crearlo. En la configuración, se definen una o más variantes de producción. Para cada variante, puedes elegir el tipo de instancia que deseas que Amazon SageMaker aprovisione y puedes habilitar el escalado de instancias gestionado.

endpoint_config_name = "endpoint-config-name" endpoint_name = "endpoint-name" inference_component_name = "inference-component-name" variant_name = "variant-name" sagemaker_client.create_endpoint_config( EndpointConfigName = endpoint_config_name, ExecutionRoleArn = "arn:aws:iam::111122223333:role/service-role/role-name", ProductionVariants = [ { "VariantName": variant_name, "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1, "ManagedInstanceScaling": { "Status": "ENABLED", "MinInstanceCount": 1, "MaxInstanceCount": 2, }, } ], )
boto3 models (without inference components)
ejemplo definición del modelo

El siguiente ejemplo define un SageMaker modelo con el create_model método de AWS SDK for Python (Boto3).

model_name = "model-name" create_model_response = sagemaker_client.create_model( ModelName = model_name, ExecutionRoleArn = "arn:aws:iam::111122223333:role/service-role/role-name", PrimaryContainer = { "Image": "image-uri", "ModelDataUrl": model_url, } )

En este ejemplo se especifica lo siguiente:

  • ModelName: un nombre para el modelo (en este ejemplo, se almacena como una variable de cadena llamada model_name).

  • ExecutionRoleArn: El nombre del recurso de Amazon (ARN) de la función de IAM que Amazon SageMaker puede asumir para acceder a los artefactos del modelo y a las imágenes de Docker para su implementación en instancias de procesamiento de aprendizaje automático o para trabajos de transformación por lotes.

  • PrimaryContainer: la ubicación de la imagen de Docker principal que contiene el código de inferencia, los artefactos asociados y mapas de entorno personalizados que el código de inferencia utiliza cuando el modelo se implementa para predicciones.

ejemplo configuración de punto de enlace

En el siguiente ejemplo, se configura un punto final con el método. create_endpoint_config Amazon SageMaker usa esta configuración para implementar modelos. En la configuración, identificas uno o más modelos, creados con el create_model método, para implementar los recursos que deseas que Amazon SageMaker aprovisione.

endpoint_config_response = sagemaker_client.create_endpoint_config( EndpointConfigName = "endpoint-config-name", # List of ProductionVariant objects, one for each model that you want to host at this endpoint: ProductionVariants = [ { "VariantName": "variant-name", # The name of the production variant. "ModelName": model_name, "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1 # Number of instances to launch initially. } ] )

En este ejemplo se especifican las siguientes claves para el ProductionVariants campo:

Implementación

En los siguientes ejemplos, se implementa un modelo en un punto final.

SageMaker Python SDK

El siguiente ejemplo implementa el modelo en un punto final HTTPS en tiempo real con el deploy método del objeto del modelo. Si especifica un valor para el resources argumento tanto para la creación como para el despliegue del modelo, prevalecerán los recursos que especifique para el despliegue.

predictor = model.deploy( initial_instance_count = 1, instance_type = "ml.p4d.24xlarge", endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED, resources = resources, )

Para el instance_type campo, el ejemplo especifica el nombre del tipo de instancia Amazon EC2 del modelo. Para el initial_instance_count campo, especifica el número inicial de instancias en las que se ejecutará el punto final.

El siguiente ejemplo de código muestra otro caso en el que se implementa un modelo en un punto final y, a continuación, se implementa otro modelo en el mismo punto final. En este caso, debe proporcionar el mismo nombre de punto final a los deploy métodos de ambos modelos.

# Deploy the model to inference-component-based endpoint falcon_predictor = falcon_model.deploy( initial_instance_count = 1, instance_type = "ml.p4d.24xlarge", endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED, endpoint_name = "<endpoint_name>" resources = resources, ) # Deploy another model to the same inference-component-based endpoint llama2_predictor = llama2_model.deploy( # resources already set inside llama2_model endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED, endpoint_name = "<endpoint_name>" # same endpoint name as for falcon model )
boto3 inference components

Una vez que tenga una configuración de punto final, utilice el método create_endpoint para crear su punto final. El nombre del punto final debe ser único Región de AWS en su cuenta. AWS

En el siguiente ejemplo, se crea un punto final utilizando la configuración de punto final especificada en la solicitud. Amazon SageMaker usa el punto de conexión para aprovisionar recursos.

sagemaker_client.create_endpoint( EndpointName = endpoint_name, EndpointConfigName = endpoint_config_name, )

Una vez creado un punto final, puede implementar uno o varios modelos en él mediante la creación de componentes de inferencia. En el siguiente ejemplo, se crea uno con el create_inference_component método.

sagemaker_client.create_inference_component( InferenceComponentName = inference_component_name, EndpointName = endpoint_name, VariantName = variant_name, Specification = { "Container": { "Image": "image-uri", "ArtifactUrl": model_url, }, "ComputeResourceRequirements": { "NumberOfCpuCoresRequired": 1, "MinMemoryRequiredInMb": 1024 } }, RuntimeConfig = {"CopyCount": 2} )
boto3 models (without inference components)
ejemplo Implementación

Proporcione la configuración del punto final a SageMaker. El servicio inicia las instancias de cómputo de ML e implementa el modelo o los modelos según se especifica en la configuración.

Una vez que tenga el modelo y la configuración del punto final, utilice el método create_endpoint para crear el punto final. El nombre del punto final debe ser único Región de AWS en su cuenta. AWS

En el siguiente ejemplo, se crea un punto final utilizando la configuración de punto final especificada en la solicitud. Amazon SageMaker usa el punto de conexión para aprovisionar recursos e implementar modelos.

create_endpoint_response = sagemaker_client.create_endpoint( # The endpoint name must be unique within an AWS Region in your AWS account: EndpointName = "endpoint-name" # The name of the endpoint configuration associated with this endpoint: EndpointConfigName = "endpoint-config-name")

Implemente modelos con AWS CLI

Puede implementar un modelo en un punto final mediante el AWS CLI.

Información general

Al implementar un modelo con AWS CLI, puede implementarlo con o sin un componente de inferencia. En las siguientes secciones se resumen los comandos que se ejecutan para ambos enfoques. Estos comandos se muestran en los ejemplos siguientes.

With inference components

Para implementar un modelo con un componente de inferencia, haga lo siguiente:

  1. (Opcional) Cree un modelo con el create-modelcomando.

  2. Especifique la configuración de su punto final mediante la creación de una configuración de punto final. Para crear uno, ejecute el create-endpoint-configcomando.

  3. Cree su punto final mediante el create-endpointcomando. En el cuerpo del comando, especifique la configuración del punto final que creó.

  4. Cree un componente de inferencia mediante el create-inference-component comando. En la configuración, se especifica un modelo mediante una de las siguientes acciones:

    • Especificar un objeto de SageMaker modelo

    • Especificar el URI de la imagen del modelo y la URL de S3

    También se asignan recursos de punto final al modelo. Al crear el componente de inferencia, se implementa el modelo en el punto final. Puede implementar varios modelos en un punto final mediante la creación de varios componentes de inferencia, uno para cada modelo.

Without inference components

Para implementar un modelo sin usar un componente de inferencia, haga lo siguiente:

  1. Cree un SageMaker modelo mediante el create-modelcomando.

  2. Especifique la configuración de su punto final mediante la creación de un objeto de configuración de punto final. Para crear uno, utilice el create-endpoint-configcomando. En la configuración del punto final, se asigna el objeto modelo a una variante de producción.

  3. Cree su punto final mediante el create-endpointcomando. En el cuerpo del comando, especifique la configuración del punto final que creó.

    Al crear el punto final, SageMaker aprovisiona los recursos del punto final y este despliega el modelo en el punto final.

Configuración

Los siguientes ejemplos configuran los recursos que necesita para implementar un modelo en un punto final.

With inference components
ejemplo create-endpoint-config comando

En el siguiente ejemplo, se crea una configuración de punto final con el comando create-endpoint-config.

aws sagemaker create-endpoint-config \ --endpoint-config-name endpoint-config-name \ --execution-role-arn arn:aws:iam::111122223333:role/service-role/role-name\ --production-variants file://production-variants.json

En este ejemplo, el archivo production-variants.json define una variante de producción con el siguiente JSON:

[ { "VariantName": "variant-name", "ModelName": "model-name", "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1 } ]

Si el comando se ejecuta correctamente, AWS CLI responde con el ARN del recurso que ha creado.

{ "EndpointConfigArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint-config/endpoint-config-name" }
Without inference components
ejemplo comando create-model

En el siguiente ejemplo, se crea un modelo con el comando create-model.

aws sagemaker create-model \ --model-name model-name \ --execution-role-arn arn:aws:iam::111122223333:role/service-role/role-name \ --primary-container "{ \"Image\": \"image-uri\", \"ModelDataUrl\": \"model-s3-url\"}"

Si el comando se ejecuta correctamente, AWS CLI responde con el ARN del recurso que ha creado.

{ "ModelArn": "arn:aws:sagemaker:us-west-2:111122223333:model/model-name" }
ejemplo create-endpoint-config comando

En el siguiente ejemplo, se crea una configuración de punto final con el comando create-endpoint-config.

aws sagemaker create-endpoint-config \ --endpoint-config-name endpoint-config-name \ --production-variants file://production-variants.json

En este ejemplo, el archivo production-variants.json define una variante de producción con el siguiente JSON:

[ { "VariantName": "variant-name", "ModelName": "model-name", "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1 } ]

Si el comando se ejecuta correctamente, AWS CLI responde con el ARN del recurso que ha creado.

{ "EndpointConfigArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint-config/endpoint-config-name" }

Implementación

Los siguientes ejemplos implementan un modelo en un punto final.

With inference components
ejemplo comando create-endpoint

En el siguiente ejemplo, se crea un punto final con el comando create-endpoint.

aws sagemaker create-endpoint \ --endpoint-name endpoint-name \ --endpoint-config-name endpoint-config-name

Si el comando se ejecuta correctamente, AWS CLI responde con el ARN del recurso que ha creado.

{ "EndpointArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint/endpoint-name" }
ejemplo create-inference-component comando

El siguiente ejemplo crea un componente de inferencia con el create-inference-component comando.

aws sagemaker create-inference-component \ --inference-component-name inference-component-name \ --endpoint-name endpoint-name \ --variant-name variant-name \ --specification file://specification.json \ --runtime-config "{\"CopyCount\": 2}"

En este ejemplo, el archivo specification.json define el contenedor y los recursos de cómputo con el siguiente JSON:

{ "Container": { "Image": "image-uri", "ArtifactUrl": "model-s3-url" }, "ComputeResourceRequirements": { "NumberOfCpuCoresRequired": 1, "MinMemoryRequiredInMb": 1024 } }

Si el comando se ejecuta correctamente, AWS CLI responde con el ARN del recurso que ha creado.

{ "InferenceComponentArn": "arn:aws:sagemaker:us-west-2:111122223333:inference-component/inference-component-name" }
Without inference components
ejemplo comando create-endpoint

En el siguiente ejemplo, se crea un punto final con el comando create-endpoint.

aws sagemaker create-endpoint \ --endpoint-name endpoint-name \ --endpoint-config-name endpoint-config-name

Si el comando se ejecuta correctamente, AWS CLI responde con el ARN del recurso que ha creado.

{ "EndpointArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint/endpoint-name" }