(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202211032557.4
(22)申请日 2022.08.26
(71)申请人 北京潞晨科技有限公司
地址 100080 北京市海淀区海淀大街34 号8
层801-802室
(72)发明人 方佳瑞 张耿 韩佳桐 李升桂
卞正达 李永彬 柳泓鑫 刘育良
麦思琪 黄海晨 娄宇轩 吴俊铭
路广阳
(74)专利代理 机构 北京深川专利代理事务所
(普通合伙) 16058
专利代理师 张娴
(51)Int.Cl.
G06N 3/08(2006.01)
G06F 9/50(2006.01)
(54)发明名称
一种基于分布式异构计算的大规模推荐系
统训练方法
(57)摘要
本发明公开了通信技术领域的一种基于分
布式异构计算的大规模推荐系统训练方法, 包括
如下步骤: Cache初始化; Cache换入换出算法构
建; 索引映射算 法构建; 在GPU中, 利用PyT orch提
供的Embedding或Embedding_bag函数进行
Sparsefeature的计算, 以及模型后续的Dense部
分的计算, 本技术方案可以充分利用GPU计算资
源, 计算速度增快; 将按行换入换出优化成按块
进行换入换出, 提高了吞吐量; 最后充分利用计
算资源进一步扩展模型的规模, 对模 型进行分布
式扩展, 该方法具有创造性和市场推广价 值。
权利要求书2页 说明书6页 附图1页
CN 115423092 A
2022.12.02
CN 115423092 A
1.一种基于分布式异构计算的大规模推荐系统训练方法, 基于推荐系统数据的长尾特
征, 利用Cac he机制, 其特 征在于, 包括如下步骤:
S1: Cache初始化;
S2: Cache换入换出算法构建;
S3: 索引映射 算法构建;
S4: 在GPU中, 利用PyTorch提供的Embedding或Embedding_bag函数进行Sparse
feature的计算, 以及模型后续的Dense部分的计算。
2.根据权利要求1所述的一种基于分布式异构计算的大规模推荐系统训练方法, 其特
征在于: 所述步骤S1具体为: 设Embedding的数目为E, 每个Embedding向量的维度为d, 将
Embedding参数作为 一个Exd的矩阵, 放在主机端;
在GPU创建一个Nxd的Cache, 即Cache行数为N, 每个Cache行的维度为d; Embedding参数
可以随机初始化, 也可以读取 预训练参数, Cac he则仅需要分配内存而不必 初始化;
创建一个大小为N的映射表, 存放Cache索引到Embedding索引的映射, 并全部初始化
为‑1, 表示空;
创建一个大小为N的频率记录表, 存放每个Cache被访问的次数, 初始化为 ‑1, 也表示
空。
3.根据权利要求1所述的一种基于分布式异构计算的大规模推荐系统训练方法, 其特
征在于: 所述步骤S2具体为: 训练时, 每一步收到一个batch的训练样 本, 先检测并确保样 本
的Sparse feature内的所有索引去重后, 数量 不超过N, 如超过N即报错;
对去重后的Sparse feature索引, 根据映射表检查当前输入的索引是否保存在Cache
中, 根据结果分为Cac he命中和未命中两个集 合;
对未命中集合, 首先根据频率记录表对Cache的索引排序, 找出空闲( ‑1)的Cache行, 或
者访问次数最少的Cache行, 并过滤掉在命中中的Cache行, 直到找到Cache行数目为未命中
的大小, 这一组Cache行的索引记为一个列表pos, 表示未命中对应的即将从CPU读入的
Embedding参数放入Cache的目标位置; 如果是非空闲的Cache行, 还需要将其索引复制到列
表pos_write_back, 即需要先从Cac he写回GPU的Cac he行;
根据pos_write_back列表, 首先从Cache中读出对应的Embedding参数, 再从映射表读
出每个Embedding在CPU上的Embedding行索引, 由此就可以根据索引将参数写回CPU上的
Embedding参数矩阵; 随后, 根据未命中集合, 从Embedding参数矩阵读出需要换入GPU
Cache的Embedding参数, 再根据pos列表找到每个参数需要放入的Cache行; 最后, 根据pos
列表更新映射表, 并将频率记录表中, pos列表对应的记录清空, 即置为 ‑1。
4.根据权利要求1所述的一种基于分布式异构计算的大规模推荐系统训练方法, 其特
征在于: 所述步骤S3中当Cache换入 换出完成后, 可保证当前输入的Sparse feature所有需
要的Embedding参数都在Cache中, 因此根据映射表进行查找, 将Sparse feature的每个
Embedding行索引映射 为Cache行的索引。
5.根据权利要求1所述的一种基于分布式异构计算的大规模推荐系统训练方法, 其特
征在于: 所述Cache机制有效的关键是减少CPU与GPU间Embedding参数的换入换出, 为了进
一步提升模型训练的吞吐量, 需要在基础实现的按行换入换出的基础上进行优化, 即按块
进行cache换入换出, 具体步骤如下:权 利 要 求 书 1/2 页
2
CN 115423092 A
2在初始化时, 首先扫描一次数据集, 统计Embedding行对应的每个Sparse feature索引
的频率; 随后, 对Embedding矩阵按频率进行排序, 并在逻辑上分成C个块, 由此将映射表换
成一个Ex3的<Embedding索引 ‑块索引‑块内偏移>的映射表, Cache的大小设为NxCxd的矩
阵;
Cache换入换出时, 读入一个batch的样本时, 对Sparse feature的索引, 根据映射表映
射为块索引, 其 余操作与按行换入换出过程一致, 每次按块读写Cxd的块 填入映射表;
索引映射时, 根据每个Embeddin g索引, 根据映射表查块内偏移, 再根据块在Cache中的
位置, 加上偏移, 即为Cac he中对应的Cac he行索引。
6.根据权利要求1所述的一种基于分布式异构计算的大规模推荐系统训练方法, 其特
征在于: 该Cache机制中为了充分利用计算资源进一步扩展模型的规模, 需要对模型进 行分
布式扩展, 具体步骤如下:
依托于开源分布式训练框架Colossal ‑AI提供的自动并行技术, 采用AllReduce方式,
对Embedding参数进行模型并行, 对Dense部分进行 数据并行;
模型并行是将整个Embedding参数矩阵按行、 列切分成多个部分, 将不同部分分布到一
个网络中的不同节 点, 训练时从每个节 点读取需要的数据, 通过A llReduce通信函数收集一
个batch的Sparse feature完整的Embed ding参数, 从而 进一步扩展模型参数规模;
数据并行是将Dense部分复制到每个节点中, 利用AllReduce在训练时同步梯度, 从而
增加吞吐量。
7.根据权利要求1所述的一种基于分布式异构计算的大规模推荐系统训练方法, 其特
征在于: 还包括不基于Cache机制, 具体步骤为: 将Embedding参数放在CPU中, 将Dense参数
放在GPU中, 训练时, 在CPU中进行Embedding相关的查找、 计算, 将得到的Embedding参数结
果复制到GPU, 再进行Dense部分的计算。权 利 要 求 书 2/2 页
3
CN 115423092 A
3
专利 一种基于分布式异构计算的大规模推荐系统训练方法
文档预览
中文文档
10 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共10页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 13:08:24上传分享