使用 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)
     ...

为了获得可重现的结果,是否还需要做其他事情?

如果您使用参数服务器策略进行分布式训练,您将无法获得可重复性。 如果可重复性对您很重要,请使用镜像策略(或多线程镜像策略)。按照设计,参数服务器无法获得可重复性——参数服务器之所以更快,正是因为它通过不等待散乱的工作人员来避免尾部延迟。