{"id":13504249,"url":"https://github.com/microsoft/EdgeML","last_synced_at":"2025-03-29T21:30:33.100Z","repository":{"id":37678093,"uuid":"99108990","full_name":"microsoft/EdgeML","owner":"microsoft","description":"This repository provides code for machine learning algorithms for edge devices developed at Microsoft Research India.","archived":false,"fork":false,"pushed_at":"2024-05-20T12:28:33.000Z","size":82301,"stargazers_count":1610,"open_issues_count":36,"forks_count":374,"subscribers_count":88,"default_branch":"master","last_synced_at":"2025-03-23T19:02:18.175Z","etag":null,"topics":["bonsai","classifier","cpp","deep-learning","edge-computing","edge-devices","edge-machine-learning","emi-rnn","fastgrnn","fastrnn","iot-device","machine-learning","machine-learning-algorithms","microsoft","microsoft-research","protonn","pytorch","resource-constrained-ml","sensor","tensorflow"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/microsoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"License.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-08-02T11:27:52.000Z","updated_at":"2025-03-23T09:14:35.000Z","dependencies_parsed_at":"2024-11-19T12:23:11.752Z","dependency_job_id":null,"html_url":"https://github.com/microsoft/EdgeML","commit_stats":{"total_commits":785,"total_committers":44,"mean_commits":17.84090909090909,"dds":0.7426751592356688,"last_synced_commit":"81025fce8ba28707eabe72e11bf3987a8d745608"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2FEdgeML","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2FEdgeML/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2FEdgeML/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2FEdgeML/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/microsoft","download_url":"https://codeload.github.com/microsoft/EdgeML/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246249082,"owners_count":20747164,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bonsai","classifier","cpp","deep-learning","edge-computing","edge-devices","edge-machine-learning","emi-rnn","fastgrnn","fastrnn","iot-device","machine-learning","machine-learning-algorithms","microsoft","microsoft-research","protonn","pytorch","resource-constrained-ml","sensor","tensorflow"],"created_at":"2024-08-01T00:00:24.089Z","updated_at":"2025-03-29T21:30:28.837Z","avatar_url":"https://github.com/microsoft.png","language":"C++","readme":"## The Edge Machine Learning library\n\nThis repository provides code for machine learning algorithms for edge devices\ndeveloped at [Microsoft Research\nIndia](https://www.microsoft.com/en-us/research/project/resource-efficient-ml-for-the-edge-and-endpoint-iot-devices/). \n\nMachine learning models for edge devices need to have a small footprint in\nterms of storage, prediction latency, and energy. One instance of where such \nmodels are desirable is resource-scarce devices and sensors in the Internet \nof Things (IoT) setting. Making real-time predictions locally on IoT devices \nwithout connecting to the cloud requires models that fit in a few kilobytes.\n\n### Contents\nAlgorithms that shine in this setting in terms of both model size and compute, namely:\n - **Bonsai**: Strong and shallow non-linear tree based classifier.\n - **ProtoNN**: **Proto**type based k-nearest neighbors (k**NN**) classifier. \n - **EMI-RNN**: Training routine to recover the critical signature from time series data for faster and accurate RNN predictions.\n - **Shallow RNN**: A meta-architecture for training RNNs that can be applied to streaming data.\n - **FastRNN \u0026 FastGRNN - FastCells**: **F**ast, **A**ccurate, **S**table and **T**iny (**G**ated) RNN cells.\n - **DROCC**: **D**eep **R**obust **O**ne-**C**lass **C**lassfiication for training robust anomaly detectors.\n - **RNNPool**: An efficient non-linear pooling operator for RAM constrained inference.\n\nThese algorithms can train models for classical supervised learning problems\nwith memory requirements that are orders of magnitude lower than other modern\nML algorithms. The trained models can be loaded onto edge devices such as IoT\ndevices/sensors, and used to make fast and accurate predictions completely\noffline.\n\nA tool that adapts models trained by above algorithms to be inferred by fixed point arithmetic.\n - **SeeDot**: Floating-point to fixed-point quantization tool.\n\nApplications demonstrating usecases of these algorithms:\n - **GesturePod**: Gesture recognition pipeline for microcontrollers.\n - **MSC-RNN**: Multi-scale cascaded RNN for analyzing Radar data.\n\n### Organization\n - The `tf` directory contains the `edgeml_tf` package which specifies these architectures in TensorFlow,\n   and `examples/tf` contains sample training routines for these algorithms.\n - The `pytorch` directory contains the `edgeml_pytorch` package which specifies these architectures in PyTorch,\n   and `examples/pytorch` contains sample training routines for these algorithms.\n - The `cpp` directory has training and inference code for `Bonsai` and `ProtoNN` algorithms in C++.\n - The `applications` directory has code/demonstrations of applications of the EdgeML algorithms. \n - The `tools/SeeDot` directory has the quantization tool to generate fixed-point inference code.  \n - The `c_reference` directory contains the inference code (floating-point or quantized) for various algorithms in C.\n\nPlease see install/run instructions in the README pages within these directories.\n\n### Details and project pages\nFor details, please see our\n [project page](https://microsoft.github.io/EdgeML/), \n [Microsoft Research page](https://www.microsoft.com/en-us/research/project/resource-efficient-ml-for-the-edge-and-endpoint-iot-devices/),\nthe ICML '17 publications on [Bonsai](/docs/publications/Bonsai.pdf) and\n[ProtoNN](/docs/publications/ProtoNN.pdf) algorithms, \nthe NeurIPS '18 publications on [EMI-RNN](/docs/publications/emi-rnn-nips18.pdf) and\n[FastGRNN](/docs/publications/FastGRNN.pdf),\nthe PLDI '19 publication on [SeeDot compiler](/docs/publications/SeeDot.pdf),\nthe UIST '19 publication on [Gesturepod](/docs/publications/GesturePod-UIST19.pdf), \nthe BuildSys '19 publication on [MSC-RNN](/docs/publications/MSCRNN.pdf),\nthe NeurIPS '19 publication on [Shallow RNNs](/docs/publications/Sha-RNN.pdf),\nthe ICML '20 publication on [DROCC](/docs/publications/drocc.pdf),\nand the NeurIPS '20 publication on [RNNPool](/docs/publications/RNNPool.pdf).\n\n\nAlso checkout the [ELL](https://github.com/Microsoft/ELL) project which can\nprovide optimized binaries for some of the ONNX models trained by this library.\n\n### Contributors:\nCode for algorithms, applications and tools contributed by:\n  - [Don Dennis](https://dkdennis.xyz)\n  - [Yash Gaurkar](https://github.com/mr-yamraj/)\n  - [Sridhar Gopinath](http://www.sridhargopinath.in/)\n  - [Sachin Goyal](https://saching007.github.io/)\n  - [Chirag Gupta](https://aigen.github.io/)\n  - [Moksh Jain](https://github.com/MJ10)\n  - [Shikhar Jaiswal](https://shikharj.github.io/)\n  - [Ashish Kumar](https://ashishkumar1993.github.io/)\n  - [Aditya Kusupati](https://adityakusupati.github.io/)\n  - [Chris Lovett](https://github.com/lovettchris)\n  - [Shishir Patil](https://shishirpatil.github.io/)\n  - [Oindrila Saha](https://github.com/oindrilasaha)\n  - [Harsha Vardhan Simhadri](http://harsha-simhadri.org)\n\n[Contributors](https://microsoft.github.io/EdgeML/People) to this project. New contributors welcome.\n\nPlease [email us](mailto:edgeml@microsoft.com) your comments, criticism, and questions.\n\nIf you use software from this library in your work, please use the BibTex entry below for citation.\n\n```\n@misc{edgeml04,\n   author = {{Dennis, Don Kurian and Gaurkar, Yash and Gopinath, Sridhar and Goyal, Sachin \n              and Gupta, Chirag and Jain, Moksh and Jaiswal, Shikhar and Kumar, Ashish and\n              Kusupati, Aditya and  Lovett, Chris and Patil, Shishir G and Saha, Oindrila and\n              Simhadri, Harsha Vardhan}},\n   title = {{EdgeML: Machine Learning for resource-constrained edge devices}},\n   url = {https://github.com/Microsoft/EdgeML},\n   version = {0.4},\n}\n```\n\n### Microsoft Open Source Code of Conduct This project has adopted the\n[Microsoft Open Source Code of\nConduct](https://opensource.microsoft.com/codeofconduct/). For more information\nsee the [Code of Conduct\nFAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact\n[opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional\nquestions or comments.\n","funding_links":[],"categories":["C++","其他_机器学习与深度学习","Interdisciplinary"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicrosoft%2FEdgeML","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmicrosoft%2FEdgeML","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicrosoft%2FEdgeML/lists"}