tensorflow - 云计算虚拟机与 AI 平台的性能差异
问题描述
我有一个 GCP 云计算 VM,它是一个n1-standard-16
4 个 P100 GPU,以及一个用于存储数据的固态驱动器。我将其称为“VM”。
我之前使用虚拟机来训练基于 tensorflow 的 CNN。我想从这个转向使用 AI Platform,这样我就可以同时运行多个作业。但是我遇到了一些问题。
问题
当在 VM 上运行训练时,我可以将批量大小设置为 400,完成一个 epoch 的标准时间约为 25 分钟。
当训练在一个complex_model_m_p100
我认为相当于 VM 的 AI 平台机器上运行时,我可以设置最大批量大小为 128,完成一个 epoch 的标准时间是 1 小时 40 分钟。
差异:VM 与 AI 平台
VM 使用 TF1.12,AI Platform 使用 TF1.15。因此,GPU 驱动程序存在差异(CUDA 9 与 CUDA 10)。
VM配备了固态驱动器,我认为AI平台机器不是这种情况。
我想了解减少批量大小的原因,并将 AI Platform 上的 epoch 时间减少到与 Glamdring 相当的水平。有没有其他人遇到过这个问题?我是否在正确类型的 AI Platform 机器上运行?任何的建议都受欢迎!
解决方案
可能是一堆东西。有两种方法可以让 VM 看起来更像 AI Platform:
export IMAGE_FAMILY="tf-latest-gpu" # 1.15 instead of 1.12
export ZONE=...
export INSTANCE_NAME=...
gcloud compute instances create $INSTANCE_NAME \
--zone=$ZONE \
--image-family=$IMAGE_FAMILY \
--image-project=deeplearning-platform-release \
--maintenance-policy=TERMINATE \
--metadata="install-nvidia-driver=True"
n 然后连接 4 个 GPU。
...或使 AI Platform 看起来更像 VM: https ://cloud.google.com/ai-platform/training/docs/machine-types#gpus-and-tpus ,因为您现在使用的是旧版机器.
推荐阅读
- rust - 如何避免在不同的匹配臂中借用 Vec 两次作为可变参数?
- excel - 添加另一个 For 循环,以便在保存文件之前添加另一个工作表数据
- c# - Automapper 子属性映射
- scala - 使用 Spray Json 解析超过 22 个字段,无需嵌套案例类
- javascript - 另一个 Google Firebase 错误“函数返回未定义、预期的承诺或值”
- python - 如何在python的文本文件中以垂直顺序一个接一个地打印列表
- php - 在PHP中删除foreach中逗号的最后一部分?
- java - Do/While 循环卡住
- amazon-web-services - IAM - AWS 中角色身份的用途
- python - 将字符串转换为位数组