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.
- Utilice la IA generativa para aumentar la productividad de los agentes mediante la automatización de la síntesis de llamadas.
- Probabilidad condicional y Teorema de Bayes simplemente explicados
- Entre sueños y realidad Texto generativo y alucinaciones
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!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- OpenAI lidera la Inteligencia Artificial de próxima generación con GPT-4 Turbo
- Los chatbots pueden ‘alucinar’ más a menudo de lo que muchos se dan cuenta
- Pionera de la IA Fei-Fei Li Navegando en el presente y futuro de la IA
- Por qué Prompt Engineering es una moda
- ¿Qué es una Red Generativa Adversarial Condicional?
- Bard El nuevo competidor de ChatGPT
- Por qué abandoné mi doctorado en IA