算法工程知识汇总(神经网络)

神经网络预测推理---TensorRT:  (比Tensorflow的推理快20倍)

1. Kernel融合: 横向融合(例如1*1卷积等), 纵向融合(卷积+bias+Relu),消除concatenate层(预分配输出缓存,跳跃式的写入);

2. 量化成FP16或者INT8: 减少显存占用,加快推理速度;

3. Auto-Tuning: 例如,对于卷积计算有若干种算法,TensorRT会根据输入数据大小、filter大小、tensor分布、batch大小等等参数针对目标平台GPU进行选择和优化。

4. 动态分配显存:使用时分配;减少显存分配次数,增加显存复用率;

训练使用cuDNN/cuBLAS/thrust

神经网络量化: (好处:模型和激活、梯度变小对显存占用节省;显存占用变小允许更大的batch,加快计算;计算加快;多机多卡间的通信量减少)

1. 训练时对gredient量化,减少网络传输,加快训练速度(1-bit quantization)

2. 预测模型量化,减少模型大小,使得能加载进内存或显存;计算时还是转成float计算;

3. 预测模型量化,输入的样本也量化,中间激活值也用量化的,INT8和INT8直接计算,计算也加速了;(可能要先跑小数据集确定激活值范围,才好量化之)

4. 训练Forward时也进行伪量化,让训练的模型尽量往减少Forward误差上靠拢,从而减少预测时的量化误差;

2016 ICLR: Deep Compression

1. 边的Pruning(剪枝):存成稀疏数组,计算使用cuSPARSE和MKL SPSPARSE库;下标使用diff法存储(类似倒排索引)

2. 训练阶段用INT8量化:用聚类来找每个编码的最优float值;重视max和min,因为大的w对最终结果影响大;

3. 哈夫曼编码实现压缩:量化编码后的w们,还可使用哈夫曼编码来减少bit数;

矩阵SVD分解:用2个小矩阵近似权重矩阵;效果损失较大;

pruning和量化,使网络size变小,除了省空间,也可加快infer速度,因为可增大缓存利用率(cache或shared-memory);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值