Preparación de los datos para optimizar un modelo de finalización de chat
El ajuste preciso implica combinar un modelo de base adecuado para usarlo como base y con un conjunto de datos de entrenamiento que incluye indicaciones de ejemplo y respuestas de las que el modelo puede aprender.
Cuando decida que desea optimizar un modelo de lenguaje, debe identificar el conjunto de datos que puede usar para optimizarlo.
De forma similar a cualquier modelo de aprendizaje automático, la calidad del conjunto de datos tiene un gran efecto en la calidad del modelo. Aunque se necesitan menos datos que cuando se entrena un modelo lingüístico desde cero, es posible que aún se necesiten datos suficientes para maximizar la coherencia del comportamiento del modelo deseado. La cantidad de datos que necesita depende de su caso de uso.
Al optimizar un modelo de lenguaje para la finalización del chat, los datos que se usan para optimizar un modelo son una colección de conversaciones de ejemplo. Más concretamente, los datos deben contener tres componentes:
- Mensaje del sistema
- El mensaje del usuario
- Respuesta del asistente
Las tres variables se unen en un archivo JSON Lines o JSONL. Por ejemplo, una línea de este conjunto de datos podría ser similar a la siguiente:
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
El conjunto de datos debe mostrar el comportamiento ideal del modelo. Puede crear este conjunto de datos en función del historial de chat de una aplicación de chat que tenga. Algunas cosas que hay que tener en cuenta cuando se usan datos reales son:
- Quite cualquier información personal o confidencial.
- No solo hay que centrarse en crear un gran conjunto de datos de entrenamiento, sino también en asegurarse de que el conjunto de datos incluye un conjunto diverso de ejemplos.
Puede incluir varios turnos de una conversación en una sola línea del conjunto de datos. Si desea optimizar solo mensajes del asistente específicos, puede usar opcionalmente el par clave-valor weight. Cuando el peso se establece en 0, el mensaje se omite; cuando se establece en 1, el mensaje se incluye para el entrenamiento.
Un ejemplo de un formato de archivo de chat de varios turnos con pesos:
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
Al preparar el conjunto de datos para optimizar un modelo de lenguaje, debe comprender los comportamientos deseados del modelo, crear un conjunto de datos en formato JSONL y asegurarse de que los ejemplos que incluye son de alta calidad y diversos. Al preparar el conjunto de datos, tiene una mayor probabilidad de que el modelo optimizado mejore el rendimiento de la aplicación de chat.