当前,我正在使用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的新手,所以具体的代码示例和代码指针将非常有帮助)推荐的剖析估计器方法是什么?这两种方法是获取一些不同的信息还是达到相同的目的?还推荐一个吗?
答案 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_ms
。delay_ms
在 毫秒。如果为零,则每个主机将在开始时立即进行性能分析 收到请求。默认值为无,允许profiler
猜出最好的价值。