0

我已经创建了几个使用 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=True - X

这是设备放置日志: log device placement 。GPU 错误: GPU 错误详情

更多信息:

当我在 Google Cloud ML Engine 上运行代码时,使用 Tesla K80 进行训练的平均速度为 8.2 示例/秒,不使用 GPU 的平均速度为 5.7 示例/秒,图像大小为 112x112。我在 Amazon AWS 上使用一个 GRID K520 获得了 130.4 示例/秒的相同代码。我认为使用 Tesla K80 应该会获得更快的速度。另外,我收到了昨天发布的 GPU 错误。此外,在 Compute Engine Quotas 中,我可以看到 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

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

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

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

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

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

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

E名称:特斯拉K80

E 大调:3 小调:7 memoryClockRate (GHz) 0.8235

E pciBusID 0000:00:04.0

E 总内存:11.20GiB

E 可用内存:11.13GiB

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

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

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

E名称:特斯拉K80

E 大调:3 小调:7 memoryClockRate (GHz) 0.8235

E pciBusID 0000:00:05.0

E 总内存:11.20GiB

E 可用内存:11.13GiB

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

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

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

E名称:特斯拉K80

E 大调:3 小调:7 memoryClockRate (GHz) 0.8235

E pciBusID 0000:00:06.0

E 总内存:11.20GiB

E 可用内存:11.13GiB

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

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

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

E名称:特斯拉K80

E 大调:3 小调:7 memoryClockRate (GHz) 0.8235

E pciBusID 0000:00:07.0

E 总内存:11.20GiB

E 可用内存:11.13GiB

I 设备序号 0 和 1 之间不支持对等访问

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

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

I 设备序号 1 和 0 之间不支持对等访问

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

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

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

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

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

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

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

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

我DMA:0 1 2 3

我 0: YNN

我 1: 尼恩

我 2: NNYN

我 3: 尼尼

I 创建 TensorFlow 设备 (/gpu:0) -> (设备: 0, 名称: Tesla K80, pci bus id: 0000:00:04.0)

I 创建 TensorFlow 设备 (/gpu:1) -> (设备: 1, 名称: Tesla K80, pci bus id: 0000:00:05.0)

I 创建 TensorFlow 设备 (/gpu:2) -> (设备: 2, 名称: Tesla K80, pci bus id: 0000:00:06.0)

I 创建 TensorFlow 设备 (/gpu:3) -> (设备: 3, 名称: Tesla K80, pci bus id: 0000:00:07.0)

I 创建 TensorFlow 设备 (/gpu:0) -> (设备: 0, 名称: Tesla K80, pci bus id: 0000:00:04.0)

I 创建 TensorFlow 设备 (/gpu:1) -> (设备: 1, 名称: Tesla K80, pci bus id: 0000:00:05.0)

I 创建 TensorFlow 设备 (/gpu:2) -> (设备: 2, 名称: Tesla K80, pci bus id: 0000:00:06.0)

I 创建 TensorFlow 设备 (/gpu:3) -> (设备: 3, 名称: Tesla K80, pci bus id: 0000:00:07.0)

我361

我桶=crisdata,文件夹=cars_128/train

我的路径 = gs://crispdata/cars_128/train

I Num 示例 = 240

我桶=crisdata,文件夹=cars_128/val

我的路径 = gs://crispdata/cars_128/val

I Num 示例 = 60

我 {'flop': False, 'learning_rate_decay_factor': 0.005, 'train_log_dir': 'gs://tfoutput/joboutput/20170411_144221', 'valid_score_path': '/home/ubuntu/tensorflow/cifar10/validation_score.csv', ' saturate_epoch':200,'test_score_path':'','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':1.0,'email_notify':假,'skip_training':假,'log_device_placement':假,'learning_rate_decay_schedule':'','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':1e-05,'save_valid_scores':False,'train_batch_size':50,'rotation':0.0,'val_epoch_size':2,'数据':'gs://crispdata/cars_128','val_batch_size':50,'num_classes':2,'learning_rate_decay':'linear','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, 'job-dir': 'gs://tfoutput/joboutput', 'learning_algorithm ':'sgd','train_epoch_size':5,'model':'trainer.crisp_model_2x64_2xBN','验证':False,'塔名':'塔'}

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

我的名字:“火车”

我操作:“NoOp”

我输入:“^GradientDescent”

我输入:“^ExponentialMovingAverage”

我 128 128

I 2017-04-11 14:42:44.766116: epoch 0, loss = 0.71, lr = 0.100000 (5.3 examples/sec; 9.429 sec/batch)

I 2017-04-11 14:43:19.077377: epoch 1, loss = 0.53, lr = 0.099500 (8.1 examples/sec; 6.162 sec/batch)

我 2017-04-11 14:43:51.994015: epoch 2, loss = 0.40, lr = 0.099000 (7.7 examples/sec; 6.479 sec/batch)

I 2017-04-11 14:44:22.731741: epoch 3, loss = 0.39, lr = 0.098500 (8.2 examples/sec; 6.063 sec/batch)

我 2017-04-11 14:44:52.476539: epoch 4, loss = 0.24, lr = 0.098000 (8.4 examples/sec; 5.935 sec/batch)

I 2017-04-11 14:45:23.626918: epoch 5, loss = 0.29, lr = 0.097500 (8.1 examples/sec; 6.190 sec/batch)

I 2017-04-11 14:45:54.489606: epoch 6, loss = 0.56, lr = 0.097000 (8.6 examples/sec; 5.802 sec/batch)

I 2017-04-11 14:46:27.022781: epoch 7, loss = 0.12, lr = 0.096500 (6.4 examples/sec; 7.838 sec/batch)

我 2017-04-11 14:46:57.335240: epoch 8, loss = 0.25, lr = 0.096000 (8.7 examples/sec; 5.730 sec/batch)

I 2017-04-11 14:47:30.425189: epoch 9, loss = 0.11, lr = 0.095500 (7.8 examples/sec; 6.398 sec/batch)

这是否意味着 GPU 正在使用中?如果是,您知道为什么在执行相同代码时与 Grid K520 存在巨大的速度差异吗?

4

1 回答 1

0

因此,日志消息表明 GPU 可用。要检查 GPU 是否实际被使用,您可以打开设备放置日志以查看哪些 OP 分配给了 GPU。

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

于 2017-04-17T13:03:32.870 回答