NEGOCIOS

Final del experimento principal de Ars AI: vinimos, vimos, usamos mucho tiempo de cómputo

Final del experimento principal de Ars AI: vinimos, vimos, usamos mucho tiempo de cómputo

Aurich Lawson | imágenes falsas

Es posible que hayamos mordido más de lo que podíamos masticar, amigos.

Un ingeniero de Amazon me dijo que cuando escuchó lo que estaba tratando de hacer con los titulares de Ars, lo primero que pensó fue que habíamos elegido un problema engañosamente difícil. Me advirtió que tenía que tener cuidado al establecer adecuadamente mis expectativas. Si se trataba de un problema de negocios real… bueno, lo mejor que podía hacer era sugerir reformular el problema de «título bueno o malo» a algo menos concreto.

Esa declaración fue la forma más concisa y familiar de enmarcar el resultado de mi curso intensivo de cuatro semanas a tiempo parcial sobre aprendizaje automático. A partir de este momento, mis núcleos de PyTorch no son tanto antorchas como incendios de basureros. La precisión ha mejorado ligeramente, gracias a la intervención profesional, pero no estoy cerca de implementar una solución que funcione. Hoy, como supuestamente estoy de vacaciones visitando a mis padres por primera vez en más de un año, me senté en un sofá en su sala de estar trabajando en este proyecto y accidentalmente inicié un trabajo de capacitación modelo localmente en la computadora portátil Dell que traje, con un CPU Intel Core i3 7100U de 2,4 GHz, en lugar de la copia de 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 necesariamente está aprendiendo, al menos yo sí. Estamos casi al final, pero si se tratara de una tarea de clase, mi calificación en el expediente probablemente sería «Incompleto».

La pandilla prueba algo de aprendizaje automático.

En resumen: me dieron los pares de titulares utilizados para los artículos de Ars durante los últimos cinco años con datos sobre los ganadores de las pruebas A/B y sus tasas de clics relativas. Luego me pidieron 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é yendo por algunos callejones sin salida de ML antes de consultar varias fuentes de Amazon para obtener la ayuda que tanto necesitaba.

Artículo Recomendado:  Musk, Obama, Biden, Bezos, Gates: la estafa de bitcoin llega a Twitter en un bombardeo coordinado

La mayoría de las piezas están en su lugar para terminar este proyecto. Nosotros (más precisamente, mi línea de vida «llamar a un amigo de AWS») tuvimos cierto éxito con diferentes enfoques de modelado, aunque la calificación de precisión (justo al norte del 70 por ciento) no fue tan definitiva como uno quisiera. Tengo suficiente con lo que trabajar para producir (con un poco de esfuerzo adicional) un modelo y un código implementados para ejecutar predicciones en pares de titulares si copio sus notas y uso los algoritmos creados como resultado.

Pero debo ser honesto: mis esfuerzos por reproducir ese trabajo tanto en mi propio servidor local como en SageMaker han fracasado. En el proceso de abrirme paso a tientas a través de las complejidades de SageMaker (incluido el olvido de apagar los cuadernos, la ejecución de procesos de aprendizaje automático que más tarde me dijeron que eran para «clientes empresariales» y otros errores), gasté más presupuesto de AWS que Me sentiría cómodo gastando en una aventura no financiada. Y aunque entiendo intelectualmente cómo implementar los modelos que han resultado de todo este trabajo, todavía estoy depurando la ejecución real de esa implementación.

Al menos, este proyecto se ha convertido en una lección muy interesante sobre todas las formas en que los proyectos de aprendizaje automático (y las personas detrás de ellos) pueden fallar. Y el fracaso esta vez comenzó con los datos mismos, o incluso con la pregunta que elegimos hacer con ellos.

Todavía puedo obtener una solución funcional de este esfuerzo. Pero mientras tanto, voy a compartir el conjunto de datos en mi GitHub con el que trabajé para proporcionar un componente más interactivo a esta aventura. Si puede obtener mejores resultados, asegúrese de unirse a nosotros la próxima semana para burlarse de mí en el resumen en vivo de esta serie. (Más detalles sobre eso al final).

pegamento de modelista

Después de varias iteraciones de ajuste del modelo SqueezeBert que usamos en nuestro intento redirigido de entrenar para los titulares, el conjunto resultante obtuvo constantemente un 66 % de precisión en las pruebas, algo menos que la promesa anterior del 70 % sugerida.

Esto incluyó esfuerzos para reducir el tamaño de los pasos tomados entre los ciclos de aprendizaje para ajustar las entradas: el hiperparámetro de «tasa de aprendizaje» que se usa para evitar el sobreajuste o el ajuste insuficiente del modelo. Redujimos la tasa de aprendizaje sustancialmente, porque cuando tiene una pequeña cantidad de datos (como lo hacemos aquí) y la tasa de aprendizaje se establece demasiado alta, básicamente hará suposiciones más grandes en términos de la estructura y la sintaxis del conjunto de datos. Reducir eso obliga al modelo a ajustar esos saltos a pequeños pasos de bebé. Nuestra tasa de aprendizaje original se estableció en 2×10-5 (2E-5); lo redujimos a 1E-5.

También probamos un modelo mucho más grande que había sido entrenado previamente en 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 es tan elegante que ha superado a los humanos en tareas de comprensión del lenguaje natural en el punto de referencia SuperGLUE, el primer modelo en hacerlo.

El paquete de implementación resultante también es bastante pesado: 2,9 gigabytes. Con todo ese peso adicional de aprendizaje automático, obtuvimos una precisión de hasta el 72 por ciento. Teniendo en cuenta que DeBERTa es supuestamente mejor que un ser humano cuando se trata de detectar el significado dentro del texto, esta precisión es, como dijo una vez un famoso operador de una planta de energía nuclear, «no es genial, no es terrible».

Espiral de la muerte del despliegue

Además de eso, el reloj corría. Necesitaba intentar poner en marcha una versión propia para probarla con datos reales.

Un intento de implementación local no salió bien, particularmente desde una perspectiva de rendimiento. Sin una buena GPU disponible, los trabajos de PyTorch que ejecutan el modelo y el punto final literalmente detuvieron mi sistema.

Entonces, volví a intentar implementar en SageMaker. Intenté ejecutar el trabajo de modelado SqueezeBert más pequeño en SageMaker por mi cuenta, pero rápidamente se volvió más complicado. 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 diversos módulos de Python requeridos a mi kernel SageMaker PyTorch, no coincidieron claramente a pesar de las actualizaciones.

Como resultado, fallaron partes del código que funcionaba en mi servidor local y mis esfuerzos se vieron envueltos en un marasmo de dependencias. Resultó ser un problema con una versión de la biblioteca NumPy, excepto cuando forcé una reinstalació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 me encontré con otro error que me impidió ejecutar el trabajo de entrenamiento y me indicó que me comunicara con el servicio 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 este esfuerzo, necesitaba que Amazon aumentara mi cuota, algo que no había anticipado cuando comencé a desconectarme. Es una solución fácil, pero solucionar los conflictos del módulo consumió la mayor parte del día. Y se me acabó el tiempo cuando intentaba eludir el uso del modelo preconstruido que me proporcionó mi ayuda experta, implementándolo como un punto final de SageMaker.

Este esfuerzo está ahora en la prórroga. Aquí es donde habría estado discutiendo cómo se desempeñó el modelo en las pruebas con pares de titulares recientes, si alguna vez llegué al modelo a ese punto. Si finalmente puedo lograrlo, pondré el resultado en los comentarios y en una nota en mi página de GitHub.

Artículo Recomendado:  Pornhub bloquea cargas y descargas en medidas enérgicas contra videos de abuso sexual infantil

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba