彻底解决conda环境下 tensorflow gpu版本出现的问题:Not creating XLA devices, tf_xla_enable_xla_devices not set

问题说明

tf.test.is_gpu_available()结果为TRUE,但有Not creating XLA devices, tf_xla_enable_xla_devices not set报错

XLA

XLA的全称是Accelerated Linear Algebra,即加速线性代数。作为一种深度学习编译器,长期以来被作为Tensorflow框架的一个试验特性被开发,历时至今已经超过两三年了,随着Tensorflow 2.X的发布,XLA也终于从试验特性变成了默认打开的特性。此外, Pytorch社区也在大力推动XLA在Pytorch下的开发,现在已经有推出PyTorch/XLA TPU版本,暂只支持谷歌平台TPU上使用。

分析原因

可见XLA是一个GPU加速模块,如果你的tf.test.is_gpu_available()结果为TRUE,TensorFlow也可使用GPU进行训练,但没打开XLA进行加速。2.4.0版本XLA功能默认关闭,官方更新文档给出了解决方案
在这里插入图片描述
即需要在系统环境变量中添加,使其默认打开XLA加速。博客https://blog.csdn.net/FriendshipTang/article/details/114685263给出了一种在代码前进行添加的方法

import tensorflow as tf
import os
os.environ['TF_XLA_FLAGS'] = '--tf_xla_enable_xla_devices'
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
print(tf.__version__)
a = tf.constant(1.)
b = tf.constant(2.)
print(a+b)
print('GPU:', tf.test.is_gpu_available())

os.environ['TF_XLA_FLAGS'] = '--tf_xla_enable_xla_devices'
类似于宏定义,但每次写代码都需要重新申明,有没有修改虚拟环境的系统变量的方法呢

最终解决

可以使用conda env config vars set TF_XLA_FLAGS=--tf_xla_enable_xla_devices设置当前虚拟环境中的自定义环境变量。设置完毕后需重新启动虚拟环境才可生效,再次使用tf.test.is_gpu_available()便不会再出现Not creating XLA devices, tf_xla_enable_xla_devices not set`报错,且训练速度会大大加快,可以使用以下代码进行速度测试。

import tensorflow as tf
import timeit

with tf.device('/cpu:0'):
    cpu_a = tf.random.normal([10000, 1000])
    cpu_b = tf.random.normal([1000, 2000])
    print(cpu_a.device, cpu_b.device)

with tf.device('/gpu:0'):
    gpu_a = tf.random.normal([10000, 1000])
    gpu_b = tf.random.normal([1000, 2000])
    print(gpu_a.device, gpu_b.device)

def cpu_run():
    with tf.device('/cpu:0'):
        c = tf.matmul(cpu_a, cpu_b)
    return c

def gpu_run():
    with tf.device('/gpu:0'):
        c = tf.matmul(gpu_a, gpu_b)
    return c

# warm up	这里就当是先给gpu热热身了
cpu_time = timeit.timeit(cpu_run, number=10)
gpu_time = timeit.timeit(gpu_run, number=10)
print('warmup:', cpu_time, gpu_time)


cpu_time = timeit.timeit(cpu_run, number=10)
gpu_time = timeit.timeit(gpu_run, number=10)
print('run time:', cpu_time, gpu_time)

参考博客

https://github.com/tensorflow/tensorflow/issues/44683
https://blog.csdn.net/weixin_42642296/article/details/112565119
https://blog.csdn.net/robot8me/article/details/109471568
https://blog.csdn.net/FriendshipTang/article/details/114685263

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 这是一个Python编程相关的问题,提示出现了一个PackageNotInstalledError错误,意味着某个包没有被安装在指定的环境中,具体来说,这个错误信息显示的是在 G:\anconda\envs\tensorflow_env 环境下,packagename:conda 这个包没有被安装。您需要在命令行中使用conda install conda命令来安装conda包。 ### 回答2: PackageNotInstalledError: Package is not installed in prefix. prefix: G:\anconda\envs\tensorflow_env package name: conda。 这个错误提示表明在指定的环境tensorflow_env)中没有找到名为conda的包。这可能是由于以下几个原因导致的: 1. 环境路径错误:请确保环境路径(prefix)指向了正确的环境。验证一下G:\anconda\envs\tensorflow_env是否是你希望使用的环境路径。 2. 包未安装:确认一下是否已经在指定环境中安装了conda包。使用以下命令来验证:conda list,查看是否列出了conda包。如果没有列出,则说明未安装,请使用conda install conda命令来安装。 3. 虚拟环境问题:如果你正在使用虚拟环境管理器(如conda),请确保你已经激活了目标环境。使用以下命令来激活环境conda activate tensorflow_env。 如果以上步骤都进行了正确操作,但仍然无法解决问题,则可能是其他原因导致的错误。可以尝试将conda包重新安装或更新到最新版本,并确保你的环境配置正确和完整。如果问题仍然存在,建议尝试重新创建一个新的环境并重新安装所需的包。 ### 回答3: PackageNotInstalledError是一个常见的错误,在Anaconda环境中会经常遇到。这个错误表示在指定的路径(prefix)中未安装所需的包。具体来说,根据给出的错误信息,我们可以看到在路径G:\anconda\envs\tensorflow_env中没有安装名为conda的包。 要解决这个问题,我们可以采取以下步骤: 1. 确保你已经激活了正确的环境。在命令行中输入以下命令激活目标环境: ``` conda activate tensorflow_env ``` 2. 确保包名称正确。检查是否拼写错误或者大小写不正确。对于conda包管理器,包名称是区分大小写的。 3. 确保网络连接正常。有时候,安装包需要从远程服务器下载,如果网络连接不稳定,可能导致包无法安装。可以尝试使用其他网络或者检查网络连接是否正常。 4. 确认包索引是否正确。包索引是代表包的信息和下载链接的数据库。可以尝试更新或者更改包索引来解决问题。在命令行中输入以下命令: ``` conda config --set channel_priority strict conda update --all conda clean --all ``` 5. 如果上述步骤都没有解决问题,尝试卸载并重新安装包。在命令行中输入以下命令: ``` conda uninstall conda conda install conda ``` 以上是一些常见的解决方法,希望能帮助你解决PackageNotInstalledError错误。如果问题仍然存在,可能需要更详细的调查和排查来找到根本原因。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值