
算法工程
文章平均质量分 69
smartcat2010
这个作者很懒,什么都没留下…
展开
-
GPU Kernel冷启动warm up
1. Kernel代码copy至GPU设备上When using the CUDA runtime API, kernel code is downloaded to the device once. This happens as an implicit action right after CUDA runtime context creation. When using the CUDA driver API, the app has control over when kernels get d原创 2022-02-17 12:06:50 · 1322 阅读 · 0 评论 -
移动端推理库
上层框架:Tensorflow LiteCaffee2PyTorch Mobile:CPU端定点计算:使用自家的QNNPACK做CPU端INT8量化计算; CPU端浮点计算:使用XNNPACK; iOS GPU端计算:Metal Android GPU端计算:Vulkan Android上的DSP和NPU支持:通过Google NNAPI 支持计算图优化腾讯NCNN小米MACE阿里MNN通用性:支持 Tensorflow、Caffe、ONNX 等主流模型格式,支持 C原创 2022-02-16 22:23:28 · 523 阅读 · 0 评论 -
MACE简介
Mobile AI Compute Engine (MACE)是一个专为移动端异构计算平台优化的神经网络计算框架。 主要从以下的角度做了专门的优化: 性能 代码经过NEON指令,OpenCL以及Hexagon HVX专门优化,并且采用Winograd算法来进行卷积操作的加速。 此外,还对启动速度进行了专门的优化。 功耗 支持芯片的功耗管理,例如ARM的big.LITTLE调度,以及高通Adreno GPU功耗选项。 系统响应 支持自动拆..转载 2022-02-15 22:25:41 · 1363 阅读 · 0 评论 -
阿里推理引擎MNN
MNN是一个轻量级的深度神经网络推理引擎,在端侧加载深度神经网络模型进行推理预测。目前,MNN已经在阿里巴巴的手机淘宝、手机天猫、优酷等20多个App中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景。此外,IoT等场景下也有若干应用。1、MNN简介MNN 是一个轻量级的深度学习端侧推理引擎,核心解决深度神经网络模型在端侧推理运行问题,涵盖深度神经网络模型的优化、转换和推理。目前,MNN已经在手淘、手猫、优酷、聚划算、UC、飞猪、千牛等 20 多个 App转载 2022-02-15 09:10:05 · 1959 阅读 · 0 评论 -
神经网络定点量化
把某个tensor或者某个channel的这组float32, 用int8来表示,就是量化。这组float32的上下界,可以取他们的min和max,也可以moving average,也可以去中间99%的那部分。。。越界的就用量化为0或者255。公式:(r实数-0) / (q整数-Z整数)= S = (r实数max-r实数min) / (q整数max-q整数min) =(r实数max-r实数min) / 255Linear层和卷积的量化:神经网络量化入门--基本原理 - 知乎 .原创 2022-02-13 21:04:50 · 2130 阅读 · 0 评论 -
1bit quantization (1-bit SGD & 1-bit Adam)
原论文:1-Bit Stochastic Gradient Descent and its Application to Data-Parallel Distributed Training of Speech DNNs该文的核心思想就是将32位单精度浮点数压缩成1位,从而降低训练过程的数据交换开销。为了进一步降低通信开销,作者设定在节点间只进行梯度的交换,不进行模型参数的交换。为了降低量化误差带来的负面影响,作者使用了误差补偿技术:每次量化时,把上一次迭代的量化误差加到本次迭代的梯度上,然后再进行量化.转载 2021-11-27 16:22:54 · 1040 阅读 · 1 评论 -
Zero原理
DeepSpeed: Extreme-scale model training for everyone - Microsoft ResearchWhy model-parallelism is most communication cost?模型参数在CPU上有一份(只保留自己这个GPU的partition即可);update的时候直接把offload到CPU上的gradients以及常驻CPU内存的optimizer-states, 更新到同样在CPU内存里的模型参数,然转载 2021-11-10 12:13:25 · 2321 阅读 · 0 评论 -
循环展开的优缺点
优点:循环展开能够增大指令调度的空间,减少循环分支指令的开销。即增大指令流水线的效率。循环展开可以更好地实现数据预取技术。缺点:嵌入式设备上,增大了指令cache miss的可能。复杂功能的展开,没什么优化效果...原创 2021-11-10 09:29:47 · 1287 阅读 · 0 评论 -
对神经网络加速Mixed-Precision的理解
NVIDIA对AMP的介绍:先把weight矩阵们转一份FP16的copy; 前向、后向计算,全部用FP16的(包括激活、W、激活的梯度、W的梯度); W的梯度,需要先从FP16转换为FP32,再更新总的FP32的W;为什么:如果总的W也使用FP16,则由于数值指数范围较小,也由于W的梯度的指数小于总的W的指数,则在“对齐”过程中,W的梯度很容易对齐到0,即总的W没有被更新; Optional: 某些网络,需要把Loss扩大S倍,目的是把其激活的梯度扩大S倍,从而不至于其一部分数值太小变成0;如果原创 2020-08-23 17:17:37 · 1613 阅读 · 1 评论 -
RNN解决序列太长存储激活值过大问题的方法:TBPTT
原始论文:[Williams, Ronald J., and Jing Peng. "An efficient gradient-based algorithm for on-line training of recurrent network trajectories."]TBPTT :Truncated Back Propagation Through TimeTBPTT中,每次处理一...转载 2020-04-05 21:25:38 · 1011 阅读 · 0 评论 -
ZIP压缩原理
ZIP压缩原理2种数据:原字面;距离+长度;(+各自标志,表示是字面还是距离长度)滑动窗口,只在之前32KB范围内找重复;一是符合局部性再次重复原理,二是为了减少扫描时间,三是为了减少“距离”的个数;...转载 2020-03-07 12:06:12 · 853 阅读 · 0 评论 -
ONNX简介
模型交换格式ONNXONNX 和 Azure 机器学习:创建并加速 ML 模型转载 2020-03-06 23:26:22 · 137 阅读 · 0 评论 -
数值计算(sqrt函数是怎么实现的)
详细介绍1. 二分试探法(注意0~1区间的结果比输入要大)2. 牛顿迭代法:用公式迭代下去;注意反复"震荡"的情况下,要及时终止;3. 用“割线”,即本点和上一轮点的斜率,来近似函数的导数;速度:牛顿迭代法<割线近似法<<二分试探法还有:梯度下降法,注意有可能遇到导数为0的局部极值;...原创 2020-02-17 23:54:53 · 735 阅读 · 0 评论 -
计算框架相关的编译器知识(XLA, nGraph)
Tensorflow XLA的加速原理主要是融合Kerneldef model_fn(x,y,z): return tf.reduce_sum(x + y * z) 如果运行模型时不使用 XLA,图表会启动三个内核,分别用于乘法、加法和减法。官网原话:XLA 可以优化计算图,将加法、乘法和减法 “融合” 到单个 GPU Kernel中。此外,这种融合运算不会将 y...原创 2020-02-17 14:40:57 · 1327 阅读 · 0 评论 -
自动求导的原理(Autograd, Auto Differentiation)
知乎话题TensorFlow的求导,实际上是先提供每一个op求导的数学实现(人手工写的函数代码),然后使用链式法则自动求出整个表达式的导数。很好的示例代码:miniflow;开源计算图示例(1);开源计算图示例(2);开源计算图示例(3)...转载 2020-02-16 21:16:06 · 1316 阅读 · 0 评论 -
Mixed-Precision(float16 & float32)神经网络
MxNet的混合精度使用float16的好处:1. 借助Tensor加快计算速度;2. 减少显存空间占用量:Model变小; 可以放更复杂的网络,可以使用更大的batch;减少访存量,减小通信量;...原创 2020-02-15 00:44:49 · 896 阅读 · 0 评论 -
MXNet设计和实现简介(论文笔记)
MXNet论文_2015年Tensorflow慢一倍的原因:其使用的cuBLAS和cuDNN版本较低;MXNet最大的优点:节省内存/显存MXNet设计和实现简介 浅嵌入,命令式编程 深嵌入,声明式编程 如何执行 a=b+1 需要b已经被赋值。立即执行加法,将结果保存在a中。 返回对应的计算图(computation graph),我们可以之后对...转载 2019-11-14 17:08:24 · 477 阅读 · 0 评论 -
算法工程汇总(通信框架)
Infiniband: 8GB/s为什么快:自己是一套协议,不需要窗口流控,路由更直接;接收方空间够,发送方才发送; 无需CPU介入;NVLink: 60GB/s!CUDA-aware MPI:用了拆小包Pipeline;用了GPUDirect直达;忽略CPU和主存,忽略Host buffer、CUDA buffer、网卡buffer;例子:OpenMPI;Ri...原创 2020-02-06 20:00:50 · 648 阅读 · 1 评论 -
算法工程知识汇总(神经网络)
神经网络预测推理---TensorRT: (比Tensorflow的推理快20倍)1. Kernel融合: 横向融合(例如1*1卷积等), 纵向融合(卷积+bias+Relu),消除concatenate层(预分配输出缓存,跳跃式的写入);2. 量化成FP16或者INT8: 减少显存占用,加快推理速度;3. Auto-Tuning:例如,对于卷积计算有若干种算法,TensorRT会...原创 2020-02-06 18:21:32 · 555 阅读 · 0 评论 -
线上预测TensorRT
TensorRT入门模型量化、动态内存优化、层的融合转载 2019-12-18 21:00:54 · 193 阅读 · 0 评论 -
实测顺序访存VS随机访存,探究cache命中的作用有多大
结论1:一般CPU是64字节/cache行;所以顺序访存比随机访存快30倍,较为合理;结论2: 访存期间,CPU也是满的;#include <iostream>#include <stdlib.h>#include <stdio.h>#include <chrono>using namespace std::chrono;// ...原创 2020-02-02 00:16:22 · 600 阅读 · 0 评论 -
C++语法糖
std::bind的用法: 给一个函数指针,加上固定的参数(不固定的参数用std::placeholders::_1、std::placeholders::_2来表示)std::shared_ptr的用法:new出来的裸指针直接交给shared_ptr的构造函数,则后续无论怎么在多个shared_ptr之间共享,最后都会被析构(所有shared_ptr都reset了他或者所有share...原创 2020-01-29 22:21:27 · 1194 阅读 · 0 评论 -
A/B测试
AB测试是什么,怎么做AB测试将Web或App界面或流程的两个或多个版本,在同一时间维度,分别让两个或多个属性或组成成分相同(相似)的访客群组访问,收集各群组的用户体验数据和业务数据,最后分析评估出最好版本正式采用。时间的统一性有效的规避了因为时间、季节等因素带来的影响;属性的相似性则使得地域、性别、年龄等等其他因素对效果统计的影响降至最低。为了规避这种因为样本量不足造成的试...转载 2020-01-11 17:24:42 · 1064 阅读 · 0 评论 -
LightGBM
1. 直方图:数据特征存储减少(1Byte表示256个桶), 扫描速度加快(Data个-->K个桶); 误差也许是好事儿,降低过拟合;避免了对所有数据所有特征的预排序;2.Leaf-wise的叶子生长策略:Layer-wise会浪费计算资源,有些节点不必分裂;这里限制最大深度限制最小样本数限制最小增益;3. 父节点直方图-左儿子直方图==>右儿子直方图4.直接支持类别特...转载 2019-12-26 18:52:06 · 639 阅读 · 0 评论 -
RNN的并行版本
上海交通大学最新提出切片循环神经网络(SRNN),其速度是标准RNN的136倍,并且还能更快!对六个大型情绪分析数据集的实验表明,SRNN的性能均优于标准RNN。论文和开源代码地址:http://arxiv.org/pdf/1807.02291.pdfhttp://github.com/zepingyu0512/srnn...转载 2019-12-24 10:21:35 · 618 阅读 · 0 评论 -
FTRL&FM
1. Feature Retire: 防止随着训练持续进行,模型越来越大;将较长时间不修改的feature,从模型中删去;2. Dump模型,w,q,z必须Dump出来,用来断点恢复;w单独dump出来,用来给Prediction-Cluster进行预测;3.在线最优化求解 冯扬 FTRL最优化问题的公式里,包含3个部分:迎合过往梯度,正则化增加稀疏性,别离以往的W偏离过远;...原创 2016-11-16 15:06:38 · 3433 阅读 · 0 评论 -
神经网络量化
- 训练时对gredient量化,减少网络传输,加快训练速度(1-bit quantization)- 预测模型量化,减少模型大小,使得能加载进内存或显存;计算时还是转成float计算;-预测模型量化,输入的样本也量化,中间激活值也用量化的,INT8和INT8直接计算,计算也加速了;- 训练Forward时也进行伪量化,让训练的模型尽量往减少Forward误差上靠拢,从而减少预测时的...转载 2019-12-20 17:07:49 · 1564 阅读 · 0 评论