diff --git a/docs/demo_guides/cuda.md b/docs/demo_guides/cuda.md index f863fd86864194c6d022e4cf1fc75eb46725cc2c..6460d327a4f30753a2d6942d4a931f709641e3ab 100644 --- a/docs/demo_guides/cuda.md +++ b/docs/demo_guides/cuda.md @@ -1,5 +1,7 @@ # PaddleLite使用CUDA预测部署 +**注意**: Lite CUDA仅作为Nvidia GPU加速库,支持模型有限,如有需要请使用[PaddleInference](https://paddle-inference.readthedocs.io/en/latest)。 + Lite支持在x86_64,arm64架构上(如:TX2)进行CUDA的编译运行。 ## 编译 diff --git a/docs/images/architecture.png b/docs/images/architecture.png index 1af783d77dbd52923aa5facc90e00633c908f575..9397ed49a8a0071cf25b4551438d24a86de96bbb 100644 Binary files a/docs/images/architecture.png and b/docs/images/architecture.png differ diff --git a/docs/images/workflow.png b/docs/images/workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..98201e78e1a35c830231881d19fb2c0acbdbaeba Binary files /dev/null and b/docs/images/workflow.png differ diff --git a/docs/introduction/architecture.md b/docs/introduction/architecture.md index 1a94494af0b44a03988266d341be5788c46f96c2..8af678a5bf2bb1355e21df91752b777c466faee9 100644 --- a/docs/introduction/architecture.md +++ b/docs/introduction/architecture.md @@ -5,23 +5,25 @@ Mobile 在这次升级为 Lite 架构, 侧重多硬件、高性能的支持, - 引入 Type system,强化多硬件、量化方法、data layout 的混合调度能力 - 硬件细节隔离,通过不同编译开关,对支持的任何硬件可以自由插拔 - 引入 MIR(Machine IR) 的概念,强化带执行环境下的优化支持 -- 优化期和执行期严格隔离,保证预测时轻量和高效率 +- 图优化模块和执行引擎实现了良好的解耦拆分,保证预测执行阶段的轻量和高效率 架构图如下 -![Paddle Inference Refactor1.0](https://user-images.githubusercontent.com/52520497/64949619-26e49580-d8ac-11e9-855a-514feb9b75af.png) +
-## 编译期和执行期严格隔离设计 +## 模型优化阶段和预测执行阶段的隔离设计 -- compile time 优化完毕可以将优化信息存储到模型中;execution time 载入并执行 -- 两套 API 及对应的预测lib,满足不同场景 - - `CxxPredictor` 打包了 `Compile Time` 和 `Execution Time`,可以 runtime 在具体硬件上做分析和优化,得到最优效果 - - `MobilePredictor` 只打包 `Execution Time`,保持部署和执行的轻量 +- Analysis Phase为模型优化阶段,输入为Paddle的推理模型,通过Lite的模型加速和优化策略对计算图进行相关的优化分析,包含算子融合,计算裁剪,存储优化,量化精度转换、存储优化、Kernel优选等多类图优化手段。优化后的模型更轻量级,在相应的硬件上运行时耗费资源更少,并且执行速度也更快。 +- Execution Phase为预测执行阶段,输入为优化后的Lite模型,仅做模型加载和预测执行两步操作,支持极致的轻量级部署,无任何第三方依赖。 -## `Execution Time` 轻量级设计和实现 +Lite设计了两套 API 及对应的预测库,满足不同场景需求: + - `CxxPredictor` 同时包含 `Analysis Phase` 和 `Execution Phase`,支持一站式的预测任务,同时支持模型进行分析优化与预测执行任务,适用于对预测库大小不敏感的硬件场景。 + - `MobilePredictor` 只包含 `Execution Phase`,保持预测部署和执行的轻量级和高性能,支持从内存或者文件中加载优化后的模型,并进行预测执行。 -- 每个 batch 实际执行只包含两个步骤执行 - - `Op.InferShape` +## Execution Phase轻量级设计和实现 + +- 在预测执行阶段,每个 batch 实际执行只包含两个步骤执行 + - `OpLite.InferShape` 基于输入推断得到输出的维度 - `Kernel.Run`,Kernel 相关参数均使用指针提前确定,后续无查找或传参消耗 - 设计目标,执行时,只有 kernel 计算本身消耗 - 轻量级 `Op` 及 `Kernel` 设计,避免框架额外消耗 diff --git a/docs/introduction/support_model_list.md b/docs/introduction/support_model_list.md index b30bcd729929de06848285bb27a4d38cec723e67..5126bd068765573e0e7c27f767469d372b6694fb 100644 --- a/docs/introduction/support_model_list.md +++ b/docs/introduction/support_model_list.md @@ -2,31 +2,35 @@ 目前已严格验证24个模型的精度和性能,对视觉类模型做到了较为充分的支持,覆盖分类、检测和定位,包含了特色的OCR模型的支持,并在不断丰富中。 -| 类别 | 类别细分 | 模型 | 支持Int8 | 支持平台 | -|-|-|:-:|:-:|-:| -| CV | 分类 | mobilenetv1 | Y | ARM,X86,NPU,RKNPU,APU | -| CV | 分类 | mobilenetv2 | Y | ARM,X86,NPU | -| CV | 分类 | resnet18 | Y | ARM,NPU | -| CV | 分类 | resnet50 | Y | ARM,X86,NPU,XPU | -| CV | 分类 | mnasnet | | ARM,NPU | -| CV | 分类 | efficientnet | | ARM | -| CV | 分类 | squeezenetv1.1 | | ARM,NPU | -| CV | 分类 | ShufflenetV2 | Y | ARM | -| CV | 分类 | shufflenet | Y | ARM | -| CV | 分类 | inceptionv4 | Y | ARM,X86,NPU | -| CV | 分类 | vgg16 | Y | ARM | -| CV | 分类 | googlenet | Y | ARM,X86 | -| CV | 检测 | mobilenet_ssd | Y | ARM,NPU* | -| CV | 检测 | mobilenet_yolov3 | Y | ARM,NPU* | -| CV | 检测 | Faster RCNN | | ARM | -| CV | 检测 | Mask RCNN | | ARM | -| CV | 分割 | Deeplabv3 | Y | ARM | -| CV | 分割 | unet | | ARM | -| CV | 人脸 | facedetection | | ARM | -| CV | 人脸 | facebox | | ARM | -| CV | 人脸 | blazeface | Y | ARM | -| CV | 人脸 | mtcnn | | ARM | -| CV | OCR | ocr_attention | | ARM | -| NLP | 机器翻译 | transformer | | ARM,NPU* | +| 类别 | 类别细分 | 模型 | 支持平台 | +|-|-|:-|:-| +| CV | 分类 | mobilenetv1 | ARM,X86,NPU,RKNPU,APU | +| CV | 分类 | mobilenetv2 | ARM,X86,NPU | +| CV | 分类 | resnet18 | ARM,NPU | +| CV | 分类 | resnet50 | ARM,X86,NPU,XPU | +| CV | 分类 | mnasnet | ARM,NPU | +| CV | 分类 | efficientnet | ARM | +| CV | 分类 | squeezenetv1.1 | ARM,NPU | +| CV | 分类 | ShufflenetV2 | ARM | +| CV | 分类 | shufflenet | ARM | +| CV | 分类 | inceptionv4 | ARM,X86,NPU | +| CV | 分类 | vgg16 | ARM | +| CV | 分类 | googlenet | ARM,X86 | +| CV | 分类 | SENet | XPU | +| CV | 检测 | mobilenet_ssd | ARM,NPU*,XPU | +| CV | 检测 | mobilenet_yolov3 | ARM,NPU*,XPU | +| CV | 检测 | Faster RCNN | ARM,XPU | +| CV | 检测 | Mask RCNN | ARM,XPU | +| CV | 分割 | Deeplabv3 | ARM | +| CV | 分割 | unet | ARM,XPU | +| CV | 人脸 | facedetection | ARM | +| CV | 人脸 | facebox | ARM | +| CV | 人脸 | blazeface | ARM | +| CV | 人脸 | mtcnn | ARM | +| CV | OCR | ocr_attention | ARM | +| CV | GAN | CycleGAN | NPU | +| NLP | 机器翻译 | transformer | ARM,NPU* | +| NLP | 机器翻译 | BERT | XPU | +| NLP | 语义表示 | ERNIE | XPU | -> **注意:** NPU* 代表ARM+NPU异构计算 +**注意:** NPU* 代表ARM+NPU异构计算 diff --git a/docs/quick_start/tutorial.md b/docs/quick_start/tutorial.md index a7eb1327f812917e3f1609d097acaeec2a96997d..607857b0c79e153904c57d2f29fe6733c76b501e 100644 --- a/docs/quick_start/tutorial.md +++ b/docs/quick_start/tutorial.md @@ -2,51 +2,64 @@ Lite是一种轻量级、灵活性强、易于扩展的高性能的深度学习预测框架,它可以支持诸如ARM、OpenCL、NPU等等多种终端,同时拥有强大的图优化及预测加速能力。如果您希望将Lite框架集成到自己的项目中,那么只需要如下几步简单操作即可。 -## 一. 准备模型 -Lite框架目前支持的模型结构为[PaddlePaddle](https://github.com/PaddlePaddle/Paddle)深度学习框架产出的模型格式。因此,在您开始使用 Lite 框架前您需要准备一个由PaddlePaddle框架保存的模型。 -如果您手中的模型是由诸如Caffe2、Tensorflow等框架产出的,那么我们推荐您使用 [X2Paddle](https://github.com/PaddlePaddle/X2Paddle) 工具进行模型格式转换。 +![workflow](https://raw.githubusercontent.com/PaddlePaddle/Paddle-Lite/develop/docs/images/workflow.png) -## 二. 模型优化 +**一. 准备模型** -Lite框架拥有强大的加速、优化策略及实现,其中包含诸如量化、子图融合、Kernel优选等等优化手段,为了方便您使用这些优化策略,我们提供了[opt](../user_guides/model_optimize_tool)帮助您轻松进行模型优化。优化后的模型更轻量级,耗费资源更少,并且执行速度也更快。 +Paddle Lite框架直接支持模型结构为[PaddlePaddle](https://github.com/PaddlePaddle/Paddle)深度学习框架产出的模型格式。目前PaddlePaddle用于推理的模型是通过[save_inference_model](https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/io_cn/save_inference_model_cn.html#save-inference-model)这个API保存下来的。 +如果您手中的模型是由诸如Caffe、Tensorflow、PyTorch等框架产出的,那么您可以使用 [X2Paddle](https://github.com/PaddlePaddle/X2Paddle) 工具将模型转换为PadddlePaddle格式。 -opt的详细介绍,请您参考 [模型优化方法](../user_guides/model_optimize_tool)。 +**二. 模型优化** -下载opt工具后执行以下代码: +Paddle Lite框架拥有优秀的加速、优化策略及实现,包含量化、子图融合、Kernel优选等优化手段。优化后的模型更轻量级,耗费资源更少,并且执行速度也更快。 +这些优化通过Paddle Lite提供的opt工具实现。opt工具还可以统计并打印出模型中的算子信息,并判断不同硬件平台下Paddle Lite的支持情况。您获取PaddlePaddle格式的模型之后,一般需要通该opt工具做模型优化。opt工具的下载和使用,请参考 [模型优化方法](https://paddle-lite.readthedocs.io/zh/latest/user_guides/model_optimize_tool.html)。 -``` shell -$ ./opt \ - --model_dir=