无法从jupyterhub / jupyter笔记本调用tensorflow gpu,为什么?

时间:2017-05-15 16:06:01

标签: tensorflow jupyter-notebook jupyterhub

嗯,我觉得8个小时足以让我自己解决这个问题,所以我只会问问大家:

我在名为' tensorflow'的虚拟环境中运行tensorflow-gpu 1.1.0就好了。在jupyterhub和Jupyter笔记本之外。也就是说,我可以使用gpu导入tensorflow并运行脚本。

当我在我的tensorflow virtualenv中并使用jupyterhub时​​,Jupyter似乎无法看到' tensorflow。我收到以下错误:

ImportError: libcublas.so.8.0: cannot open shared object file: No such file or directory

1)这是一个常见的错误消息,指示tensorflow安装问题,但我的路径和环境变量似乎很好。毕竟,我可以在Jupyter之外使用tensorflow-gpu。

2)打字' jupyter'显示~/anaconda3/envs/hub/bin/jupyter,所以我相信我在我的virtualenv中引用了jupyter。 3)Pip freeze表明我有jupyterhub和tensorflow-gpu。我甚至做了一个pip3 freeze,它也显示了两个包。

有什么想法吗?可以从Jupyter笔记本运行tensorflow-gpu吗?

1 个答案:

答案 0 :(得分:4)

我从这里得到了解决方案:

[https://github.com/jupyter/notebook/issues/1290][1]

基本上,jupyter的某些内容是“错误的”,因为它无法读取我的LD_LIBRARY_PATH变量。我确实把所有内容都放在.bashrc中,所以我不知道为什么。

切换到命令行(终端)。如果您有虚拟环境,请切换到您的虚拟环境。

输入:jupyter notebook --generate-config

它将告诉您存储jupyter配置文件的目录。如果要再次列出,请输入:jupyter --config-dir

我的jupyter_notebook_config.py文件位于:/home/me/.jupyter/jupyter_notebook_config.py

在此文件的最顶部jupyter_notebook_config.py,添加以下代码:

import os
c = get_config()
os.environ['LD_LIBRARY_PATH'] = '/usr/local/cuda-8.0/lib64:usr/local/cuda-8.0/lib64/libcudart.so.8.0'
c.Spawner.env.update('LD_LIBRARY_PATH')

然后重启jupyterhub或jupyter notebook(在命令行输入:jupyter notebook

Tensorflow gpu应该可以工作。

即使您正在运行jupyterhub,同样适用。在jupyter中进行更改,而不是jupyterhub。 (jupyterhub的每个用户都有自己的jupyter进程,因此不要在'hub'级别进行更改,而是更换jupyter笔记本级别。