如何分析神经网络的显存占用? Float32 是在深度学习中最常用的数值类型,称为单精度浮点数,每一个单精度浮点数占用4Byte的显存。 在整个神经网络训练周期中,在GPU上的显存占用主要包括:数据,模型参数,模型输出等。 数据侧:如一个32*3*128*128的四维矩阵,其占用的显存 = 32*3*128*128*4 /1000 / 1000 = 6.3M 模型侧:占用显存的层包括卷积层,全连接层,BN层,梯度,优化器的参数等。 输出侧:占用的显存包括网络每一层计算出来的feature map以及对应的梯度等 阅读全文 → 2023-02-07
GPU显存占用和GPU利用率的定义是什么? GPU在训练时有两个重要指标可以查看,即显存占用和GPU利用率。 显存指的是GPU的空间,即内存大小。显存可以用来放模型,数据等。 GPU 利用率主要的统计方式为:在采样周期内,GPU 上有 kernel 执行的时间百分比。可以简单理解为GPU计算单元的使用率。 阅读全文 → 2023-02-07
BN层解决了什么问题? 统计机器学习中的一个经典假设是“源空间(source domain)和目标空间(target domain)的数据分布(distribution)是一致的”。如果不一致,那么就出现了新的机器学习问题,如transfer learning/domain adaptation等。而covariate shift就是分布不一致假设之下的一个分支问题,它是指源空间和目标空间的条件概率是一致的,但是其边缘概率不同。对于神经网络的各层输出,由于它们经过了层内操作作用,其分布显然与各层对应的输入信号分布不同,而且差异会 阅读全文 → 2023-02-07
计算机多线程和多进程的区别是什么? 进程和线程的基本概念: 进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态的概念,竞争计算机系统资源的基本单位。 线程:是进程的一个执行单元,是进程内的调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。 一个程序至少一个进程,一个进程至少一个线程。 线程的意义: 每个进程都有自己的地址空间,即进程空间,在网络环境下,一个服务器通常需要接收不确定数量用户的并发请求,为每一个请求都创建一个进程显然行不通(系统开销大响应用户请求效率低),因此操作系统中线程概念被 阅读全文 → 2023-02-07
高斯滤波的相关概念有哪些? 图像为什么要滤波呢?一是为了消除图像在数字化过程中产生或者混入的噪声。二是为了提取图片对象的特征作为图像识别的特征模式。 什么是高斯噪声?首先,噪声在图像当中常表现为引起较强视觉效果的孤立像素点或像素块。简单来说,噪声的出现会给图像带来干扰,让图像变得不清楚。 高斯噪声就是它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。 高斯滤波是一种线性平滑滤波,可以用来消除高斯噪声。 阅读全文 → 2023-02-07
FP32,FP16以及Int8的区别? 常规精度一般使用FP32(32位浮点,单精度)占用4个字节,共32位;低精度则使用FP16(半精度浮点)占用2个字节,共16位,INT8(8位的定点整数)八位整型,占用1个字节等。 混合精度(Mixed precision)指使用FP32和FP16。 使用FP16 可以减少模型一半内存,但有些参数必须采用FP32才能保持模型性能。 虽然INT8精度低,但是数据量小、能耗低,计算速度相对更快,更符合端侧运算的特点。 不同精度进行量化的归程中,量化误差不可避免。 在模型训练阶段,梯度的 阅读全文 → 2023-02-06