tensorflow - Tensorflow分布式训练高带宽参数服务器
问题描述
我们使用参数服务器策略在分布式模式下训练了一个 DNN 模型。该模型有一个嵌入层和一些代码,如
with tf.colocate_with(embeddings):
tf_output = tf.nn.embedding_lookup_sparse(embeddings, tf_ids, name=name + '_lookup')
由于网络带宽饱和,这导致工作人员的 GPU 峰值约为 10%(非常低)。如果我们注释掉with colocate_with(embeddings)
. 工人的 GPU 提高了 30% 以上。
好奇这可能的原因是什么。由于嵌入是在 PS 上分配的,因此差异似乎embedding_lookup
发生在哪里(在工人或 PS)。神秘的部分来了。colocate_with
意味着在 PS 上嵌入变量和嵌入查找操作。
解决方案
推荐阅读
- python - 无法使用 pyodbc 连接到 windev HFSQL 数据库
- google-cloud-platform - DHCP 租约续订后 Apache TLS 握手超时
- ssas - MDX Scope 获取分母
- python - 我需要编辑一个 python 脚本以从 csv 中删除引号,然后写回同一个 csv 文件,引号被删除
- git - 如何将包含 create-react-app 子文件夹的项目推送到 GitHub?
- python - 生成不包括一系列数字的随机浮点数
- java - AVL 树回溯插入/删除操作 - 时间效率
- reactjs - 为什么我的 react-lazyload 组件不起作用?
- javascript - 如何使用 selenium python chromeDriver 向下滚动到动态页面的末尾
- javascript - Jquery function with two events using &&