Mejore la investigación de alto valor con Hugging Face y los puntos finales de inferencia asíncrona de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Mejore la investigación de alto valor con Hugging Face y los puntos finales de inferencia asíncrona de Amazon SageMaker

Muchos de nuestros clientes de AWS brindan investigación, análisis e inteligencia comercial como un servicio. Este tipo de investigación e inteligencia comercial permite a sus clientes finales mantenerse a la vanguardia de los mercados y competidores, identificar oportunidades de crecimiento y abordar los problemas de manera proactiva. Por ejemplo, algunos de nuestros clientes del sector de servicios financieros investigan acciones, fondos de cobertura y empresas de gestión de inversiones para ayudarlos a comprender las tendencias e identificar estrategias de cartera. En la industria de la salud, una parte cada vez mayor de la investigación en salud se basa ahora en la información. Gran parte de la investigación implica el análisis de datos que se recopilaron inicialmente para diagnóstico, tratamiento u otros proyectos de investigación, y que ahora se utilizan para nuevos propósitos de investigación. Estas formas de investigación en salud han llevado a una prevención primaria efectiva para evitar nuevos casos, prevención secundaria para la detección temprana y prevención para un mejor manejo de la enfermedad. Los resultados de la investigación no solo mejoran la calidad de vida, sino que también ayudan a reducir los gastos de atención médica.

Los clientes tienden a digerir la información de fuentes públicas y privadas. Luego aplican modelos de procesamiento de lenguaje natural (NLP) establecidos o personalizados para resumir e identificar una tendencia y generar conocimientos basados ​​en esta información. Los modelos de NLP que se utilizan para este tipo de tareas de investigación tratan con modelos grandes y, por lo general, involucran artículos extensos que deben resumirse teniendo en cuenta el tamaño del corpus y puntos finales dedicados, que no están optimizados en términos de costos en este momento. Estas aplicaciones reciben una ráfaga de tráfico entrante en diferentes momentos del día.

Creemos que los clientes se beneficiarían enormemente de la capacidad de escalar a cero y aumentar su capacidad de inferencia según sea necesario. Esto optimiza el costo de la investigación y aún así no compromete la calidad de las inferencias. Esta publicación analiza cómo Hugging Face junto con Amazon SageMaker la inferencia asíncrona puede ayudar a lograr esto.

Puede crear modelos de resumen de texto con múltiples marcos de aprendizaje profundo como TensorFlow, PyTorch y Apache MXNet. Estos modelos suelen tener una gran carga útil de entrada de varios documentos de texto de diferentes tamaños. Los modelos avanzados de aprendizaje profundo requieren un preprocesamiento intensivo en computación antes de la inferencia del modelo. Los tiempos de procesamiento pueden ser de unos pocos minutos, lo que elimina la opción de ejecutar inferencias en tiempo real al pasar cargas útiles a través de una API HTTP. En su lugar, debe procesar las cargas útiles de entrada de forma asíncrona desde un almacén de objetos como Servicio de almacenamiento simple de Amazon (Amazon S3) con colas automáticas y un umbral de concurrencia predefinido. El sistema debe poder recibir notificaciones de estado y reducir costos innecesarios al limpiar los recursos cuando se completan las tareas.

SageMaker ayuda a los científicos y desarrolladores de datos a preparar, crear, entrenar e implementar modelos de aprendizaje automático (ML) de alta calidad rápidamente al reunir un amplio conjunto de capacidades especialmente diseñadas para ML. SageMaker proporciona los contenedores de servicio de modelos de código abierto más avanzados para XGBoost (envase, SDK), Scikit-Learn (envase, SDK), PyTorch (envase, SDK), TensorFlow (envase, SDK) y Apache MXNet (envase, SDK).

SageMaker ofrece cuatro opciones para implementar modelos de ML entrenados para generar inferencias sobre nuevos datos.
  1. Inferencia en tiempo real Los terminales son adecuados para cargas de trabajo que deben procesarse con requisitos de baja latencia del orden de ms a segundos.
  2. Transformación por lotes es ideal para predicciones fuera de línea en grandes lotes de datos.
  3. Inferencia sin servidor de Amazon SageMaker (en modo de vista previa y no recomendado para cargas de trabajo de producción a partir de este escrito) es una opción de inferencia especialmente diseñada que facilita la implementación y la escala de modelos ML. La inferencia sin servidor es ideal para cargas de trabajo que tienen períodos de inactividad entre picos de tráfico y pueden tolerar arranques en frío.
  4. Inferencia asíncrona los puntos finales ponen en cola las solicitudes entrantes. Son ideales para cargas de trabajo donde los tamaños de solicitud son grandes (hasta 1 GB) y los tiempos de procesamiento de inferencias son del orden de minutos (hasta 15 minutos). La inferencia asincrónica le permite ahorrar costos al escalar automáticamente el recuento de instancias a cero cuando no hay solicitudes para procesar.

Resumen de la solución

En esta publicación, desplegamos un modelo PEGASO que fue entrenado previamente para hacer resúmenes de texto de Abrazando la cara a Servicios de alojamiento de SageMaker. Usamos el modelo tal cual de Hugging Face por simplicidad. Sin embargo, puedes ajustar el modelo en función de un conjunto de datos personalizado. También puedes probar otros modelos disponibles en el Hub modelo de cara abrazada. También aprovisionamos un punto final de inferencia asincrónica que aloja este modelo, desde el cual puede obtener predicciones.

El controlador de inferencia del extremo de inferencia asincrónica espera un artículo como carga útil de entrada. El texto resumido del artículo es el resultado. La salida se almacena en la base de datos para analizar las tendencias o se alimenta aguas abajo para análisis adicionales. Este análisis posterior deriva información de datos que ayuda con la investigación.

Demostramos cómo los extremos de inferencia asíncrona le permiten tener notificaciones de simultaneidad y finalización definidas por el usuario. Configuramos el escalado automático de instancias detrás del punto final para reducir a cero cuando el tráfico disminuye y volver a escalar a medida que se llena la cola de solicitudes.

También usamos Reloj en la nube de Amazon métricas para monitorear el tamaño de la cola, el tiempo total de procesamiento y las invocaciones procesadas.

En el siguiente diagrama, mostramos los pasos necesarios para realizar una inferencia mediante un punto final de inferencia asincrónica.

Mejore la investigación de alto valor con Hugging Face y los puntos finales de inferencia asíncrona de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

  1. Nuestro pre-entrenado PEGASUS El modelo ML se aloja primero en el punto final de escalado.
  2. El usuario carga el artículo que se va a resumir en un depósito S3 de entrada.
  3. El punto final de inferencia asincrónica se invoca mediante una API.
  4. Una vez completada la inferencia, el resultado se guarda en el depósito S3 de salida.
  5. An Servicio de notificación simple de Amazon (Amazon SNS) se envía una notificación al usuario notificándole del éxito o fracaso completado.

Crear un punto final de inferencia asincrónica

Creamos el punto final de inferencia asincrónica similar a un punto final alojado en tiempo real. Los pasos incluyen la creación de un modelo de SageMaker, seguido de la configuración y la implementación del punto final. La diferencia entre los dos tipos de puntos finales es que la configuración del punto final de inferencia asíncrona contiene un AsyncInferenceConfig sección. Aquí especificamos la ruta de salida de S3 para los resultados de la invocación del punto final y, opcionalmente, incluimos temas de SNS para notificaciones sobre éxito y falla. También especificamos el número máximo de invocaciones simultáneas por instancia según lo determine el cliente. Ver el siguiente código:

AsyncInferenceConfig={ "OutputConfig": { "S3OutputPath": f"s3://{bucket}/{bucket_prefix}/output", # Optionally specify Amazon SNS topics for notifications "NotificationConfig": { "SuccessTopic": success_topic, "ErrorTopic": error_topic, } }, "ClientConfig": { "MaxConcurrentInvocationsPerInstance": 2 #increase this value up to throughput peak for ideal performance } }

Para obtener detalles sobre la API para crear una configuración de punto final para la inferencia asíncrona, consulte Crear un punto final de inferencia asincrónica.

Invocar el punto final de inferencia asincrónica

La siguiente captura de pantalla muestra un breve artículo que usamos como carga útil de entrada:
Mejore la investigación de alto valor con Hugging Face y los puntos finales de inferencia asíncrona de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

El siguiente código carga el artículo como un input.json archivo a Amazon S3:

sm_session.upload_data( input_location, bucket=sm_session.default_bucket(), key_prefix=prefix, extra_args={"ContentType": "text/plain"})

Usamos el URI de Amazon S3 en el archivo de carga útil de entrada para invocar el punto final. El objeto de respuesta contiene la ubicación de salida en Amazon S3 para recuperar los resultados después de la finalización:

response = sm_runtime.invoke_endpoint_async(EndpointName=endpoint_name, InputLocation=input_1_s3_location)
output_location = response['OutputLocation']

La siguiente captura de pantalla muestra el resumen de publicación de salida de muestra:
Mejore la investigación de alto valor con Hugging Face y los puntos finales de inferencia asíncrona de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Para obtener detalles sobre la API para invocar un punto final de inferencia asincrónica, consulte Invocar un punto final de inferencia asincrónica.

Poner en cola las solicitudes de invocación con concurrencia definida por el usuario

El extremo de inferencia asincrónica pone en cola automáticamente las solicitudes de invocación. Esta es una cola completamente administrada con varias métricas de monitoreo y no requiere ninguna configuración adicional. utiliza el MaxConcurrentInvocationsPerInstance en la configuración de punto final anterior para procesar nuevas solicitudes de la cola después de que se completen las solicitudes anteriores. MaxConcurrentInvocationsPerInstance es el número máximo de solicitudes simultáneas enviadas por el cliente de SageMaker al contenedor del modelo. Si no se proporciona ningún valor, SageMaker elige un valor óptimo para usted.

Instancias de escalado automático dentro del punto final de inferencia asincrónica

Establecemos la política de escalado automático con una capacidad mínima de cero y una capacidad máxima de cinco instancias. A diferencia de los puntos finales alojados en tiempo real, los puntos finales de inferencia asíncrona admiten la reducción de instancias a cero al establecer la capacidad mínima en cero. usamos el ApproximateBacklogSizePerInstance métrica para la configuración de la política de escalado con un retraso en la cola objetivo de cinco por instancia para escalar aún más. Establecemos el período de enfriamiento para ScaleInCooldown a 120 segundos y el ScaleOutCooldown a 120 segundos. El valor para ApproximateBacklogSizePerInstance se elige en función del tráfico y su sensibilidad a la velocidad de escala. Cuanto más rápido escale, menos costos incurrirá, pero es más probable que tenga que escalar nuevamente cuando lleguen nuevas solicitudes. Cuanto más lento escale, más costos incurrirá, pero es menos probable que tenga una solicitud llega cuando estás subescalado.

client = boto3.client('application-autoscaling') # Common class representing Application Auto Scaling for SageMaker amongst other services resource_id='endpoint/' + endpoint_name + '/variant/' + 'variant1' # This is the format in which application autoscaling references the endpoint response = client.register_scalable_target(
ServiceNamespace='sagemaker', #
ResourceId=resource_id,
ScalableDimension='sagemaker:variant:DesiredInstanceCount',
MinCapacity=0,
MaxCapacity=5
) response = client.put_scaling_policy(
PolicyName='Invocations-ScalingPolicy',
ServiceNamespace='sagemaker', # The namespace of the AWS service that provides the resource.
ResourceId=resource_id, # Endpoint name
ScalableDimension='sagemaker:variant:DesiredInstanceCount', # SageMaker supports only Instance Count
PolicyType='TargetTrackingScaling', # 'StepScaling'|'TargetTrackingScaling'
TargetTrackingScalingPolicyConfiguration={ 'TargetValue': 5.0, # The target value for the metric. 'CustomizedMetricSpecification': { 'MetricName': 'ApproximateBacklogSizePerInstance', 'Namespace': 'AWS/SageMaker', 'Dimensions': [{'Name': 'EndpointName', 'Value': endpoint_name }], 'Statistic': 'Average',
}, 'ScaleInCooldown': 120, # ScaleInCooldown - The amount of time, in seconds, after a scale-in activity completes before another scale in activity can start. 'ScaleOutCooldown': 120 # ScaleOutCooldown - The amount of time, in seconds, after a scale-out activity completes before another scale out activity can start.
# 'DisableScaleIn': True|False - indicates whether scale in by the target tracking policy is disabled.
# If the value is true, scale-in is disabled and the target tracking policy won't remove capacity from the scalable resource.
}
)

Para obtener detalles sobre la API para escalar automáticamente un punto final de inferencia asincrónica, consulte el Escale automáticamente un punto final de inferencia asincrónica.

Configurar notificaciones desde el extremo de inferencia asincrónica

Creamos dos temas de SNS separados para notificaciones de éxito y error para cada resultado de invocación de punto final:

sns_client = boto3.client('sns')
response = sns_client.create_topic(Name="Async-Demo-ErrorTopic2")
error_topic = response['TopicArn']
response = sns_client.create_topic(Name="Async-Demo-SuccessTopic2")
success_topic = response['TopicArn']

Otras opciones para las notificaciones incluyen la verificación periódica de la salida del depósito S3 o el uso de notificaciones del depósito S3 para inicializar un AWS Lambda función en la carga de archivos. Las notificaciones de SNS se incluyen en la sección de configuración de terminales, como se describió anteriormente.

Para obtener detalles sobre cómo configurar notificaciones desde un extremo de inferencia asincrónica, consulte Comprobar los resultados de la predicción.

Monitorear el punto final de inferencia asincrónica

Supervisamos el extremo de la inferencia asíncrona con métricas de CloudWatch adicionales integradas específicas para la inferencia asíncrona. Por ejemplo, monitoreamos la longitud de la cola en cada instancia con ApproximateBacklogSizePerInstance y la longitud total de la cola con ApproximateBacklogSize.

Para obtener una lista completa de métricas, consulte Supervisión de puntos finales de inferencia asíncrona.

Podemos optimizar la configuración del endpoint para obtener la instancia más rentable con alto rendimiento. Por ejemplo, podemos usar una instancia con Amazon Elastic Inference o AWS Inferentia. También podemos aumentar gradualmente el nivel de simultaneidad hasta el pico de rendimiento mientras ajustamos otros parámetros del contenedor y del servidor modelo.

Gráficos de CloudWatch

Simulamos un tráfico de 10,000 XNUMX solicitudes de inferencia que fluyen durante un período hacia el extremo de inferencia asincrónica habilitado con la política de escalado automático descrita en la sección anterior.

La siguiente captura de pantalla muestra las métricas de las instancias antes de que las solicitudes comenzaran a llegar. Comenzamos con un punto final en vivo con cero instancias en ejecución:
Mejore la investigación de alto valor con Hugging Face y los puntos finales de inferencia asíncrona de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

El siguiente gráfico muestra cómo el BacklogSize y BacklogSizePerInstance las métricas cambian a medida que se activa el escalado automático y la carga en el punto final se comparte entre varias instancias que se aprovisionaron como parte del proceso de escalado automático.
Mejore la investigación de alto valor con Hugging Face y los puntos finales de inferencia asíncrona de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Como se muestra en la siguiente captura de pantalla, el número de instancias aumentó a medida que aumentaba el número de inferencias:
Mejore la investigación de alto valor con Hugging Face y los puntos finales de inferencia asíncrona de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

La siguiente captura de pantalla muestra cómo la ampliación devuelve el punto final al estado inicial de cero instancias en ejecución:
Mejore la investigación de alto valor con Hugging Face y los puntos finales de inferencia asíncrona de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Limpiar

Una vez completadas todas las solicitudes, podemos eliminar el punto final de forma similar a la eliminación de puntos finales alojados en tiempo real. Tenga en cuenta que si establecemos la capacidad mínima de los puntos finales de inferencia asíncrona en cero, no se incurre en cargos de instancia después de que se reduzca a cero.

Si habilitó el escalado automático para su punto final, asegúrese de anular el registro del punto final como destino escalable antes de eliminarlo. Para hacer esto, ejecute el siguiente código:

response = client.deregister_scalable_target(ServiceNamespace='sagemaker',ResourceId='resource_id',ScalableDimension='sagemaker:variant:DesiredInstanceCount')

Recuerde eliminar su punto final después de usarlo, ya que se le cobrará por las instancias utilizadas en esta demostración.

sm_client.delete_endpoint(EndpointName=endpoint_name)

También debe eliminar los objetos de S3 y los temas de SNS. Si creó otros recursos de AWS para consumir y actuar en las notificaciones de SNS, es posible que también desee eliminarlos.

Conclusión

En esta publicación, demostramos cómo usar la nueva capacidad de inferencia asincrónica de SageMaker para procesar una carga útil de entrada grande típica que forma parte de una tarea de resumen. Para la inferencia, usamos un modelo de Hugging Face y lo implementamos en un punto final de inferencia asincrónica. Explicamos los desafíos comunes del tráfico en ráfagas, los altos tiempos de procesamiento de modelos y las grandes cargas útiles relacionadas con el análisis de investigación. La capacidad inherente del punto final de inferencia asincrónica para administrar colas internas, límites de concurrencia predefinidos, configurar notificaciones de respuesta y reducir automáticamente a cero nos ayudó a abordar estos desafíos. El código completo para este ejemplo está disponible en GitHub.

Para comenzar con la inferencia asincrónica de SageMaker, consulte Inferencia asíncrona.


Acerca de los autores

Mejore la investigación de alto valor con Hugging Face y los puntos finales de inferencia asíncrona de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Dinesh Kumar Subramani es Arquitecto de Soluciones Sénior en el equipo SMB de UKIR, con sede en Edimburgo, Escocia. Se especializa en inteligencia artificial y aprendizaje automático. Dinesh disfruta trabajar con clientes de todas las industrias para ayudarlos a resolver sus problemas con los servicios de AWS. Fuera del trabajo, le encanta pasar tiempo con su familia, jugar al ajedrez y disfrutar de la música de todos los géneros.

Mejore la investigación de alto valor con Hugging Face y los puntos finales de inferencia asíncrona de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Raghu Ramesha es Arquitecto de soluciones de aprendizaje automático en el equipo de servicios de Amazon SageMaker. Se enfoca en ayudar a los clientes a crear, implementar y migrar cargas de trabajo de producción de ML a SageMaker a escala. Se especializa en dominios de aprendizaje automático, IA y visión por computadora, y tiene una maestría en Ciencias de la Computación de UT Dallas. En su tiempo libre le gusta viajar y la fotografía.

Sello de tiempo:

Mas de Aprendizaje automático de AWS