使用 tensorflow 的 DNN 估计器无法在 GCP 的 AI 平台上获得可重现的结果
Can't get reproducible results on GCP's AI-platform using tensorflow's DNN estimator
问题
我无法使用 TensorFlow 1.14 在 GCP 的 AI 平台上获得可重现的结果。这使得超参数调整变得困难,因为我不确定性能的变化是由于超参数本身还是由于随机性。
该模型是一个开箱即用的简单 DNN 估计器。
我试过的
- 在 运行 配置中设置随机种子
- 设置全局图形种子
在我的 task.py
文件中,我有以下内容:
tf.set_random_seed(42)
...
run_config = tf.estimator.RunConfig(tf_random_seed=42)
estimator = tf.estimator.DNNClassifier(
feature_columns=feature_columns,
n_classes=len(target_list),
optimizer=tf.compat.v1.train.AdamOptimizer(learning_rate=args.learning_rate),
batch_norm=True,
model_dir=model_dir,
config=run_config)
...
为了获得可重现的结果,是否还需要做其他事情?
如果您使用参数服务器策略进行分布式训练,您将无法获得可重复性。
如果可重复性对您很重要,请使用镜像策略(或多线程镜像策略)。按照设计,参数服务器无法获得可重复性——参数服务器之所以更快,正是因为它通过不等待散乱的工作人员来避免尾部延迟。
问题
我无法使用 TensorFlow 1.14 在 GCP 的 AI 平台上获得可重现的结果。这使得超参数调整变得困难,因为我不确定性能的变化是由于超参数本身还是由于随机性。
该模型是一个开箱即用的简单 DNN 估计器。
我试过的
- 在 运行 配置中设置随机种子
- 设置全局图形种子
在我的 task.py
文件中,我有以下内容:
tf.set_random_seed(42)
...
run_config = tf.estimator.RunConfig(tf_random_seed=42)
estimator = tf.estimator.DNNClassifier(
feature_columns=feature_columns,
n_classes=len(target_list),
optimizer=tf.compat.v1.train.AdamOptimizer(learning_rate=args.learning_rate),
batch_norm=True,
model_dir=model_dir,
config=run_config)
...
为了获得可重现的结果,是否还需要做其他事情?
如果您使用参数服务器策略进行分布式训练,您将无法获得可重复性。 如果可重复性对您很重要,请使用镜像策略(或多线程镜像策略)。按照设计,参数服务器无法获得可重复性——参数服务器之所以更快,正是因为它通过不等待散乱的工作人员来避免尾部延迟。