摘要:
在上学时代和工作期间,经常会遇到概率论中相关概念,这里再重新来认识一下随机变量相关概念。包括随机变量(离散随机变量、连续随机变量)、分布列、概率密度函数、分布函数等。下面都是来自茆诗孙版本《概率论与数理统计》 1. 随机变量的概念 1.1 随机变量的引入 在本书中,“用来表示随机现象结果的变量”称为 阅读全文
摘要:
这里简要总结一下,人脸大规模分类的实现过程 (1)拆分分类权重:分类权重$W\in R^{n\times d}$拆分为K份,每个gpu存储其中一份分类权重 (2)求logit值:每个gpu上的特征feature,及其label,经过allgather操作汇聚并广播到每个GPU上,然后和当前gpu上的 阅读全文
摘要:
腾讯开源人脸识别训练代码TFace 中关于all_gather层的实现如下。接下来解释为什么backward要进行reduce相加操作。 https://github.com/Tencent/TFace class AllGatherFunc(Function): """ AllGather op 阅读全文
摘要:
pytorch中 all_gather 操作是不进行梯度回传的。在计算图构建中如果需要经过all_gather操作后,仍需要将梯度回传给各个进程中的allgather前的对应变量,则需要重新继承torch.autograd.Function https://pytorch.org/docs/stab 阅读全文
摘要:
点对点通信 MPI中数据通信类似邮件发送 一个进程发送数据的拷贝到另一个进程/一组进程,其它进程则接收数据拷贝 数据通信要求 发送方:(必须知道的) 1、发送数据谁,给哪个进程 2、发送什么数据,包括数据类型和数据的数量 3、用户定义的tag(类似邮件的主题,告诉接收方接收的是什么类型的数据) 接收 阅读全文
摘要:
下面注释insightface中 大规模人脸分类层实现细节 完整分类代码放到页面末尾 大规模人脸分类的基本思想是,分类层可线性拆分,可将分类层均匀拆分到N块GPU上。分类类别数量增大,仅需增加GPU的数量即可,单卡存放部分的分类层参数量可不变。 (1)下面代码就是实现分类层如何拆分。如果分类类别数量 阅读全文
摘要:
下面主要注释了百度开源人脸大规模分类训练PLSC代码细节 (1)下面代码softmax_with_cross_entropy之前部分主要是使用allgather将每个gpu上计算的特征聚合在一起,每块gpu上都存放了相同的全体特征。 def softmax_classify(self, x, lab 阅读全文
摘要:
相关概念与函数 MPI名词:communicator, rank, size MPI函数:MPI_Comm_rank, MPI_Comm_size, MPI_Init, MPI_Finalize 如何理解MPI概念中的 communicator? 为完成某个并行计算的所涉及的进程合在一起的进程组称之 阅读全文
摘要:
在早期tensorflow框架进行多机多卡分布式训练采用的Parameter Server方式进行梯度的同步,但是这种方式随着GPU卡数的增加,通信效率问题凸显出来。后来百度硅谷提出在《Bring HPC techniques to Deep Learning》中提出Ring-AllReduce 技 阅读全文
摘要:
最开始接触深度学习的框架就是Caffe,用Caffe做过目标检测、图像分类、人脸识别等训练任务。当时写C++代码时一项很头痛的事就是自己去写反向传播代码。后来tensorflow出来后,只需要写前向过程不需要写反向过程,真的是极大的缓解了编程压力,让人们可以投入更多精力去设计网络结构、损失函数、各种 阅读全文