Este repositorio proporciona código para algoritmos de aprendizaje automático para dispositivos de borde desarrollados en Microsoft Research India.
Los modelos de aprendizaje automático para dispositivos de borde deben tener una pequeña huella en términos de almacenamiento, latencia de predicción y energía. Una instancia de dónde son deseables dichos modelos son los dispositivos y sensores de escasez de recursos en la configuración de Internet de las cosas (IoT). Hacer predicciones en tiempo real localmente en dispositivos IoT sin conectarse a la nube requiere modelos que se ajusten en unos pocos kilobytes.
Algoritmos que brillan en este entorno en términos de tamaño del modelo y cómputo, a saber:
Estos algoritmos pueden entrenar modelos para problemas de aprendizaje supervisados clásicos con requisitos de memoria que son órdenes de magnitud más bajos que otros algoritmos ML modernos. Los modelos entrenados se pueden cargar en dispositivos de borde, como dispositivos/sensores IoT, y se usan para hacer predicciones rápidas y precisas fuera de línea.
Una herramienta que adapta los modelos entrenados por algoritmos anteriores a inferir por aritmética de punto fijo.
Aplicaciones que demuestran USCases de estos algoritmos:
tf contiene el paquete edgeml_tf que especifica estas arquitecturas en TensorFlow, y examples/tf contiene rutinas de entrenamiento de muestras para estos algoritmos.pytorch contiene el paquete edgeml_pytorch que especifica estas arquitecturas en Pytorch, y examples/pytorch contiene rutinas de entrenamiento de muestras para estos algoritmos.cpp tiene código de entrenamiento e inferencia para algoritmos Bonsai y ProtoNN en C ++.applications tiene código/demostraciones de aplicaciones de los algoritmos EDGEML.tools/SeeDot tiene la herramienta de cuantización para generar código de inferencia de punto fijo.c_reference contiene el código de inferencia (punto flotante o cuantificado) para varios algoritmos en C.Consulte las instrucciones de instalación/ejecución en las páginas ReadMe dentro de estos directorios.
Para obtener más detalles, consulte nuestra página del proyecto, Página de investigación de Microsoft, las publicaciones ICML '17 sobre Bonsai y Protonn Algorithms, las publicaciones Neurips '18 sobre EMI-RNN y FASTGRNN, la publicación PLDI '19 sobre el compilador Seedot, las publicaciones de UIST '19 en la publicación. RNNS, la publicación ICML '20 sobre DROC y la publicación de Neurips '20 en RNNPOOL.
También consulte el proyecto ELL que puede proporcionar binarios optimizados para algunos de los modelos ONNX capacitados por esta biblioteca.
Código de algoritmos, aplicaciones y herramientas aportadas por:
Contribuyentes a este proyecto. Nuevos contribuyentes bienvenidos.
Por favor envíenos sus comentarios, críticas y preguntas.
Si usa software de esta biblioteca en su trabajo, utilice la entrada de Bibtex a continuación para citar.
@misc{edgeml04,
author = {{Dennis, Don Kurian and Gaurkar, Yash and Gopinath, Sridhar and Goyal, Sachin
and Gupta, Chirag and Jain, Moksh and Jaiswal, Shikhar and Kumar, Ashish and
Kusupati, Aditya and Lovett, Chris and Patil, Shishir G and Saha, Oindrila and
Simhadri, Harsha Vardhan}},
title = {{EdgeML: Machine Learning for resource-constrained edge devices}},
url = {https://github.com/Microsoft/EdgeML},
version = {0.4},
}
Código de conducta de Microsoft Open Source. Para obtener más información, consulte el Código de Conducta Preguntas frecuentes o comuníquese con [email protected] con cualquier pregunta o comentario adicional.