La división de IA (Inteligencia Artificial) de Google ha liberado su biblioteca de código abierto, GPipe, la cual busca entrenar redes neuronales “eficientemente”, basándose en Lingvo, un marco de trabajo de TensorFlow para el modelaje de secuencias. Esta biblioteca de software es aplicable a toda red neuronal que consista en muchas capas secuenciales, afirma el ingeniero de Google, Yanping Huang, en donde además -indica- permite que los investigadores puedan escalar el desempeño fácilmente.
Las redes neuronales profundas (DNN por sus siglas en inglés), tienen muchas tareas en el aprendizaje de máquinas, incluyendo el reconocimiento de la voz, el reconocimiento visual y el procesamiento del lenguaje. Todo esto tiene sus propios inconvenientes y GPipe busca minimizarlos, haciendo que a través del paralelismo se puedan escalar estas redes (en su entrenamiento), para superar las limitaciones.
Huang y colegas explican en un artículo llamado: “GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism“, cómo se ha implementado GPipe, que usa dos técnicas de IA: Una es usar el gradiente estocástico síncrono descendiente y la segunda es el paralelismo vía pipeline, un sistema de ejecución de las tareas en donde la salida de un programa es la entrada del siguiente en la cadena de la aplicación.
Sobre la segunda generación de tensores en Google Cloud (llamadas TPUs), se tienen 8 núcleos y 64 GB de memoria (8 por núcleo), en donde GPipe reduce el uso de memoria intermedia de 6.26 GB a 3.46 GB, activando 318 millones de parámetros en un solo núcleo acelerado. Sin GPipe, -dice Huang- un solo núcleo podría apenas entrenar un sistema con 82 millones de parámetros.
Pero esto no es la única ventaja de GPipe. Su modelo particionado entre diferentes aceleradores hace que puedan generarse batches miniatura (mini-batches), de ejemplos de entrenamiento, los cuales a su vez pueden partirse en micro-batches, y mediante la ejecución a través de pipelines, los resultados son más eficientes e incluso más rápidos. La razón es que así los núcleos pueden operar en paralelo y así acumular os gradientes entre los micro-batches, previniendo entonces las particiones y afectado la calidad del modelo.
En un experimento, Google entrenó un algoritmo de aprendizaje profundo -AmoebaNet-B- en 557 millones de parámetros en el modelo y con imágenes ejemplos en los TPUs, incorporando así 1.8 mil millones de parámetros en cada TPU, lo cual es 25 veces más que lo que no es posible hacer sin GPipe. El desempeño de la biblioteca se calificó como “bueno”.
Por otra parte, la velocidad de entrenamiento mejoró. En una prueba separada que involucraba el algoritmo AmoebaNet-D, distribuyendo el modelo mejoró unas 3.5 veces. Cuando Google probó su modelo de transformación de lenguajes, que tiene unos 8 mil millones de parámetros. Usando núcleos TPU de tercera generación (que son los más nuevos), en donde cada uno tienen 16 núcleos y 256 GB de memoria, (16 GB por núcleo), se logró un tiempo récord de 11 veces más rápido.