From 3402fe848643ffafdf5b96159652cf3eaa50a58b Mon Sep 17 00:00:00 2001 From: meng_chunyang Date: Tue, 25 Aug 2020 19:53:39 +0800 Subject: [PATCH] add README files for ms lite --- docs/MindSpore-Lite-architecture.png | Bin 0 -> 55828 bytes mindspore/lite/README.md | 62 ++++++++++++++++++++++--- mindspore/lite/README_CN.md | 66 +++++++++++++++++++++++++++ 3 files changed, 122 insertions(+), 6 deletions(-) create mode 100644 docs/MindSpore-Lite-architecture.png create mode 100644 mindspore/lite/README_CN.md diff --git a/docs/MindSpore-Lite-architecture.png b/docs/MindSpore-Lite-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..abf28796690f5649f8bc92382dfd4c2c83187620 GIT binary patch literal 55828 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 literal 0 HcmV?d00001 diff --git a/mindspore/lite/README.md b/mindspore/lite/README.md index fde5c6bcb95..25a21b74439 100644 --- a/mindspore/lite/README.md +++ b/mindspore/lite/README.md @@ -1,6 +1,56 @@ -MindSpore的设计目标 -1 端云一体化:IR统一,云侧训练模型可以在端侧重训;云侧混合精度训练与端侧混合精度推理协同提升推理性能; -2 高性能与轻量化:高性能内核计算库nnacl,支持slide window、im2col+gemm、winograde等多种卷积算法,深度汇编指令优化;在线运行模块不依赖第三方库,保持框架的轻量化; -3 快捷部署:支持TensorFlow Lite、Caffe、ONNX等多种格式的模型转换;提供量化、图片数据处理等功能,便利用户部署; -4 全场景覆盖: Lite & Micro覆盖手机、IoT等各种智能设备 -  \ No newline at end of file +[查看中文](./README_CN.md) + +## What Is MindSpore Lite + +MindSpore lite is a high-performance, lightweight open source reasoning framework that can be used to meet the needs of AI applications on mobile devices. MindSpore Lite focuses on how to deploy AI technology more effectively on devices. It has been integrated into HMS (Huawei Mobile Services) to provide inferences for applications such as image classification, object detection and OCR. MindSpore Lite will promote the development and enrichment of the AI software/hardware application ecosystem. + +MindSpore Lite Architecture + +For more details please check out our [MindSpore Lite Architecture Guide](https://www.mindspore.cn/lite/docs/en/master/architecture.html). + +### MindSpore Lite features + +1. Cooperative work with MindSpore training + - Provides training, optimization, and deployment. + - The unified IR realizes the device-cloud AI application integration. + +2. Lightweight + - Provides model compress, which could help to improve performance as well. + - Provides the ultra-lightweight reasoning solution MindSpore Micro to meet the deployment requirements in extreme environments such as smart watches and headphones. + +3. High-performance + - The built-in high-performance kernel computing library NNACL supports multiple convolution optimization algorithms such as Slide window, im2col+gemm, winograde, etc. + - Assembly code to improve performance of kernel operators. Supports CPU, GPU, and NPU. +4. Versatility + - Supports IOS, Android. + - Supports Lite OS. + - Supports mobile device, smart screen, pad, and IOT devices. + - Supports third party models such as TFLite, CAFFE and ONNX. + +## MindSpore Lite AI deployment procedure + +1. Model selection and personalized training + + Select a new model or use an existing model for incremental training using labeled data. When designing a model for mobile device, it is necessary to consider the model size, accuracy and calculation amount. + + The MindSpore team provides a series of pre-training models used for image classification, object detection. You can use these pre-trained models in your application. + + The pre-trained models provided by MindSpore include: [Image Classification](https://download.mindspore.cn/model_zoo/official/lite/) and [Object Detection](https://download.mindspore.cn/model_zoo/official/lite/). More models will be provided in the feature. + + MindSpore allows you to retrain pre-trained models to perform other tasks. For example: using a pre-trained image classification model, it can be retrained to recognize new image types. See [Retraining](https://www.mindspore.cn/lite/tutorial/zh-CN/master/advanced_use/retraining_of_quantized_network.html). + +2. Model converter and optimization + + If you use MindSpore or a third-party model, you need to use [MindSpore Lite Model Converter Tool](https://www.mindspore.cn/lite/tutorial/zh-CN/master/use/converter_tool.html) to convert the model into MindSpore Lite model. The MindSpore Lite model converter tool provides the converter of TensorFlow Lite, Caffe, ONNX to MindSpore Lite model, fusion and quantization could be introduced during convert procedure. + + MindSpore also provides a tool to convert models running on IoT devices . + +3. Model deployment + + This stage mainly realizes model deployment, including model management, deployment, operation and maintenance monitoring, etc. + +4. Inference + + Load the model and perform inference. [Inference](https://www.mindspore.cn/lite/tutorial/zh-CN/master/use/runtime.html) is the process of running input data through the model to get output. + + MindSpore provides a series of pre-trained models that can be deployed on mobile device [example](#TODO). diff --git a/mindspore/lite/README_CN.md b/mindspore/lite/README_CN.md new file mode 100644 index 00000000000..d2051cae3be --- /dev/null +++ b/mindspore/lite/README_CN.md @@ -0,0 +1,66 @@ + +[View English](./README.md) + +## MindSpore Lite介绍 + +MindSpore Lite是MindSpore推出的端云协同的、轻量化、高性能AI推理框架,用于满足越来越多的端测AI应用需求。MindSpore Lite聚焦AI技术在端侧设备上的部署和运行,已经在华为HMS和智能终端的图像分类、目标识别、人脸识别、文字识别等应用中广泛使用,未来MindSpore Lite将与MindSpore AI社区一起,致力于丰富AI软硬件应用生态。 + + + +MindSpore Lite Architecture + +欲了解更多详情,请查看我们的[MindSpore Lite 总体架构](https://www.mindspore.cn/lite/docs/zh-CN/master/architecture.html)。 + +## MindSpore Lite技术特点 + +1. 端云协同提供一站式训练和推理 + + - 提供模型训练、模型转换优化、部署和推理端到端流程。 + - 统一的IR实现端云AI应用一体化。 + +2. 超轻量 + + - 支持模型量化压缩,模型更小跑得更快。 + - 提供超轻量的推理解决方案MindSpore Micro,满足智能手表、耳机等极限环境下的部署要求。 + +3. 高性能 + + - 自带的高性能内核计算库NNACL,支持Sliding Windows、Im2Col+GEMM、Winograd等多种卷积优化算法。 + - 汇编级优化,支持CPU、GPU、NPU异构调度,最大化发挥硬件算力,最小化推理时延和功耗。 + +4. 广覆盖 + + - 支持iOS、Android等手机操作系统。 + - 支持LiteOS嵌入式操作系统。 + - 支持手机、大屏、平板、IoT等各种智能设备上的AI应用。 + - 支持MindSpore/TensorFlow Lite/Caffe/ONNX模型,方便用户快速部署。 + +## MindSpore Lite AI部署流程 + +1. 模型选择和个性化训练 + + 包括选择新模型或对已有模型,利用标注数据进行增量训练。面向端侧设计模型时,需要考虑模型大小、精度和计算量。 + + MindSpore团队提供了一系列预训练模型,用于解决图像分类、目标检测等场景的学习问题。可以在您的应用程序中使用这些预训练模型对应的终端模型。 + + MindSpore提供的预训练模型包括:[图像分类(Image Classification)](https://download.mindspore.cn/model_zoo/official/lite/)和[目标检测(Object Detection)](https://download.mindspore.cn/model_zoo/official/lite/)。后续MindSpore团队会增加更多的预置模型。 + + MindSpore允许您重新训练预训练模型,以执行其他任务。比如:使用预训练的图像分类模型,可以重新训练来识别新的图像类型。参见[重训练](https://www.mindspore.cn/lite/tutorial/zh-CN/master/advanced_use/retraining_of_quantized_network.html)。 + +2. 模型转换/优化 + + 如果您使用MindSpore或第三方训练的模型,需要使用[MindSpore Lite模型转换工具](https://www.mindspore.cn/lite/tutorial/zh-CN/master/use/converter_tool.html)转换成MindSpore Lite模型格式。MindSpore Lite模型转换工具不仅提供了将TensorFlow Lite、Caffe、ONNX等模型格式转换为MindSpore Lite模型格式,还提供了算子融合、量化等功能。 + + MindSpore还提供了将IoT设备上运行的模型转换成.C代码的生成工具。 + + 经过上述两个部署,您已经得到端侧可以部署的模型。 + +3. 模型部署 + + 这个阶段主要实现模型部署,包括模型管理、部署和运维监控等。 + +4. 模型推理 + + 主要完成模型推理工作,即加载模型,完成模型相关的所有计算。[推理](https://www.mindspore.cn/lite/tutorial/zh-CN/master/use/runtime.html)是通过模型运行输入数据,获取预测的过程。 + + MindSpore提供了一系列预训练模型部署在智能终端的[样例](#TODO)。