Tensorflow TF2.x急切模式现在无法支持ParameterServerStrategy?

Tensorflow TF2.x急切模式现在无法支持ParameterServerStrategy?,tensorflow,machine-learning,keras,tensorflow2.0,eager,Tensorflow,Machine Learning,Keras,Tensorflow2.0,Eager,TF版本:最新母版,b083cea 下面是一个使用TF2.0急切模式的简单示例,它使用MirroredStrategy成功运行,但使用ParameterServerStrategy出错 TF2.0急切模式现在可以支持ParameterServerStrategy吗?到目前为止,我还没有找到一个成功的例子:( 来自未来导入绝对导入、除法、打印函数、unicode文本 导入tensorflow作为tf 将tensorflow_数据集作为TFD导入 导入操作系统,json 数据集,info=tfds.

TF版本:最新母版,b083cea

下面是一个使用TF2.0急切模式的简单示例,它使用MirroredStrategy成功运行,但使用ParameterServerStrategy出错

TF2.0急切模式现在可以支持ParameterServerStrategy吗?到目前为止,我还没有找到一个成功的例子:(

来自未来导入绝对导入、除法、打印函数、unicode文本
导入tensorflow作为tf
将tensorflow_数据集作为TFD导入
导入操作系统,json
数据集,info=tfds.load(name='mnist',其中\u info=True,as\u supervised=True)
mnist_列,mnist_测试=数据集['train',数据集['test']
os.environ['TF_CONFIG']=json.dumps({
“集群”:{
“worker”:[“localhost:12345”],
“ps”:[“本地主机:12346”]
},
“任务”:{“类型”:“工作者”,“索引”:0}
})
strategy=tf.distribute.experimental.ParameterServerStrategy()
#strategy=tf.distribute.MirroredStrategy()
打印('Number of devices:{}'。格式(strategy.num\u replications\u in\u sync))
num_train_examples=info.splits['train'].num_examples
num_test_examples=info.splits['test'].num_examples
缓冲区大小=10000
每个副本的批处理大小=64
BATCH\u SIZE=BATCH\u SIZE\u PER\u REPLICA*strategy.num\u replications\u in\u sync
def刻度(图像、标签):
image=tf.cast(image,tf.float32)
图像/=255
返回图像、标签
train\u dataset=mnist\u train.map(比例)、shuffle(缓冲区大小)、batch(批大小)
eval\u数据集=mnist\u test.map(比例)。批次(批次大小)
使用strategy.scope():
模型=tf.keras.Sequential([
Conv2D(32,3,activation='relu',input_shape=(28,28,1)),
tf.keras.layers.MaxPoolig2D(),
tf.keras.layers.flatte(),
tf.keras.layers.Dense(64,活化='relu'),
tf.keras.layers.Dense(10,活化='softmax')
])
model.compile(loss='sparse\u categorical\u crossentropy',
optimizer=tf.keras.optimizers.Adam(),
指标=[‘准确度’])
检查点目录='/培训检查点'
#检查点文件的名称
checkpoint_prefix=os.path.join(checkpoint_dir,“ckpt{epoch}”)
#用于衰减学习速率的函数。
#可以定义所需的任何衰减函数。
def衰减(历元):
如果历元<3:
返回1e-3
elif epoch>=3和epoch<7:
返回1e-4
其他:
返回1e-5
#用于在每个历元结束时打印LR的回调。
类PrintLR(tf.keras.callbacks.Callback):
def on_epoch_end(self、epoch、logs=None):
打印(“\n历元{}的学习率为{}”。格式(历元+1,
model.optimizer.lr.numpy())
回调=[
tf.keras.callbacks.TensorBoard(log_dir='./logs'),
tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint\u前缀,
保存权重(仅为真),
tf.keras.callbacks.LearningRateScheduler(衰退),
PrintLR()
]
model.fit(train_数据集,epochs=12,callbacks=callbacks)
模型.负载重量(tf.列车.最新检查点(检查点方向))
评估损失,评估acc=model.evaluate(评估数据集)
打印('Eval loss:{},Eval acc:{}'。格式(Eval_loss,Eval_acc))
错误消息

tf.keras.layers.Dense(10, activation='softmax') File "/usr/local/lib/python3.7/site-packages/tensorflow/python/training/tracking/base.py", line 456, in _method_wrapper result = method(self, *args, **kwargs) File "/usr/local/lib/python3.7/site-packages/tensorflow/python/keras/engine/sequential.py", line 116, in __init__ super(Sequential, self).__init__(name=name, autocast=False) File "/usr/local/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py", line 199, in __init__ self._init_batch_counters() File "/usr/local/lib/python3.7/site-packages/tensorflow/python/training/tracking/base.py", line 456, in _method_wrapper result = method(self, *args, **kwargs) File "/usr/local/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py", line 206, in _init_batch_counters self._train_counter = variables.Variable(0, dtype='int64', aggregation=agg) File "/usr/local/lib/python3.7/site-packages/tensorflow/python/ops/variables.py", line 261, in __call__ return cls._variable_v2_call(*args, **kwargs) File "/usr/local/lib/python3.7/site-packages/tensorflow/python/ops/variables.py", line 255, in _variable_v2_call shape=shape) File "/usr/local/lib/python3.7/site-packages/tensorflow/python/ops/variables.py", line 66, in getter return captured_getter(captured_previous, **kwargs) File "/usr/local/lib/python3.7/site-packages/tensorflow/python/distribute/distribute_lib.py", line 1769, in creator_with_resource_vars return self._create_variable(next_creator, **kwargs) File "/usr/local/lib/python3.7/site-packages/tensorflow/python/distribute/parameter_server_strategy.py", line 455, in _create_variable with ops.device(self._variable_device): File "/usr/local/lib/python3.7/site-packages/tensorflow/python/framework/ops.py", line 5183, in device "tf.device does not support functions when eager execution " RuntimeError: tf.device does not support functions when eager execution is enabled. tf.keras.layers.Dense(10,活化='softmax') 文件“/usr/local/lib/python3.7/site packages/tensorflow/python/training/tracking/base.py”,第456行,在方法包装中 结果=方法(自身、*args、**kwargs) 文件“/usr/local/lib/python3.7/site packages/tensorflow/python/keras/engine/sequential.py”,第116行,在__ super(顺序,自)。\uuuu init\uuuuu(name=name,autocast=False) 文件“/usr/local/lib/python3.7/site packages/tensorflow/python/keras/engine/training.py”,第199行,在__ self.\u init\u批处理\u计数器() 文件“/usr/local/lib/python3.7/site packages/tensorflow/python/training/tracking/base.py”,第456行,在方法包装中 结果=方法(自身、*args、**kwargs) 文件“/usr/local/lib/python3.7/site packages/tensorflow/python/keras/engine/training.py”,第206行,在批处理计数器中 self.\u train\u counter=variables.Variable(0,dtype='int64',aggregation=agg) 文件“/usr/local/lib/python3.7/site packages/tensorflow/python/ops/variables.py”,第261行,在__ 返回cls.\u变量\u v2\u调用(*args,**kwargs) 文件“/usr/local/lib/python3.7/site packages/tensorflow/python/ops/variables.py”,第255行,在变量调用中 形状=形状) 文件“/usr/local/lib/python3.7/site packages/tensorflow/python/ops/variables.py”,第66行,在getter中 返回捕获的获取者(捕获的前一个,**kwargs) 文件“/usr/local/lib/python3.7/site packages/tensorflow/python/distribute/distribute_lib.py”,第1769行,在creator_和_resource_vars中 返回self.\u创建\u变量(下一个\u创建者,**kwargs) 文件“/usr/local/lib/python3.7/site packages/tensorflow/python/distribute/parameter\u server\u strategy.py”,第455行,在创建变量中 带操作装置(自可变装置): 设备中的文件“/usr/local/lib/python3.7/site packages/tensorflow/python/framework/ops.py”,第5183行 “tf.device在执行时不支持函数” RuntimeError:tf.device不支持启用急切执行时的函数。 在页面中,它在下面陈述

注意:此策略仅适用于估计器API。创建RunConfig时,将此策略的一个实例传递给experimental_distribute参数。然后应该将RunConfig的这个实例传递给调用了train_和_evaluate的估计器实例

下面是一个关于如何使用
tf.distribute.experimental.ParameterServerStrategy()
-

另外,如果您转到该页面,它会解释目前TF2.0中的哪些场景支持什么

希望这能回答你的问题。快乐学习。

在页面中,它在下面陈述

注意:此策略仅适用于估计器API。创建RunConfig时,将此策略的一个实例传递给experimental_distribute参数。然后应该将RunConfig的这个实例传递给估计器i tf.keras.layers.Dense(10, activation='softmax') File "/usr/local/lib/python3.7/site-packages/tensorflow/python/training/tracking/base.py", line 456, in _method_wrapper result = method(self, *args, **kwargs) File "/usr/local/lib/python3.7/site-packages/tensorflow/python/keras/engine/sequential.py", line 116, in __init__ super(Sequential, self).__init__(name=name, autocast=False) File "/usr/local/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py", line 199, in __init__ self._init_batch_counters() File "/usr/local/lib/python3.7/site-packages/tensorflow/python/training/tracking/base.py", line 456, in _method_wrapper result = method(self, *args, **kwargs) File "/usr/local/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py", line 206, in _init_batch_counters self._train_counter = variables.Variable(0, dtype='int64', aggregation=agg) File "/usr/local/lib/python3.7/site-packages/tensorflow/python/ops/variables.py", line 261, in __call__ return cls._variable_v2_call(*args, **kwargs) File "/usr/local/lib/python3.7/site-packages/tensorflow/python/ops/variables.py", line 255, in _variable_v2_call shape=shape) File "/usr/local/lib/python3.7/site-packages/tensorflow/python/ops/variables.py", line 66, in getter return captured_getter(captured_previous, **kwargs) File "/usr/local/lib/python3.7/site-packages/tensorflow/python/distribute/distribute_lib.py", line 1769, in creator_with_resource_vars return self._create_variable(next_creator, **kwargs) File "/usr/local/lib/python3.7/site-packages/tensorflow/python/distribute/parameter_server_strategy.py", line 455, in _create_variable with ops.device(self._variable_device): File "/usr/local/lib/python3.7/site-packages/tensorflow/python/framework/ops.py", line 5183, in device "tf.device does not support functions when eager execution " RuntimeError: tf.device does not support functions when eager execution is enabled.
strategy = tf.distribute.experimental.ParameterServerStrategy()
run_config = tf.estimator.RunConfig(
    experimental_distribute.train_distribute=strategy)
estimator = tf.estimator.Estimator(config=run_config)
tf.estimator.train_and_evaluate(estimator,...)