Wide & Deep的OneFlow网络训练
HugeCTR是英伟达提供的一种高效的GPU框架,专为点击率(CTR)估计训练而设计。
OneFlow对标HugeCTR搭建了Wide & Deep 学习网络(WDL)。OneFlow-WDL网络实现了模型并行与稀疏更新,在8卡12G TitanV的服务器上实现支持超过4亿的词表大小,而且性能没有损失与小词表性能相当。
本文介绍如何使用OneFlow-WDL网络进行训练,以及一些训练结果及分析。
环境和准备
运行OneFlow-WDL需要有安装好OneFlow的python环境,并安装了scikit-learn。
软件要求
• python 3.x(推荐)
• OneFlow 0.x
• scikit-learn
数据准备
准备了一个小的样本数据集,可以下载进行简单测试。
或者参考《使用Spark创建WDL数据集》中的步骤,从CriteoLabs官网下载原始数据集并制作成OneFlow所需要的OFRecord格式的数据集。
OneFlow-WDL脚本
OneFlow-WDL脚本只有一个文件wdl_train_eval.py,请从这里下载。
运行OneFlow-WDL脚本
EMBD_SIZE=1603616
DATA_ROOT=/path/to/wdl/ofrecord
python3 wdl_train_eval.py
–train_data_dir $DATA_ROOT/train
–train_data_part_num 256
–train_part_name_suffix_length=5
–eval_data_dir KaTeX parse error: Undefined control sequence: \ at position 15: DATA_ROOT/val \̲ ̲ --eval_data_p…EMBD_SIZE
–deep_vocab_size=$EMBD_SIZE
–gpu_num 1
通常配置好数据集的位置DATA_ROOT后,上面的shell脚本就可以被执行了,如果屏幕上能够输出下面类似的结果,就表示已经正确运行。
1000 time 2020-07-08 00:28:08.066281 loss 0.503295350909233
1000 eval_loss 0.4846755236387253 eval_auc 0.7616240146992771
2000 time 2020-07-08 00:28:11.613961 loss 0.48661992555856703
2000 eval_loss 0.4816856697201729 eval_auc 0.765256583562705
3000 time 2020-07-08 00:28:15.149135 loss 0.48245503094792364
3000 eval_loss 0.47835959643125536 eval_auc 0.7715609382514008
4000 time 2020-07-08 00:28:18.686327 loss 0.47975033831596375
4000 eval_loss 0.47925308644771575 eval_auc 0.7781267916810946
测试结果及说明
在一台有8块12G显存的TitanV的服务器上对OneFlow-WDL进行了一组测试,并使用HugeCTR提供的docker容器做了同样参数的测试。
多GPU性能测试
主要测试目的是在batch size = 16384的情况下,测量不同GPU数量处理每个批次的平均时延(latency)。 测试配置了7个1024神经单元的隐藏层。
结果如下图:

同时记录了,测试时实际最大占用显存的大小,结果如下图:

综合上面结果表明,1卡到8卡,OneFlow-WDL在占用较少的显存的情况下,速度要比HugeCTR快。
batch size=16384每卡,多卡性能测试
主要测试目的是在保证每GPU卡处理16384batch size情况下,使用1至8GPU卡进行训练每个批次的平均时延(latency)。 测试配置了7个1024神经单元的隐藏层。
结果如下图:

同时记录了,测试时实际最大占用显存的大小,结果如下图:

综合上面结果表明,随着卡数的增加,时延增加,OneFlow-WDL在占用较少的显存的情况下,速度要比HugeCTR快;因为每卡保证16384 batch size,OneFlow每卡占用的内存并无显著变化。
单GPU卡不同batch size性能测试
主要测试目的是在一个GPU卡情况下,测量不同batch size每个批次的平均时延(latency)。 测试配置了2个1024神经单元的隐藏层。
结果如下图:

超大词表测试
OneFlow-WDL中配置了两个Embedding Table: - wide_embedding 大小是vocab_size x 1 - deep_embedding 大小是vocab_size x 16
HugeCTR中词表大小(vocab_size)是1603616。从3200000开始测起,一直到支持4亿的词表大小,结果如下图:

上面的图中,蓝色柱子是批次训练的平均时延(latency),红色曲线代表GPU显存的占用。
结论:随着词表大小的增大,内存随之增大,但latency没有明显的变化。
收敛性测试1
选取了batch size=512进行了收敛性能的测试。
下面这张图是,前500步的结果,每一步训练都在验证集中选取20条记录进行验证,图中的曲线分别是loss和AUC:

结论:AUC迅速就增长到超过了0.75。
收敛性测试2
和收敛性测试1同样的情况,这一次是每训练1000步打印训练loss的平均值,然后选取20条验证集数据进行验证,一共训练30万步,结果如下:

结论与分析: 1. 蓝色的train loss曲线有明显向下的台阶,因为整个训练集有36674623条数据,batch_size=512的情况下,大概71630步就过了整个数据集(一个epoch),30万步就把训练数据集用了4次多,蓝色曲线的台阶印证了这些。OneFlow在训练过程中支持数据的打乱,每当数据集被完整的用完一遍之后,数据会被重新打乱,减少过拟合。 2. 橙色的曲线是验证集loss,在前两个epoch的时候基本保持下降的趋势,从第三个epoch开始,loss开始有上升的趋势,表明已经过拟合了。 3. 灰色是验证集的AUC,AUC也是在第二个epoch的时候达到了峰值,超过了0.8,后面几个epoch就开始下降。

Wide Deep的OneFlow网络训练相关推荐

  1. #论文 《Wide Deep Learning for Recommender System》翻译

    只是为了深化个人理解,翻译了一下梗概.不追求信达雅,只翻译大意. 概要: 使用非线性特征的广义线性模型(GLM)广泛应用在大规模,输入变量稀疏的回归和分类问题中.其中,通过关于交叉特征的wide模型, ...

  2. 基于Wide Deep Learning的推荐系统

    我们先来看下Google Inc的paper:Wide & Deep Learning for Recommender Systems. 一.介绍 推荐系统可以看成是一个搜索排序系统,其中输入 ...

  3. 简单易学的深度学习算法:Wide Deep Learning

    1.背景 本文提出Wide & Deep模型,旨在使得训练得到的模型能够同时获得记忆(memorization)和泛化(generalization)能力: 记忆(memorization)即 ...

  4. Wide Deep模型的理解及实战(Tensorflow)

    目录 一.背景 二.概述 三.模型原理 3.1.Wide模型 3.2.Deep模型 3.3.Wide和Deep模型的协同训练 四.系统介绍 4.1.系统简介 4.2.系统流程 五.tensorflow ...

  5. Google推荐系统Wide Deep Learning for Recommender Systems论文翻译解读

    Wide & Deep Learning for Recommender Systems 推荐系统中的Wide & Deep Learning 摘要 Generalized linea ...

  6. 论文笔记 【Wide Deep Learning for Recommender Systems】

    标题 * 表示未完成 论文原文传送门 文章提出了 m e m o r i z a t i o n a n d g e n e r a l i z a t i o n memorization\ and ...

  7. keras训练完以后怎么预测_使用Keras建立Wide Deep神经网络,通过描述预测葡萄酒价格...

    你能通过"优雅的单宁香"."成熟的黑醋栗香气"或"浓郁的酒香"这样的描述,预测葡萄酒的价格吗?事实证明,机器学习模型可以. 在这篇文章中,我 ...

  8. 构建并用 TensorFlow Serving 部署 Wide Deep 模型

    Wide & Deep 模型是谷歌在 2016 年发表的论文中所提到的模型.在论文中,谷歌将 LR 模型与 深度神经网络 结合在一起作为 Google Play 的推荐获得了一定的效果.在这篇 ...

  9. 推荐系统经典模型 Wide Deep 论文剖析

    作者 |  梁唐 来源 | TechFlow(id:TechFlow) 今天我们剖析的也是推荐领域的经典论文,叫做Wide & Deep Learning for Recommender Sy ...

最新文章

  1. 解决工控网络通信协议威胁的实践
  2. Universal Windows Platform(UWP)应用的窗口特性
  3. 上传文件、上传按钮、Form组件上传文件
  4. 2013年4月 计算机网络原理答案,2013年4月份自学考试计算机网络原理04741答案
  5. Codeforce Flea CodeForces - 32C 规律|思维
  6. ubuntu安装wine之后进不了系统
  7. 爬虫-07-请求过程
  8. iPhone 大降价;谷歌再爆丑闻;京东云金山云回应合并传闻 | 极客头条
  9. 视频标签- video 音频标签- audio
  10. MATLAB编写自己的BP神经网络程序
  11. 2019年3月训练记录(3.01~3.23)
  12. macos 卸载驱动_如何从macOS菜单栏中快速卸载外部驱动器
  13. ArcCatalog不能预览地图服务
  14. TD幅度预测、幅度膨胀突破、TD通道
  15. sigmoid函数温习【函数曲线可视化与导函数曲线可视化】
  16. 【Altium designer】常用的线宽和过孔尺寸
  17. pythonturtle画图库使用技巧_Python画图库turtle使用方法简介
  18. 国家发布世界级城市群规划上海“全球城市”
  19. libcurl.lib 导入问题 须知
  20. 【TJOI2017】可乐

热门文章

  1. 是否存在分布式的【大泥球】?
  2. Java Calendar.add()方法的使用,参数含义。指定时间差。
  3. 自制青蛙跳台阶小游戏~
  4. 2022-2028年中国汽车俱乐部行业发展趋势与投资战略研究报告
  5. 2022-2028年中国房地产金融行业投资分析及前景预测报告
  6. Vue 自定义权限指令
  7. 神经网络为什么需要多次epoch
  8. 2021年大数据常用语言Scala(十):基础语法学习 方法
  9. Android ListView 删除 item
  10. Android 跳转Activity 的时候出现闪屏问题处理