手把手教你在谷歌云平台搭建基于GPU的深度学习

手把手教你在谷歌云平台搭建基于GPU的深度学习插图

大数据文摘授权转载自 数据派THU

作者:Saurabh Bodhe

编译:陈振东、车前子

我知道,基于GPU的高端的深度学习系统构建起来非常昂贵,并且不容易获得,除非你……

https://hackernoon.com/deep-learning-with-google-cloud-platform-66ada9d7d029

假设你有一台带有GPU的裸机,当然如果有些配置是预先设置好的,可以跳过下面部分教程。此外,我还假设你有一个NVIDIA的显卡,我们在本教程中只讨论如何配置TensorFlow,也就是目前最受欢迎的深度学习框架(向谷歌致敬!)

安装CUDA驱动程序

CUDA是NVIDIA开发的一个并行计算平台,是搭建TensorFlow的基本前提。但是我们后面会提到,实际上最好使用逆向工作的方法,所以我们稍后再回到这部分。

安装TensorFlow

启动终端(如果是远程访问的话,就使用SSH)。总之,找到特定应用程序(如果有的话)所需的TensorFlow版本,或者如果没有这样的限制,可以使用我目前使用的TensorFlow 1.8.0。


1
<span class="code-snippet_outer"><span class="code-snippet__attribute">pip</span> install tensorflow-gpu==<span class="code-snippet__number">1</span>.<span class="code-snippet__number">8</span>.<span class="code-snippet__number">0</span></span>

在TensorFlow安装的时候,我们运行下Python shell,


1
<span class="code-snippet_outer">python</span>

在Python shell中输入下面的代码:


1
<span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> tensorflow <span class="code-snippet__keyword">as</span> tf</span>

但这时我们还没有安装CUDA,你会看到类似下面的报错:


1
<span class="code-snippet_outer"><span class="code-snippet__selector-tag">ImportError</span>: <span class="code-snippet__selector-tag">libcublas.so.9.0</span>: <span class="code-snippet__selector-tag">cannot</span> <span class="code-snippet__selector-tag">open</span> <span class="code-snippet__selector-tag">shared</span> <span class="code-snippet__selector-tag">object</span> <span class="code-snippet__selector-tag">file</span>: <span class="code-snippet__selector-tag">No</span> <span class="code-snippet__selector-tag">such</span> <span class="code-snippet__selector-tag">file</span> <span class="code-snippet__selector-tag">or</span> <span class="code-snippet__selector-tag">directory</span></span>

9.0版本、文件名或者是其他的报错,这取决于您选择的TensorFlow版本。但是这样做的目的是知道我们需要哪个版本的CUDA,在这个例子中是9.0。官方文档中TF版本和CUDA版本的对应关系不是很清楚,所以我一直觉得这种逆向工程方法更好。

然后,我们再回到CUDA的安装。使用


1
<span class="code-snippet_outer"><span class="code-snippet__built_in">exit</span>()</span>

退出Python shell。

安装CUDA驱动(相信我,这次是真的安装)

根据之前的操作,选择你需要的版本:


1
<span class="code-snippet_outer">Linux-&gt;x86_64-&gt;Ubuntu-&gt;<span class="code-snippet__number">16.04</span> (<span class="code-snippet__keyword">or</span> <span class="code-snippet__number">17.04</span>)-&gt;deb (network)</span>

下载相应的.deb文件,并按照NVIDIA的官方说明安装CUDA。完成之后,让我们检查下是否一切正常。

再次打开Python shell并运行下面的代码,


1
<span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> tensorflow <span class="code-snippet__keyword">as</span> tf</span>


当然,我们还没有完成,这次你会看到稍微不同的报错(如果在此之前就出现了类似的报错,参考下面的“Troubleshooting”中的修复方法)


1
<span class="code-snippet_outer"><span class="code-snippet__selector-tag">ImportError</span>: <span class="code-snippet__selector-tag">libcudnn.so.7</span>: <span class="code-snippet__selector-tag">cannot</span> <span class="code-snippet__selector-tag">open</span> <span class="code-snippet__selector-tag">shared</span> <span class="code-snippet__selector-tag">object</span> <span class="code-snippet__selector-tag">file</span>: <span class="code-snippet__selector-tag">No</span> <span class="code-snippet__selector-tag">such</span> <span class="code-snippet__selector-tag">file</span> <span class="code-snippet__selector-tag">or</span> <span class="code-snippet__selector-tag">directory</span></span>

我们还需要NVIDIA提供的一个叫做cuDNN的库,它可以使用GPU加速深度神经网络的计算。注意,本教程中的cuDNN版本是7.0。

打开并注册一个帐户(免费的):

https://developer.nvidia.com/cudnn

注册好帐号后,登录:

https://developer.nvidia.com/rdp/cudnn-archive。

选择你需要的cuDNN版本,并确保你选择该版本所对应的CUDA版本。在本教程中,我们需要下载以下版本,


1
<span class="code-snippet_outer"><span class="code-snippet__selector-tag">Download</span> <span class="code-snippet__selector-tag">cuDNN</span> <span class="code-snippet__selector-tag">v7.0.5</span> (<span class="code-snippet__selector-tag">Dec</span> 5, 2017), <span class="code-snippet__selector-tag">for</span> <span class="code-snippet__selector-tag">CUDA</span> 9<span class="code-snippet__selector-class">.0</span></span>

在下拉选项中选择,


1
<span class="code-snippet_outer"><span class="code-snippet__selector-tag">cuDNN</span> <span class="code-snippet__selector-tag">v7.0.5</span> <span class="code-snippet__selector-tag">Library</span> <span class="code-snippet__selector-tag">for</span> <span class="code-snippet__selector-tag">Linux</span></span>

这样,.tgz文件就开始下载了,将文件存储到你的机器上,并使用以下命令进行提取,


1
<span class="code-snippet_outer">tar -xzvf <span class="code-snippet__tag">&lt;<span class="code-snippet__name">CUDNN_TAR_FILENAME</span>&gt;</span></span>

最终提取出一个名为“CUDA”的文件夹,切换到该目录,并执行下面两条命令,


1
<span class="code-snippet_outer">sudo cp lib64/* <span class="code-snippet__regexp">/usr/local/cuda/lib</span>64/sudo cp <span class="code-snippet__keyword">include</span>/cudnn.h /usr/local/cuda/<span class="code-snippet__keyword">include</span>/</span>

这样就完成了(但愿如此)。再次启动Python shell,这次你知道该做什么。

如果这次运行没有报错,那就没问题了。

为确保TensorFlow能够检测到GPU,在Python shell中使用以下代码,


1
<span class="code-snippet_outer"><span class="code-snippet__selector-tag">tf</span><span class="code-snippet__selector-class">.test</span><span class="code-snippet__selector-class">.gpu_device_name</span>()</span>

它将会把所有可用的GPU显示出来。如果这个命令在旧版本的TF可能运行不了,可以试试下面的命令。


1
<span class="code-snippet_outer">nvidia-smi</span>

问题修复

如果所有配置都正确,nvidia-smi也可以执行,但TensorFlow仍然报出相同的错误,那么很有可能环境变量出了问题。执行下面的命令进行修复:


1
<span class="code-snippet_outer"><span class="code-snippet__built_in">export</span> LD_LIBRARY_PATH=/usr/<span class="code-snippet__built_in">local</span>/cuda/lib64:<span class="code-snippet__variable">${LD_LIBRARY_PATH}</span></span>
1
<span class="code-snippet_outer"><span class="code-snippet__built_in">export</span> PATH=/usr/<span class="code-snippet__built_in">local</span>/cuda/lib64:<span class="code-snippet__variable">${PATH}</span></span>

如果nvidia-smi命令都无法执行,CUDA没有正确安装,那就重新安装配置一遍,看看有没有什么遗漏的地方。


欢迎大家提问,建议或者批评。

祝好。

原文链接:

https://hackernoon.com/setting-up-your-gpu-machine-to-be-deep-learning-ready-96b61a7df278


实习/全职编辑记者招聘ing

加入我们,亲身体验一家专业科技媒体采写的每个细节,在最有前景的行业,和一群遍布全球最优秀的人一起成长。坐标北京·清华东门,在大数据文摘主页对话页回复“招聘”了解详情。简历请直接发送至zz@bigdatadigest.cn


手把手教你在谷歌云平台搭建基于GPU的深度学习插图(1)
手把手教你在谷歌云平台搭建基于GPU的深度学习插图(2)
点「在看」的人都变好看了

    已同步到看一看

    发送中

    点赞