D2前端技术论坛

端智能的应⽤用与演进 霞影(姜霄棠)

1. 端智能的应⽤用与演进 姜霄棠(花名:霞影)
2. 深度学习时代 传统算法 深度学习算法 ⼈人脸 识别 Haar 特征 AdaBoost MTCNN 图像 分割 FCM GraphCut FCN 图像 分类 ⽂文字 识别 Hog 特征 SVM CNN 连通域分析 SVM CNN MSRE AdaBoost RNN SWT HMM 深度学习 框架
3. 深度学习时代 Conv1 Op Conv2 Pool2 Ip1 Relu1 Lenet 数字识别 Ip2 Prob 算法SDK 优化 建设 Pool1 输⼊入图像 算法优化⼯工 程师 使⽤用 深度学习 框架 输出概率 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 使⽤用 算法⼯工程师 产出 算法模型 前端/客户端 开发⼯工程师 产出 活动 / 其他 业务
4. 云⽅方案 / 端⽅方案 云(服务器器) 数据 不不适合 在端上运⾏行行 深度学习 框架 端(⼿手机/嵌⼊入式设备) 推理理服务 传给云端 处理理 应⽤用层 返回结果 模型 应⽤用层 输⼊入数据 caffe tensorflow pytorch 训练脚本 ⽅方案⼀一 输⼊入数据 ⽅方案⼆二 模型处理理框架 返回结果 端上推理理框架 端智能
5. 端智能的优势与挑战 端智能有⽆无法替代的优势,但相应的,技术难度也⼗十分⼤大 实时 离线服务 推理理性能 挑战 优势 保护隐私 模型体积 节省算⼒力力 防破解 多平台 适配
6. 端智能的应⽤用
7. 端智能的应⽤用
8. 端智能的应⽤用 ⼿手机 本地翻译 降噪 App OCR 个⼈人助⼿手 AI摄影 AI图⽚片编辑 安全⻛风控 短视频/直播 特效 AI⼿手机 互动活动 相册分类 3D⼈人脸表情 拍⽴立淘 AI提升性能 提升⽤用户体验,带来新能⼒力力 个性化推荐 试妆试⽤用
9. 淘宝端智能 基础框架 AliNN V1 业务 SDK AliNN Kit 算法SDK (⼈人脸/OCR/图 像分类) AliNN V2 AliNN Kit AliNN Magic 短视频特效引擎 算法SDK AliNN V3 AliNN Kit AliNN Magic 短视频特效引擎 算法SDK 边缘计算 AliML
10. AliNN 整体架构 云(服务器器端) 原始 模型 AliNN Frontend 原始 模型 Caffe Converter 端(⼿手机/嵌⼊入式设备) 原始 模型 业务 应⽤用 业务 应⽤用 OpenCL AliNN Kit AliNN Magic TF-Lite Converter Metal AliNN Optimizer AliNN 计算框架 Vulkan 模型下发 端上 模型 端上 模型 端上 模型 业务 应⽤用 CPU (汇编) Tensorflow Converter Onnx Converter 业务 应⽤用 端上 模型 端上 模型 端上 模型
11. AliNN 云侧架构 *.caffe Model IDST - Quantize *.pb *.tflite AliNN Frontend Caffe Converter Tensorflow Converter Onnx Converter TF-Lite Converter AliNN IR ⽀支持 tflite 量量化模型 AliNN Optimizer *.onnx IDST - Quantize : 低精度量量化框架 AliNN Frontend: 模型转换前端 AliNN Optimizer:优化器器 AliNN ModelCompiler: 模型编译器器 端上推理理框架直接使⽤用 AliNN IR LIB AliNN ModelCompiler
12. IDST-Quantize Resnet18 45M 压缩到 3/4 bit + 稀疏编码 3M 原始模型 (float) IDST - Quantize 测试 数据集 30%-90% 性能提升 AliNN 量量化计算 量量化模型 (int)
13. AliNN Optimizer 算⼦子融合 Conv Bn Scale Conv Scale Relu Conv Relu Relu Conv 布局转换 Conv Conv Conv Conv TR Transpose Transpose Conv TR Conv
14. AliNN 端侧架构 AliNN Schedule Op Common CV Session Backends CPU OpenCL Vulkan 主框架内容: 1、图运算逻辑,每个 Op 运⾏行行硬件的分配 2、公⽤用优化策略略(如内存复⽤用机制) 3、基础图像算法模块 4、算⼦子集(负责⼤大⼩小计算) 插件模式: 1、可以⾃自定义 Backend 实现 Op 2、可以通过插件形式,导⼊入⾃自定义 Op Metal 处理理不不同硬件设备上的运算逻辑,进⾏行行性能优化的核⼼心部分
15. AliNN 端侧使⽤用 Model. Alinn 加载模型 设置CPU/GPU运⾏行行 设置运⾏行行参数配置 设置运⾏行行上下⽂文 Net 配置 运⾏行行⽅方式 Schedule Output0 Input0 填充输⼊入数据 使⽤用输出数据 Session Input1 Output1 输⼊入输出的Tensor均由 Session维护,外部只允许使⽤用output数据/填⼊入input数据
16. 调度器器——Schedule ⽹网络结构 Conv1_0 Conv2_0 Conv3_0 Conv2_1 Conv3_1 Session0 乱序并⾏行行 Schedule Conv3_2 CPU Conv1_0 Gpu Conv3_0 Conv3_1 CPU Conv2_0 Conv2_1 Gpu Concat Conv4_0 Conv3_2 顺序执⾏行行 Concat Conv4_0 Session1 CPU Conv1_0 Conv2_0 Conv2_1 Conv3_0 Conv3_1 Conv3_1 Conv3_2 Concat Conv4_0
17. 内存复⽤用机制 Input Conv1_0 Conv2_0 Conv2_1 整个⽹网络 所需要的 Tensor 每个 op 输出的内存申请 是个棘⼿手问题 Conv3_0 Conv3_1 Conv3_2 Concat Conv4_0 推理理前 申请 常驻内存太⼤大 推理理时 申请 内存频繁申请释放影响性能
18. 内存复⽤用机制 提取⼀一个出 Resize 过程,计算所有 Tensor ⼤大⼩小并进⾏行行内存申请 Acquire Squeeze net v1.1 Op1 22.16M Release Session :: Resize Acquire Op2 Backend Release Acquire Op3 Release 3.9M 提前申请的 Tensor 内存⼤大幅减少 每个 op 申请输出内存,回收输⼊入内存,回收的内存在下次申请时可复⽤用
19. 回调机制 Before Op1 Session :: Run Before CallBack Op2 After CallBack Op3 After 增强灵活性,可提前中断推理理或取中间Op输出的Tensor
20. CV 模块 旋转 缩⼩小 转浮点 Tensor Matrix ⼀一步完成旋转/缩⼩小/格式转换/转浮点 避免预处理理过程成为性能瓶颈 AliNN::CV ⽹网络输⼊入 Tensor
21. Backend 性能优化 算法 ⼯工程 内存访问优化 快速矩阵乘法 ARM 指令集 X86 SSE Tiling 分块算法 Winograd 卷积算法 算法和 ⼯工程紧 密结合, 达到 最好性 能 CPU 多线程 Buffer / Image 汇编错排优化 OpenCL Kernel GPU Group / Local Size 调优 Compute Shader Metal Language
22. AliNN 与同类型框架对⽐比 AliNN TF-lite NCNN Mace CoreML SNPE Caffe2 开发公司 淘宝 Google 腾讯 ⼩小⽶米 苹果 ⾼高通 Face Book 操作系统 IOS Android Linux IOS Android Linux IOS Android Linux Android Linux IOS Android 【⾼高通芯⽚片】 IOS Android 可扩展性 好 中等 中等 中等 差 差 中等 硬件⽀支持 ARM x86 OpenCL Metal Vulkan ARM ARM ARM OpenCL DSP ARM Metal CPU 浮点速度 很快 中等 快 快 NA 中等 中等 CPU 量量化速度 很快 快 很快 很快 NA NA 中等 GPU 浮点速度 快 NA NA 快 快 快 中等 ARM OpenCL ARM OpenCL DSP
23. AliNN CPU性能对⽐比 AliNN mace ncnn tflite AliNN mace 90 1600 67.5 1200 45 800 22.5 400 0 0 SqueezeNetv1.1 Mobilenetv1 ncnn tflite InceptionV3 测试机器器:Mi note3 arm64 CPU 纵轴:平均单次推理理耗时(ms) ,越低越好
24. AliNN GPU 性能对⽐比 34 AliNN-CPU AliNN-Vulkan mace-OpenCL 400 25.5 300 17 200 8.5 100 0 0 SqueezeNetv1.1 Mobilenetv1 AliNN-CPU AliNN-Vulkan mace-OpenCL InceptionV3 测试机器器:华为P10 (Mali-G71) 纵轴:平均单次推理理耗时(ms) ,越低越好
25. 端智能的未来发展 硬件 算法 应⽤用 单⼀一硬件 多种硬件 因地制宜 混合使⽤用 朴素算法 端上优化 算法 端-云 算法结合 直播/ 短视频 直播/ 短视频 营销活动 营销活动 直播/ 短视频 边缘计算
26. 谢谢 xiaotang.jxt@alibaba-inc.com

相关幻灯片