Conjuntos de datos para entrenar un modelo de lenguaje

Un modelo de lenguaje es un modelo matemático que describe un lenguaje humano como una distribución de probabilidad sobre su vocabulario. Para entrenar una red de aprendizaje profundo para modelar un idioma, es necesario identificar el vocabulario y aprender su distribución de probabilidad. No puedes crear el modelo de la nada. Necesita un conjunto de datos del que aprender su modelo.

En este artículo, aprenderá sobre los conjuntos de datos utilizados para entrenar modelos de lenguaje y cómo obtener conjuntos de datos comunes de repositorios públicos.

Empecemos.

Conjuntos de datos para entrenar un modelo de lenguaje
Foto de Dan V. Algunos derechos reservados.

Un buen conjunto de datos para entrenar un modelo de lenguaje

Un buen modelo de lenguaje debe aprender el uso correcto del lenguaje, libre de sesgos y errores. A diferencia de los lenguajes de programación, los lenguajes humanos carecen de gramática y sintaxis formales. Evolucionan continuamente, lo que hace imposible catalogar todas las variaciones lingüísticas. Por lo tanto, el modelo debe entrenarse a partir de un conjunto de datos en lugar de elaborarse a partir de reglas.

Configurar un conjunto de datos para el modelado del lenguaje es un desafío. Necesita un conjunto de datos grande y diverso que represente los matices del idioma. Al mismo tiempo, debe ser de alta calidad y presentar un uso correcto del lenguaje. Idealmente, el conjunto de datos debería editarse y limpiarse manualmente para eliminar ruidos como errores tipográficos, errores gramaticales y contenido no idiomático, como símbolos o etiquetas HTML.

Crear un conjunto de datos de este tipo desde cero es costoso, pero hay varios conjuntos de datos de alta calidad disponibles gratuitamente. Los conjuntos de datos comunes incluyen:

Rastreo común. Un conjunto de datos masivo y continuamente actualizado de más de 9,5 petabytes con contenido diverso. Lo utilizan los modelos líderes, incluidos GPT-3, Llama y T5. Sin embargo, dado que proviene de la web, contiene contenido duplicado y de baja calidad, además de prejuicios y material ofensivo. Se requiere una limpieza y filtrado rigurosos para que sea útil. C4 (Colosal Corpus Rastreado Limpio). Un conjunto de datos de 750 GB extraído de la web. A diferencia del rastreo común, este conjunto de datos se limpia y filtra previamente, lo que facilita su uso. Aún así, espere posibles sesgos y errores. El modelo T5 se entrenó con este conjunto de datos. Wikipedia. Sólo el contenido en inglés ocupa alrededor de 19 GB. Es enorme pero manejable. Está bien curado, estructurado y editado según los estándares de Wikipedia. Si bien cubre una amplia gama de conocimientos generales con gran precisión objetiva, su estilo y tono enciclopédicos son muy específicos. El entrenamiento solo con este conjunto de datos puede hacer que los modelos se ajusten demasiado a este estilo. WikiTexto. Un conjunto de datos derivado de artículos destacados y buenos verificados de Wikipedia. Existen dos versiones: WikiText-2 (2 millones de palabras de cientos de artículos) y WikiText-103 (100 millones de palabras de 28.000 artículos). LibroCorpus. Un conjunto de datos de unos pocos GB de textos de libros extensos, ricos en contenido y de alta calidad. Útil para aprender narraciones coherentes y dependencias de largo alcance. Sin embargo, ha conocido problemas de derechos de autor y prejuicios sociales. La pila. Un conjunto de datos curado de 825 GB de múltiples fuentes, incluido BookCorpus. Combina diferentes géneros de texto (libros, artículos, código fuente y artículos académicos), proporcionando una amplia cobertura temática diseñada para el razonamiento multidisciplinario. Sin embargo, esta diversidad da como resultado una calidad variable, contenido duplicado y estilos de escritura inconsistentes.

Obtener los conjuntos de datos

Puede buscar estos conjuntos de datos en línea y descargarlos como archivos comprimidos. Sin embargo, deberá comprender el formato de cada conjunto de datos y escribir código personalizado para leerlos.

Alternativamente, busque conjuntos de datos en el repositorio de Hugging Face en https://huggingface.co/datasets. Este repositorio proporciona una biblioteca de Python que le permite descargar y leer conjuntos de datos en tiempo real utilizando un formato estandarizado.

Repositorio de conjuntos de datos de Hugging Face

Descarguemos el conjunto de datos WikiText-2 de Hugging Face, uno de los conjuntos de datos más pequeños adecuados para construir un modelo de lenguaje:

El resultado puede verse así:

Si aún no lo has hecho, instala la biblioteca de conjuntos de datos de Hugging Face:

Cuando ejecuta este código por primera vez, load_dataset() descarga el conjunto de datos a su máquina local. Asegúrese de tener suficiente espacio en disco, especialmente para conjuntos de datos grandes. De forma predeterminada, los conjuntos de datos se descargan en ~/.cache/huggingface/datasets.

Todos los conjuntos de datos de Hugging Face siguen un formato estándar. El objeto del conjunto de datos es iterable y cada elemento es un diccionario. Para el entrenamiento de modelos de lenguaje, los conjuntos de datos suelen contener cadenas de texto. En este conjunto de datos, el texto se almacena bajo la clave “texto”.

El código anterior muestra algunos elementos del conjunto de datos. Verás cadenas de texto sin formato de diferentes longitudes.

Postprocesamiento de los conjuntos de datos

Antes de entrenar un modelo de lenguaje, es posible que desee realizar un posprocesamiento del conjunto de datos para limpiarlos. Esto incluye reformatear el texto (recortar cadenas largas, reemplazar varios espacios con espacios simples), eliminar contenido que no sea de idioma (etiquetas HTML, símbolos) y eliminar caracteres no deseados (espacios adicionales alrededor de la puntuación). El procesamiento específico depende del conjunto de datos y de cómo desea presentar el texto al modelo.

Por ejemplo, si entrena un modelo pequeño de estilo BERT que maneja solo letras minúsculas, puede reducir el tamaño del vocabulario y simplificar el tokenizador. Aquí hay una función de generador que proporciona texto posprocesado:

Crear una buena función de posprocesamiento es un arte. Debería mejorar la relación señal-ruido del conjunto de datos para ayudar al modelo a aprender mejor, preservando al mismo tiempo la capacidad de manejar formatos de entrada inesperados que puede encontrar un modelo entrenado.

Lecturas adicionales

A continuación se muestran algunos recursos que pueden resultarle útiles:

Resumen

En este artículo, aprendió sobre los conjuntos de datos utilizados para entrenar modelos de lenguaje y cómo obtener conjuntos de datos comunes de repositorios públicos. Este es sólo un punto de partida para la exploración de conjuntos de datos. Considere aprovechar las bibliotecas y herramientas existentes para optimizar la velocidad de carga del conjunto de datos para que no se convierta en un cuello de botella en su proceso de capacitación.