首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在人工智能引擎上分发的训练速度减慢,因为评估没有分布。

在人工智能引擎上分发的训练速度减慢,因为评估没有分布。
EN

Stack Overflow用户
提问于 2019-11-21 08:44:01
回答 2查看 101关注 0票数 1

我们一直在人工智能引擎上训练一个由96000个数据点组成的数据集的神经网络。神经网络是以分布式方式训练的,按照惯例,我们使用20 %的数据集作为评价数据。为了对分布进行训练,我们使用了TensorFlow估计器和tf.estimator.train_and_evaluate方法。由于我们的数据集非常大,我们的评估集也相当大.查看主节点与工作节点之间的cpu使用情况,并使用只包含100个样本的评估数据集进行测试,似乎评估不是分布式的,只发生在主节点上。这使得ML单元的消耗量在拥有标准大小评估数据(占总数据的20%)和只有100个评估数据点之间增加了大约5倍,而培训数据的数量是相同的。

我们认为这一问题有两种可能的解决办法:

  1. 评估也是分布式的,但在人工智能平台上这在技术上是可行的吗?
  2. 寻找具有代表性的较小的评估数据集。是否有最佳实践方法来构建这个较小的数据集?

下面是我认为是代码的相关部分。函数input_fn返回已批处理的tf.data.Dataset。

代码语言:javascript
复制
run_config = tf.estimator.RunConfig(
        save_checkpoints_steps=1000, keep_checkpoint_max=10, tf_random_seed=random_seed
    )

    myestimator = _get_estimator(
        hidden_neurons, run_config, learning_rate, output_dir, my_rmse
    )

    # input_fn for tf.estimator Spec must be a callable function without args.
    # So we pack our input_fn in a lambda function
    callable_train_input_fn = lambda: input_fn(
        filenames=train_paths,
        num_epochs=num_epochs,
        batch_size=train_batch_size,
        num_parallel_reads=num_parallel_reads,
        random_seed=random_seed,
        input_format=input_format,
    )
    callable_eval_input_fn = lambda: input_fn(
        filenames=eval_paths,
        num_epochs=num_epochs,
        batch_size=eval_batch_size,
        shuffle=False,
        num_parallel_reads=num_parallel_reads,
        random_seed=random_seed,
        input_format=input_format,
    )

    train_spec = tf.estimator.TrainSpec(
        input_fn=callable_train_input_fn, max_steps=max_steps_train
    )

    eval_spec = tf.estimator.EvalSpec(
        input_fn=callable_eval_input_fn,
        steps=max_steps_eval,
        throttle_secs=throttle_secs,
        exporters=[exporter],
        name="taxifare-eval",
    )

    tf.estimator.train_and_evaluate(myestimator, train_spec, eval_spec)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-22 17:04:12

在看到评论和进一步调查之后,评估似乎并没有减缓过程,但评估发生了两次(一次在培训期间,每次在培训结束时)。因此,培训时间更长,因为一个人必须等待评估完成。谢谢你的评论

票数 0
EN

Stack Overflow用户

发布于 2019-11-21 08:56:45

TF并不适合分布式学习。看看mxnet。有不错的介绍这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58970609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档