in

Inferencia sin servidor de Amazon SageMaker: inferencia de aprendizaje automático sin preocuparse por los servidores | Servicios web de Amazon

En diciembre de 2021, presentamos Amazon SageMaker Serverless Inference (en versión preliminar) como una nueva opción en Amazon SageMaker para implementar modelos de aprendizaje automático (ML) para la inferencia sin tener que configurar o administrar la infraestructura subyacente. Hoy, me complace anunciar que Amazon SageMaker Serverless Inference ahora está disponible para el público en general (GA).

Los diferentes casos de uso de inferencia de ML plantean diferentes requisitos en la infraestructura de alojamiento de su modelo. Si trabaja en casos de uso como publicación de anuncios, detección de fraudes o recomendaciones personalizadas de productos, lo más probable es que esté buscando una inferencia en línea basada en API con tiempos de respuesta tan bajos como unos pocos milisegundos. Si trabaja con grandes modelos de ML, como en aplicaciones de visión artificial (CV), es posible que necesite una infraestructura optimizada para ejecutar inferencias en tamaños de carga útil más grandes en minutos. Si desea ejecutar predicciones en un conjunto de datos completo o en lotes de datos más grandes, es posible que desee ejecutar un trabajo de inferencia por lotes único y bajo demanda en lugar de alojar un punto final de servicio de modelos. ¿Y si tiene una aplicación con patrones de tráfico intermitentes, como un servicio de chatbot o una aplicación para procesar formularios o analizar datos de documentos? En este caso, es posible que desee una opción de inferencia en línea que pueda aprovisionar y escalar automáticamente la capacidad informática en función del volumen de solicitudes de inferencia. Y durante el tiempo de inactividad, debería poder apagar completamente la capacidad de cómputo para que no se le cobre.

Amazon SageMakernuestro servicio de ML completamente administrado, ofrece diferentes opciones de inferencia de modelos para admitir todos esos casos de uso:

Inferencia sin servidor de Amazon SageMaker en más detalle
En muchas conversaciones con profesionales de ML, he respondido a la solicitud de una opción de inferencia de ML totalmente administrada que le permite concentrarse en desarrollar el código de inferencia mientras administra toda la infraestructura por usted. SageMaker Serverless Inference ahora ofrece esta facilidad de implementación.

Según el volumen de solicitudes de inferencia que recibe su modelo, SageMaker Serverless Inference aprovisiona, escala y desactiva automáticamente la capacidad informática. Como resultado, solo paga por el tiempo de cómputo para ejecutar su código de inferencia y la cantidad de datos procesados, no por el tiempo de inactividad.

Puede usar los algoritmos integrados de SageMaker y los contenedores de servicio del marco de ML para implementar su modelo en un punto final de inferencia sin servidor o elegir traer su propio contenedor. Si el tráfico se vuelve predecible y estable, puede actualizar fácilmente desde un punto final de inferencia sin servidor a un punto final en tiempo real de SageMaker sin necesidad de realizar cambios en la imagen de su contenedor. Con Serverless Inference, también se beneficia de las características de SageMaker, incluidas las métricas integradas, como el recuento de invocaciones, las fallas, la latencia, las métricas de host y los errores en Amazon CloudWatch.

Desde su lanzamiento preliminar, SageMaker Serverless Inference ha agregado soporte para el SDK de Python de SageMaker y modelo de registro. SageMaker Python SDK es una biblioteca de código abierto para crear e implementar modelos ML en SageMaker. El registro de modelos de SageMaker le permite catalogar, versionar e implementar modelos en producción.

Como novedad para el lanzamiento de GA, SageMaker Serverless Inference ha aumentado el límite máximo de invocaciones simultáneas por punto final a 200 (de 50 durante la versión preliminar), lo que le permite usar Amazon SageMaker Serverless Inference para cargas de trabajo de alto tráfico. Amazon SageMaker Serverless Inference ahora está disponible en todas las regiones de AWS donde Amazon SageMaker está disponible, excepto para las regiones AWS GovCloud (EE. UU.) y AWS China.

Varios clientes ya han comenzado a disfrutar de los beneficios de SageMaker Serverless Inference:

Bazaarvoice aprovecha el aprendizaje automático para moderar el contenido generado por el usuario a fin de permitir una experiencia de compra perfecta para nuestros clientes de manera oportuna y confiable. Sin embargo, operar a escala global sobre una base de clientes diversa requiere una gran variedad de modelos, muchos de los cuales se usan con poca frecuencia o necesitan escalar rápidamente debido a las ráfagas significativas de contenido. Amazon SageMaker Serverless Inference ofrece lo mejor de ambos mundos: se escala de forma rápida y sin problemas durante las ráfagas de contenido y reduce los costos de los modelos que se usan con poca frecuencia..” — lou kratzPhD, Ingeniero Principal de Investigación, Bazarvoz

Los transformadores han cambiado el aprendizaje automático y Hugging Face ha estado impulsando su adopción en todas las empresas, comenzando con el procesamiento del lenguaje natural y ahora con el audio y la visión por computadora. La nueva frontera para los equipos de aprendizaje automático en todo el mundo es implementar modelos grandes y potentes de manera rentable. Probamos la inferencia sin servidor de Amazon SageMaker y pudimos reducir significativamente los costos de las cargas de trabajo de tráfico intermitente mientras abstraíamos la infraestructura. Hemos habilitado los modelos Hugging Face para que funcionen de manera inmediata con SageMaker Serverless Inference, lo que ayuda a los clientes a reducir aún más sus costos de aprendizaje automático..” — jeff boudierDirector de Producto, cara de abrazo

Ahora, veamos cómo puede comenzar con SageMaker Serverless Inference.

Para esta demostración, he creado un clasificador de texto para convertir las reseñas de los clientes de comercio electrónico, como «¡Me encanta este producto!» en sentimientos positivos (1), neutrales (0) y negativos (-1). he usado el Conjunto de datos de reseñas de ropa de comercio electrónico para mujeres para afinar un ROBERTA modelo de la biblioteca y centro de modelos de Hugging Face Transformers. Ahora le mostraré cómo implementar el modelo entrenado en un punto de enlace de inferencia sin servidor de Amazon SageMaker.

Implemente un modelo en un punto de enlace de inferencia sin servidor de Amazon SageMaker
Puede crear, actualizar, describir y eliminar un punto de enlace de inferencia sin servidor mediante la consola de SageMaker, los SDK de AWS, el SDK de Python de SageMaker, la CLI de AWS o AWS CloudFormation. En este primer ejemplo, usaré SageMaker Python SDK, ya que simplifica el flujo de trabajo de implementación del modelo a través de sus abstracciones. También puede usar el SDK de Python de SageMaker para invocar el punto final pasando la carga útil en línea con la solicitud. Te mostraré esto en un momento.

Primero, creemos la configuración del punto final con la configuración sin servidor deseada. Puede especificar el tamaño de la memoria y el número máximo de invocaciones simultáneas. SageMaker Serverless Inference asigna automáticamente recursos informáticos proporcionales a la memoria que seleccione. Si elige un tamaño de memoria más grande, su contenedor tiene acceso a más vCPU. Como regla general, el tamaño de la memoria debe ser al menos tan grande como el tamaño de su modelo. Los tamaños de memoria que puede elegir son 1024 MB, 2048 MB, 3072 MB, 4096 MB, 5120 MB y 6144 MB. Para mi modelo RoBERTa, configuremos un tamaño de memoria de 5120 MB y un máximo de cinco invocaciones simultáneas.

import sagemaker
from sagemaker.serverless import ServerlessInferenceConfig

serverless_config = ServerlessInferenceConfig(
	memory_size_in_mb=5120, 
	max_concurrency=5
)

Ahora implementemos el modelo. Puedes usar el estimator.deploy() para implementar el modelo directamente desde el estimador de entrenamiento de SageMaker, junto con la configuración del extremo de inferencia sin servidor. También proporciono mi código de inferencia personalizado en este ejemplo.


endpoint_name="roberta-womens-clothing-serverless-1"

estimator.deploy(
	endpoint_name = endpoint_name, 
	entry_point="inference.py",
	serverless_inference_config=serverless_config
)

SageMaker Serverless Inference también admite el registro de modelos cuando utiliza AWS SDK para Python (Boto3). Le mostraré cómo implementar el modelo desde el registro del modelo más adelante en esta publicación.

Verifiquemos la configuración del punto final de inferencia sin servidor y el estado de implementación. Vaya a la consola de SageMaker y busque el extremo de inferencia implementado:

Desde la consola de SageMaker, también puede crear, actualizar o eliminar puntos finales de inferencia sin servidor si es necesario. En Amazon SageMaker Studio, seleccione la pestaña del punto de enlace y su punto de enlace de inferencia sin servidor para revisar los detalles de configuración del punto de enlace.

Una vez que se muestra el estado del punto final InServicepuede comenzar a enviar solicitudes de inferencia.

Ahora, ejecutemos algunas predicciones de muestra. Mi modelo RoBERTa ajustado espera las solicitudes de inferencia en Líneas JSON formato con el texto de revisión para clasificar como la característica de entrada. Un archivo de texto de líneas JSON comprende varias líneas donde cada línea individual es un objeto JSON válido, delimitado por un carácter de nueva línea. Este es un formato ideal para almacenar datos que se procesan un registro a la vez, como en la inferencia de modelos. Puede obtener más información sobre las líneas JSON y otros formatos de datos comunes para la inferencia en la Guía para desarrolladores de Amazon SageMaker. Tenga en cuenta que el siguiente código puede verse diferente según el formato de solicitud de inferencia aceptado por su modelo.


from sagemaker.predictor import Predictor
from sagemaker.serializers import JSONLinesSerializer
from sagemaker.deserializers import JSONLinesDeserializer

sess = sagemaker.Session(sagemaker_client=sm)

inputs = [
    {"features": ["I love this product!"]},
    {"features": ["OK, but not great."]},
    {"features": ["This is not the right product."]},
]

predictor = Predictor(
    endpoint_name=endpoint_name,
    serializer=JSONLinesSerializer(),
    deserializer=JSONLinesDeserializer(),
    sagemaker_session=sess
)

predicted_classes = predictor.predict(inputs)

for predicted_class in predicted_classes:
    print("Predicted class {} with probability {}".format(predicted_class['predicted_label'], predicted_class['probability']))

El resultado será similar a este, clasificando las reseñas de muestra en las clases de opinión correspondientes.


Predicted class 1 with probability 0.9495596289634705
Predicted class 0 with probability 0.5395089387893677
Predicted class -1 with probability 0.7887083292007446

También puede implementar su modelo desde el registro del modelo a un punto final de SageMaker Serverless Inference. Actualmente, esto solo se admite a través de AWS SDK para Python (Boto3). Déjame guiarte a través de otra demostración rápida.

Implementar modelo desde el registro de modelos de SageMaker
Para implementar el modelo desde el registro del modelo usando Boto3, primero creemos un objeto modelo desde la versión del modelo llamando al create_model() método. Luego, paso el Nombre de recurso de Amazon (ARN) de la versión del modelo como parte de los contenedores para el objeto del modelo.

import boto3
import sagemaker

sm = boto3.client(service_name="sagemaker")
role = sagemaker.get_execution_role()
model_name="roberta-womens-clothing-serverless"

container_list = 
	[{'ModelPackageName': <MODEL_PACKAGE_ARN>}]

create_model_response = sm.create_model(
    ModelName = model_name,
    ExecutionRoleArn = role,
    Containers = container_list
)

A continuación, creo el punto final de inferencia sin servidor. Recuerde que puede crear, actualizar, describir y eliminar un punto de enlace de inferencia sin servidor mediante la consola de SageMaker, los SDK de AWS, el SDK de Python de SageMaker, la CLI de AWS o AWS CloudFormation. Por consistencia, sigo usando Boto3 en este segundo ejemplo.

Al igual que en el primer ejemplo, empiezo creando la configuración del punto final con la configuración sin servidor deseada. Especifico el tamaño de la memoria de 5120 MB y un número máximo de cinco invocaciones simultáneas para mi terminal.

endpoint_config_name="roberta-womens-clothing-serverless-ep-config"

create_endpoint_config_response = sm.create_endpoint_config(
    EndpointConfigName = endpoint_config_name,
    ProductionVariants=[{
        'ServerlessConfig':{
            'MemorySizeInMB' : 5120,
            'MaxConcurrency' : 5
        },
        'ModelName':model_name,
        'VariantName':'AllTraffic'}])

A continuación, creo el punto final de inferencia sin servidor de SageMaker llamando al create_endpoint() método.


endpoint_name="roberta-womens-clothing-serverless-2"

create_endpoint_response = sm.create_endpoint(
    EndpointName=endpoint_name,
    EndpointConfigName=endpoint_config_name)

Una vez que se muestra el estado del punto final InService, puede comenzar a enviar solicitudes de inferencia. Nuevamente, por coherencia, elijo ejecutar la predicción de muestra usando Boto3 y el cliente de tiempo de ejecución de SageMaker. invoke_endpoint() método.

sm_runtime = boto3.client("sagemaker-runtime")
response = sm_runtime.invoke_endpoint(
    EndpointName=endpoint_name,
    ContentType="application/jsonlines",
    Accept="application/jsonlines",
    Body=bytes('{"features": ["I love this product!"]}', 'utf-8')
)

print(response['Body'].read().decode('utf-8'))
{"probability": 0.966135561466217, "predicted_label": 1}

Cómo optimizar su modelo para la inferencia sin servidor de SageMaker
SageMaker Serverless Inference escala automáticamente los recursos informáticos subyacentes para procesar las solicitudes. Si el punto final no recibe tráfico durante un tiempo, reduce los recursos informáticos. Si el punto final recibe repentinamente nuevas solicitudes, es posible que observe que el punto final tarda un tiempo en escalar los recursos informáticos para procesar las solicitudes.

Este tiempo de arranque en frío depende en gran medida del tamaño de su modelo y del tiempo de arranque de su contenedor. Para optimizar los tiempos de arranque en frío, puede intentar minimizar el tamaño de su modelo, por ejemplo, aplicando técnicas como destilación del conocimiento, cuantizacióno modelo de poda.

La destilación de conocimiento utiliza un modelo más grande (el modelo del maestro) para entrenar modelos más pequeños (modelos de estudiantes) para resolver la misma tarea. La cuantificación reduce la precisión de los números que representan los parámetros de su modelo desde números de punto flotante de 32 bits hasta números de punto flotante de 16 bits o enteros de 8 bits. La poda de modelos elimina los parámetros redundantes del modelo que contribuyen poco al proceso de entrenamiento.

Disponibilidad y precios
Amazon SageMaker Serverless Inference ahora está disponible en todas las regiones de AWS donde Amazon SageMaker está disponible excepto para las regiones AWS GovCloud (EE. UU.) y AWS China.

Con SageMaker Serverless Inference, solo paga por la capacidad informática utilizada para procesar las solicitudes de inferencia, facturadas por milisegundos, y la cantidad de datos procesados. El cargo por capacidad informática también depende de la configuración de memoria que elija. Para obtener información detallada sobre precios, visite la página de precios de SageMaker.

Comience hoy mismo con la inferencia sin servidor de Amazon SageMaker
Para obtener más información sobre la inferencia sin servidor de Amazon SageMaker, visite el Amazon SageMaker página web de inferencia de aprendizaje automático. Aquí están Cuadernos de ejemplo de SageMaker Serverless Inference que le ayudará a empezar de inmediato. Pruébelos desde la consola de SageMaker y díganos lo que piensa.

Antje



Fuente

Written by TecTop

Apple suspende el servidor macOS

Cómo configurar la tienda de aplicaciones de Amazon en Windows 11