[ad_1]
El éxito de las aplicaciones de IA generativa en una variedad de industrias ha atraído la atención y el interés de empresas de todo el mundo que desean replicar y superar los logros de la competencia o resolver casos de uso nuevos y apasionantes. Estos clientes buscan modelos básicos como TII Falcon, Stable Diffusion XL o GPT-3.5 de OpenAI como motores que impulsen la innovación generativa de IA.
Los modelos básicos son una clase de modelos de IA generativa que son capaces de comprender y generar contenido similar al humano gracias a las grandes cantidades de datos no estructurados con los que han sido entrenados. Estos modelos han revolucionado diversas tareas de visión por computadora (CV) y procesamiento del lenguaje natural (NLP), incluida la generación de imágenes, la traducción y la respuesta a preguntas. Sirven como componentes básicos para muchas aplicaciones de IA y se han convertido en una parte crucial en el desarrollo de sistemas inteligentes avanzados.
Sin embargo, el uso de modelos de cimentación puede plantear desafíos importantes, especialmente en lo que respecta a los costos y los requisitos de recursos. Estos modelos son conocidos por su tamaño, que a menudo oscila entre cientos de millones y miles de millones de parámetros. Su tamaño requiere amplios recursos informáticos, incluido hardware potente y una capacidad de almacenamiento significativa. De hecho, las implementaciones del modelo base normalmente requieren al menos una (a menudo varias) GPU para manejar la carga informática de manera eficiente. Por ejemplo, el modelo TII Falcon-40B Instruct requiere al menos una instancia ml.g5.12xlarge para cargarse correctamente en la memoria, pero funciona mejor con instancias más grandes. Como resultado, el retorno de la inversión (ROI) de implementar y mantener estos modelos puede ser demasiado bajo para demostrar valor comercial, particularmente durante los ciclos de desarrollo o las cargas máximas. Esto se debe a los costos continuos en los que incurren las instancias impulsadas por GPU durante sesiones largas, posiblemente las 24 horas del día, los 7 días de la semana.
A principios de este año anunciamos Amazon Bedrock, una API sin servidor para acceder a modelos base de Amazon y nuestros socios de IA generativa. Aunque actualmente se encuentra en versión preliminar privada, su API sin servidor le permite utilizar modelos base de Amazon, Anthropic, Stability AI y AI21 sin tener que proporcionar puntos finales usted mismo. Sin embargo, han proliferado modelos de código abierto de comunidades como Hugging Face y no todos están disponibles a través de Amazon Bedrock.
En esta publicación, abordamos estas situaciones y solucionamos el problema del alto costo mediante la implementación de grandes modelos base para puntos finales asincrónicos de Amazon SageMaker JumpStart de Amazon SageMaker. Esto puede ayudar a reducir el costo de la arquitectura, ya que el punto final solo puede ejecutarse cuando hay solicitudes en la cola y solo por un corto tiempo de vida, mientras se reduce a cero cuando no hay solicitudes esperando ser atendidas. Eso suena genial para muchos casos de uso. Sin embargo, un punto final que se haya reducido a cero dará como resultado un tiempo de inicio en frío antes de que pueda proporcionar conclusiones.
descripción general de la solución
El siguiente diagrama ilustra la arquitectura de nuestra solución.
La arquitectura que proporcionamos es muy simple:
- La interfaz de usuario es una computadora portátil que se puede reemplazar con una interfaz de usuario web basada en Streamlit o tecnología similar. En nuestro caso, la computadora portátil es una computadora portátil de Amazon SageMaker Studio que se ejecuta en una instancia ml.m5.large con el kernel de CPU PyTorch 2.0 Python 3.10.
- El cuaderno consulta el punto final de tres maneras: SageMaker Python SDK, AWS SDK para Python (Boto3) y LangChain.
- El punto final se ejecuta de forma asincrónica en SageMaker y en el punto final implementamos el modelo Falcon-40B Instruct. Representa el estado actual del arte con respecto a los modelos de Instruct y está disponible en SageMaker JumpStart. Con una única llamada API, podemos implementar el modelo en el punto final.
¿Qué es la inferencia asincrónica de SageMaker?
La inferencia asincrónica de SageMaker es una de las cuatro opciones de implementación en SageMaker, junto con los puntos finales en tiempo real, la inferencia por lotes y la inferencia sin servidor. Para obtener más información sobre las diferentes opciones de implementación, consulte Implementación de modelos para inferencia.
La inferencia asincrónica de SageMaker pone en cola las solicitudes entrantes y las procesa de forma asincrónica. Esto hace que esta opción sea ideal para solicitudes con tamaños de carga grandes de hasta 1 GB, tiempos de procesamiento prolongados y requisitos de latencia casi en tiempo real. Sin embargo, el principal beneficio que ofrece cuando se trata de modelos base grandes, especialmente durante una prueba de concepto (POC) o durante el desarrollo, es la capacidad de configurar la inferencia asincrónica para escalar a cero recuentos de instancias cuando no hay solicitudes, hay un proceso para esto y esto ahorra costos. Para obtener más información sobre la inferencia asincrónica de SageMaker, consulte Inferencia asincrónica. El siguiente diagrama ilustra esta arquitectura.
Para proporcionar un punto final de inferencia asincrónica, debe crear uno AsyncInferenceConfig
Objeto. cuando creas AsyncInferenceConfig
sin especificar sus argumentos, el valor predeterminado S3OutputPath
será s3://sagemaker-{REGION}-{ACCOUNTID}/async-endpoint-outputs/{UNIQUE-JOB-NAME}
Y S3FailurePath
será s3://sagemaker-{REGION}-{ACCOUNTID}/async-endpoint-failures/{UNIQUE-JOB-NAME}
.
¿Qué es SageMaker JumpStart?
Nuestro modelo proviene de SageMaker JumpStart, una característica de SageMaker que acelera el proceso de aprendizaje automático (ML) al ofrecer modelos previamente entrenados, plantillas de soluciones y cuadernos de muestra. Proporciona acceso a una amplia gama de modelos previamente entrenados para diferentes tipos de problemas, para que pueda comenzar sus tareas de aprendizaje automático sobre una base sólida. SageMaker JumpStart también proporciona plantillas de soluciones para casos de uso comunes y cuadernos de muestra para el aprendizaje. Con SageMaker JumpStart, puede reducir el tiempo y el esfuerzo necesarios para iniciar sus proyectos de ML con presentaciones de soluciones con un solo clic y amplios recursos para una experiencia práctica de ML.
La siguiente captura de pantalla muestra un ejemplo de algunos de los modelos disponibles en la interfaz de usuario de SageMaker JumpStart.
Implementar el modelo
Nuestro primer paso es implementar el modelo en SageMaker. Para hacer esto, podemos usar la interfaz de usuario JumpStart de SageMaker o el SDK de Python de SageMaker, que proporciona una API que nos permite implementar el modelo en el punto final asíncrono:
Esta llamada puede tardar unos 10 minutos. Durante este tiempo, el punto final se enciende, el contenedor se descarga en el punto final junto con los artefactos del modelo, SageMaker JumpStart carga la configuración del modelo y luego el punto final asíncrono se expone a través de un punto final DNS. Para garantizar que nuestro punto final se pueda reducir a cero, debemos configurar el escalado automático en el punto final asíncrono mediante Application Auto Scaling. Primero debe registrar su variante de punto final con Application Auto Scaling, definir una política de escalado y luego aplicar la política de escalado. En esta configuración utilizamos una métrica personalizada con CustomizedMetricSpecification
llamado ApproximateBacklogSizePerInstance
, como se muestra en el siguiente código. Para obtener una lista detallada de las métricas de Amazon CloudWatch disponibles con su punto final de inferencia asincrónica, consulte Monitoreo con CloudWatch.
Puede verificar que esta política se configuró correctamente navegando a SageMaker Console y puntos finales bajo inferencia en el panel de navegación y busque el punto final que acabamos de implementar.
Llamar al punto final asincrónico
Para invocar el punto final, debe colocar la carga útil de solicitud en Amazon Simple Storage Service (Amazon S3) y proporcionar un puntero a esa carga útil como parte del InvokeEndpointAsync
Consulta. Cuando se llama, SageMaker pone en cola la solicitud para su procesamiento y devuelve un identificador y una ubicación de salida en respuesta. Durante el procesamiento, SageMaker coloca el resultado en la ubicación de Amazon S3. Opcionalmente, puede optar por recibir notificaciones de éxito o error mediante Amazon Simple Notification Service (Amazon SNS).
SDK de Python de SageMaker
Una vez completada la implementación, se devuelve a AsyncPredictor
Objeto. Para realizar inferencia asincrónica, debe cargar y utilizar datos en Amazon S3 predict_async()
Método con el URI de S3 como entrada. se devuelve una AsyncInferenceResponse
objeto y puedes comprobar el resultado con el get_response()
Método.
Alternativamente, si verifica regularmente un resultado y desea devolverlo al generarlo, use el predict()
Método. Usamos este segundo método en el siguiente código:
boto3
Ahora exploremos eso invoke_endpoint_async
Método de Boto3 sagemaker-runtime
Cliente. Permite a los desarrolladores llamar de forma asincrónica a un punto final de SageMaker y proporcionar un token para rastrear el progreso y luego recuperar la respuesta. Boto3 no proporciona una manera de esperar a que se complete la inferencia asincrónica como lo hace el SDK de SageMaker Python get_result()
Operación. Por lo tanto, aprovechamos el hecho de que Boto3 almacena la salida de inferencia en Amazon S3. response["OutputLocation"]
. Podemos usar la siguiente función para esperar a que el archivo de inferencia se escriba en Amazon S3:
Con esta función ahora podemos consultar el punto final:
LangChain
LangChain is an open-source framework launched in October 2022 by Harrison Chase. It simplifies the development of applications using large language models (LLMs) by providing integrations with various systems and data sources. LangChain allows for document analysis, summarization, chatbot creation, code analysis, and more. It has gained popularity, with contributions from hundreds of developers and significant funding from venture firms. LangChain enables the connection of LLMs with external sources, making it possible to create dynamic, data-responsive applications. It offers libraries, APIs, and documentation to streamline the development process.
LangChain provides libraries and examples for using SageMaker endpoints with its framework, making it easier to use ML models hosted on SageMaker as the “brain” of the chain. To learn more about how LangChain integrates with SageMaker, refer to the SageMaker Endpoint in the LangChain documentation.
One of the limits of the current implementation of LangChain is that it doesn’t support asynchronous endpoints natively. To use an asynchronous endpoint to LangChain, we have to define a new class, SagemakerAsyncEndpoint
, that extends the SagemakerEndpoint
class already available in LangChain. Additionally, we provide the following information:
- The S3 bucket and prefix where asynchronous inference will store the inputs (and outputs)
- A maximum number of seconds to wait before timing out
- An
updated _call()
function to query the endpoint withinvoke_endpoint_async()
instead ofinvoke_endpoint()
- A way to wake up the asynchronous endpoint if it’s in cold start (scaled down to zero)
To review the newly created SagemakerAsyncEndpoint
, you can check out the sagemaker_async_endpoint.py
file available on GitHub.
Limpiar
Cuando haya terminado de probar la generación de conclusiones desde el punto final, recuerde eliminar el punto final para evitar costos adicionales:
Diploma
Cuando se utilizan modelos de cimentaciones grandes como el TII Falcon, la optimización de costes es de crucial importancia. Estos modelos requieren hardware potente y una capacidad de almacenamiento significativa, lo que genera altos costos de infraestructura. La inferencia asincrónica de SageMaker, una opción de implementación que procesa solicitudes de forma asincrónica, reduce los costos al escalar el recuento de instancias a cero cuando no hay solicitudes pendientes. En esta publicación, mostramos cómo implementar grandes modelos básicos de SageMaker JumpStart en puntos finales asincrónicos de SageMaker. Proporcionamos ejemplos de código utilizando SageMaker Python SDK, Boto3 y LangChain para demostrar diferentes métodos para llamar a puntos finales asincrónicos y recuperar resultados. Estas técnicas permiten a los desarrolladores e investigadores optimizar los costos mientras aprovechan las capacidades de los modelos base para sistemas avanzados de comprensión del lenguaje.
Para obtener más información sobre la inferencia asincrónica y SageMaker JumpStart, consulte los siguientes artículos:
Sobre el Autor
David Gallitelli es un arquitecto de soluciones especializado para AI/ML en la región EMEA. Tiene su base en Bruselas y trabaja en estrecha colaboración con clientes en los países del Benelux. Ha sido desarrollador desde pequeño y empezó a programar a los 7 años. Comenzó a aprender AI/ML en la universidad y desde entonces se enamoró de ello.
[ad_2]