AI 框架 #
终端推理框架 #
- PaddlePaddle/Paddle-Lite
- Tencent/ncnn
- alibaba/MNN
- XiaoMi/mace
- Tencent/TNN
- OAID/Tengine
- NVIDIA/TensorRT
- openvinotoolkit/openvino
TVM #
Tensor Virtual Machine
Open deep learning compiler stack for cpu, gpu and specialized accelerators
Tensor RT #
两种方式进行网络加速
- 层间融合或张量融合(Layer & Tensor Fusion)
- 通常称
conv+bias+relu
(CBR
)为一个 block - TensorRT 通过对层间的横向或纵向合并,使得层的数量大大减少
- 横向合并可以把卷积、偏置和激活层合并成一个 CBR 结构,只占用一个 CUDA 核心。
- 通常称
- 数据精度校准(Precision Calibration)
- 我们训练的网络通常是 FP32 精度的网络,一旦网络训练完成,在部署推理的过程中由于
不需要反向传播
,完全可以适当降低数据精度,比如降为 FP16 或 INT8 的精度。- 更低的数据精度将会使得内存占用和延迟更低,模型体积更小。
- 什么是 Calibration?对于模型中的若干网络层,我们可以逐个的降低其精度,同时准备一个验证集,再划定一条 baseline,当网络的性能降低到 baseline 时,我们停止降低精度。
- 当然也可以将所有网络层的精度降低,但与此同时模型的性能也会降低。
- 我们训练的网络通常是 FP32 精度的网络,一旦网络训练完成,在部署推理的过程中由于
OpenVINO #
整体优化目标与 Tensor RT 类似,只不过设备由 GPU 变为 CPU
- Linear Operations Fusing
- 以 resnet 为例,对于 bn 层,他可以被解构为 Mul → Add → Mul → Add,并且可以被集合到 conv 层中
- 数据精度校准(Precision Calibration)
pytorch 框架 #
- pytorch/pytorch
- PyTorch is a Python package that provides two high-level features:
- Tensor computation (like NumPy) with strong GPU acceleration
- Deep neural networks built on a tape-based autograd system
- PyTorch is a Python package that provides two high-level features:
- tinygrad/tinygrad
- tinygrad: For something between PyTorch and karpathy/micrograd.
- karpathy/micrograd
- A tiny Autograd engine
叶王 © 2013-2024 版权所有。如果本文档对你有所帮助,可以请作者喝饮料。