当前位置: 首页 > 知识库问答 >
问题:

设置Tensorflow 2.4在Ubuntu 20.04与GPU没有sudo

申高卓
2023-03-14

我可以使用Ubuntu 20.04设置和GPU访问虚拟机。系统管理员已经安装了最新的Cuda驱动程序,但不幸的是,这还不足以在Tensorflow中使用图形处理器,因为当涉及到特定的Cuda工具包CuDNN版本集时,每个版本的TF都可能非常挑剔。我没有sudo权限,所以我需要在本地安装所有东西。

nvidia-smi

返回驱动版本:465.19.01 CUDA版本:11.3

python -c "import tensorflow as tf, logging; logging.basicConfig(level=logging.INFO, format='%(asctime)s %(message)s'); tf.config.list_physical_devices('GPU');"

返回

2021-05-11 10:56:26.737279:W tensorflow/stream_executor/platform/default/dso_loader.cc:60]无法加载动态库“libcudart.so.11.0”;DLCuff:LIcCUART.SO 11:不能打开共享对象文件:没有这样的文件或目录BR20201-05-11:56:26.737338:I TunSoFals/SurrasRealthuto/CUDA/CUARTARTHOSTBI. CC:29)如果您的机器上没有GPU,请忽略上面的CUART DLRebug。< BR> 2021-05-11:56:5:28.313896:我TysFrace/Cyp/JIT/XLAYCPUIOND设备。CCC:41)不创建XLA。设备,tf_xla_enable_xla_设备未设置
2021-05-11 10:56:28.315540:I tensorflow/stream_executor/platform/default/dso_loader.cc:49]已成功打开动态库libcuda.so.1
2021-05-11 10:56:28.324232:I tensorflow/stream_executor/cuda/cuda_gpu executor.cc:941]从系统读取的NUMA节点的值为负值(-1),但必须至少有一个NUMA节点,因此,返回NUMA节点0时,发现设备0具有以下属性:
pciBusID:0000:00:05.0名称:NVIDIA Tesla P100-PCIE-12GB计算能力:6.0核心时钟:1.3285GHz核心计数:56设备内存大小:11.91GiB设备内存带宽:511.41GiB/s
2021-05-1110:56:28.324867:I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:941]从SysFS读取的成功NUMA节点的值为负值(-1),但必须至少有一个NUMA节点,因此,返回NUMA节点0时,发现设备1的属性为:
pciBusID:0000:00:06.0名称:NVIDIA Tesla P100-PCIE-12GB计算能力:6.0
核心时钟:1.3285GHz核心计数:56设备内存大小:11.91GiB设备内存带宽:511.41GiB/s
2021-05-1110:56:28.325438:W tensorflow/stream_executor/platform/default/dso_loader.cc:60]无法加载动态库“libcudart.so.11.0”;dError:libcudart.so.11.0:无法打开共享对象文件:没有此类文件或目录
2021-05-11 10:56:28.325563:W tensorflow/stream_executor/platform/default/dso_loader.cc:60]无法加载动态库“libcublas.so.11”;dError:libcublas.so.11:无法打开共享对象文件:没有这样的文件或目录
2021-05-11 10:56:28.325706:W tensorflow/stream_executor/platform/default/dso_loader.cc:60]无法加载动态库“libcublasLt.so.11”;Dleror:libcublasLt.so.11:无法打开共享对象文件:没有此类文件或目录
2021-05-11 10:56:28.325820:W tensorflow/stream_executor/platform/default/dso_loader.cc:60]无法加载动态库“libcuft.so.10”;Dleror:libcuft.so.10:无法打开共享对象文件:没有此类文件或目录
2021-05-11 10:56:28.325931:W tensorflow/stream_executor/platform/default/dso_loader.cc:60]无法加载动态库“libcurand.so.10”;Dleror:libcurand.so.10:无法打开共享对象文件:没有这样的文件或目录
2021-05-11 10:56:28.326028:W tensorflow/stream_executor/platform/default/dso_loader.cc:60]无法加载动态库“libcusolver.so.10”;dlerror:libcusolver.so.10:无法打开共享对象文件:没有此类文件或目录
2021-05-11 10:56:28.326117:W tensorflow/stream_executor/platform/default/dso_loader.cc:60]无法加载动态库“libcusparse.so.11”;Dleror:libcusparse.so.11:无法打开共享对象文件:没有此类文件或目录
2021-05-11 10:56:28.326215:W tensorflow/stream_executor/platform/default/dso_loader.cc:60]无法加载动态库“libcudn.so.8”;dError:libcudnn.so.8:无法打开共享对象文件:没有此类文件或目录
2021-05-11 10:56:28.326230:W tensorflow/core/common_runtime/gpu/gpu_device.cc:1757]无法打开某些gpu库。如果您想使用GPU,请确保正确安装了上述缺失的库。请按照以下指南操作:https://www.tensorflow.org/install/gpu 了解如何下载和设置平台所需的库。
跳过注册GPU设备。。。

这表明GPU不会在TF应用程序中使用。

我必须花一些时间设置虚拟机,所以我将在下面一步一步地发布我的解决方案。

共有1个答案

曹兴贤
2023-03-14

在没有管理员权限的Ubuntu 20.04环境上设置Tensorflow 2.4. x(测试2.4.1)的说明。假设系统管理员已经安装了最新的Cuda驱动程序。它包括安装Cuda 11.0工具包CuDNN 8.2.0。

下面的说明将在目录/home/pherath/CUDA_toolkits/CUDA-11.0下安装CUDA 11.0(测试可用于Tensorflow 2.4.1),无需sudo权限。

第一步。下载CUDA 11.0

wget http://developer.download.nvidia.com/compute/cuda/11.0.2/local_installers/cuda_11.0.2_450.51.05_linux.run
chmod +x cuda_11.0.2_450.51.05_linux.run

第2步,选项1:对于快速自动化的表单,请使用以下内容

./cuda_11.0.2_450.51.05_linux.run --silent --tmpdir=. --toolkit --toolkitpath=/home/pherath/cuda_toolkits/cuda-11.0

第2步,选项2:这是一个可视化的分步指南

./cuda_11.0.2_450.51.05_linux.run

继续,然后接受EULA。

只勾选Cuda工具包,取消勾选其他所有工具。然后转到选项。

进入工具包选项。

取消选中所有选项,然后转到更改工具包安装路径并将其替换为/home/pherath/cuda_toolkits/cuda-11.0。完成此步骤后,继续安装。

第三步。下载CUDA 11.0补丁

wget https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda_11.0.3_450.51.06_linux.run
chmod +x cuda_11.0.3_450.51.06_linux.run

第四步。选项1:快速静音模式

./cuda_11.0.3_450.51.06_linux.run --silent --tmpdir=. --toolkit --toolkitpath=/home/pherath/cuda_toolkits/cuda-11.0

第四步。选项2:图形用户界面模式重复步骤2的确切步骤,选项2。

安装可能会出现错误。检查日志时,我看到的错误表明安装脚本中可能存在错误。唯一令人不快的术语是一个文件的符号链接。

[错误]:boost::filesystem::create_符号链接:文件存在:“libcuinj64.so.11.0”,“/home/pherath/cuda_工具包/cuda-11.0/targets/x86_64-linux/lib/libcuinj64.so”

我在各种分发尝试中(例如在Ubuntu 16.04上)遇到了其他几个单一错误:
libcuinj64.so.11.0、libaccinj64.so.11.0、libnvrtc builtins.so.11.0

此错误可通过以下两行修复

cd /home/pherath/cuda_toolkits/cuda-11.0/targets/x86_64-linux/lib # move to the dir of the offending line
ln -s libaccinj64.so.11.0 libaccinj64.so #reorder such that symbolic link and target are in correct order (we need libaccinj64.so -> libaccinj64.so.11.0)

第五步。下载CuDNN 8.2.0

cd /home/pherath/cuda_toolkits # move back to the parent of previous dir

你需要从CuDNN档案下载CuDNN. tgz文件,我用的是v8.2.0。此步骤将要求您在CuDNN创建帐户并通过Web界面下载。如果你没有在机器上的图形用户界面,你正在设置tenorflow,我建议使用链接重定向跟踪插件来跟踪文件下载的确切链接(这里是一个谷歌铬插件链接)。您可以使用带有GUI的本地计算机跟踪链接,然后使用wget在VM上下载跟踪的链接。请注意,此跟踪链接的生存期相对较短。

下载后名称仍会加密,重命名回. tgz by

mv $some_ambiguous_name cudnn-11.3-linux-x64-v8.2.0.53.tgz

现在我们在cuda安装目录的父目录下解压

tar -xvzf cudnn-11.3-linux-x64-v8.2.0.53.tgz # this will extract things under a dir called 'cuda'

现在我们需要复制所有lib64并包含到cuda工具包安装下的相应dirs中

cp -fv cuda/lib64/*.* cuda-11.0/lib64/.
cp -fv cuda/include/*.* cuda-11.0/include/.

第六步。创建/附加/前置路径和LD_LIBRARY_路径环境变量

在~/.bashrc的末尾添加以下行(否则,请确保为要从中运行TF脚本的每个bash扩展相应的环境变量)。

导出CUDA11=/home/pherath/cuda_工具包/cuda-11.0
导出路径=$CUDA11/bin:$PATH
导出LD_库路径=$CUDA11/lib64:$CUDA11/extras/CUPTI/lib64:$LD_库路径

启动新终端或

source ~/.bashrc 

在每个现有航站楼。

检查安装是否正常

您可以运行以下行来测试TF 2.4.1分析器是否工作:

conda create -n tf python==3.7 -y  # create a python environment
conda activate tf #activate the virtual environment (here conda)
pip install tensorflow==2.4.1 # install tf 2.4.1
python -c "import tensorflow as tf, logging; logging.basicConfig(level=logging.INFO, format='%(asctime)s %(message)s'); tf.config.list_physical_devices('GPU'); tf.profiler.experimental.start('.'); tf.profiler.experimental.stop()" # test to see if TF with GPU works

#########################################################################

如果你想在Ubuntu20.04 LTS上安装Cuda Toolkit 10.2,那么单行程序安装代码会相应地改变(需要添加库路径,并覆盖gcc版本不匹配的投诉)。

./cuda_10.2.89_440.33.01_linux.run --silent --tmpdir=. --toolkit --toolkitpath=/home/pherath/cuda_toolkits/cuda-10.2 --librarypath=/home/pherath/cuda_toolkits/cuda-10.2 --override

请记住,对于cuda工具包10.2的补丁,您也需要重复这个过程。之后,您需要下载相应的cuDNN并复制lib64

#########################################################################

如果仍然出现错误,很有可能您没有安装正确的cuda/nvidia驱动程序。要解决此问题,您需要sudo权限!

首先,清除所有cuda/nvidia内容(由于声誉有限,我无法添加引用…);基本上使用sudo权限运行下面的行<代码>apt清洁;apt更新;apt清除cuda;apt清除nvidia-*;自动记忆;apt安装cuda

遵循谷歌的指示https://cloud.google.com/compute/docs/gpus/install-drivers-gpu#ubuntu-驾驶员踏板

重启机器。

 类似资料:
  • 本文向大家介绍使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比),包括了使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)的使用技巧和注意事项,需要的朋友参考一下 禁用GPU设置 CPU与GPU对比 显卡:GTX 1066 CPU GPU 简单测试:GPU比CPU快5秒 补充知识:tensorflow使用CPU可以跑(运行),但是使用GPU却不能用的情况

  • 文档说这个库运行在GPU上。如果我功能强大的笔记本电脑没有GPU,我还能运行Deeplearning4J吗?

  • 我有一个电子应用程序,我想建立一个自动更新。我跟踪了这篇博文,做了一个小演示,它工作很好,有一些小改动。然后我尝试用我的实际项目来实现它,现在我得到了一个错误。 我已经有了Electron-Builder.yml文件,我甚至尝试过设置GT_TOKEN和变量,但它仍然抛出相同的错误。

  • 我正在尝试为一个get请求设置头。功能如下: 但是头。get('Authorization')由于某种原因为空,我无法找出原因。任何帮助都将不胜感激。

  • 为了解决这个问题,我尝试了许多JDK版本,但似乎无论我使用哪个java,结果总是一样的。 MavenReportException:创建存档时出错:无法找到javadoc命令:未正确设置环境变量JAVA_HOME。 我跑了: 导出JAVA_HOME=/usr/lib/jvm/JAVA-8-openjdk-amd64 : MavenReportException:创建存档时出错:无法找到javado

  • Spring HATEOAS提供了方便的ControllerLinkBuilder来创建指向控制器方法的链接,这些方法将作为HREF添加到返回给客户端的JSON/XML中。例如: ... 可能会生成类似以下内容的JSON: 然而... 我倾向于通过反向代理访问我的服务。我想大多数人可能会这样做。这让我可以在不同的端口上运行多个服务,但让我可以通过相同的基本URL访问它们。不幸的是,通过代理访问意味