Google Cloud ML Engine GPU 错误

Google Cloud ML Engine GPUs error

我已经使用 Google Cloud ML Engine 创建了几个训练 CNN 的作业, 每次作业都成功完成并出现 GPU 错误。打印的设备布局包括一些 GPU activity,但作业中没有使用 GPU details/utilization。

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

gcloud beta ml-engine 作业提交训练 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 error detail

更多信息:

当我 运行 我的代码在 Google Cloud ML Engine 上时,使用一个 Tesla K80 的平均训练速度是 8.2 example/sec,不使用 GPU 的平均速度是 5.7 example/sec,图像大小为 112x112。我在亚马逊 AWS 上使用一个 GRID K520 获得了相同的代码 130.4 example/sec。我认为使用 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 Summary name cross_entropy (raw) 是非法的;使用 cross_entropy__raw_ 代替。

I Summary name 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: 是 N N N

我 1: N Y N N

我 2: N N Y N

我 3: N N N Y

I Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla K80, pci bus id: 0000:00:04.0)

I Creating TensorFlow device (/gpu:1) -> (device: 1, name: Tesla K80, pci bus id: 0000:00:05.0)

I Creating TensorFlow device (/gpu:2) -> (device: 2, name: Tesla K80, pci bus id: 0000:00:06.0)

I Creating TensorFlow device (/gpu:3) -> (device: 3, name: Tesla K80, pci bus id: 0000:00:07.0)

I Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla K80, pci bus id: 0000:00:04.0)

I Creating TensorFlow device (/gpu:1) -> (device: 1, name: Tesla K80, pci bus id: 0000:00:05.0)

I Creating TensorFlow device (/gpu:2) -> (device: 2, name: Tesla K80, pci bus id: 0000:00:06.0)

I Creating TensorFlow device (/gpu:3) -> (device: 3, name: Tesla K80, pci bus id: 0000:00:07.0)

我 361

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

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

我的例子数 = 240

I bucket = crispdata, folder = cars_128/val

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

我的例子数 = 60

我{'flop':假,'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':错误,'standardize':错误,'num_epochs_per_decay':1,'zoom_out' : 0.0, 'val_data_size': 100, 'learning_rate': 0.1, 'grayscale': 0.0, 'train_data_size': 250, 'minimal_learning_rate': 1e-05, 'save_valid_scores' :假,'train_batch_size':50,'rotation':0.0,'val_epoch_size':2,'data':'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':假,'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', 'validation': 假, 'tower_name': 'tower'}

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

我的名字:"train"

我操作:"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)

I 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)

I 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)

I 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 有巨大的速度差异?

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

云计算控制台不会显示任何与云机器学习引擎相关的利用率指标。如果您查看作业的 Cloud Console UI,您将看到内存和 CPU 图表,但不会看到 GPU 图表。