Preparación de datos para el entrenamiento del modelo de IA de Mosaico
Importante
Esta característica se encuentra en versión preliminar pública en las siguientes regiones: centralus
, eastus
, eastus2
, northcentralus
y westus
.
En este artículo se describen los formatos de archivo de datos de entrenamiento y evaluación aceptados para las tareas admitidas: ajuste supervisado, finalización del chat, y entrenamiento previo continuado para Mosaic AI Model Training (antes Foundation Model Training).
En el cuaderno siguiente se muestra cómo validar los datos. Está diseñado para ejecutarse de forma independiente antes de comenzar el entrenamiento. El propósito de este cuaderno es validar que los datos tienen el formato correcto para el entrenamiento del modelo de IA de Mosaico. También incluye código para tokenizar el conjunto de datos sin procesar para ayudarle a calcular los costes durante la ejecución de entrenamientos.
Validación de datos para el cuaderno de ejecuciones de entrenamiento
Preparar datos para el ajuste supervisado
Para tareas de ajuste supervisado, los datos de entrenamiento pueden estar en uno de los esquemas siguientes:
Pares de solicitud y respuesta.
{"prompt": "your-custom-prompt", "response": "your-custom-response"}
Pares de solicitud y finalización.
{"prompt": "your-custom-prompt", "completion": "your-custom-response"}
Nota:
La solicitud-respuesta y la finalización del mensaje no son plantilla, por lo que cualquier plantillas específica del modelo, como Mistral’s indicar al formato debe realizarse como un paso de preprocesamiento.
Los formatos de datos aceptados son:
Un volumen del catálogo de Unity con un archivo
.jsonl
. Los datos de entrenamiento deben estar en formato JSONL, donde cada línea es un objeto JSON válido. A continuación se muestra un ejemplo de consulta y de par de respuesta:{"prompt": "What is Databricks?","response": "Databricks is a cloud-based data engineering platform that provides a fast, easy, and collaborative way to process large-scale data."}
Una tabla Delta que cumpla uno de los esquemas aceptados mencionados anteriormente. Para las tablas Delta, es necesario proporcionar un parámetro
data_prep_cluster_id
para el procesamiento de datos. Consulte Configuración de una ejecución de entrenamiento.Un conjunto de datos público de Hugging Face.
Si se usa un conjunto de datos público de Hugging Face como datos de entrenamiento, es necesario especificar la ruta de acceso completa con la división. Por ejemplo:
mosaicml/instruct-v3/train and mosaicml/instruct-v3/test
. Esto incluye los conjuntos de datos que tengan diferentes esquemas de división. No se admiten los conjuntos de datos anidados de Hugging Face.Para ver un ejemplo más detallado, consulte el conjunto de datos
mosaicml/dolly_hhrlhf
sobre Hugging Face.Las siguientes filas de datos de ejemplo son del conjunto de datos
mosaicml/dolly_hhrlhf
.{"prompt": "Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: what is Databricks? ### Response: ","response": "Databricks is a cloud-based data engineering platform that provides a fast, easy, and collaborative way to process large-scale data."} {"prompt": "Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: Van Halen famously banned what color M&Ms in their rider? ### Response: ","response": "Brown."}
Preparar los datos para la finalización de chat
Para tareas de finalización de chat, los datos con formato de chat deben estar en un formato de archivo .jsonl
, donde cada línea es un objeto JSON independiente que representa una única sesión de chat. Cada sesión de chat se representa como un objeto JSON con una única clave, "messages"
, que se asigna a una matriz de objetos de mensaje. Para entrenar con datos de chat, simplemente proporcione el archivo task_type = 'CHAT_COMPLETION'
.
Los mensajes en formato de chat se formatean automáticamente según la plantilla de chat del modelo, por lo que no es necesario agregar tokens de chat especiales para señalar manualmente el comienzo o el final de un turno de chat. Un ejemplo de un modelo que usa una plantilla de chat personalizada es el de instrucción de Mistral.
Nota:
Los modelos mistrales no aceptan system
roles en sus formatos de datos.
Cada objeto de mensaje de la matriz representa un único mensaje en la conversación y tiene la siguiente estructura:
role
: cadena que indica el autor del mensaje. Los valores posibles son"system"
,"user"
y"assistant"
. Si el rol fuerasystem
, deberá ser el primer chat en la lista de mensajes. Debe haber al menos un mensaje con el rol"assistant"
y cualquier mensaje después del mensaje del sistema (opcional) debe alternar los roles de usuario y asistente. No debe haber dos mensajes adyacentes con el mismo rol. El último mensaje de la matriz"messages"
debe tener el rol"assistant".
content
: cadena que contiene el texto del mensaje.
A continuación, se muestra un ejemplo de datos con formato de chat:
{"messages": [
{"role": "system", "content": "A conversation between a user and a helpful assistant."},
{"role": "user", "content": "Hi there. What's the capital of the moon?"},
{"role": "assistant", "content": "This question doesn't make sense as nobody currently lives on the moon, meaning it would have no government or political institutions. Furthermore, international treaties prohibit any nation from asserting sovereignty over the moon and other celestial bodies."},
]
}
Preparación de datos para un entrenamiento previo continuo
Para tareas de entrenamiento previo continuo, los datos de entrenamiento son los datos de texto no estructurado. Los datos de entrenamiento deben estar en un volumen de Unity Catalog que contenga archivos .txt
. Cada archivo .txt
se trata como una muestra única. Si los archivos de .txt
están en una carpeta de volumen de Unity Catalog, esos archivos también se obtienen para los datos de entrenamiento. Se omiten los archivos que no seantxt
del volumen. Consulte Cargar archivos en un volumen de Unity Catalog.
En la imagen siguiente se muestra el ejemplo .txt
archivos en un volumen de Unity Catalog. Para usar estos datos en la configuración continua de ejecución previa al entrenamiento, establezca train_data_path = "dbfs:/Volumes/main/finetuning/cpt-data"
.