Un equipo de investigadores del MIT-IBM Watson AI Lab del Instituto Tecnológico de Massachussets (MIT) ha desarrollado una técnica que permite que los modelos de aprendizaje profundo se adapten de manera eficiente a nuevos datos de sensores directamente en un dispositivo de borde. Denominado PockEngine, este método de entrenamiento en el dispositivo determina qué partes de un enorme modelo de aprendizaje automático deben actualizarse para mejorar la precisión, y solo almacena y calcula esas partes específicas. Realiza la mayor parte de estos cálculos mientras se prepara el modelo, antes del tiempo de ejecución, lo que minimiza la sobrecarga computacional y aumenta la velocidad del proceso de ajuste.
Los modelos de aprendizaje profundo se basan en redes neuronales, que comprenden muchas capas interconectadas de nodos, o neuronas, que procesan datos para hacer una predicción. Cuando se ejecuta el modelo, se produce un proceso llamado inferencia, una entrada de datos (como una imagen) se pasa de una capa a otra hasta que la predicción se genera al final. Durante la inferencia, ya no es necesario almacenar cada capa después de procesar la entrada.
Durante el entrenamiento y el ajuste, el modelo pasa por un proceso conocido como retropropagación. En la propagación hacia atrás, el resultado se compara con la respuesta correcta y luego el modelo se ejecuta a la inversa. Cada capa se actualiza a medida que la salida del modelo se acerca a la respuesta correcta. Debido a que es posible que sea necesario actualizar cada capa, se debe almacenar todo el modelo y los resultados intermedios, lo que hace que el ajuste requiera más memoria que la inferencia.
Uso de las capas necesarias
Sin embargo, no todas las capas de la red neuronal son importantes para mejorar la precisión, e incluso para las capas que son importantes, es posible que no sea requiera actualizar toda la capa. No es necesario almacenar esas capas y trozos de capas. Además, es posible que no sea necesario volver a la primera capa para mejorar la precisión; el proceso podría detenerse en algún punto intermedio. PockEngine aprovecha estos factores para acelerar el proceso de ajuste y reducir la cantidad de computación y memoria requerida.
El sistema primero ajusta cada capa, una a la vez, en una tarea determinada y mide la mejora de la precisión después de cada capa individual. De esta manera, PockEngine identifica la contribución de cada capa, así como las compensaciones entre precisión y costo de ajuste, y determina automáticamente el porcentaje de cada capa que necesita ajuste.
Convencionalmente, el gráfico de retropropagación se genera durante el tiempo de ejecución, lo que implica una gran cantidad de cálculos. En cambio, PockEngine hace esto durante el tiempo de compilación, mientras el modelo se prepara para la implementación.
PockEngine elimina fragmentos de código para eliminar capas o fragmentos de capas innecesarios, creando un gráfico reducido del modelo que se utilizará durante el tiempo de ejecución. Luego realiza otras optimizaciones en este gráfico para mejorar aún más la eficiencia. Dado que todo esto sólo debe hacerse una vez, ahorra gastos computacionales durante el tiempo de ejecución.
Entrenamiento del modelo de aprendizaje produnfo más rápido
Cuando aplicaron PockEngine a modelos de aprendizaje profundo en diferentes dispositivos periféricos, incluidos los chips Apple M1 y los procesadores de señales digitales comunes en muchos teléfonos inteligentes y computadoras Raspberry Pi, se realizó el entrenamiento en el dispositivo hasta 15 veces más rápido, sin ninguna pérdida de precisión. PockEngine también redujo significativamente la cantidad de memoria necesaria para realizar ajustes.
El equipo también aplicó la técnica al modelo de lenguaje grande Llama-V2. Con modelos de lenguaje grandes, el proceso de ajuste implica proporcionar muchos ejemplos, y es crucial que el modelo aprenda cómo interactuar con los usuarios. El proceso también es importante para los modelos encargados de resolver problemas complejos o razonar sobre soluciones.
En el futuro, los investigadores quieren utilizar PockEngine para ajustar modelos aún más grandes diseñados para procesar texto e imágenes juntos.