构建人人可实践的端侧 AI
如果无法正常显示,请先停止浏览器的去广告插件。
1. 业务创新加速器
构建人人可实践的端侧 AI
吴子奇(花名:明弈)
阿里巴巴 工程师
2.
3. • 端侧 AI 简介和业界趋势
• 端侧 AI 在阿里的发展和应用
• 端侧 AI 应用典型困惑
• 端 AI 研发范式 - 面向人人可实践的端侧 AI 框架
• Q & A
4. 暖场小互动
有多少人曾听说过端侧 AI ?
Caffe
CoreML
MNN
Walle
MACE
TFLite
NCNN
5. 端侧 AI 简介
端侧 AI 是云端机器学习的延伸,是在用户终端设备进行深度学习运算
手机
平板
电脑
IoT 设备
…
MNN / Caffe / CoreML / NCNN / TFlite
终端设备进行深度学习运算必不可少的核心模块 - 深度学习推理引擎
6. 端侧 AI 发展趋势 - 技术
Google Trends - Device AI
2017 是端侧 AI 引擎军备竞赛的起始
Tensorflow Lite
Caffe 2
NCNN
Tensorflow Mobile
2015
GDPR
2016
CoreML
2017
Mace
2018
MNN
2019
LibTorch
2020
7. 端侧 AI 发展趋势 - 苹果登场
2017
iPhone X 问世
Face ID 人脸识别解锁
Siri 唤醒词
首次搭建
专用神经网络芯片 Apple Neural Engine
《Machine Learning Research at Apple》
https://machinelearning.apple.com
8. 端侧 AI 发展趋势 - 业界应用场景
Snapchat
《SEP-Nets: Small and Effective Pattern Networks》
Google
https://arxiv.org/pdf/1706.03912.pdf
Google
Facebook
9. 端侧 AI 在阿里的发展 - MNN 的演进
仅过去一年,MNN 在
性能优化方面
做出了巨大的提升
GPU
CPU
矩阵乘优化
卷积优化
ARM 汇编优化 低精度计算 内存优化 并行归约优化
AVX512 半精度浮点 内存对齐优化 数据分块复用
AVX2 低比特量化 内存多元化调优 工作组大小拆分
矩阵乘优化示意
《MNN - 端侧推理引擎面临的挑战与应对》 https://gmtc.infoq.cn/2019/beijing/presentation/1833
《MNN - A Universal and Efficient Inference Engine》 https://arxiv.org/pdf/2002.12418.pdf
并行归约优化
10. 端侧 AI 在阿里的发展 - MNN 的演进(续)
可支持算子数
实际编写算子数
128
83
82
86
83
62
17
16
CPU
Metal
Vulkan
CPU 优化前
100
75
50
OpenCL
GPU 优化前
CUDA
GPU 优化后
ms
90.70
75.00
80.50
65.00
61.40
61.40
46.35
25
0
CPU 优化后
20
17
34.00
25.00
Palm
45.00
34.10
31.87
18.37
Hp
Video-pose
25.96
doc_mask
15.38
11. 端侧 AI 在阿里的发展 - 使用 MNN 的业务节选
拍立淘
AR 试妆
商品推荐
语音猜价
12. 看起来端侧 AI 的发展一片欣欣向荣
MIT Technology Review
《We are making on-device AI ubiquitous》
Gartner
《Gartner Highlights 10 Uses for AI-Powered Smartphones》
Google
《4 reasons Google’s on-device AI is very important》
Apple
《Here’s why Apple believes it’s an AI leader—and why it
says critics have it all wrong》
实际上端侧 AI 落地之路充满坎坷
13. 端侧 AI 应用之困 - “工程”复杂度
数据采集
算法设计
模型训练
模型转换
模型推理
业务逻辑
端侧数据补充 实时推理反馈 算法工程师 协作 移动工程师
模型生产 跨语言 模型部署
逻辑串联
跨设备
跨工种
高效运行难
调试部署难
协作沟通难
应用展现
14. 端侧 AI 应用之困 - 场景杂
体育教学 / 游戏视频录制 / 欺诈提醒 / AI 工具 / 智能测试 …
短视频 / 信息流 / 商品推荐
90% 人力
90% 场景
长尾场景算法不愿意投入
定义问题难
商汤科技CEO:解决长尾应用是AI深入到行业的关键点
2020世界人工智能大会:人工智能进入“长尾应用”
模型获取难
15. 前进路上的一次探索 - MNNKit
工程使用标准实践
人脸识别
手势识别
算法接入规范
核心优势
姿态分割
完整的端到端封装, 简单的调用几行 API 即可应用算法
一定程度解决了无算法背景的工程接入问题
MNN Kit Core
MNN
MNNKit 人脸识别一个 API 调用即可完成
主要问题
MNNKit 提高了接入效率,但仍需MNN持续不断地支持双端算法迭代
黑盒封装,场景受限、拓展性交叉
模型供给跟不上,算法不会为探索型场景专门产出 / 优化模型
16. 一种更真实的业务工程师切入端 AI 的视角
感兴趣
1
先看先玩
有想法
2
动手尝试
优化
3
应用到自己场景
4
工具箱
视频 低门槛训练 快速一键部署/调试能力 模型优化
他人经验 开箱即用算法集 交互式代码编辑器 模型对比
一站式端 AI 应用研发 workflow
MNN 工作台
MNN 运行时
MNN 模型市场
17. MNN 工作台 - 大幅降低端侧 AI 应用门槛
MNN 工作台
www.mnn.zone
3 端一体所见即所得模型预览部署能力
Playground UI API
5 免编译模型工具
单机预训练模版
10 款 MNN 模型开箱即用模型
AI For Everyone
18. MNN 工作台 - 核心功能架构分层
MNN 工作台(面向用户)
预训练场景
图像分类
文本分类
开箱即用算法
目标检测
OCR
主体识别
人像分割
人脸检测
人脸漫画脸
风格滤镜
…
入门:零门槛 / 交互式
快速体验深度学习模型效果
代码编辑器
断点调试
堆栈回溯
日志查看
虚拟环境配置
真机推送
数据库调试
日志过滤
pip 库安装
Mac Playground
VSCode 插件
工具集
模型可视化
模型量化
模型转换
图像标注
模型算子耗时
提高:代码模版
通过代码了解深度学习流程
进阶:优化模型
熟悉常见模型调优方式
端 AI 核心技术
单机训练
模型压缩
模型量化
MNN - 推训一体框架
小样本学习
终极:钻研源码
对深度学习行业感兴趣并以此为职业
19. MNN 工作台核心技术 - MNN 动态图表达式
动态图代码示例
MNN-Transform
按SGD算法导出带权重更新的图
Parameter Optimizer
求导
Grad
随机梯度下降
SGD
Module
自适应矩估计
Adam
参数管理
Data Loader
数据加载
预处理
训练代码
预测代码
Models
标准数据集模版
预制模型
MNN-Express
MNN
Checkpoint
benchmark
class UserModule : public module {
public:
virtual onForward() {……}
};
//初始化
auto opt = new SGD;
auto module = new UserModule;
opt->append(module->parameters());
// 训练
for (int I = 0; i < XXX; ++i) {
VARP data, label = loadTrainData();
VARP predict = module->forward(data);
VARP loss = ComputeLoss(label, predict);
opt->step(loss);
}
// 测试
for (int I = 0; i < XXX; ++i) {
VARP data, label = loadTestData();
VARP predict = module->forward(data);
ComputeAccuracy(label, predict);
}
// 导出模型
VARP input = _Input();
VARP predict = module->forward(input);
Variable::save({predict}, “User.mnn”);
20. 核心技术 - MNN 训练流程
构建 构建
Optimizer Module
遍历训练数据
读取数据
预处理
计算损失
(Loss)
优化器中添加
Module 参数
N
优化器更新
训练若干个
epoch
数据集读完
Y
遍历测试数据
读取数据
预处理
计算指标
N
数据集读完
导出模型
结束
21. 核心技术产品化 - MNN 工作台单机交互式训练
训练 Template
训练 Dataset
训练 Option
IPC 通信
MNN DataLoader
MNN Module
MNN Optimizer
MNN-Express
22. MNN 运行时架构设计
图像/视频输入
业务层
角度参数计算
结果渲染
iOS
Android
MNN 运行时 SDK
上层 API
算法代码
通用oc/java接口
create
算法逻辑
算法开发
通用oc/java数据结构映射
release
inference
前/后处理
计算推理
sdk.py
输入输出
热更新
Data
CV
运行时扩展
MNN运行时
格式转换
仿射变换 图像裁剪
python-native数据通信
序列化
反序列化
Cross Language Binding & Bridge
语言桥接
基础或上层库
归一化
MNN
图像
数据
其他能力扩展
MNN 工作台
23. MNN 运行时 - 面向极速应用构建的 Playground UI
如何快速搭建一个视觉场景的 demo 应用,而不用学习
Android / iOS 开发?
验证应用
iOS/Android Playground App
基本的执行链路:
页面打开
图像/视频输入
相册选择/输入
预览
前处理
推理
Easy API • 基本交互事件:页面开关、控件点击等
MNNKit
• 基本UI组件:Label、ImageView等
• 基本渲染能力:组件和图形的渲染
• 数据来源:相册选择和Camera组件
组件渲染
生命周期回调
Camera
Label
图形渲染
环境变量注册
ImageView
…
Camera组件(标准实践)
• 综合场景下正确地预览
Cross Language Bind
后处理
结果渲染
Playground UI 提供:
摄像头预览/输入
组件事件回调
Page
app.wl
MNNKit
• 数据回调,包含自动计算好的角度
• 图形渲染,自动映射到渲染坐标系
Bind
UI Page
UI Component
Android System Library
• 镜头类型、数据格式等配置接口
UI Camera
iOS System Library
…
24. MNN 运行时 - Playground 三端一体示例
应用在开发阶段的验证工作从 3天+,减少到 1小时
无需算法协助 / 无需语言转换
自然语言描述
Playground API
搭建验证应用
OCR 三端一体部署验证
25. MNN 运行时 - 完全免费开放使用
直接体验 接入自身 App
Playground App EasyMNN SDK
iOS
《MNN 工作台 SDK EasyMNN 使用手册》
Android
SDK iOS Android License
EasyMNN 0.1.2 (对应工作台 1.3.0)
1.3.6 (对应工作台 1.3.6) com.alibaba.android.workbench:easymnn
0.1.2 《MNN Kit Terms of
Service》
https://www.yuque.com/mnn/droiug/um6vcg
26. MNN 模型市场 - 集众人智
天猫空窗检测实践 - All by 客户端工程师
MNN 模型市场 market.mnn.zone
饿了么 - 着装抽检 天猫 - 空窗检测 淘系测试 - 白屏巡检
阿里游戏 - 荒野乱斗 性能评测 - 启动耗时 SKU 配置提取
半年时间 2000+ 总用户 / MAU 300+
支持淘系测试、饿了么、九游、飞猪、考拉、同城零售等 7+ 团队
通过低门槛训练部署手段上线多个业务
业界知名公司(得 *) 也使用 MNN 工作台
27. 总结
MNN
让深度模型可以在端上高效运行
MNNKit 1.0
流水线协作 & 规范生产 & 定制化服务
提供标准化零件和生产力工具,大家自己创造
MNN
工作台 MNN
运行时 MNN
模型市场
端智能研发一站式 IDE 端侧运行核心基础 集智 AI 社区
低门槛单机训练 核心类库能力 开箱即用模型
标准化部署模版 极致部署模版 模型供给收益
高效算法调试 三端一体部署 解决方案分享
28. Q & A
欢迎加入 阿里巴巴 - 端智能 团队
29.