关于 WSL docker cuda,安装深度学习 Python 环境

2021-05-20 22:49:23 +08:00
 zxCoder

研究生找了个搞数据库的导师,结果还是躲不过这玩意。。现在啥都得结合深度学习。。。

现在有一个项目需要我跑起来,然后我今天搞了一天的环境,问题有点多。

一开始不清楚就直接装了个 python3.9,然后有个 requirements.txt ,安装包的时候出错,查了一下发现里面用到了 tensorflow1,只能用 3.6,然而我已经不知道要怎么把 python3.9 换成 3.6 (试了几种方法。。。反而把环境搞乱了也没成功)

所以我打算用 docker,反正在本地只要跑跑 demo 就行,所以我写了一个 dockerfile,基于 python3.6 的镜像,把 requirements.txt 拷贝进去再安装,但是还是出现了很多错误。。

其中就有一些红色的也不知道错误还是警告

UserWarning: CUDA initialization: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx (Triggered internally at  /pytorch/c10/cuda/CUDAFunctions.cpp:100.)

这我才想起来好像深度学习得用到一种叫 cuda 的东西,似乎就是这里出的问题。

所以我的问题是,这个 cuda 的环境,我是应该把他装在 docker 容器里吗?还是装在宿主机上,而且我用的是 windows 的 WSL,如果是装在容器里,我应该是找个 linux 镜像,然后再按照系统找到对应的 cuda 版本装上,然后再装上 python 等等。。。。感觉更麻烦了。。。。

所以我还想问针对我配置环境(装个 python3.6 装 cuda 装一些 python 包。。。)这个问题,有没有最简单的方法可以搞定。。。实在是太混乱了


发完帖子又想了一下,我应该是基于一个 cuda 的镜像,在上面装个 python3.6,再装 python 包,是这样吗?

然后 cuda 我的理解它应该是跟硬件相关的吧,那这个 cuda 镜像要根据我机器的显卡还是别的啥来选吗?而且我还多了一层 WSL


我看我电脑只支持 cuda8.0,那我就只能装 8.0 的 docker 镜像吗?

4801 次点击
所在节点    Python
47 条回复
oska874
2021-05-21 10:10:24 +08:00
新版本的 nv docker on wsl 有问题,不能用。之前版本 gpu docker 是正常的。
arjen
2021-05-21 10:22:38 +08:00
用 virtualenv, 每个项目一个 python 环境
zxCoder
2021-05-21 10:53:43 +08:00
@ipwx
@NSAgold
@supercaizehua
@oska874
@arjen

谢谢各位 准备装双系统了


@NSAgold
还不止 tensorflow,里面用了好多其他人的模型啥的,然后各种框架各种版本啥都有。。。还有一个 graph_tool,在 windows 也装不了,还是继续折腾折腾 ubuntu,省点心
goodryb
2021-05-21 10:53:47 +08:00
WSL+ docker 想想都头大,还要上 CUDA,放过孩子吧
RockShake
2021-05-21 10:54:54 +08:00
Windows 下面用 conda,别跟自己过不去
necomancer
2021-05-21 11:02:40 +08:00
windows 有 cuda,也可以使用 pip 安装 tensorflow gpu 版。这里:
https://www.tensorflow.org/install/gpu


wsl 是另一回事,目前我没记错的话在开发中,wsl 需要注册开发账户才能从 nvidia 下载到对应的驱动(win),wsl 里才能使用 gpu 程序。
Muniesa
2021-05-21 11:07:39 +08:00
@zxCoder ubuntu 可以用 deepin wine 的微信,基本和 Windows 版没差别
ipwx
2021-05-21 14:30:50 +08:00
@zxCoder 还有 graph_tool,滑稽~

你可以看看我这个版本适合不:

https://hub.docker.com/layers/129864161/haowenxu/ml-runtime2/gpu-cuda10.1-cudnn7-py3.6-torch1.7.1/

Python 3.6 CUDA 10.1 CUDNN 7 PyTorch 1.7.1 带 graph-tool
ipwx
2021-05-21 14:31:06 +08:00
唯一不带的好像是 TensorFlow,你自己随便装一个
ipwx
2021-05-21 14:32:06 +08:00
zxCoder
2021-05-21 14:38:45 +08:00
@ganzi
@renmu123
@ipwx
@Muniesa
@BeautifulSoap
@houshuu
@longbye0
@IgniteWhite
@christin
@NSAgold
@supercaizehua
@oska874
@arjen
@goodryb
@RockShake
@necomancer


各位大哥,我现在装好 ubuntu 环境了,想问一下 python 现在主流的这种 虚拟环境 /隔离环境 /包管理 啥的是什么方案

争取一次成功,别再把环境搞乱了。。。
BeautifulSoap
2021-05-21 14:45:46 +08:00
@zxCoder 你做学术的话就直接用 conda
pickteemo
2021-05-21 14:53:38 +08:00
按你的情况直接 Ubuntu+Conda 是最好的....conda10 分钟了解一下就好了
GarrickLin
2021-05-21 15:13:55 +08:00
@ipwx wsl 已经开始支持 cuda 了 详见 wslg 项目
Muniesa
2021-05-21 15:17:31 +08:00
@zxCoder 独显驱动装好了吗?装好了就可以装一个 miniconda,用 conda 新建一个环境,可以指定 python 版本,CUDA 如果只是调用的话可以只使用 conda 的 cudatoolkit,也可以指定版本(显卡驱动版本太旧就不支持新版本的 cudatoolkit ),不影响系统的显卡驱动和 cuda 版本。

按你说的装个 python3.6 装 cuda 装一些 python 包,在 conda 下可以这么操作:

创建新环境:
conda create -n env_name python=3.6

激活环境:
conda activate env_name

安装 cuda:
conda install cudatoolkit=10.2

装一些 python 包:
可以用 conda 装也可以用 pip 装
比如:
conda install numpy
或者:
pip install numpy

这样装的 python 包都是在 conda 的环境中的,可以使用 conda list 查看,如果新项目要换 python 版本和 cuda 版本就新建一个环境。
zxCoder
2021-05-21 15:56:14 +08:00
@Muniesa 谢谢详细解答 我有两个小问题

cuda 我刚才在官网下载安装好了某个版本,这样子在 conda 里也可以用吗?还是要按你说的,在 conda 里安装

还有就是我在 miniconda 这个下载页里看到很多个版本,https://docs.conda.io/en/latest/miniconda.html,这里的 python 版本是指什么意思呢?我想装 3.6 的,那我下载 miniconda 应该装哪个版本才行
zxCoder
2021-05-21 16:01:25 +08:00
@Muniesa

不对,我的 cuda 还没装,刚才只是下载了官网的 run 脚本,好大一个,那我干脆就直接用 conda 装 cuda,以后啥时候跑路直接 conda 一删就完事了 23333
Muniesa
2021-05-21 16:03:01 +08:00
@zxCoder 我用 conda 装的 pytorch 会优先使用虚拟环境里的 cudatoolkit,想用手动安装的 CUDA 可能需要修改环境变量之类的。安装包的 python 版本是默认的 base 环境的 python 版本,不影响新建环境的 python 版本,想要用 3.6 就新建一个环境就好了。
zxCoder
2021-05-21 16:04:27 +08:00
@Muniesa 感谢 大概清楚了
Muniesa
2021-05-21 16:09:46 +08:00
@zxCoder 官网下的 CUDA 以后有需要再装也可以,之前是碰到过有个包必须要 CUDA 编译,大部分情况 conda 的 cudatoolkit 是够用的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/778237

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX