Cómo crear su propio sistema de generación de texto de última generación

Cómo crear su propio sistema de generación de texto de última generación
4.8 (95.79%) 19 votos

Texto aleatorio generado por AI

Casi no pasa un día cuando no hay una historia sobre noticias falsas. Me recuerda a una cita del locutor de radio favorito de mi juventud: “Si no te gustan las noticias, sal y crea algunas propias”. El modelo innovador de lenguaje de OpenAI, el 1
.5
Versión de mil millones de parámetros de GPT-2
Se acercó lo suficiente para que el grupo decidiera que era demasiado peligroso lanzarlo públicamente, al menos por ahora. Sin embargo, OpenAI ahora ha lanzado dos versiones más pequeñas del modelo, junto con herramientas para ajustarlas en su propio texto. Por lo tanto, sin demasiado esfuerzo, y usando un tiempo de GPU mucho menor del que se necesitaría para entrenar desde cero, puede crear una versión optimizada de GPT-2
que podrá generar texto en el estilo que le des, o incluso comenzar a responder preguntas similares a aquellas con las que lo entrena.

¿Qué hace GPT-2
Especial

GPT-2
(Versión generadora de transformador pre-entrenado 2
) se basa en una versión de la muy poderosa red neuronal basada en la atención del transformador. Lo que hizo que los investigadores de OpenAI se sintieran tan entusiasmados al encontrarlo era que podía abordar una serie de tareas lingüísticas sin recibir capacitación directa sobre ellas. Una vez entrenado previamente con su corpus masivo de datos de Reddit y con las indicaciones adecuadas, hizo un trabajo pasable de responder preguntas y traducir idiomas. Ciertamente, no se parece en nada a Watson en cuanto al conocimiento semántico, pero este tipo de aprendizaje no supervisado es particularmente emocionante porque elimina gran parte del tiempo y los gastos necesarios para etiquetar los datos para el aprendizaje supervisado.

Visión general de trabajar con GPT-2

Para una herramienta tan poderosa, el proceso de trabajar con GPT-2
afortunadamente es bastante simple, siempre y cuando estés al menos un poco familiarizado con Tensorflow. La mayoría de los tutoriales que he encontrado también se basan en Python, por lo que tener al menos un conocimiento básico de la programación en Python o un lenguaje similar es muy útil. Actualmente, OpenAI ha lanzado dos versiones pre-entrenadas de GPT-2
. Uno (117M) tiene 117 millones de parámetros, mientras que el otro (345M) tiene 345 millones. Como es de esperar, la versión más grande requiere más memoria de GPU y lleva más tiempo entrenar. Puedes entrenar en tu CPU, pero va a ser muy lento.

El primer paso es descargar uno o ambos modelos. Afortunadamente, la mayoría de los tutoriales, incluidos los que te mostraremos a continuación, tienen el código Python para que lo hagas por ti. Una vez descargado, puede ejecutar el modelo pre-entrenado para generar texto automáticamente o en respuesta a una solicitud que usted proporcione. Pero también hay un código que le permite construir en el modelo pre-entrenado mediante el ajuste fino en una fuente de datos de su elección. Una vez que haya ajustado su modelo a su satisfacción, es simplemente una cuestión de ejecutarlo y proporcionar las indicaciones adecuadas.

Trabajando con GPT-2
En su maquina local

Hay varios tutoriales sobre esto, pero mi favorito es de Max Woolf. De hecho, hasta el lanzamiento de OpenAI, estaba trabajando con su RNN de generación de texto, que tomó prestado para su GPT-2
trabajo. Ha proporcionado un paquete completo en GitHub para descargar, ajustar y ejecutar un GPT2
modelo basado Incluso puede engancharlo directamente como un paquete desde PyPl. El archivo Léame lo guía a través de todo el proceso, con algunas sugerencias sobre cómo modificar varios parámetros. Si tiene a mano una GPU masiva, este es un gran enfoque, pero como el modelo 345M necesita la mayor parte de una GPU de 16GB para entrenamiento o ajuste, es posible que deba recurrir a una GPU en la nube.

Recomendamos:  DragEnabler permite la funcionalidad de arrastrar y soltar como iPad en iPhones sin costo adicional

Trabajando con GPT-2
Gratis usando el Colab de Google

Mantuve los puntos de control de mi modelo cada 15,000 pasos para comparar y, en caso de que el modelo finalmente se adaptara y tuviera que volver a una versión anterior.Afortunadamente, hay una manera de usar una potente GPU en la nube de forma gratuita: Colab de Google. No es tan flexible como una cuenta real de Google Compute Engine, y tiene que volver a cargar todo en cada sesión, pero ¿mencioné que es gratis? En mis pruebas, obtuve una GPU Tesla T4 o K80 cuando inicialicé una notebook, una de las cuales es lo suficientemente rápida para entrenar a estos modelos a un ritmo razonable. La mejor parte es que Woolf ya ha creado un cuaderno Colab que hace eco de la versión del código Python local de gpt2-simple. Al igual que la versión de escritorio, simplemente puede seguir o modificar parámetros para experimentar. Hay una cierta complejidad adicional en la entrada y salida de datos de Colab, pero el portátil también lo guiará a través de eso.

Obteniendo datos para su proyecto

Ahora que se han lanzado poderosos modelos de lenguaje en la web, y abundan los tutoriales sobre cómo usarlos, la parte más difícil de su proyecto podría ser crear el conjunto de datos que desea usar para la optimización. Si quieres replicar los experimentos de otros, haz que genere Shakespeare o escribe Star Trek diálogo, simplemente puede enganchar uno que está en línea. En mi caso, quería ver cómo funcionaban los modelos cuando se me pedía que generara artículos como los que se encuentran en ExtremeTech. Tuve acceso a un catálogo de más de 12,000 artículos de los últimos 10 años. Así que pude juntarlos en un archivo de texto y usarlo como base para el ajuste fino.

Si tiene otras ambiciones que incluyen la imitación de un sitio web, raspar es sin duda una alternativa. Hay algunos servicios sofisticados como ParseHub, pero son limitados a menos que pague por un plan comercial. He encontrado que Chrome Extension Webscraper.io es lo suficientemente flexible para muchas aplicaciones, y es rápido y gratuito. Una gran advertencia es prestar atención a los Términos de servicio del sitio web en el que esté pensando, así como a cualquier problema de derechos de autor. Al observar la salida de varios modelos de lenguaje, ciertamente no se les enseña a no plagiar.

Entonces, ¿puede hacer periodismo tecnológico?

Una vez que tuve mi corpus de 12,000 artículos de ExtremeTech, comencé intentando entrenar el GPT simplificado.2
en la GPU Nvidia 1080 de mi escritorio. Desafortunadamente, los 8 GB de RAM de la GPU no fueron suficientes. Así que cambié a entrenar el modelo 117M en mi 4
-core i7. No fue terriblemente terrible, pero habría tomado más de una semana hacer una mella real incluso con el más pequeño de los dos modelos. Así que me cambié a Colab y al modelo 345M. La capacitación fue mucho, mucho más rápida, pero la necesidad de lidiar con los reinicios de sesión y la imprevisibilidad de la GPU que obtendría por cada sesión era molesto.

Recomendamos:  Opinión: Cómo Google puede hacer que sus teléfonos Pixel sean más dominantes

Actualización a Compute Engine de Google

Después de eso, mordí la bala, me inscribí en una cuenta de Google Compute Engine y decidí aprovechar el crédito de $ 300 que Google otorga a los nuevos clientes. Si no está familiarizado con la configuración de una máquina virtual en la nube, puede ser un poco desalentador, pero hay muchas guías en línea. Es más sencillo si comienza con una de las máquinas virtuales preconfiguradas que ya tiene instalado Tensorflow. Elegí una versión de Linux con 4
vCPUs. A pesar de que mi sistema de escritorio es Windows
, el mismo código de Python funcionó perfectamente en ambos. Luego debe agregar una GPU, que en mi caso solicitó permiso al soporte de Google. Supongo que esto se debe a que las máquinas equipadas con GPU son más caras y menos flexibles que las máquinas con solo CPU, por lo que tienen algún tipo de proceso de investigación. Solo tomó un par de horas, y pude lanzar una máquina virtual con un Tesla T4. La primera vez que inicié sesión (utilizando el SSH incorporado) me recordó que necesitaba instalar los controladores de Nvidia para el T4, y me dio el comando que necesitaba.

A continuación, debe configurar un cliente de transferencia de archivos como WinSCP y comenzar a trabajar con su modelo. Una vez que cargue su código y sus datos, cree un entorno virtual Python (opcional) y cargue los paquetes necesarios, puede proceder de la misma manera que lo hizo en su escritorio. Entrené a mi modelo en incrementos de 15,000 pasos y descargué los puntos de control del modelo cada vez, por lo que los tendría como referencia. Eso puede ser particularmente importante si tiene un pequeño conjunto de datos de entrenamiento, ya que demasiado entrenamiento puede hacer que su modelo se adapte demasiado y empeore. Por lo tanto, tener puntos de control a los que puede regresar es valioso.

Hablando de puntos de control, como los modelos, son grandes. Así que probablemente querrá agregar un disco a su máquina virtual. Al tener el disco separado, siempre puede usarlo para otros proyectos. El proceso para montarlo automáticamente es un poco molesto (parece que podría ser una casilla de verificación, pero no lo es). Afortunadamente, solo hay que hacerlo una vez. Después de tener mi VM en funcionamiento con el código, el modelo y los datos de entrenamiento necesarios, lo dejé en libertad. El T4 fue capaz de correr alrededor de un paso cada 1
.5
segundos. La máquina virtual que configuré costaba alrededor de $ 25 por día (recuerde que las máquinas virtuales no se apagan a sí mismas; debe cerrarlas si no desea que se le facture, y el disco persistente se sigue facturando incluso en ese momento).

Para ahorrar algo de dinero, transferí los puntos de control del modelo (como un archivo .zip) a mi escritorio. Luego podría apagar la máquina virtual (ahorrar un dólar o dos por hora) e interactuar con el modelo localmente. Obtiene la misma salida en ambos sentidos porque el modelo y el punto de control son idénticos. La forma tradicional de evaluar el éxito de su entrenamiento es presentar una parte de sus datos de entrenamiento como un conjunto de validación. Si la pérdida continúa disminuyendo, pero la precisión (que obtiene al calcular la pérdida cuando ejecuta su modelo en los datos que ha mantenido para su validación) disminuye, es probable que haya empezado a sobrepasar sus datos y su modelo. es simplemente "memorizar" su entrada y devolvérsela. Eso reduce su capacidad para tratar con nueva información.

Recomendamos:  ¿Cómo copiar el archivo o la ruta de la carpeta desde el Finder en Mac? Tres maneras explicadas

Aquí está la carne de res: algunas salidas de muestra después de días de entrenamiento

Después de experimentar con varios tipos de indicaciones, decidí alimentar al modelo (que he apodado The Oracle) las primeras oraciones de los artículos reales de ExtremeTech y ver lo que ocurrió. Después de 48 horas (106,000 pasos en este caso) de entrenamiento en un T4, aquí hay un ejemplo:

Salida de nuestro modelo después de dos días de entrenamiento en un T4 cuando se alimenta la primera oración del artículo de Titan de Ryan Whitwam.

La salida de nuestro modelo después de dos días de entrenamiento en un T4 cuando se alimenta la primera oración del artículo de Titan de Ryan Whitwam. Obviamente, no va a engañar a nadie, pero el modelo está empezando a hacer un trabajo decente al vincular conceptos similares en este punto.

Cuanta más información tenga el modelo sobre un tema, más comenzará a generar un texto plausible. Escribimos sobre Windows
Actualizo mucho, así que pensé que dejaría que el modelo lo probara:

La respuesta del modelo a un aviso sobre Windows
Actualización después de un par de días de entrenamiento.

La respuesta del modelo a un aviso sobre Windows
Actualización después de un par de días de entrenamiento.

Con algo tan subjetivo como la generación de texto, es difícil saber qué tan lejos ir con el entrenamiento de un modelo. Esto es particularmente cierto porque cada vez que se envía un mensaje, obtendrás una respuesta diferente. Si desea obtener algunas respuestas plausibles o divertidas, lo mejor que puede hacer es generar varias muestras para cada indicador y examinarlas usted mismo. En el caso de la Windows
Mensaje de actualización, le dimos al modelo el mismo mensaje después de unas pocas horas de entrenamiento, y parecía que el trabajo adicional podría haber sido útil:

Después de otras pocas horas de entrenamiento, aquí es la mejor de las muestras cuando se le da el mismo mensaje acerca de Microsoft. Windows
.

Después de otras pocas horas de capacitación, aquí está la mejor de las muestras cuando se le da el mismo mensaje acerca de Microsoft Windows
.

Aquí es por qué los modelos sin supervisión son tan geniales

Me impresionó, pero no me impresionó, el rendimiento predictivo en bruto de GPT-2
(al menos la versión pública) en comparación con soluciones más simples como textgenrnn. Lo que no entendí hasta más tarde fue la versatilidad. GPT-2
tiene un propósito general suficiente para poder abordar una amplia variedad de casos de uso. Por ejemplo, si le da pares de oraciones en francés e inglés como un indicador, seguido de solo una oración en francés, hace un trabajo plausible de generar traducciones. O si le das pares de preguntas y respuestas, seguidas de una pregunta, hace un trabajo decente para llegar a una respuesta plausible. Si genera algún texto o artículo interesante, considere compartirlo, ya que esta es definitivamente una experiencia de aprendizaje para todos nosotros.

Ahora lee:

Dejános tus Comentarios: