python - 具有内存数据的分布式 TensorFlow
问题描述
我需要随机生成合成内存数据(以 pandas DataFrames 的形式),以馈送到分布在多个参数服务器和工作人员上的 TensorFlow Estimator。我怎样才能做到这一点?哪个服务器应该负责生成数据以及如何将它们传递给其他服务器?这些方面的东西会起作用吗?
def main(_):
ps_hosts = FLAGS.ps_hosts.split(",")
worker_hosts = FLAGS.worker_hosts.split(",")
#Create a cluster from the parameter server and worker hosts.
cluster = tf.train.ClusterSpec({"ps": ps_hosts, "worker": worker_hosts})
#Create and start a server for the local task.
server = tf.train.Server(cluster, job_name=FLAGS.job_name, task_index=FLAGS.task_index)
if FLAGS.job_name == "ps":
server.join()
elif FLAGS.job_name == "worker":
if FLAGS.task_index==0:
train_data, train_labels = generate_synthetic_data()
eval_data, eval_labels = generate_synthetic_data()
test_data, test_labels = generate_synthetic_data()
with tf.device(tf.train.replica_device_setter( worker_device="/job:worker/task:%d" % FLAGS.task_index, cluster=cluster)):
# Run training
train_and_evaluate()
if __name__ == "__main__":
tf.app.run(main=main, argv=[sys.argv[0]])
或者,类似地,在这里 https://www.tensorflow.org/tutorials/estimators/linear#overview他们创建了两个 pandas 数据帧,然后将其馈送到 Estimator。该代码将如何并行化?
解决方案
TF 估计器目前不容易支持单个共享输入管道。相反,每个工作人员都有自己独立的输入管道,以最大限度地提高吞吐量。
因此,在每个工作人员中生成一个单独的合成数据框。
推荐阅读
- magento2 - 根据当前商店 magento 翻译商店视图名称
- python - 使用 openCV 从轮廓构建嵌套蒙版
- java - 我应该总是覆盖equals、hashcode和toString方法吗?
- react-native - 在按钮单击时加载组件并将数据传递给它
- c# - 如何使 MySql 和 EF Core 将 tinyint 或 bit 映射为布尔值?
- python - 比较 Python Selenium 中的类
- haproxy - HAProxy 在 404 上的不同后端重试请求
- r - R:查找具有最高值的列
- c# - 集成测试期间的 ASP.NET Core 3 模拟授权
- spring-boot - 使用 Spring-Boot 在 http 中返回 jax-rs 响应时出错