TensorFlow 2.0: InvalidArgumentError: device CUDA:0 not supported by XLA service while setup XLA_GPU

Posted

技术标签:

【中文标题】TensorFlow 2.0: InvalidArgumentError: device CUDA:0 not supported by XLA service while setup XLA_GPU_JIT device number 0【英文标题】:TensorFlow 2.0: InvalidArgumentError: device CUDA:0 not supported by XLA service while setting up XLA_GPU_JIT device number 0 【发布时间】:2020-06-01 02:09:17 【问题描述】:

我正在使用 TensorFlow 2.0 和 Python 3.7 进行 CIFAR-10 分类。

训练和测试集的维度是:

X_train.shape = (50000, 32, 32, 3), y_train.shape = (50000, 10)

X_test.shape = (10000, 32, 32, 3), y_test.shape = (10000, 10)

但是,当我执行以下代码时:

# Create training and testing datasets-
train_dataset = tf.data.Dataset.from_tensor_slices((X_train, y_train))
test_dataset = tf.data.Dataset.from_tensor_slices((X_test, y_test))

它给了我错误:

----------------------------------- ---------------------------- InvalidArgumentError Traceback(最近调用 最后)在 1 # 创建训练和测试数据集- ----> 2 train_dataset = tf.data.Dataset.from_tensor_slices((X_train, y_train)) 3 test_dataset = tf.data.Dataset.from_tensor_slices((X_test, y_test))

~/.local/lib/python3.7/site-packages/tensorflow_core/python/data/ops/dataset_ops.py 在 from_tensor_slices(张量) 433 数据集:ADataset。 第434章 --> 435 返回张量切片数据集(张量) 436 437 类_GeneratorState(对象):

~/.local/lib/python3.7/site-packages/tensorflow_core/python/data/ops/dataset_ops.py in init(self, element) 2352 def init(self, element): 2353 """详见Dataset.from_tensor_slices()。""" -> 2354 元素 = structure.normalize_element(element) 2355 batched_spec = structure.type_spec_from_value(element) 2356 self._tensors = structure.to_batched_tensor_list(batched_spec, 元素)

~/.local/lib/python3.7/site-packages/tensorflow_core/python/data/util/structure.py 在 normalize_element(element) 109 其他: 110 规范化_components.append( --> 111 ops.convert_to_tensor(t, name="component_%d" % i)) 第112章 113

~/.local/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py 在 convert_to_tensor(值,dtype,名称,preferred_dtype,dtype_hint) 第1182章 第1183章 首选dtype) -> 1184 返回 convert_to_tensor_v2(值,dtype,preferred_dtype,名称)1185 1186

~/.local/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py 在 convert_to_tensor_v2(值,dtype,dtype_hint,名称)1240 名称=名称,1241 首选_dtype=dtype_hint, -> 1242 as_ref=False) 1243 1244

~/.local/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py 在 internal_convert_to_tensor(value, dtype, name, as_ref, 首选dtype,ctx,accept_composite_tensors)1294 1295 如果 ret 为无: -> 1296 ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref) 1297 1298 如果 ret 未实现:

~/.local/lib/python3.7/site-packages/tensorflow_core/python/framework/tensor_conversion_registry.py 在 _default_conversion_function(解析参数失败) 50 def _default_conversion_function(值,dtype,名称,as_ref): 51 del as_ref # 未使用。 ---> 52 return constant_op.constant(value, dtype, name=name) 53 54

~/.local/lib/python3.7/site-packages/tensorflow_core/python/framework/constant_op.py 在常量(值,dtype,形状,名称) 第225章 第226章 --> 227 允许广播=真) 228 229

~/.local/lib/python3.7/site-packages/tensorflow_core/python/framework/constant_op.py 在_constant_impl(值,dtype,形状,名称,verify_shape, 允许广播) 第233章 234 如果 ctx.executing_eagerly(): --> 235 t = convert_to_eager_tensor(value, ctx, dtype) 236 如果形状为无: 第237章

~/.local/lib/python3.7/site-packages/tensorflow_core/python/framework/constant_op.py 在 convert_to_eager_tensor(value, ctx, dtype) 93 除了属性错误: 94 dtype = dtypes.as_dtype(dtype).as_datatype_enum ---> 95 ctx.ensure_initialized() 96 返回 ops.EagerTensor(值,ctx.device_name,dtype) 97

~/.local/lib/python3.7/site-packages/tensorflow_core/python/eager/context.py 在 ensure_initialized(self) 490 如果 self._default_is_async == 异步: 第491章 --> 492 self._context_handle = pywrap_tensorflow.TFE_NewContext(opts) 最后493: 第494章

InvalidArgumentError:XLA 服务不支持设备 CUDA:0 同时设置 XLA_GPU_JIT 设备号 0

我还尝试了以下代码来修复错误:

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "1" 

当我执行以下代码时:

gpus = tf.config.experimental.list_physical_devices('GPU')

gpus
[]

我该如何解决这个问题?

谢谢

【问题讨论】:

【参考方案1】:

我也遇到了同样的问题。原因可能是您的进度选择的 GPU 设备没有足够的 GPU 内存来运行您的进度。

我的解决办法是:

    CUDA_VISIBLE_DEVICES=* 添加到您的训练/测试脚本(.sh 文件)。示例:CUDA_VISIBLE_DEVICES=0 python3 train_cifar.py 在您的培训.py 文件中添加这一行:os.environ['CUDA_VISIBLE_DEVICES'] = '0'

提示:step-1 和 step-2 中的 GPU id 必须匹配。

(当我第一次遇到这个错误时,我的代码中也有os.environ['CUDA_VISIBLE_DEVICES']='0',但过程似乎仍然选择设备cuda:1进行训练,有线......但是采用step-1解决了我的问题,我希望它也可以解决你的问题。)

【讨论】:

以上是关于TensorFlow 2.0: InvalidArgumentError: device CUDA:0 not supported by XLA service while setup XLA_GPU的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow 2.0

Anaconda 安装 TensorFlow 1.15 而不是 2.0

『王霸之路』从0.1到2.0一文看尽TensorFlow奋斗史

谷歌官方解读 TensorFlow 2.0 所有新特性

翻译: Keras 标准化:TensorFlow 2.0 中高级 API 指南

解读:TensorFlow 2.0中即将到来的所有新特性