2.2 系统负载分析
2.2.1 问题分析工具链
TensorFlow是一个非常庞大的开源项目 , 代码有几百万行之多 , 原生系统的监控指标太粗 , 且不支持全局的监控 , 如果要定位一些复杂的性能瓶颈点 , 就比较困难 。我们基于美团已经开源的监控系统CAT[2] , 构建了TensorFlow的细粒度监控链路(如下图1所示) , 可以精准定位到性能的瓶颈问题 。
在推荐系统场景中 , 我们使用了TensorFlow Parameter Server[3](简称PS)异步训练模式来支持业务分布式训练需求 。对于这套架构 , 上述的业务变化会带来什么样的负载变化?如下图3所示:
3 优化实践
3.1 大规模稀疏参数介绍
对于推荐系统模型 , 绝大多数参数都是稀疏参数 , 而对稀疏参数来说有一个非常重要的操作是Embedding , 这个操作通常也是负载最重的 , 也是后续优化的重点 。由于我们对稀疏参数进行了重新定义 , 后续的优化也基于此之上 , 所以我们先介绍一下这部分的工作 。
在原生的TensorFlow中构建Embedding模块 , 用户需要首先创建一个足够装得下所有稀疏参数的Variable , 然后在这个Variable上进行Embedding的学习 。然而 , 使用Variable来进行Embedding训练存在很多弊端:
Variable的大小必须提前设定好 , 对于百亿千亿的场景 , 该设定会带来巨大的空间浪费;训练速度慢 , 无法针对稀疏模型进行定制优化 。
推荐阅读
- qq浏览器加密文件在哪里
- 韩国人现场“烤鳗鱼”,放在烤架上疯狂挣扎,看着就很过瘾!
- 支付宝绑定车辆在哪里
- 商场消费券可以在超市用吗
- 重庆十八梯在哪里
- 士兵突击原著人物结局
- 爱情所要经历的5个阶段,你被困在了哪里?
- 螃蟹的腮在哪里
- 958年前,苏东坡在郑州“二七广场”哭了?
- 喵组词喵的组词喵字怎么组词