El gasto excesivo de iOS11 con pelos y señales… ejemachine learning

A nadie le es ajeno el hecho de que iOS 11 ha sido una actualización que ha dejado tiritando los iPhones anteriores a los actuales del catálogo Apple. Voy a intentar poner nombre y apellidos de forma definitiva al problema del consumo de batería en el último sistema de Cupertino para dispositivos móviles.

Machine Learning gasta batería, así de simple

iOS11 acerca los motores neuronales de aprendizaje automático a todos los modelos que se actualizaron a su última versión.¿Lo digo yo? lo dice Apple desde el momento en que nos permite crear proyectos con CoreML que son compatibles con 5s, 6, 6s y 7.

CoreML hace un uso balanceado de GPU y CPU con dos premisas, una es que no se puede forzar el uso de la GPU para procesar datos y la segunda, sí se puede forzar el uso de exclusivamente CPU, tal y como se indica en la clase MLPredictionOptions, haciendo uso de la siguiente propiedad:

var usesCPUOnly: Bool { get set }

Si entrar en detalles de API, podéis verlo en el Overview de la tecnología en la misma página developer de Apple.

Si nos fijamos concretamente en el texto subrayado nos encontramos con dos cosas interesantes que vamos a detallar. En primer lugar Apple menciona que Machine Learning está basado en tecnologías de bajo nivel como Metal y Accelerate, que desarrollaremos más adelante.

La segunda, especifica de forma concreta que CoreML hace uso de GPU y CPU para conseguir el máximo rendimiento y el mínimo consumo, lo que en primero de programación llamamos eficiencia.

Las viejas y las nuevas redes neuronales de aprendizaje

Básicamente como viejas, podemos referirnos a las redes Convolucionales, ya que su semilla se remonta a 1959, cuando dos profesores, David Hubel y Torsten Wiesel, aportaron imprescindibles datos de estudio acerca de la organización funcional del cerebro y la fisiología del sistema visual, trabajo por el cual recibieron un premio Nobel.

En 1980, Kunihiko Fukushima creó la primera red neuronal basada en este estudio y que fue bautizada como Necognitron, un algoritmo basado en los modelos en cascada que estudia las imágenes por capas y obtiene patrones que después puede usar para reconocer objetos en otra imagen.

Después de posteriores mejoras, en 2012 se implementa por primera vez en una GPU con el propósito de crear un sistema automático de clasificación de imágenes y del cual podéis empapar en la dirección que os dejo a continuación.

Flexible, High Performance Convolutional Neural Networks for Image Classification

Tras esta breve introducción, establecemos la base para comprender las nuevas redes neuronales que podemos crear en iOS 11 con las nuevas recnologías que Apple nos brinda, BNNS y MPSCNN.

BNNS son las siglas que obedecen al título de Basic Neural Network Subroutines. Como parte del API Accelerate, son un conjunto de algoritmos matemáticos que aprovechan al máximo las capacidades de proceso de instrucciones vectoriales de la CPU, y nos vamos a quedar con esto para más adelante, ya que es uno de los puntos más importantes del propósito del artículo.

MPSCNN se transcribe en Metal Performance Shaders for Convolutional Neural Networks. Como podréis deducir, forma parte del API de MPS, una librería para el procesamiento de kernels en la GPU, y cuyo propósito es acelerar al máximo el rendimiento de una CNN. En iOS9, se instrumentalizó una implementación básica de MEtal Performance Shaders muy sencilla y limitada, ya con iOS10 era posible montar una CNN y hacer uso de algunos Kernels en GPU con Metal, pero era una nimiedad en comparación que no loe hoy hay disponible con la llegada de iOS11.

Bonus, las SVM

O lo que es lo mismo, las máquinas de soporte vectorial, y vamos a aprovechar la temática relacionada para describir cosas como TensorFlow y, por fin, lo que es una TPU y cómo Apple ha provocado un inconveniente con una genialidad en la estructura del A11 Bionic.

Intentando sintetizar al máximo la multitud de páginas que podríamos escribir acerca del modelo vectorial, podemos establecer que dicho modelo tiene el propósito de reconocimiento, clasificación y predicción de puntos en base a un modelo de vectores en habitualmente dos dimensiones que se calculan para obtener los pesos de dicha decisión.

Este cálculo es en el que se apoya la Inteligencia Artificial para ser tan lista como queremos, y adicionalmente el Deep Learning obtiene datos de aprendizaje que recopila para aprender exponencialmente del sistema y el usuario.

El cálculo de este tipo de algoritmos matemáticos es enormemente pesado, y se puede solucionar por diferentes vías como podemos observar en las propuestas de Google y Apple.

TensorFlow es una librería de cálculo numérico computacional desarrollada originalmente por el equipo de Google Brain. En su evolución, se ha convertido en una solución multipropósito que permite ser instalada tanto en servicios de CloudComputing (Como Google Cloud o AWS de Amazon) como en sistemas individuales para ser utilizada en las CPU y GPU del equipo local en el que es instalado.

Pues bien, Apple, además de conservar dicha posibilidad, ha dotado al A11 Bionic de una TPU, una unidad de procesamiento de Tensores que ha sido concebida específicamente para procesar esos cálculos y liberar tanto a CPU como GPU de esta tarea de forma total o lo máxima posible.

Partiendo de los modelos de MachineLearning en los que Apple de forma nativa ha aplicado algoritmos que implican este tipo de procesamiento, podemos deducir claramente que los terminales que no cuentan con una unidad TPU, tienen que procesar todos estos cálculos en CPU y GPU, quedando éstos sujetos a la capacidad de los procesadores y chips gráficos de cada uno de ellos.

Es por esto, que según bajamos en escala desde el iPhon 8/X, el iPhone 7 con A10 Fusión, cuenta con una CPU QuadCore y una GPU que si bien no usa instrucciones nativas Metal2, sí es compatible con éstas, obteniendo un rendimiento adicional muy superior a los que solo soportan Metal. Si nos fijamos en la descripción que Apple hace de Metal Performance Shader encontramos lo siguiente.

Lo que establece indudablemente que las capacidades cambian de forma drástica entre A7-A9, A10 y A11, los primeros Metal compatible, A10 Fusion Metal2 compatible y A11 Bionic con Metal2 a nivel de instrucción, sin capas de traducción algunas y con una potencia muy superior a sus antecesores.

Es por esto que este dispositivo casi no padece el peso extraordinario que todo esto ejerce sobre el sistema. Si seguimos descendiendo, encontramos A9, A8 y A7, los SoCs correspondientes a iPhone 6s, 6 y 5s respectivamente, todos ellos actualizados a iOS11 y que cuentan con procesadores y GPUs menos potentes, pero sobre todo con menos núcleos, en concreto la mitad, quedando en sendos DualCores para procesar datos que están preparados e ideados para correr en procesadores de “cuantos más núcleos, mejor!”.

¿Cuáles son los principales problemas reportados por usuarios de modelos iPhone antiguos desde la actualización de iOS11?

1- Gasto excesivo de batería.

2- LAG EN EL TECLADO QUICKTYPE

Vamos a la simple página principal de introducción y presentación de CoreML en Apple Developers.

Podemos encontrar la especificación de Apple que define la aplicación de toda esta parafernalia al teclado de iOS… aunque también se puede leer aplciaciones en Siri, Camera y muchos otros.

No es casualidad que todo funcione más lento en un SoC sin TPU, donde CPU y GPU son ocupadas en un alto porcentaje por sus mermadas capacidades que, en conclusión, provocan un gasto excesivo de batería, y una ralentización irremediable por el uso de ésta tecnología.

La máxima expresión del proceso de datos en GPU

Seguro que todos sabéis lo que es una criptomoneda y la moda de la “minería”. Pues bien, todo se asienta sobre sistemas basados en placas que son capaces de albergar GPUs de alto rendimiento para el procesamiento de datos necesario para el desarrollo de esta actividad.

Gracias a la tecnología del la arquitecura de los núcleos CUDA del fabricante nVIDIA y el catálogo de librerías de GPU-Accelerated proporciona la potencia suficiente, muy superior a la de una CPU y que además es capaz de fucnionar con varias unidades en paralelo.

Conclusión

Gracias a la tecnología del la arquitecura de los núcleos CUDA del fabricante nVIDIA y el catálogo de librerías de GPU-Accelerated proporciona la potencia suficiente, muy superior a la de una CPU y que además es capaz de fucnionar con varias unidades en paralelo.

Los comentarios están cerrados.