Transmita respuestas de modelos de lenguaje grandes en Amazon SageMaker JumpStart | Servicios web de Amazon

Transmita respuestas de modelos de lenguaje grandes en Amazon SageMaker JumpStart | Servicios web de Amazon

Estamos muy contentos de anunciar que JumpStart de Amazon SageMaker ahora puede transmitir respuestas de inferencia de modelos de lenguaje grande (LLM). La transmisión de tokens le permite ver el resultado de la respuesta del modelo a medida que se genera en lugar de esperar a que los LLM finalicen la generación de la respuesta antes de que esté disponible para su uso o visualización. La capacidad de transmisión en streaming de SageMaker JumpStart puede ayudarle 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, explicamos cómo implementar y transmitir la respuesta desde un Modelo de instrucción Falcon 7B punto final

Al momento de escribir este artículo, los siguientes LLM disponibles en SageMaker JumpStart admiten transmisión:

  • Mistral AI 7B, Mistral AI 7B Instruir
  • Halcón 180B, Halcón 180B Charla
  • Falcon 40B, Falcon 40B Instruir
  • Falcon 7B, Falcon 7B Instruir
  • Rinna Japonés GPT NeoX 4B Instrucción PPO
  • Rinna Japonés GPT NeoX 3.6B Instrucción PPO

Para buscar actualizaciones en la lista de modelos que admiten streaming en SageMaker JumpStart, busque "huggingface-llm" en Algoritmos integrados con tabla de modelo preentrenada.

Tenga en cuenta que puede utilizar el función de transmisión of Amazon SageMaker alojamiento listo para usar para cualquier modelo implementado usando el contenedor de aprendizaje profundo (DLC) SageMaker TGI como se describe en Anuncio del lanzamiento de nuevos contenedores de inferencia Hugging Face LLM en Amazon SageMaker.

Modelos de base en SageMaker

SageMaker JumpStart brinda acceso a una variedad de modelos de centros de modelos populares, incluidos Hugging Face, PyTorch Hub y TensorFlow Hub, que puede usar dentro de su flujo de trabajo de desarrollo de aprendizaje automático en SageMaker. Los avances recientes en ML han dado lugar a una nueva clase de modelos conocidos como modelos de cimientos, que normalmente se entrenan en miles de millones de parámetros y se pueden adaptar a una amplia categoría de casos de uso, como resumen de texto, generación de arte digital y traducción de idiomas. Debido a que estos modelos son costosos de entrenar, los clientes prefieren utilizar modelos básicos previamente entrenados y ajustarlos según sea necesario, en lugar de entrenar estos modelos ellos mismos. SageMaker proporciona una lista seleccionada de modelos entre los que puede elegir en la consola de SageMaker.

Ahora puede encontrar modelos de base de diferentes proveedores de modelos dentro de SageMaker JumpStart, lo que le permite comenzar a utilizar modelos de base rápidamente. SageMaker JumpStart ofrece modelos básicos basados ​​en diferentes tareas o proveedores de modelos, y usted puede revisar fácilmente las características del modelo y los términos de uso. También puedes probar estos modelos usando un widget de interfaz de usuario de prueba. Cuando desee utilizar un modelo básico a escala, puede hacerlo sin salir de SageMaker utilizando cuadernos prediseñados de proveedores de modelos. Debido a que los modelos están alojados e implementados en AWS, usted confía en que sus datos, ya sea que se utilicen para evaluar o utilizar el modelo a 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 genera. De esta manera, puede ver la respuesta generada de forma incremental en lugar de esperar a que finalice el modelo antes de proporcionar la respuesta completa. La transmisión puede ayudar a permitir una mejor experiencia de usuario porque disminuye la percepción de latencia para el usuario final. Puede comenzar a ver el resultado a medida que se genera y, por lo tanto, puede detener la generación antes de tiempo si el resultado no parece útil para sus propósitos. La transmisión por secuencias puede marcar una gran diferencia, especialmente para consultas de larga duración, porque puede comenzar a ver los resultados a medida que se generan, lo que puede crear una percepción de menor latencia aunque la latencia de un extremo a otro siga siendo la misma.

Al momento de escribir este artículo, puede usar la transmisión en SageMaker JumpStart para modelos que utilizan Hugging Face LLM Inferencia de generación de texto DLC.

Respuesta sin vapor Respuesta con Streaming

Resumen de la solución

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

Puede utilizar el siguiente código para buscar otros modelos en SageMaker JumpStart que admitan transmisión:

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

Obtenemos los siguientes ID de modelo que admiten transmisión:

['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']

Requisitos previos

Antes de ejecutar la computadora portátil, se requieren algunos pasos iniciales para la configuración. Ejecute los siguientes comandos:

%pip install --upgrade sagemaker –quiet

Implementar el modelo

Como primer paso, utilice SageMaker JumpStart para implementar un modelo Falcon 7B Instruct. Para obtener instrucciones completas, consulte El modelo de base Falcon 180B de TII ya está disponible a través de Amazon SageMaker JumpStart. Utilice el siguiente código:

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

Consultar el punto final y transmitir la respuesta

A continuación, cree una carga útil para invocar su punto final implementado. Es importante destacar que la carga útil debe contener el par clave/valor. "stream": True. Esto indica al servidor de inferencia de generación de texto que genere una respuesta de transmisión.

payload = { "inputs": "How do I build a website?", "parameters": {"max_new_tokens": 256}, "stream": True
}

Antes de consultar el punto final, debe crear un iterador que pueda analizar la respuesta del flujo de bytes desde el punto final. 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 tiene un diseño mínimo y es posible que desee ajustar su comportamiento a su caso de uso; por ejemplo, aunque este iterador devuelve cadenas de tokens, los datos de la línea contienen otra información, como las probabilidades de registro de tokens, que podrían ser de interés.

import io
import json class 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 el Boto3 invoke_endpoint_with_response_stream API en el punto final que creó y habilite la transmisión iterando sobre un TokenIterator ejemplo:

import boto3 client = 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="")

Especificando un vacío end parámetro a la print La función permitirá una secuencia visual sin insertar caracteres de nueva línea. Esto produce el siguiente resultado:

Building a website can be a complex process, but it generally involves the following steps: 1. Determine the purpose and goals of your website
2. Choose a domain name and hosting provider
3. Design and develop your website using HTML, CSS, and JavaScript
4. Add content to your website and optimize it for search engines
5. Test and troubleshoot your website to ensure it is working properly
6. Maintain and update your website regularly to keep it running smoothly. There are many resources available online to guide you through these steps, including tutorials and templates. It may also be helpful to seek the advice of a web developer or designer if you are unsure about any of these steps.<|endoftext|>

Puedes usar este código en una computadora portátil u otras aplicaciones como Streamlit o Gradio para ver el streaming en acción y la experiencia que brinda a tus clientes.

Limpiar

Finalmente, recuerde limpiar su modelo implementado y su punto final para evitar incurrir en costos adicionales:

predictor.delete_model()
predictor.delete_endpoint()

Conclusión

En esta publicación, le mostramos cómo utilizar la función de transmisión recientemente lanzada en SageMaker JumpStart. Esperamos que utilice la capacidad de transmisión de tokens para crear aplicaciones interactivas que requieran baja latencia para una mejor experiencia de usuario.


Sobre los autores

Transmita respuestas de modelos de lenguaje grandes en Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Inteligencia de datos. Búsqueda vertical. Ai.Rachna chadha es arquitecto principal de soluciones AI/ML en Cuentas Estratégicas en AWS. Rachna es una optimista que cree que el uso ético y responsable de la IA puede mejorar la sociedad en el futuro y generar prosperidad económica y social. En su tiempo libre, a Rachna le gusta pasar tiempo con su familia, hacer senderismo y escuchar música.

Transmita respuestas de modelos de lenguaje grandes en Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Inteligencia de datos. Búsqueda vertical. Ai.Dr.Kyle Ulrich es un científico aplicado con el Algoritmos integrados de Amazon SageMaker equipo. Sus intereses de investigación incluyen algoritmos escalables de aprendizaje automático, visión artificial, series temporales, no paramétricos bayesianos y procesos gaussianos. Su doctorado es de la Universidad de Duke y ha publicado artículos en NeurIPS, Cell y Neuron.

Transmita respuestas de modelos de lenguaje grandes en Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Inteligencia de datos. Búsqueda vertical. Ai.Dr. Ashish Khetan es científico senior aplicado con algoritmos integrados de Amazon SageMaker y ayuda a desarrollar algoritmos de aprendizaje automático. Obtuvo su doctorado en la Universidad de Illinois Urbana-Champaign. Es un investigador activo en aprendizaje automático e inferencia estadística, y ha publicado muchos artículos en conferencias NeurIPS, ICML, ICLR, JMLR, ACL y EMNLP.

Sello de tiempo:

Mas de Aprendizaje automático de AWS