python - 使用自定义估算器 api 包装的 tensorflow 代码是否在 google cloud-ml 引擎或本地机器中有效地使用 gpu?
问题描述
我正在 google cloud ml-engine 中训练神经网络。我使用 tensorflow 高级 API 构建网络,例如tf.layers
,、tf.losses
tf.dataset
. 该代码还使用自定义估算器 api 进行了包装。作业运行了很长时间。网络太大了,它应该使用大量的 gpu,但是在它显示的 ml-engine 的作业详细信息页面中,它没有使用主 cpu 以及 gpu。尽管主 cpu 和 gpu 中的一些内存正在被使用。我使用了“complex_model_s”作为主 CPU,“标准 GPU”作为工作者,以及“标准”类型的参数服务器。自从它开始训练以来,它也没有输出任何更新的日志或检查点。为什么 ml-engine 不使用 gpu 并且不输出任何新的日志和检查点文件?如果我使用带有 NVIDIA gpu 的本地机器进行训练,它会使用 gpu 吗?或者代码中需要任何更改?
解决方案
estimator 的 train_and_evaluate 目前支持的分布策略最适合稀疏模型。听起来你有一个非常深的模型。
因此,为了最大限度地提高训练速度,请尝试使用单台机器(即没有工人)。为了最大限度地降低成本,请使用适合您网络规模的最小机器。
如果您愿意尝试,请尝试使用具有多个设备的工作人员并添加镜像分发策略(尽管它仍然是非常早期的原型)
https://www.tensorflow.org/versions/master/api_docs/python/tf/contrib/distribute
如果您的用例支持,为了获得最大速度和最低成本,最好的选择是使用 TPU。
推荐阅读
- php - 为什么子类不能继承动态设置的属性类?
- jquery - Mongo - 仅通过 _id (findById) 查找是否比使用 _id 和索引字段查找以利用索引更快?
- asp.net-mvc - 在区域管理员视图 ASP.NET MVC 中获取内容文件夹图像
- java - Spring AOP 关闭 Spring Security Annotations
- instagram - 通过脚本在 Spark AR 上补间颜色
- python - 如何获得 BeautifulSoup 对象的唯一 css 选择器?
- ios - xcodebuild:错误:无法在 CI 上构建工作区
- .net - nginx 入口控制器日志 499
- php - Cloudinary上传php失败,如何解决?
- trimble-maps - Trimble MAPS API 缩放正在影响整个网页