¿Cómo podemos hacer que las redes profundas funcionen de manera eficiente en dispositivos de baja potencia (por ejemplo, teléfonos)?

Comencemos con la inferencia, por ejemplo, reconocimiento de imagen o detección de objetos. Muchos de los marcos actuales se han escrito para capacitación, por lo que hay varias formas de mejorar su eficiencia mediante la creación de una versión optimizada para la inferencia. Por ejemplo, cuando el convnet está entrenado, debe mantener la salida de cada capa en paso hacia adelante para propagación hacia atrás. Por inferencia, no necesitamos esto, por lo que podemos sobrescribir las salidas de capas anteriores y reutilizar buffers, y reducir significativamente la huella de memoria. También podemos fusionar muchas capas (por ejemplo, capa convolucional, agrupación y relu) para mejorar la latencia y reducir el ancho de banda a DRAM. A continuación, podemos usar matemática de baja precisión para la inferencia, por ejemplo, medio flotador (como en Nvidia GPU Inference Engine) o súper corto int (8 bits), pero esto puede ser un poco más complicado ya que su red debería reescalar dinámicamente las salidas a manténgalos en un rango numérico muy estrecho.

También puede comprimir la red durante el entrenamiento (por ejemplo, Han, … Comprimiendo redes neuronales profundas e Iandola, … Squeezenet) o binarizar sus pesos (por ejemplo, en Rastegari, … XNOR-Nets).

Si su aplicación móvil necesita el paso hacia atrás (p. Ej., Transformación de fotos en cuadros como arte profundo), entonces todavía puede usar algunos de estos trucos (matemática de baja precisión, compresión, …)

Por cierto, hay una serie de marcos que ya se han portado para Android e iOS: por ejemplo MXnet – dmlc / mxnet, Tensorflow – tensorflow / tensorflow, Torch soumith / torch-android, etc.)

Estoy de acuerdo con la respuesta del profesor Bengio. Implica el rediseño de algoritmos adecuados para hardware basado en perfil de baja potencia. Por ejemplo, redes neuronales convolucionales | Data Center Performance es una de esas startups que intenta construir una biblioteca optimizada para crear algoritmos de aprendizaje profundo en el FPGA y otros dispositivos integrados.

Cree hardware especializado y diseñe algoritmos de aprendizaje para ese propósito. En mi laboratorio estamos trabajando en redes neuronales que se pueden implementar sin multiplicación y con muy baja resolución. Eso reduciría considerablemente el consumo de energía.