| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 人工智能 -> 千万级类别人脸识别模型并行训练 -> 正文阅读 |
|
|
[人工智能]千万级类别人脸识别模型并行训练 |
|
并行训练的方式:
一、模型并行目前处理大规模(数据多、类别大)数据集的方法: 混合并行:即backbone使用数据并行,分类层使用模型并行; 该方法具备两个优点:
模型并行的结构图:
模型并行方法的弊端: 模型并行的方式理论上看似能无限增加类别数(只要增加GPU数量即可),但是实际上大家在尝试更大规模、更多机器的时候,会发现显存不够用了,好像增加类别数的同时增加机器,单个GPU的显存还在增长?其实我们忽略了另外一个占据显存的张量:predicted logits的存储会受到总批大小的增加的影响。logits(预计日志的存储会受到总批大小的增加的影响)。 首先定义 logits = X_w,其中 w 为存储在每张GPU上的子矩阵,X 为经过集合通信 Allgaher 收集到的全局特征,d 为特征的维度大小,C 为总的类别数,k 为GPU的个数。其中每块GPU中 w 占用的显存为:
结论:当我们不停的增加GPU数量时,logits占用的内存也会增大,当GPU数量K大到一定量时,内存就会溢出了。 二、Partial FC(FC抽样)
该研究对此提出了一个简单的解决方案: 在实现混合并行时,不仅同步每张卡的特征,同时也同步每张卡的标签,这样每张卡都具备所有卡的完整特征和标签。假设总的批次大小为 kN,则至多会有 kN 个正类中心随机分布在所有的GPU中,让每个正类中心所属的GPU将该正类采样出来即可,每张GPU正类采出来后,再随机用负类补齐到约定的采样率。这样每张GPU采样到的类中心一样多,实现负载均衡。后续的过程就是分类层的模型并行部分了,需要注意的是,只有采样出来的类中心的权重和动量会更新。 partial_fc论文博客:https://jishuin.proginn.com/p/763bfbd2fee4 https://blog.csdn.net/weixin_43152063/article/details/115307938 https://blog.51cto.com/u_15282017/2974039 |
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/25 4:45:38- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |