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 图表。
我已经使用 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 图表。