Preparación de los conjuntos de datos de entrenamiento para destilación - Amazon Bedrock

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Preparación de los conjuntos de datos de entrenamiento para destilación

Antes de iniciar un trabajo de personalización de modelos, se debe preparar al menos un conjunto de datos de entrenamiento. Para preparar conjuntos de datos para el modelo personalizado, debe crear archivos .jsonl. Cada línea del archivo es un objeto JSON que se corresponde con un registro. Los archivos que cree deben tener el formato de destilación del modelo y modelo que elija. Los registros que contiene también deben cumplir los requisitos de tamaño.

Proporcione los datos de entrada como peticiones. Amazon Bedrock utiliza los datos de entrada para generar respuestas del modelo instructor y utiliza las respuestas generadas para refinar el modelo aprendiz. Para obtener más información sobre las entradas que utiliza Amazon Bedrock y para elegir la opción que mejor se adapte a su caso de uso, consulte Cómo funciona Destilación de modelos de Amazon Bedrock. Hay un par de opciones para preparar el conjunto de datos de entrada.

nota

Los modelos Amazon Nova tienen diferentes requisitos de destilación. Para obtener más información, consulte Destilación de modelos Amazon Nova.

Los modelos que figuran en la lista solo Modelos y regiones compatibles con Destilación de modelos de Amazon Bedrock. admiten la text-to-text modalidad.

Durante la destilación de modelos, Amazon Bedrock genera un conjunto de datos sintéticos que utiliza para refinar el modelo aprendiz para su caso de uso específico. Para obtener más información, consulte Cómo funciona Destilación de modelos de Amazon Bedrock.

Puede optimizar el proceso de generación de datos sintéticos formateando las peticiones de entrada para el caso de uso que desee. Por ejemplo, si el caso de uso de su modelo destilado fuera la generación aumentada por recuperación (RAG), formatearía las peticiones de forma diferente que si quisiera que el modelo se centrara en los casos de uso de agentes.

Los siguientes son ejemplos de cómo puede formatear las peticiones de entrada para casos de uso de RAG o agentes.

RAG prompt example
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a financial analyst charged with answering questions about 10K and 10Q SEC filings. Given the context below, answer the following question." } ], "messages": [ { "role": "user", "content": [ { "text": "<context>\nDocument 1: Multiple legal actions have been filed against us as a result of the October 29, 2018 accident of Lion Air Flight 610 and the March 10, 2019 accident of Ethiopian Airlines Flight 302.\n</context>\n\n<question>Has Boeing reported any materially important ongoing legal battles from FY2022?</question>" } ] } ] }
Agent prompt example
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": 'You are an expert in composing functions. You are given a question and a set of possible functions. Based on the question, you will need to make one or more function/tool calls to achieve the purpose. Here is a list of functions in JSON format that you can invoke. [ { "name": "lookup_weather", "description: "Lookup weather to a specific location", "parameters": { "type": "dict", "required": [ "city" ], "properties": { "location": { "type": "string", }, "date": { "type": "string", } } } } ]' } ], "messages": [ { "role": "user", "content": [ { "text": "What's the weather tomorrow?" } ] }, { "role": "assistant", "content": [ { "text": "[lookup_weather(location=\"san francisco\", date=\"tomorrow\")]" } ] } ] }

Recopile sus peticiones y guárdelas en formato de archivo .jsonl. Cada registro del JSONL debe usar la siguiente estructura.

  • Incluya el campo schemaVersion que debe tener el valor bedrock-conversion-2024.

  • [Opcional] Incluya una petición del sistema que indique el rol asignado al modelo.

  • En el campo messages, incluya el rol de usuario que contiene la petición de entrada proporcionada al modelo.

  • [Opcional] En el campo messages, incluya el rol de asistente que contiene la respuesta deseada.

Los modelos Anthropic y Meta Llama solo admiten peticiones de conversación de un solo turno, lo que significa que solo puede tener una sola petición de usuario. Los modelos Amazon Nova admiten conversaciones de varios turnos, lo que permite proporcionar varios usuarios y e intercambios de asistentes en un solo registro.

Formato de ejemplo

{ "schemaVersion": "bedrock-conversation-2024", "system": [{ "text": "A chat between a curious User and an artificial intelligence Bot. The Bot gives helpful, detailed, and polite answers to the User's questions." }], "messages": [{ "role": "user", "content": [{ "text": "why is the sky blue" }] }, { "role": "assistant", "content": [{ "text": "The sky is blue because molecules in the air scatter blue light from the Sun more than other colors." }] } ] }}

Validación del conjunto de datos

Antes de ejecutar el trabajo de destilación, puede validar el conjunto de datos de entrada mediante un script de Python.

Al crear un trabajo de destilación, puede hacer que Amazon Bedrock utilice las respuestas de los profesores existentes de los CloudWatch registros de invocación de Logs como datos de formación. Para Amazon Bedrock, un registro de invocación es un registro detallado de las invocaciones del modelo.

Para usar los registros de invocación para la destilación de modelos, habilite el registro de invocación del modelo, utilice una de las operaciones de invocación del modelo y asegúrese de haber configurado un bucket de Amazon S3 como destino de los registros. Para poder iniciar el trabajo de destilación del modelo, debe proporcionar permisos a Amazon Bedrock para acceder a los registros. Para obtener más información sobre la configuración de los registros de invocación, consulte Supervisar la invocación del modelo mediante Amazon CloudWatch Logs.

Con esta opción, puede especificar si desea que Amazon Bedrock utilice únicamente las peticiones o utilice pares de peticiones y respuestas del registro de invocación. Si desea que Amazon Bedrock utilice únicamente peticiones, Amazon Bedrock podría añadir técnicas de síntesis de datos patentados para generar respuestas diversas y de mayor calidad a partir del modelo instructor. Si desea que Amazon Bedrock utilice pares de petición y respuesta, Amazon Bedrock no volverá a generar las respuestas a partir del modelo instructor. Amazon Bedrock utilizará directamente las respuestas del registro de invocación para refinar el modelo aprendiz.

importante

Puede proporcionar un máximo de 15 000 peticiones o pares de solicitud y respuesta a Amazon Bedrock para refinar el modelo aprendiz. Para garantizar que el modelo aprendiz esté refinado para sus requisitos específicos, le recomendamos encarecidamente lo siguiente:

  • Si desea que Amazon Bedrock utilice únicamente peticiones, asegúrese de que se generen al menos 100 pares de petición y respuesta en todos los modelos.

  • Si desea que Amazon Bedrock utilice las respuestas de sus registros de invocación, asegúrese de tener al menos 100 pares de petición y respuesta generados a partir del modelo en sus registros de invocación que coincidan exactamente con el modelo instructor que ha elegido.

Si lo desea, puede añadir metadatos de solicitud a los pares de petición y respuesta del registro de invocación mediante una de las operaciones de invocación del modelo y, posteriormente, utilizarlos para filtrar los registros. Amazon Bedrock puede usar los registros filtrados para refinar el modelo aprendiz.

Para filtrar los registros mediante varios metadatos de solicitud, utilice un único operador booleano AND, OR o NOT. No puede combinar operaciones. Para el filtrado de metadatos de una sola solicitud, utilice el operador booleano NOT.

Adición de metadatos a la peticiones y respuestas de sus registros de invocación para la destilación de modelos

El registro de invocación del modelo recopila los registros de invocación, los datos de entrada del modelo (peticiones) y los datos de salida del modelo (respuestas) para todas las invocaciones usadas en Amazon Bedrock. Si ha activado el registro, puede recopilar los registros siempre que interactúe con los modelos fundacionales de Amazon Bedrock mediante cualquier operación de la API Invoke o Converse. Si desea que Amazon Bedrock utilice las peticiones y las respuestas asociadas del registro de invocación para refinar el modelo aprendiz, debe conceder a Amazon Bedrock acceso a estos registros. El uso de las respuestas que un modelo ya ha generado permite refinar con mayor rapidez el modelo aprendiz. El uso de las respuestas de los registros de invocación también hace que la destilación de modelos sea más rentable; sin embargo, no se añaden las técnicas de síntesis de datos patentados de Amazon Bedrock, lo que puede resultar en un modelo destilado de mayor rendimiento.

Con los registros de invocación, puede identificar los pares de petición y respuesta que desea que Amazon Bedrock utilice para la destilación de modelos. Estos pares de petición y respuesta pueden ser para casos de uso específicos. Para poder identificar los pares de petición y respuesta que se van a utilizar en la destilación, debe añadir una cadena de metadatos de solicitud a los pares de petición y respuesta cuando invoque un modelo o utilice la operación de la API Converse. Los metadatos de la solicitud se proporcionan en el formato: "priority" : "High".

A medida que continúe interactuando con el modelo mediante las operaciones de la API Invoke o Converse, las interacciones y los metadatos de la solicitud se registran en los registros de invocación. El siguiente es un ejemplo de un registro de invocación de una llamada a InvokeModel que muestra los metadatos de la solicitud:

{ "schemaType": "ModelInvocationLog", "schemaVersion": "1.0", "timestamp": "2024-09-11T17:16:18Z", "accountId": "XXXXX", "identity": { "arn": "arn:aws:sts::XXXXXXX:assumed-role/Admin/XXXXXX" }, "region": "us-east-1", "requestId": "7ee514f3-9eff-467c-af75-8fd564ce58e5", "operation": "InvokeModel", "modelId": "meta.llama3-1-405b-instruct-v1:0", "input": { "inputContentType": "application/json", "inputBodyJson": { "prompt": "story of two dogs", "max_tokens_to_sample": 300 }, "inputTokenCount": 13 }, "output": { "outputContentType": "application/json", "outputBodyJson": { "type": "completion", "completion": " Here is a story about two dogs:\n\nRex and Charlie were best friends who lived next door to each other. Every morning, their owners would let them out into the backyard to play. Rex was a golden retriever with long, shaggy fur. He loved to run and chase sticks. Charlie was a corgi with short legs and a big smile. He was happy just sniffing the grass and rolling around. \n\nThe two dogs spent every day playing together. Rex would grab a stick and bring it over to Charlie, wagging his tail excitedly. Charlie would take the other end of the stick in his mouth and they'd have a friendly game of tug-of-war. After tiring themselves out, they'd flop down in the warm sunshine for a nap. \n\nAt lunchtime, their owners would call them in for food. Rex would gobble up his kibble hungrily while Charlie ate his at a more leisurely pace. After lunch, it was right back outside for more playtime. The afternoon sunbeams would light up their fur as they chased each other around the yard. \n\nWhen it started getting late, their owners called them in for the night. Rex and Charlie would head inside, tired but happy after another fun day of play. After slurping up fresh water from their bowls, they'd curl up on their beds, Rex's fluffy golden tail tucked over his nose and little", "stop_reason": "max_tokens", "stop": null }, "outputTokenCount": 300 }, "requestMetadata": { "project": "CustomerService", "intent": "ComplaintResolution", "priority": "High" } }

Puede especificar el registro de invocación como origen de datos de entrada al iniciar un trabajo de destilación de modelos. Puede iniciar el trabajo de destilación de modelos en la consola de Amazon Bedrock mediante la API o AWS el AWS CLI SDK.

Requisitos para proporcionar los metadatos de una solicitud

Los metadatos de solicitud deben cumplir los siguientes requisitos:

  • Se proporcionan en el formato JSON key:value.

  • El par de clave y valor debe ser una cadena de 256 caracteres como máximo.

  • Proporcione un máximo de 16 pares de clave-valor.

Uso de filtros de metadatos de solicitud

Puede añadir filtros a los metadatos de solicitud para elegir de forma selectiva qué pares de petición-respuesta incluir en la destilación para el refinamiento del modelo aprendiz. Por ejemplo, es posible que desee incluir solo aquellos con metadatos de solicitud «proyecto»: "CustomerService" y «prioridad»: «Alta» solicitud.

Para filtrar los registros usando varios metadatos de solicitud, utilice un único operador booleano AND, OR o NOT. No puede combinar operaciones. Para el filtrado de metadatos de una sola solicitud, utilice el operador booleano NOT.

Puede especificar el registro de invocación como origen de datos de entrada y qué filtros utilizar para seleccionar los pares de petición y respuesta al iniciar un trabajo de destilación de modelos. Puede iniciar el trabajo de destilación de modelos en la consola de Amazon Bedrock mediante la API o AWS el AWS CLI SDK. Para obtener más información, consulte Envío de un trabajo de destilación de modelos en Amazon Bedrock.

Validación del conjunto de datos

Antes de ejecutar el trabajo de destilación, puede validar el conjunto de datos de entrada mediante un script de Python.