推荐的分布式张量流分析方法

时间:2018-06-26 21:00:00

标签: tensorflow tensorflow-serving tensorflow-datasets tensorflow-estimator

当前,我正在使用tensorflow估计器API训练我的tf模型。我正在使用分布式培训,根据培训数据的大小,该培训几乎是20-50名工人和5-30个参数服务器。由于我无权访问会话,因此无法使用带有完整跟踪的运行元数据a =查看chrome跟踪。我看到了另外两种方法:

1)tf.profiler.profile
2)tf.train.profilerhook

我正在专门使用 tf.estimator.train_and_evaluate(estimator, train_spec, test_spec)

我的估算器是一个预置的估算器。

有人可以给我一些指导吗(由于我是Tensorflow的新手,所以具体的代码示例和代码指针将非常有帮助)推荐的剖析估计器方法是什么?这两种方法是获取一些不同的信息还是达到相同的目的?还推荐一个吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试两种方法:

ProfilerContext

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/profiler/profile_context.py 用法示例:

with tf.contrib.tfprof.ProfileContext('/tmp/train_dir') as pctx:
  train_loop()

ProfilerService

https://www.tensorflow.org/tensorboard/r2/tensorboard_profiling_keras

您可以通过tf.python.eager.profiler.start_profiler_server(port)在所有辅助服务器和参数服务器上启动ProfilerServer。并使用TensorBoard捕获配置文件。

请注意,这是一项非常新的功能,您可能要使用tf-nightly

答案 1 :(得分:0)

Tensorflow最近为sample multiple workers添加了一种方法。

请查看一下API: https://www.tensorflow.org/api_docs/python/tf/profiler/experimental/client/trace?version=nightly

在这种情况下,以上API的重要参数是:

service_addr:以逗号分隔的gRPC地址的字符串, 工人简介。例如service_addr ='grpc:// localhost:6009' service_addr ='grpc://10.0.0.2:8466,grpc://10.0.0.3:8466' service_addr ='grpc:// localhost:12345,grpc:// localhost:23456'

另外,请查看API, https://www.tensorflow.org/api_docs/python/tf/profiler/experimental/ProfilerOptions?version=nightly

在这种情况下,以上API的重要参数是:

delay_ms:请求所有主机在某个时间戳记上启动profiling 距离当前时间delay_msdelay_ms在 毫秒。如果为零,则每个主机将在开始时立即进行性能分析 收到请求。默认值为无,允许profiler 猜出最好的价值。