深度学习部署

深度学习部署平台特点:

深度学习的两个方面:

部署、训练

面临的挑战:现代深度学习部署平台要求:

  • 支持多种不同的架构不同厂家
  • 不同硬件
  • 不同编程语言
  • 不同终端:服务器、桌面、笔记本、手机、智能硬件、机器人、无人机
  • 高性能:手机、机器人、无人机、智能硬件不会用性能很高的芯片
  • 易于使用:Windows Linux Android IOS统一接口

深度学习部署平台的运算:

  • 神经网络
  • 图像处理
  • 矩阵、向量运算

主流深度学习部署硬件架构及特性

这里写图片描述

挑战:高性能

性能与可维护性、可靠性冲突 
使用最底层的编码方式 
- Intrinsic汇编 
- 时间长、难度大 
生产率下降 
- 原来10行,现在100行 
- 原来处理一种情况,现在处理十种情况 
调试、维护代价大 
解决方法: 
- 只处理最耗时、影响性能的部分 
- 能用高层的语言/方式,就不用底层的 
- 基础:20% 80%定理

现代主流处理器高性能编程方式

Intel 
这里写图片描述

这里写图片描述

挑战:不同硬件类型

性能差别大 
- 手机CPU、桌面CPU、。。。 
编程方式差别大 
- C OpenCL CUDA Verilog 
优化难度差别大 
- CUDA难,OPENCL更难,Verilog超难 
程序性能在不同硬件上不一致 
- NVIDA GPU上跑3ms好快,PC上跑100ms 还行,手机上跑2s 
解决方法: 
- 提前做性能预测、降低研发人员阈值 
- 性能越低的平台,越做极致的优化

挑战 : 融入厂商的实现

厂商有各种实现,但不兼容 
- Intel MKLDNN 
- ARM ACL 
- NVIDA CUDNN/TensorRT

解决方案: 
- 加兼容层抽象 
- 条件编译

挑战:统一使用接口

用户想使用自己喜欢的语言 
- 服务器:java/go/ruby 
- apple:objectC Swift 
- 潜在的高层语言数量无限 
维护人员只想使用一套接口 
- 维护代价,保证一致性等等 
解决方法:双层设计 
- 底层:标准C接口 
- 高层:应用接口、浅层封装 
- C接口不变,高层接口不变 
- C接口改变,上层接口可能不变,改对应底层接口调用即可。

人工智能部署平台支持不同的硬件架构

这里写图片描述

猜你喜欢

转载自blog.csdn.net/u012968002/article/details/80389862