Framework de aprendizaje profundo eficiente y ligero, optimizado para dispositivos móviles e integrados, que admite la inferencia y el entrenamiento de modelos.
MNN - Marco de Aprendizaje Profundo Ligero de Código Abierto de Alibaba
Resumen del Proyecto
MNN es un marco de aprendizaje profundo eficiente y ligero que admite la inferencia y el entrenamiento de modelos de aprendizaje profundo, con un rendimiento líder en la industria en inferencia y entrenamiento en el dispositivo. Actualmente, MNN se ha integrado en más de 30 aplicaciones de Alibaba, como Taobao, Tmall, Youku, DingTalk, Xianyu, etc., cubriendo más de 70 escenarios de uso, como transmisión en vivo, grabación de videos cortos, búsqueda y recomendación, "拍立淘" (Pai Li Tao - Snap & Shop), marketing interactivo, distribución de derechos y control de riesgos de seguridad.
Dirección de GitHub: https://github.com/alibaba/MNN
Características Principales
1. Ligereza Extrema
- Plataforma iOS: El tamaño de la biblioteca estática para las plataformas armv7+arm64 es de aproximadamente 12 MB, y el incremento del archivo ejecutable después de la vinculación es de aproximadamente 2 MB.
- Plataforma Android: El tamaño de la biblioteca .so central es de aproximadamente 800 KB (armv7a - c++_shared)
- El uso de MNN_BUILD_MINI puede reducir el tamaño del paquete en aproximadamente un 25%.
- Soporte para cuantificación FP16/Int8, que puede reducir el tamaño del modelo en un 50%-70%.
2. Amplio Soporte de Modelos
- Soporte de Marcos: TensorFlow, Caffe, ONNX, Torchscripts
- Tipos de Redes: CNN, RNN, GAN, Transformer y otras redes neuronales comunes.
- Soporte de Operadores:
- 178 operadores de TensorFlow
- 52 operadores de Caffe
- 163 operadores de Torchscripts
- 158 operadores de ONNX
3. Compatibilidad Multiplataforma
- Plataformas Móviles: iOS 8.0+, Android 4.3+
- Dispositivos Embebidos: Dispositivos que admiten la interfaz POSIX
- Computación Híbrida Multi-Dispositivo: CPU y GPU trabajando en colaboración
- Dispositivos IoT: También tiene aplicaciones en dispositivos de Internet de las Cosas.
4. Optimización de Alto Rendimiento
- Una gran cantidad de código ensamblador optimizado aprovecha al máximo las CPU ARM/x64
- Soporte para inferencia de GPU en dispositivos móviles utilizando Metal/OpenCL/Vulkan
- Soporte para NVIDIA GPU utilizando CUDA y Tensor Core
- El algoritmo de convolución Winograd se utiliza ampliamente para convoluciones simétricas de 3x3, 4x4, 5x5, 6x6, 7x7, etc.
- Soporte para cálculo de media precisión FP16 en la arquitectura ARM v8.2, con una mejora de velocidad de 2 veces.
- Soporte para ARM v8.2 sdot y VNNI, con una mejora de velocidad de 2.5 veces.
Matriz de Soporte de Arquitectura
Arquitectura/Precisión | Normal | FP16 | BF16 | Int8 |
---|---|---|---|---|
CPU | ||||
Native | B | C | B | B |
x86/x64-SSE4.1 | A | B | B | A |
x86/x64-AVX2 | S | B | B | A |
x86/x64-AVX512 | S | B | B | S |
ARMv7a | S | S(ARMv8.2) | S | S |
ARMv8 | S | S(ARMv8.2) | S(ARMv8.6) | S |
GPU | ||||
OpenCL | A | S | C | S |
Vulkan | A | A | C | A |
Metal | A | S | C | S |
CUDA | A | S | C | A |
NPU | ||||
CoreML | A | C | C | C |
HIAI | A | C | C | C |
NNAPI | B | B | C | B |
Leyenda: S-Altamente Recomendado | A-Buen Soporte | B-Soporte con Problemas | C-No Soportado
Componentes Centrales
1. MNN-Converter
Herramienta de conversión de modelos, que admite la conversión de modelos de otros marcos a modelos MNN:
- Soporte para TensorFlow(lite), Caffe, ONNX, Torchscripts
- Realiza optimización de gráficos para reducir la cantidad de cálculo
2. MNN-Compress
Herramienta de compresión de modelos, reduce el tamaño del modelo y mejora el rendimiento
3. MNN-Express
Admite la ejecución de modelos de flujo de control, utilizando operadores MNN para la computación de propósito general
4. MNN-CV
Biblioteca de procesamiento de imágenes ligera, similar a OpenCV pero implementada basada en MNN
5. MNN-Train
Soporte para el entrenamiento de modelos MNN
Aplicaciones Destacadas
MNN-LLM
Solución de tiempo de ejecución de modelos de lenguaje grandes desarrollada sobre la base del motor MNN, con el objetivo de implementar modelos LLM localmente en la plataforma de cada persona (teléfono móvil/PC/IoT). Soporta:
- Modelos de lenguaje grandes convencionales como Qianwen, Baichuan, Zhipu, LLAMA, etc.
- Aplicación Android LLM de modalidad completa
- Generación de texto, comprensión de imágenes, voz a texto, generación de imágenes a partir de texto
MNN-Diffusion
Solución de tiempo de ejecución de modelos de difusión estable basada en el motor MNN, que admite la implementación local de modelos de difusión estable en varias plataformas.
Logros Académicos
Los resultados de la investigación relacionada con MNN se han publicado en las principales conferencias de sistemas OSDI'22 y MLSys 2020, lo que demuestra su influencia en la academia y la industria.
Herramientas de Desarrollo
MNN Workbench
Se puede descargar desde el sitio web oficial de MNN, proporcionando:
- Modelos pre-entrenados
- Herramientas de entrenamiento visuales
- Implementación de modelos con un solo clic en el dispositivo
API de Python
Proporciona una interfaz Python fácil de usar para ingenieros de aprendizaje automático, sin necesidad de escribir código C++ para inferencia, entrenamiento y procesamiento de imágenes.
Resumen
MNN, como un marco de aprendizaje profundo de código abierto de Alibaba, se ha convertido en una excelente opción para la implementación de IA móvil e integrada debido a sus características de ligereza, alto rendimiento y multiplataforma. Ya sea la inferencia de modelos CNN tradicionales o la implementación de los últimos modelos de lenguaje grandes, MNN proporciona una solución completa y es un conjunto de herramientas indispensable para los desarrolladores de IA.