Recursos/Entrenamiento de modelos/Conjuntos de datos

Concepto

Conjuntos de datos públicos de Hugging Face

Qué contiene un conjunto de datos público de Hugging Face, los formatos comunes en los que se presentan y por qué algunos conjuntos de datos se convierten en chats, otros en documentos y otros no pueden utilizarse para el entrenamiento en absoluto.

Capítulo 45 min de lectura4 referencias

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.

ColumnaContenidoRol
instructiontexto · cortoprompt
contexttexto · largo, a menudo vacíocontexto, añadido debajo de la pregunta
responsetexto · largorespuesta
categorytexto corto · pocos valores distintosno utilizado
Las columnas de databricks-dolly-15k y el papel que desempeña cada una en un chat de entrenamiento: la instrucción pregunta, la respuesta contesta, el contexto se añade debajo de la pregunta y la categoría se omite. El resultado es el formato de prompt y respuesta, con contexto.

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

ChatTípico p. ej., HuggingFaceH4/ultrachat_200k, HuggingFaceH4/no_robots#

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.

Prompt y respuestaTípico p. ej., openai/gsm8k, rajpurkar/squad, databricks/databricks-dolly-15k#

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.

Instrucción (Alpaca)Típico p. ej., tatsu-lab/alpaca#

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.

Una fila estilo Alpaca
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.
PreferenciaTípico p. ej., Anthropic/hh-rlhf#

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.

Una fila de preferencia
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.
TranscripciónTípico p. ej., timdettmers/openassistant-guanaco#

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.

Etiquetas de hablante comunes en conjuntos de datos de transcripciones
### 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 planoTípico p. ej., HuggingFaceFW/fineweb#

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

Chats
una filachat, prompt y respuesta, Alpaca, preferencia o transcripción→un ejemplo de entrenamiento
Texto sin formato
filas consecutivaspáginas web, artículos, libros→documentos→preentrenamiento continuo o generación de preguntas y respuestas
No compatible
texto + etiqueta de clasesolo imágenes o audiotablas de números

Se muestra con el motivo. Un tuit etiquetado como «alegría» indica qué es un texto, no cómo responder a él.

Cada conjunto de datos público termina en uno de tres lugares. Solo las filas con algo que preguntar y algo que responder se convierten en chats.
  • 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.
Importación de databricks-dolly-15k
  1. Usted elige el conjunto de datos y su división de entrenamiento, aproximadamente 15 000 pares de instrucciones y respuestas escritos por humanos.
  2. El conjunto de datos tiene cuatro columnas: instruction (corta), context (larga, a menudo vacía), response (larga) y category (un puñado de etiquetas repetidas).
  3. Prompt y respuesta es la opción natural: instruction → prompt, response → respuesta, context se añade debajo de la pregunta. category se omite.
  4. 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.

  1. 01DatasetsHugging Face docs · huggingface.coCómo se organizan los conjuntos de datos del Hub en configuraciones, particiones, filas y columnas.
  2. 02Dataset CardsHugging Face Hub docs · huggingface.coLo que debe indicarle la ficha de un conjunto de datos: fuentes, licencia, uso previsto y limitaciones.
  3. 03Dataset formats and typesHugging Face TRL docs · huggingface.coLas estructuras comunes de los datos de entrenamiento —conversacional, prompt-completion, preferencia— comparadas entre sí.
  4. 04Alpaca: A Strong, Replicable Instruction-Following ModelStanford CRFM, 2023 · crfm.stanford.eduDe dónde proviene la disposición de instrucción, entrada y salida.

Convierta semanas de trabajo experto en minutos

Vea cómo Scalata se adapta a su equipo, a sus datos y a sus Controles.

Contactar con ventas