Google Cloud ML Engine GPU错误

时间:2017-04-10 12:57:05

标签: gpu google-cloud-ml-engine

我使用Google Cloud ML Engine创建了几个培训CNN的工作, 每次作业成功完成GPU错误。打印设备放置包括一些GPU活动,但在作业详细信息/使用中没有GPU使用。

这是我用来创建工作的命令:

gcloud beta ml-engine jobs提交培训fei_test34 --job-dir gs:// tfoutput / joboutput --package-path trainer --module-name = trainer.main --region europe-west1 --staging-bucket gs:// tfoutput --scale-tier BASIC_GPU - --data = gs:// crispdata / cars_128 --max_epochs = 1 --train_log_dir = gs:// tfoutput / joboutput --model = trainer.crisp_model_2x64_2xBN --validation =真-x

以下是设备放置日志: log device placement 。 GPU错误: GPU error detail

更多信息:

当我在Google Cloud ML Engine上运行代码时,使用一个Tesla K80进行训练的平均速度为8.2个/秒,不使用GPU的平均速度为5.7个/秒,图像大小为112x112。相同的代码我在亚马逊AWS上使用一个GRID K520获得130.4的示例/秒。我认为使用特斯拉K80应该会加快速度。另外,我收到了昨天发布的GPU错误。此外,在计算引擎配额中,我可以看到CPU的使用> 0%,但GPU的使用率仍为0%。我想知道GPU是否真的有效。

我不熟悉云计算,因此不确定我是否提供了足够的信息。请随时询问更多详细信息。

我刚尝试设置为complex_model_m_gpu,训练速度与一个GPU大致相同(因为我的代码用于一个GPU),但日志中有更多信息。这是日志的副本:

我在本地成功打开了CUDA库libcudnn.so.5

我在本地成功打开了CUDA库libcufft.so.8.0

我在本地成功打开了CUDA库libcuda.so.1

我在本地成功打开了CUDA库libcurand.so.8.0

我的摘要名称cross_entropy(raw)是非法的;使用cross_entropy__raw_代替。

我的摘要名称total_loss(raw)是非法的;使用total_loss__raw_代替。

W TensorFlow库未编译为使用AVX2指令,但这些指令可在您的计算机上使用,并可加快CPU计算速度。

W TensorFlow库未编译为使用FMA指令,但这些指令可在您的计算机上使用,并可加快CPU计算速度。

我成功从SysFS读取的NUMA节点具有负值(-1),但必须至少有一个NUMA节点,因此返回NUMA节点零

我找到了具有属性的设备0:

E名称:特斯拉K80

E major:3 minor:7 memoryClockRate(GHz)0.8235

E pciBusID 0000:00:04.0

E总内存:11.20GiB

E Free memory:11.13GiB

当一个当前处于活动状态时创建上下文;现有:0x39ec240

我成功从SysFS读取的NUMA节点具有负值(-1),但必须至少有一个NUMA节点,因此返回NUMA节点零

我找到了具有属性的设备1:

E名称:特斯拉K80

E major:3 minor:7 memoryClockRate(GHz)0.8235

E pciBusID 0000:00:05.0

E总内存:11.20GiB

E Free memory:11.13GiB

当一个当前处于活动状态时创建上下文;现有:0x39f00b0

我成功从SysFS读取的NUMA节点具有负值(-1),但必须至少有一个NUMA节点,因此返回NUMA节点零

我找到了具有属性的设备2:

E名称:特斯拉K80

E major:3 minor:7 memoryClockRate(GHz)0.8235

E pciBusID 0000:00:06.0

E总内存:11.20GiB

E Free memory:11.13GiB

当一个当前处于活动状态时创建上下文;现有:0x3a148b0

我成功从SysFS读取的NUMA节点具有负值(-1),但必须至少有一个NUMA节点,因此返回NUMA节点零

我找到了具有属性的设备3:

E名称:特斯拉K80

E major:3 minor:7 memoryClockRate(GHz)0.8235

E pciBusID 0000:00:07.0

E总内存:11.20GiB

E Free memory:11.13GiB

设备序号0和1

之间不支持I Peer访问

设备序号0和2之间不支持I Peer访问

设备序号0和3之间不支持I Peer访问

设备序号1和0

之间不支持I Peer访问

设备序号1和2之间不支持I Peer访问

设备序号1和3之间不支持I Peer访问

设备序号2和0

之间不支持I Peer访问

设备序号2和1之间不支持I Peer访问

设备序号2和3之间不支持I Peer访问

设备序号3和0

之间不支持I Peer访问

设备序号3和1之间不支持I Peer访问

设备序号3和2之间不支持I Peer访问

我DMA:0 1 2 3

I 0:Y N N N

I 1:N Y N N

I 2:N N Y N

I 3:N N N Y

我创建TensorFlow设备(/ gpu:0) - > (设备:0,名称:特斯拉K80,pci总线ID:0000:00:04.0)

我创建TensorFlow设备(/ gpu:1) - > (设备:1,名称:特斯拉K80,pci总线ID:0000:00:05.0)

我创建TensorFlow设备(/ gpu:2) - > (设备:2,名称:特斯拉K80,pci总线ID:0000:00:06.0)

我创建TensorFlow设备(/ gpu:3) - > (设备:3,名称:特斯拉K80,pci总线ID:0000:00:07.0)

我创建TensorFlow设备(/ gpu:0) - > (设备:0,名称:特斯拉K80,pci总线ID:0000:00:04.0)

我创建TensorFlow设备(/ gpu:1) - > (设备:1,名称:特斯拉K80,pci总线ID:0000:00:05.0)

我创建TensorFlow设备(/ gpu:2) - > (设备:2,名称:特斯拉K80,pci总线ID:0000:00:06.0)

我创建TensorFlow设备(/ gpu:3) - > (设备:3,名称:特斯拉K80,pci总线ID:0000:00:07.0)

I 361

我的桶= crispdata,文件夹= cars_128 / train

I path = gs:// crispdata / cars_128 / train

我的例子= 240

我的桶= crispdata,文件夹= cars_128 / val

I path = gs:// crispdata / cars_128 / val

我的例子= 60

我{'翻牌':False,' learning_rate_decay_factor':0.005,' train_log_dir':' gs:// tfoutput / joboutput / 20170411_144221&# 39;,' valid_score_path':' /home/ubuntu/tensorflow/cifar10/validation_score.csv' ;,' saturate_epoch':200,' test_score_path&#39 ;:'',' max_tries':75,' max_epochs':10,' id':' 20170411_144221' ,' test_data_size':0,' memory_usage':0.3,' load_size':128,' test_batch_size':10,' max_out_norm& #39;:1.0,' email_notify':False,' skip_training':False,' log_device_placement':False,' learning_rate_decay_schedule':' 39;',' cpu_only':错误,'标准化':错误,' num_epochs_per_decay':1,' zoom_out':0.0 ,' val_data_size':100,' learning_rate':0.1,'灰度':0.0,' train_data_size':250,' minimal_learning_rate& #39;:1e-05,' save_valid_scores ':错误,' train_batch_size':50,'轮换':0.0,' val_epoch_size':2,'数据':& #39; gs:// crispdata / cars_128',' val_batch_size':50,' num_classes':2,' learning_rate_decay':' linear& #39;,' random_seed':5,' num_threads':1,' num_gpus':1,' test_dir':' ',' shuffle_traindata':False,' pca_jitter':0.0,' moving_average_decay':1.0,' sample_size':128,& #39; job-dir':' gs:// tfoutput / joboutput',' learning_algorithm':' sgd',' train_epoch_size&#39 ;:5,' model':' trainer.crisp_model_2x64_2xBN','验证':False,' tower_name':' tower&# 39;}

在开始训练之前,我用100个CIFAR图像填充队列。这将需要几分钟。

我说:"火车"

我认为:" NoOp"

我输入:" ^ GradientDescent"

我输入:" ^ ExponentialMovingAverage"

I 128 128

我2017-04-11 14:42:44.766116:纪元0,损失= 0.71,lr = 0.100000(5.3例/秒; 9.429秒/批)

我2017-04-11 14:43:19.077377:纪元1,损失= 0.53,lr = 0.099500(8.1例/秒; 6.162秒/批)

我2017-04-11 14:43:51.994015:纪元2,损失= 0.40,lr = 0.099000(7.7例/秒; 6.479秒/批)

我2017-04-11 14:44:22.731741:纪元3,损失= 0.39,lr = 0.098500(8.2例/秒; 6.063秒/批)

我2017-04-11 14:44:52.476539:纪元4,损失= 0.24,lr = 0.098000(8.4例/秒; 5.935秒/批)

我2017-04-11 14:45:23.626918:纪元5,损失= 0.29,lr = 0.097500(8.1例/秒; 6.190秒/批)

我2017-04-11 14:45:54.489606:纪元6,损失= 0.56,lr = 0.097000(8.6例/秒; 5.802秒/批)

我2017-04-11 14:46:27.022781:纪元7,损失= 0.12,lr = 0.096500(6.4例/秒; 7.838秒/批)

我2017-04-11 14:46:57.335240:纪元8,损失= 0.25,lr = 0.096000(8.7例/秒; 5.730秒/批)

我2017-04-11 14:47:30.425189:纪元9,损失= 0.11,lr = 0.095500(7.8例/秒; 6.398秒/批)

这是否意味着GPU正在使用中?如果是,那么在执行相同的代码时,为什么与Grid K520存在巨大的速度差异有任何想法?

1 个答案:

答案 0 :(得分:0)

因此,日志消息表明GPU可用。要检查GPU是否实际使用,您可以打开logging of device placement以查看哪些OP分配给GPU。

Cloud Compute控制台无法显示与Cloud ML Engine相关的任何利用率指标。如果您查看作业的Cloud Console UI,您将看到内存和CPU图形,但不会看到GPU图形。