Red de conocimiento informático - Conocimiento del nombre de dominio - 2 veces más rápido, TFLite lanza el motor de inferencia de GPU móvil Android basado en OpenCL

2 veces más rápido, TFLite lanza el motor de inferencia de GPU móvil Android basado en OpenCL

TensorFlow Lite (TFLite) ahora admite la inferencia de GPU usando OpenCL en dispositivos Android, una mejora que mejora el rendimiento de TFLite aproximadamente 2 veces con respecto al uso del backend OpenGL existente.

El equipo de TensorFlow Lite presentó el progreso actual que ha logrado en la inferencia de GPU móvil usando OpenCL y anunció el lanzamiento oficial de un motor de inferencia de GPU móvil para Android basado en OpenCL, que es comparable a los motores de inferencia actuales en términos razonables. Redes neuronales de gran tamaño. Algunos backends OpenGL proporcionan una mejora de rendimiento de hasta 2 veces.

Se agregaron sombreadores de computación en OpenGL ES 3.1, pero sus decisiones de diseño de API de compatibilidad con versiones anteriores limitaron el uso de todo el potencial de la GPU. OpenCL, por otro lado, fue diseñado desde el principio para la computación utilizando varios aceleradores y, por lo tanto, es más relevante para el mundo de la inferencia de GPU móvil.

Por lo tanto, el equipo de TFLite estudió un motor de inferencia basado en OpenCL e introdujo algunas características que permiten optimizar el motor de inferencia de GPU móvil.

Por el contrario, el nuevo motor de inferencia de GPU móvil tiene los siguientes puntos clave:

Análisis de rendimiento: en comparación con OpenGL, optimizar el backend de OpenCL es mucho más fácil porque OpenCL proporciona buenas capacidades de análisis y Buen soporte para Qualcomm Adreno. Al utilizar estas API de creación de perfiles, el rendimiento de cada programa principal se puede medir con mucha precisión.

Optimizar el tamaño del grupo de trabajo: el rendimiento de la GPU TFLite en las GPU Qualcomm Adreno es muy sensible al tamaño del grupo de trabajo, elegir el tamaño de grupo de trabajo correcto puede mejorar el rendimiento y viceversa. Utilizando las capacidades de creación de perfiles en OpenCL descritas anteriormente, pudimos implementar un optimizador para el tamaño de los grupos de trabajo, lo que resultó en una aceleración promedio del 50 %.

Coma flotante de precisión nativa de 16 bits (FP16): OpenCL admite de forma nativa FP16 y requiere que el acelerador especifique la disponibilidad del tipo de datos. Incluso algunas GPU más antiguas, como la Adreno 305 de 2012, se pueden utilizar con todas sus capacidades como parte de la especificación oficial.

Memoria constante: OpenCL tiene el concepto de memoria constante. Qualcomm ha agregado una capacidad de memoria física que lo hace ideal para usar con la memoria constante de OpenCL.

Esto ha demostrado ser muy efectivo para algunos casos especiales, como capas muy delgadas al principio o al final de una red neuronal. OpenCL en Adreno puede superar con creces el rendimiento de OpenGL mediante la sinergia con esta memoria física constante y el soporte nativo FP16 mencionado anteriormente.

TFLite muestra específicamente la comparación de rendimiento en una CPU (un solo subproceso en un núcleo grande) usando el backend OpenGL existente y una GPU que usa el nuevo backend OpenCL.

El gráfico anterior ilustra el rendimiento del motor de inferencia en un dispositivo Android específico que utiliza OpenCL en dos redes neuronales conocidas, MNASNet 1.3 y SSD MobileNet v3 (grande), respectivamente. Como puede ver, el nuevo backend de OpenCL es aproximadamente dos veces más rápido que el backend de OpenGL y OpenCL funciona aún mejor en redes más grandes.

Además, debido a que OpenCL en sí no forma parte de Android, es posible que algunos usuarios no puedan utilizarlo. Para simplificar el desarrollo, se agregaron algunas modificaciones al delegado de GPU TFLite, que primero verifica la disponibilidad de OpenCL en tiempo de ejecución y, si está disponible, usará el nuevo backend OpenCL; de lo contrario, recurrirá al backend OpenGL existente.

De hecho, el backend de OpenCL ha estado presente en el repositorio de TensorFlow desde mediados de 2019 y se integra perfectamente a través del delegado de GPU TFLite v2.

Además, ahora es el "Período de cambio de trabajo Golden Nine Silver Ten", y muchos amigos están ansiosos por probarlo. Para los programadores, hay demasiados conocimientos y tecnologías difíciles de aprender. Si desea evitar ser eliminado por la entrevista, solo puede hacer planes de revisión con anticipación, responder las preguntas con cuidado y mejorar continuamente durante el estudio. Personalmente, sugiero que es esencial hacer una revisión completa de conocimientos y responder las preguntas antes de la entrevista. entrevista. Hacer una clasificación de conocimientos puede profundizar su dominio de los principios, y repasar las preguntas puede mejorar la amplitud y profundidad de sus entrevistas técnicas.

¡Recuerda que siempre somos nosotros quienes nos adaptamos al entorno, y no el entorno que se adapta a nosotros!

Se adjuntan veinte conjuntos de preguntas de entrevistas sobre Android de empresas de Internet de primer y segundo nivel que he recopilado (incluidas BAT, Xiaomi, Huawei, Meituan, Didi) y mis propias notas de revisión de Android (incluidas las básicas). Puntos de conocimiento de Android), puntos de conocimiento extendidos de Android, análisis del código fuente de Android, resumen de patrones de diseño, puntos de conocimiento de Gradle, resumen de preguntas de algoritmos comunes (732 páginas en total).

Preguntas de la entrevista real de Tencent Android (parte Java)

Preguntas de la entrevista real de Tencent Android (parte de Android)

Descripción general de la clasificación de las preguntas de la entrevista real de Android al principio - y empresas de Internet de segundo nivel