Finales del experimento de titulares de Ars AI: llegamos, vimos, necesitábamos mucho tiempo de computación


Finales del experimento de titulares de Ars AI: llegamos, vimos, necesitábamos mucho tiempo de computación

Aurich Lawson | imágenes falsas

Es posible que hayamos mordido más de lo que podríamos.

Un ingeniero de Amazon me dijo que cuando escuchó lo que estaba haciendo con los titulares de Ars, lo primero que pensó fue que habíamos elegido un problema engañosamente difícil. Advirtió que tenía que tener cuidado para formular correctamente mis expectativas. Si se trataba de un problema empresarial real … bueno, lo mejor que podía hacer era proponer reformular el problema de «titular bueno o malo» a algo menos específico.

Esta declaración fue la forma más concisa y familiar de formular el resultado de mi curso intensivo de cuatro semanas a tiempo parcial sobre aprendizaje automático. A partir de ese momento, mis núcleos de PyTorch son menos una antorcha que los incendios de basura. La precisión ha mejorado ligeramente gracias a la intervención profesional, pero todavía estoy muy lejos de encontrar una solución que funcione. Hoy, como se supone que debo visitar a mis padres por primera vez en más de un año de vacaciones, estaba sentado en un sofá en su sala de estar, trabajando en este proyecto y, sin darme cuenta, comencé un trabajo de capacitación modelo en la computadora portátil Dell. trajo conmigo una CPU Intel Core i3 7100U de 2.4 GHz, en lugar de la copia SageMaker del mismo portátil Jupyter. El Dell se bloqueó con tanta fuerza que tuve que sacar la batería para reiniciarlo.

Pero bueno, si la máquina no aprende necesariamente, al menos yo sí. Estamos casi al final, pero si esta fuera una tarea de clase, mi calificación en la transcripción probablemente sería «Incompleta».

La pandilla prueba el aprendizaje automático

En resumen, obtuve los pares de titulares de los artículos de Ars durante los últimos cinco años con datos sobre los ganadores de la prueba A / B y sus tasas relativas de clics. Luego se me pidió que usara SageMaker de Amazon Web Services para crear un algoritmo de aprendizaje automático para predecir el ganador en futuros pares de titulares. Terminé pasando por algunos callejones sin salida de ML antes de recurrir a varias fuentes de Amazon para obtener la ayuda que tanto necesitaba.

La mayoría de las piezas están en su lugar para completar este proyecto. Nosotros (más precisamente, mi línea de vida «Llame a un amigo en AWS») tuvimos cierto éxito con varios enfoques de modelado, aunque la calificación de precisión (justo al norte del 70 por ciento) no fue tan clara como uno quisiera. Tengo suficiente trabajo por hacer (con un poco de esfuerzo adicional) para construir un modelo y un código proporcionados para hacer predicciones en pares de titulares mientras rastreo sus notas y uso los algoritmos creados como resultado.

Pero tengo que ser honesto: mis esfuerzos por reproducir este trabajo tanto en mi propio servidor local como en SageMaker han fallado. Mientras hurgaba en las complejidades de SageMaker (incluido el olvido de apagar los portátiles, la ejecución de procesos de aprendizaje automatizados que luego se recomendaron a «clientes empresariales» y otros errores), consumía más presupuesto de AWS del que me gustaría gastar en un presupuesto no financiado aventuras. Y a pesar de que tengo un conocimiento intelectual de cómo implementar los modelos que surgieron de todas estas manipulaciones, todavía estoy depurando la ejecución real de esta implementación.

Por último, pero no menos importante, este proyecto se ha convertido en una lección muy interesante en términos de la forma en que los proyectos de aprendizaje automático (y las personas detrás de ellos) pueden fallar. Y esta vez, el error comenzó con los datos en sí, o incluso con la pregunta que nos hicimos.

Quizás todavía pueda obtener una solución funcional de estos esfuerzos. Pero mientras tanto, compartiré el conjunto de datos en mi GitHub con el que trabajé para agregar un componente más interactivo a esta aventura. Si puede obtener mejores resultados, únase a nosotros la próxima semana para burlarse de mí en el resumen en vivo de esta serie. (Más sobre esto al final).

Pegamento para modelar

Después de varios ajustes al modelo SqueezeBert que usamos en nuestro intento de entrenamiento de titulares redirigidos, el conjunto resultante logró consistentemente una precisión del 66 por ciento cuando se probó, un poco menos que la promesa propuesta anteriormente de más del 70 por ciento.

Esto incluyó esfuerzos para reducir el tamaño de los pasos entre los ciclos de aprendizaje para que coincidan con las entradas, el hiperparámetro de «tasa de aprendizaje», que se utiliza para evitar un ajuste excesivo o insuficiente del modelo. Hemos reducido significativamente la tasa de aprendizaje, porque si tiene una pequeña cantidad de datos (como aquí) y la tasa de aprendizaje es demasiado alta, generalmente se hacen suposiciones más grandes con respecto a la estructura y sintaxis del conjunto de datos. La reducción obliga al modelo a adaptar estos saltos a pequeños pasos de bebé. Nuestra tasa de aprendizaje original fue de 2×10. colocar-5 (2E-5); lo reducimos a 1E-5.

También probamos un modelo mucho más grande que fue entrenado previamente con una gran cantidad de texto llamado DeBERTa (BERT mejorado con decodificación con atención desenredada). DeBERTa es un modelo muy sofisticado: 48 capas de transformación con 1.500 millones de parámetros.

DeBERTa resultó ser tal que superó a los humanos en la comprensión del lenguaje natural en el punto de referencia SuperGLUE, el primer modelo en hacer esto.

El paquete de aprovisionamiento resultante también es bastante considerable: 2,9 gigabytes. Con todo el peso adicional del aprendizaje automático, tenemos hasta un 72 por ciento de precisión. Cuando se considera que DeBERTa es supuestamente mejor que un humano cuando se trata de reconocer los significados en los textos, esta precisión es, como dijo una vez un famoso operador de una planta de energía nuclear, «ni genial, ni terrible».

Espiral de la muerte en acción

Además, el reloj avanzaba. Tuve que intentar que mi propia versión funcionara para probarla con datos reales.

Un intento de implementación local no fue bien, especialmente desde el punto de vista del rendimiento. Sin una buena GPU disponible, los trabajos de PyTorch que ejecutan el modelo y el punto final literalmente paralizaron mi sistema.

Así que volví a intentar implementar en SageMaker. Intenté hacer el trabajo de modelado SqueezeBert más pequeño en SageMaker yo mismo, pero rápidamente se complicó. El entrenamiento requiere PyTorch, el marco de aprendizaje automático de Python, así como una colección de otros módulos. Pero cuando importé los distintos módulos de Python que necesitaba en mi kernel de SageMaker PyTorch, no encajaban correctamente a pesar de las actualizaciones.

Como resultado, partes del código que funcionaban en mi servidor local fallaron y mis esfuerzos se convirtieron en un pantano de dependencias. Resultó ser un problema con una versión de la biblioteca NumPy, excepto cuando forcé una nueva instalación (pip uninstall numpy, pip install numpy -no-cache-dir), la versión era la misma y el error persistía. Finalmente lo arreglé, pero luego encontré otro error que me impidió completar el trabajo de capacitación y me indicó que me comunicara con el servicio de atención al cliente:

ResourceLimitExceeded: An error occurred (ResourceLimitExceeded) when calling the CreateTrainingJob operation: The account-level service limit 'ml.p3.2xlarge for training job usage' is 0 Instances, with current utilization of 0 Instances and a request delta of 1 Instances. Please contact AWS support to request an increase for this limit.

Para completar completamente ese esfuerzo, tuve que conseguir que Amazon aumentara mi cuota, algo que no esperaba cuando comencé a desconectar. Es una solución simple, pero solucionar los conflictos del módulo tomó la mayor parte del día. Y me quedé sin tiempo tratando de omitir el modelo prediseñado que me había proporcionado mi ayuda experta e implementarlo como un punto final de SageMaker.

Este esfuerzo está ahora en horas extraordinarias. En este punto, habría discutido cómo le fue al modelo cuando se probó con el par de noticias de titulares recientes, si alguna vez hubiera llevado el modelo a este punto. Cuando finalmente lo obtenga, escribiré el resultado en los comentarios y en una nota en mi página de GitHub.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *