关于 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 镜像吗?

5092 次点击
所在节点    Python
47 条回复
ganzi
2021-05-20 23:03:12 +08:00
今天恰好在琢磨这个,直接用 conda 新建一个环境啊,在环境里下载自己想要的版本,cuda 也可以选择版本这里去找(一般是 8-11 选吧) https://anaconda.org/search?q=cuda,不会影响本机的。

实验室的机子太多人用了,我就用了 Google Colab,但是这个上面也是坑。如果你不用 conda 的话,用 Google Colab 去搭建学习环境还是可以的。我一般就是在上面跑 GNN 。
renmu123
2021-05-20 23:09:54 +08:00
我推荐直接装个 Ubuntu 来操作,wsl 还可能遇上各种坑。
Python 版本你可以用 pyenv 来进行管理。
ipwx
2021-05-21 00:11:34 +08:00
1. Windows 别想了。本体用 TensorFlow / PyTorch 可能会有各种奇怪的问题,因为你这真的是小众平台很少有搞学术这么做的,碰到问题不好解决。而 WSL/WSL2/虚拟机都是不可能用 CUDA 的,无解。
2. Linux 下用 Docker 启动 CUDA + TensorFlow 是可能的。我在实验室这么干了好几年了,不然我们实验室那么多人用服务器,每个人环境都不同,我得管死。
Muniesa
2021-05-21 00:31:39 +08:00
Windows 的 docker 用不了 CUDA,wsl2 的 CUDA 支持我记得还在内测,如果 Linux 环境是必需的那就只能物理机装上 Linux 系统,如果不是,用 conda 装 Python 对应版本和 CUDA 是最简单的。
BeautifulSoap
2021-05-21 00:48:03 +08:00
Windows 下 Python 搞 ai 之类的话直接上 conda 呀,管你 Python 环境多乱,都没影响。人生苦短何必折腾自己

以及 wsl2 支持 cuda 的,不过需要预览版,NVIDIA 官方就有文档:
https://docs.nvidia.com/cuda/wsl-user-guide/index.html

不过我觉得比起折腾 wsl2,可能还是 Windows 本地用 conda 跑或直接装个 Ubuntu 会比较靠谱
BeautifulSoap
2021-05-21 00:53:05 +08:00
@BeautifulSoap 看了下 NVIDIA 的文档,wsl2 用 cuda 并不复杂,而且 docker 怎么用支持文档也有说,lz 想试试的话可以系统升到 insider 后用 wsl2 玩玩看。wsl2 被你玩坏了的话直接删了对应发行版重装就行,也算清爽
houshuu
2021-05-21 01:02:49 +08:00
1. Windows 用 miniconda 建立环境,然后安装相应的 gpu 支持 TensorFlow 包,会自动配置。PyTorch 同理。不需要初始化 Python 版本,在安装包的时候会自动适配可用版本。不建议折腾 wsl2 开 cuda 支持,一个是麻烦,要开发者测试版 Windows,另外那个测试版本的显卡驱动会影响到平常显卡性能。
2. Linux 下 Docker 建议直接用 TensorFlow 的环境或者 NVIDIA 提供的 CUDA 镜像,同时记得 Docker 要加 --gpus all 参数才能进行调用。具体习惯什么小版本可以在 Dockerhub 上自己慢慢筛选。

现在学术界普遍是 Linux 的 Docker 方案。
longbye0
2021-05-21 01:53:13 +08:00
既然不会,那就别用 cuda on wsl,老老实实用 ubuntu 。社区用的人多,你能遇到的问题,网上基本都能找到。
IgniteWhite
2021-05-21 02:08:40 +08:00
楼主不明白的东西这么多的话,就像楼上说的,不要用 docker,docker 配 cuda 折腾驱动麻烦,你以为 docker 开箱即用,其实对于你的需求更麻烦。整一个流行的 Linux 发行版,按主流教程装好 cuda,然后回归配置 conda 虚拟环境的基本路线,把需要用的包装上,然后开用。如果是为了科研,那你和我需求一样,很建议使用 Jupyter 来写代码。

补充信息:conda 新建环境的官方教程 https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#creating-an-environment-with-commands,其他和环境有关的操作里面也都有。conda 能制定 python 版本(这里就不介绍 pyenv 了,对于机器学习 conda 合适)。你建立好 venv (虚拟环境)之后随便试错,玩坏了删掉这个 venv,不影响你已经配置好的 cuda 和驱动。
zxCoder
2021-05-21 07:59:19 +08:00
@ganzi
@renmu123
@ipwx
@Muniesa
@BeautifulSoap
@houshuu
@longbye0
@IgniteWhite

所以最好的做法应该是装一个 linux 双系统吗……前段时间刚把开发环境都转成 wsl2……
zxCoder
2021-05-21 08:10:20 +08:00
@ganzi
@renmu123
@ipwx
@Muniesa
@BeautifulSoap
@houshuu
@longbye0
@IgniteWhite

之前用 linux 主要是微信不太好用。。。
IgniteWhite
2021-05-21 08:18:32 +08:00
其实不如让你老板申请个超算啊……提交个 job 去算,分分钟的事
zxCoder
2021-05-21 08:23:44 +08:00
@zxCoder 虚拟机可以吗。。
zxCoder
2021-05-21 08:24:24 +08:00
@IgniteWhite 。。。。。。你见过 python 的不会装的人直接用超算吗
christin
2021-05-21 08:35:06 +08:00
有双币信用卡的话可以搞个免费的谷歌云 现在只能用 3 个月了 但还是 300 刀 够整个 8g 的了
christin
2021-05-21 08:39:47 +08:00
@christin 云主机可以让你试错 有问题重装系统也不心疼
IgniteWhite
2021-05-21 08:53:13 +08:00
@zxCoder 超算和 python 两码事,学校一般都有课教的呀。而且超算搞不好有配好的环境,比问我们靠谱
ipwx
2021-05-21 09:57:17 +08:00
@zxCoder 虚拟机也基本不行,你只能 Ubuntu 。

微信可以考虑 https://deepin-wine.i-m.dev/
NSAgold
2021-05-21 10:09:44 +08:00
两个选择 Windows Linux
Windows 现在装 tensorflow 不用再区分 gpu/cpu 版本了,直接装最新版就行。建议用 anaconda 。
Linux 的话 ubuntu,也是推荐用 anaconda 环境。
不过不管哪个,CUDNN 和 cuda 应该都需要另行下载安装
supercaizehua
2021-05-21 10:10:04 +08:00
建议还是装一个 Ubuntu,然后在 Ubuntu 上面配置环境,不要用 WSL,wsl 前一阵子刚开始支持 cuda,还有许多 bug,即使你现在弄好了,可以跑起来示例了,之后弄自己的模型还是有一堆问题,亲身经历

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

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

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

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

© 2021 V2EX