Una nueva versión de luz ya está disponible en CRAN. luz es una interfaz de alto nivel para torch. Su objetivo es reducir el código repetitivo necesario para entrenar modelos de aprendizaje profundo y, al mismo tiempo, ser lo más flexible posible para que pueda adaptarlo para ejecutar todo tipo de modelos de estudios profundos.
Si estás interesado en luz, te recomendamos leer el post de blog de lanzamiento anterior y también el capítulo ’Entrenando con luz' del libro ’Aprendizaje profundo y computación científica con antorcha R'.
Esta versión incluye numerosas funciones nuevas y puedes revisar el registro de cambios completo aquí. En este post de blog destacaremos las funciones que más nos entusiasman.
Soporte para Apple Silicon
Desde torch v0.9.0, ahora es posible realizar cálculos en la GPU de Mac con Apple Silicon. Anteriormente, luz no aprovechaba la GPU, ejecutando los modelos en la CPU por defecto.
A partir de esta versión, luz utilizará automáticamente el dispositivo 'mps' al ejecutar modelos en computadoras con Apple Silicon, permitiéndote así beneficiarte de la aceleración al ejecutar modelos en la GPU.
Por ejemplo, ejecutar un modelo CNN simple en MNIST desde este ejemplo durante una época en un chip Apple M1 Pro llevaría 24 segundos cuando se usa la GPU:
user system elapsed
19.793 1.463 24.231
Mientras que en la CPU tomaría 60 segundos:
user system elapsed
83.783 40.196 60.253
¡Una gran mejora en velocidad!
Cabe destacar que esta función aún está en desarrollo y no todas las operaciones de norte son compatibles con MPS. Es posible que veas un mensaje de advertencia explicando que es probable que se requiera utilizar el respaldo de la CPU para algunas operaciones:
(W MPSFallback.mm:11) Warning: The operator 'at:****' is not currently supported on the MPS backend and will fall back to run on the CPU. This may have performance implications. (function operator())
Puntos de control
La funcionalidad de puntos de control ha sido refactorizada en luz y ahora es más fácil reanudar los entrenamientos en caso de fallos inesperados. Todo lo que necesitas hacer es agregar un resume
al entrenar el modelo:
Ahora también es más sencillo mantener el estado del modelo en cada época, o si el modelo ha logrado mejores resultados hasta el momento. Obtén más información en el artículo de ’Puntos de control'.
Corrección de errores
Esta versión también incluye algunas correcciones de errores menores, como priorizar el uso de la CPU (incluso cuando hay un dispositivo más rápido disponible) o hacer que los entornos de métricas sean más consistentes.
Sin embargo, hay una corrección de error en particular que nos gustaría destacar en este post de blog. Descubrimos que el método que estábamos utilizando para registrar la pérdida durante el entrenamiento tenía una complejidad exponencial; por lo tanto, en modelos con muchos pasos por época, luz era muy lenta.
Por ejemplo, con un modelo ficticio que realiza 500 pasos por época, luz tardaría 61 segundos:
Epoch 1/1
Train metrics: Loss: 1.389
user system elapsed
35.533 8.686 61.201
Con la corrección, el mismo modelo ahora tarda 5 segundos:
Epoch 1/1
Train metrics: Loss: 1.2499
user system elapsed
4.801 0.469 5.209
Esta corrección de errores se traduce en una velocidad 10 veces mayor para este modelo. No obstante, la velocidad puede variar según el tipo de modelo. Aquellos modelos que sean más rápidos por paso y tengan más iteraciones por época se beneficiarán más de esta corrección de errores.
Agradecemos tu lectura de este post de blog. Como siempre, recibimos con agrado cualquier contribución al ecosistema de aprendizaje profundo. No dudes en comentar problemas para proponer nuevas funciones, mejorar la documentación o ampliar la base del código.
La semana pasada anunciamos el lanzamiento de la versión 0.10.0 de luz: aquí tienes un enlace al post de blog del lanzamiento, en caso de que te lo hayas perdido.
Foto por Peter John Maridable en Unsplash
Reutilización
El texto y las figuras tienen licencia Creative Commons Attribution. CC BY 4.0. Las figuras que han sido reutilizadas de otras fuentes no están cubiertas por esta licencia y pueden identificarse por una nota en su pie de foto: "Figura de…".
Cita
Para atribuir, cita este trabajo como
Falbel (2023, April 17). Posit AI Blog: luz 0.4.0. Retrieved from https://blogs.rstudio.com/tensorflow/posts/2023-04-17-luz-0-4/
Cita BibTeX
@misc{luz-0-4, author = {Falbel, Daniel}, title = {Posit AI Blog: luz 0.4.0}, url = {https://blogs.rstudio.com/tensorflow/posts/2023-04-17-luz-0-4/}, year = {2023} }