Qué contiene un conjunto de datos público
El Hugging Face Hub aloja cientos de miles de conjuntos de datos públicos, desde unos pocos cientos de filas hasta miles de millones. Un conjunto de datos es una tabla: cada fila es un elemento, cada columna un campo. Los conjuntos de datos más grandes se dividen en configuraciones (subconjuntos, como un idioma) y particiones (generalmente entrenamiento, validación y prueba). El Hub no prescribe el significado de las columnas, por lo que cada conjunto de datos está diseñado por sus autores: una lista de turnos de chat en uno, una columna de preguntas y una de respuestas en otro, una página web completa por fila en un tercero.
Solo algunas de esas estructuras pueden convertirse en chats de entrenamiento. Un conjunto de datos de matemáticas con una pregunta y una respuesta desarrollada puede hacerlo; un conjunto de datos de tuits etiquetados con una emoción no puede, porque indica qué es un texto, no cómo responder a él. Antes de importar, Scalata analiza la partición que usted elija y sugiere los formatos adecuados.
Qué columna pregunta y cuál responde
Para convertirse en un chat de entrenamiento, cada fila necesita una parte que dice el usuario y una parte que responde el asistente. En la mayoría de los conjuntos de datos, los nombres de las columnas lo revelan: prompt, question, instruction o query por un lado; response, answer, output o completion por el otro. Algunos conjuntos de datos añaden una columna de contexto —un pasaje sobre el que trata la pregunta, como en SQuAD— o un prompt del sistema. Otras columnas, como un id, una dirección web o una categoría, describen la fila y no participan en el chat.
| Columna | Contenido | Rol |
|---|---|---|
instruction | texto · corto | prompt |
context | texto · largo, a menudo vacío | contexto, añadido debajo de la pregunta |
response | texto · largo | respuesta |
category | texto corto · pocos valores distintos | no utilizado |
Scalata sugiere los formatos que se adaptan al conjunto de datos que elija, con un breve motivo para cada uno. Si prefiere otra opción, Elegir columnas manualmente le permite seleccionar cualquier formato y columnas; las filas que no se ajusten se omitirán.
Los formatos
Una columna contiene una lista de turnos, como pares de role/content o al estilo ShareGPT con from/value. Es el formato más parecido a un chat de entrenamiento; las conversaciones de múltiples turnos conservan sus múltiples turnos.
Una columna de pregunta y una columna de respuesta, opcionalmente con una columna de contexto que se añade debajo de la pregunta. Cada fila se convierte en un chat de un solo turno.
Una instruction, un input opcional al que se aplica y un output. Recibe su nombre del conjunto de datos Alpaca de Stanford, que popularizó este formato. La instrucción y la entrada juntas se convierten en el mensaje del usuario.
instruction: Summarise the customer's complaint in one sentence.
input: I ordered the blue model on the 3rd, was charged twice and still have no tracking number.
output: The customer was charged twice for an order that has not shipped.Una respuesta mejor (chosen) y una peor (rejected) para el mismo prompt, o dos conversaciones completas que solo difieren al final. Estas filas se convierten en pares de preferencia para DPO en lugar de respuestas individuales.
prompt: Can I change my delivery address after ordering?
chosen: Yes, until the parcel ships. Open Orders → your order → Edit address…
rejected: Please contact support.Una columna de texto contiene una conversación completa con etiquetas de los interlocutores, que Scalata divide en turnos. El texto anterior a la primera etiqueta se convierte en el prompt del sistema.
### Human: … ### Assistant: …
Human: … Assistant: …
User: … Assistant: …
<|system|> … <|user|> … <|assistant|> … (also <|im_start|>user)
[INST] <<SYS>> … <</SYS>> … [/INST] … (Llama 2 style)
### Instruction: … ### Input: … ### Response: …
Question: … Answer: …Texto largo sin preguntas, respuestas ni etiquetas de interlocutores: páginas web, artículos, libros. No hay nada a lo que responder, por lo que no sirve para el entrenamiento de chats, pero es útil para el preentrenamiento continuo.
Tres resultados
Se muestra con el motivo. Un tuit etiquetado como «alegría» indica qué es un texto, no cómo responder a él.
- Chats. Cada fila se convierte en un ejemplo, listo para el entrenamiento supervisado (o DPO, para las filas de preferencia).
- Texto plano. Las filas se agrupan en documentos y se añaden a los Documentos del conjunto de datos, listos para el preentrenamiento continuo o para generar preguntas y respuestas a partir de ellos.
- No compatible, con el motivo. Los casos típicos son datos de clasificación (un texto breve y una etiqueta, como cardiffnlp/tweet_eval), solo imágenes o audio, o tablas de números.
- Usted elige el conjunto de datos y su división de entrenamiento, aproximadamente 15 000 pares de instrucciones y respuestas escritos por humanos.
- El conjunto de datos tiene cuatro columnas:
instruction(corta),context(larga, a menudo vacía),response(larga) ycategory(un puñado de etiquetas repetidas). - Prompt y respuesta es la opción natural:
instruction→ prompt,response→ respuesta,contextse añade debajo de la pregunta.categoryse omite. - Al importar 2000 filas, estas se convierten en 2000 ejemplos de un solo turno. Si vuelve a importar más adelante con 5000 filas, solo se añadirán las 3000 nuevas.
Cómo utilizar bien los datos públicos
- Lea primero la ficha del conjunto de datos. En ella se indica la licencia, la procedencia de los datos y los problemas conocidos. Algunos conjuntos de datos no pueden utilizarse con fines comerciales.
- Priorice la similitud sobre el tamaño. Un conjunto de datos público enseña su propio estilo y temas. Unos pocos miles de filas que se asemejen a su caso de uso suelen ser más útiles que uno general enorme.
- Combínelo con sus propios datos. Los chats públicos son una buena base para el comportamiento general; sus propios chats enseñan lo que es específico de su organización.
- Revise algunos ejemplos importados antes del entrenamiento, para confirmar que los roles se asignaron donde esperaba.
Errores comunes
- Importar un conjunto de datos de clasificación y esperar que enseñe al modelo cómo responder.
- No leer la licencia en la ficha del conjunto de datos antes de entrenar un modelo que utilizará comercialmente.
- Forzar un mapeo manual que asigne la columna de respuesta al rol de prompt, de modo que el modelo aprenda a responder con preguntas.
- Importar un enorme conjunto de datos general y eclipsar los pocos cientos de chats que describen su tarea real.
- Utilizar la partición de prueba de un conjunto de datos público como datos de entrenamiento y luego evaluar en benchmarks construidos a partir de ella.
Referencias y lecturas adicionales
Las fuentes externas se abren en una pestaña nueva.
- 01DatasetsHugging Face docs · huggingface.coCómo se organizan los conjuntos de datos del Hub en configuraciones, particiones, filas y columnas.
- 02Dataset CardsHugging Face Hub docs · huggingface.coLo que debe indicarle la ficha de un conjunto de datos: fuentes, licencia, uso previsto y limitaciones.
- 03Dataset formats and typesHugging Face TRL docs · huggingface.coLas estructuras comunes de los datos de entrenamiento —conversacional, prompt-completion, preferencia— comparadas entre sí.
- 04Alpaca: A Strong, Replicable Instruction-Following ModelStanford CRFM, 2023 · crfm.stanford.eduDe dónde proviene la disposición de instrucción, entrada y salida.