Transmisión de respuestas de modelos de lenguaje amplios en Amazon SageMaker JumpStart

Transmisión de respuestas de modelos de lenguaje amplios Guía básica en Amazon SageMaker JumpStart

Estamos emocionados de anunciar que Amazon SageMaker JumpStart ahora puede transmitir respuestas de inferencia de modelos de lenguaje grandes (LLM). La transmisión de tokens te permite ver la salida de respuesta del modelo a medida que se genera en lugar de esperar a que los LLM terminen de generar la respuesta antes de que esté disponible para que la uses o la muestres. La capacidad de transmisión en SageMaker JumpStart puede ayudarte a crear aplicaciones con una mejor experiencia de usuario al crear una percepción de baja latencia para el usuario final.

En esta publicación, te mostraremos cómo implementar y transmitir la respuesta desde un endpoint del modelo Falcon 7B Instruct.

Al momento de escribir esto, los siguientes LLMs disponibles en SageMaker JumpStart admiten transmisión:

  • Mistral AI 7B, Mistral AI 7B Instruct
  • Falcon 180B, Falcon 180B Chat
  • Falcon 40B, Falcon 40B Instruct
  • Falcon 7B, Falcon 7B Instruct
  • Rinna Japanese GPT NeoX 4B Instruction PPO
  • Rinna Japanese GPT NeoX 3.6B Instruction PPO

Para obtener actualizaciones sobre la lista de modelos que admiten transmisión en SageMaker JumpStart, busca “huggingface-llm” en la tabla de algoritmos integrados con modelos pre-entrenados.

Ten en cuenta que puedes utilizar la característica de transmisión de Amazon SageMaker directamente para cualquier modelo implementado utilizando el contenedor de aprendizaje profundo de SageMaker TGI (DLC), como se describe en Anunciando el lanzamiento de los nuevos contenedores de inferencia Hugging Face LLM en Amazon SageMaker.

Modelos base en SageMaker

SageMaker JumpStart brinda acceso a una variedad de modelos de populares repositorios de modelos, incluyendo Hugging Face, PyTorch Hub y TensorFlow Hub, que puedes usar dentro de tu flujo de trabajo de desarrollo de ML en SageMaker. Los avances recientes en ML han dado lugar a una nueva clase de modelos conocidos como modelos bases, que generalmente se entrenan con miles de millones de parámetros y se pueden adaptar a una amplia categoría de casos de uso, como la resumenización de texto, la generación de arte digital y la traducción de idiomas. Debido a que estos modelos son costosos de entrenar, los clientes desean utilizar modelos base pre-entrenados existentes y ajustarlos según sea necesario, en lugar de entrenar estos modelos ellos mismos. SageMaker proporciona una lista curada de modelos de los que puedes elegir en la consola de SageMaker.

Ahora puedes encontrar modelos base de diferentes proveedores de modelos dentro de SageMaker JumpStart, lo que te permite comenzar rápidamente con modelos base. SageMaker JumpStart ofrece modelos base basados en diferentes tareas o proveedores de modelos, y puedes revisar fácilmente las características del modelo y los términos de uso. También puedes probar estos modelos utilizando un widget de UI de prueba. Cuando desees usar un modelo base a gran escala, puedes hacerlo sin salir de SageMaker utilizando blocs de notas preconstruidos de los proveedores de modelos. Como los modelos están alojados e implementados en AWS, puedes confiar en que tus datos, ya sea utilizados para evaluar o usar el modelo a gran escala, no se compartirán con terceros.

Transmisión de tokens

La transmisión de tokens permite que la respuesta de inferencia se devuelva a medida que el modelo la va generando. De esta manera, puedes ver la respuesta generada incrementalmente en lugar de esperar a que el modelo termine antes de proporcionar la respuesta completa. La transmisión puede ayudar a mejorar la experiencia del usuario porque disminuye la percepción de latencia para el usuario final. Puedes comenzar a ver la salida a medida que se genera y, por lo tanto, puedes detener la generación temprano si la salida no parece útil para tus propósitos. La transmisión puede marcar una gran diferencia, especialmente para consultas largas, ya que puedes comenzar a ver las salidas a medida que se generan, lo que puede crear una percepción de menor latencia aunque la latencia de extremo a extremo se mantenga igual.

A partir de esta redacción, puedes utilizar el streaming en SageMaker JumpStart para modelos que utilizan el Hugging Face LLM Generación de Texto Inference DLC.

Respuesta sin streaming Respuesta con streaming

Descripción de la solución

En esta publicación, utilizamos el modelo Instruct Falcon 7B para mostrar la capacidad de streaming de SageMaker JumpStart.

Puedes utilizar el siguiente código para encontrar otros modelos en SageMaker JumpStart que admitan streaming:

from sagemaker.jumpstart.notebook_utils import list_jumpstart_modelsfrom sagemaker.jumpstart.filters import Andfilter_value = And("task == llm", "framework == huggingface")model_ids = list_jumpstart_models(filter=filter_value)print(model_ids)

Obtenemos los siguientes IDs de modelos que admiten streaming:

['huggingface-llm-bilingual-rinna-4b-instruction-ppo-bf16', 'huggingface-llm-falcon-180b-bf16', 'huggingface-llm-falcon-180b-chat-bf16', 'huggingface-llm-falcon-40b-bf16', 'huggingface-llm-falcon-40b-instruct-bf16', 'huggingface-llm-falcon-7b-bf16', 'huggingface-llm-falcon-7b-instruct-bf16', 'huggingface-llm-mistral-7b', 'huggingface-llm-mistral-7b-instruct', 'huggingface-llm-rinna-3-6b-instruction-ppo-bf16']

Prerrequisitos

Antes de ejecutar el cuaderno, se requieren algunos pasos iniciales para la configuración. Ejecute los siguientes comandos:

%pip install --upgrade sagemaker –quiet

Implementar el modelo

Como primer paso, utiliza SageMaker JumpStart para implementar un modelo Instruct Falcon 7B. Para obtener instrucciones completas, consulta Modelo básico Falcon 180B de TII ahora disponible a través de Amazon SageMaker JumpStart. Utiliza el siguiente código:

from sagemaker.jumpstart.model import JumpStartModelmy_model = JumpStartModel(model_id="huggingface-llm-falcon-7b-instruct-bf16")predictor = my_model.deploy()

Consultar el endpoint y transmitir la respuesta

A continuación, construye un payload para invocar tu endpoint implementado. Es importante que el payload contenga el par clave/valor "stream": True. Esto indica al servidor de inferencia de generación de texto que genere una respuesta de streaming.

payload = {    "inputs": "¿Cómo construir un sitio web?",    "parameters": {"max_new_tokens": 256},    "stream": True}

Antes de consultar el endpoint, debes crear un iterador que pueda analizar la respuesta de la transmisión de bytes desde el endpoint. Los datos de cada token se proporcionan como una línea separada en la respuesta, por lo que este iterador devuelve un token cada vez que se identifica una nueva línea en el búfer de transmisión. Este iterador está diseñado de manera mínima y es posible que desees ajustar su comportamiento para tu caso de uso; por ejemplo, mientras que este iterador devuelve cadenas de tokens, los datos de línea contienen otra información, como las probabilidades de registro de token, que podrían ser de interés.

import ioimport jsonclass TokenIterator:    def __init__(self, stream):        self.byte_iterator = iter(stream)        self.buffer = io.BytesIO()        self.read_pos = 0    def __iter__(self):        return self    def __next__(self):        while True:            self.buffer.seek(self.read_pos)            line = self.buffer.readline()            if line and line[-1] == ord("\n"):                self.read_pos += len(line) + 1                full_line = line[:-1].decode("utf-8")                line_data = json.loads(full_line.lstrip("data:").rstrip("/n"))                return line_data["token"]["text"]            chunk = next(self.byte_iterator)            self.buffer.seek(0, io.SEEK_END)            self.buffer.write(chunk["PayloadPart"]["Bytes"])

Ahora puedes usar la API invoke_endpoint_with_response_stream de Boto3 en el punto final que creaste y habilitar la transmisión iterando sobre una instancia de TokenIterator:

import boto3client = boto3.client("runtime.sagemaker")response = client.invoke_endpoint_with_response_stream(    EndpointName=predictor.endpoint_name,    Body=json.dumps(payload),    ContentType="application/json",)for token in TokenIterator(response["Body"]):    print(token, end="")

Especificar un parámetro end vacío a la función print activará una transmisión visual sin caracteres de salto de línea. Esto produce la siguiente salida:

Construir un sitio web puede ser un proceso complejo, pero generalmente implica los siguientes pasos:1. Determinar el propósito y los objetivos de tu sitio web2. Elegir un nombre de dominio y un proveedor de alojamiento3. Diseñar y desarrollar tu sitio web utilizando HTML, CSS y JavaScript4. Agregar contenido a tu sitio web y optimizarlo para los motores de búsqueda5. Probar y solucionar problemas en tu sitio web para asegurarte de que funcione correctamente6. Mantener y actualizar tu sitio web regularmente para que funcione sin problemas.Hay muchos recursos disponibles en línea que te guiarán a través de estos pasos, incluyendo tutoriales y plantillas. También puede ser útil buscar el consejo de un desarrollador web o diseñador si tienes dudas sobre alguno de estos pasos.<|endoftext|>

Puedes usar este código en un cuaderno u otras aplicaciones como Streamlit o Gradio para ver la transmisión en acción y la experiencia que proporciona a tus clientes.

Limpieza

Por último, recuerda limpiar tu modelo desplegado y el punto final para evitar incurrir en costos adicionales:

predictor.delete_model()predictor.delete_endpoint()

Conclusión

En este artículo, te mostramos cómo utilizar la nueva característica de transmisión en SageMaker JumpStart. Esperamos que utilices la capacidad de transmisión de tokens para construir aplicaciones interactivas que requieran baja latencia para una mejor experiencia de usuario.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Holograma permite que Marcos de Filipinas hable en Singapur mientras visita Estados Unidos.

Alrededor de una hora después de pronunciar un discurso en California el miércoles, el presidente de Filipinas, Ferdi...

Inteligencia Artificial

Los principales sitios web están bloqueando a los rastreadores de IA para acceder a su contenido.

En la era de la IA, los editores están bloqueando de manera más agresiva los rastreadores porque, por ahora, no hay b...

Inteligencia Artificial

La función de detección de suplantación de identidad protege a las marcas y personalidades de las cuentas falsas en las redes sociales

Una empresa canadiense ha incorporado una función de protección contra la suplantación de identidad en su plataforma ...

Inteligencia Artificial

Este documento de IA presenta técnicas avanzadas para explicaciones detalladas de texto y visual en modelos de alineación de imágenes y texto.

Los modelos de alineación de texto e imagen tienen como objetivo establecer una conexión significativa entre el conte...

Inteligencia Artificial

Protección de datos fundamentales para la aceleración de LLM empresarial con Protopia AI

La publicación describe cómo puedes superar los desafíos de retener la propiedad de los datos y preservar la privacid...