关于 WSL docker cuda,安装深度学习 Python 环境 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zxCoder
V2EX    Python

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

  •  
  •   zxCoder 2021-05-20 22:49:23 +08:00 5590 次点击
    这是一个创建于 1608 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    一开始不清楚就直接装了个 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 镜像吗?

    第 1 条附言    2021-05-21 09:22:29 +08:00

    没辙了,requirement.txt里面还有一些包要手动编译安装的,我用windows的话安装个锤子,那么一大堆依赖看着就头疼

    装个双系统ubuntu吧。。。

    第 2 条附言    2021-05-21 21:10:45 +08:00

    最新进展。。。。

    经过了一个下午和晚上的折磨之后,最终使用了conda,一些库直接用conda install,然后还结合了pip

    出现了几个问题。。。。一个在github issue找到答案,卸载掉conda安装的pytorch,改用pip手动安装,解决。另一个比较迷,一开始torch能导入,但是提示啥属性都没有,后来就重装了一下pytorch,就解决了。

    太痛苦了,经过两天时间代码终于能跑起来了(其实也没跑起来,跑一小会内存不够),不过至少可以开始看代码学习了。。。

    第 3 条附言    2021-05-31 11:26:49 +08:00

    准备退学了

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

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

    不过我觉得比起折腾 wsl2,可能还是 Windows 本地用 conda 跑或直接装个 Ubuntu 会比较靠谱
    BeautifulSoap
        6
    BeautifulSoap  
       2021-05-21 00:53:05 +08:00 via Android
    @BeautifulSoap 看了下 NVIDIA 的文档,wsl2 用 cuda 并不复杂,而且 docker 怎么用支持文档也有说,lz 想试试的话可以系统升到 insider 后用 wsl2 玩玩看。wsl2 被你玩坏了的话直接删了对应发行版重装就行,也算清爽
    houshuu
        7
    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
        8
    longbye0  
       2021-05-21 01:53:13 +08:00
    既然不会,那就别用 cuda on wsl,老老实实用 ubuntu 。社区用的人多,你能遇到的问题,网上基本都能找到。
    IgniteWhite
        9
    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
        10
    zxCoder  
    OP
       2021-05-21 07:59:19 +08:00 via Android
    @ganzi
    @renmu123
    @ipwx
    @Muniesa
    @BeautifulSoap
    @houshuu
    @longbye0
    @IgniteWhite

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

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

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

    谢谢各位 准备装双系统了


    @NSAgold
    还不止 tensorflow,里面用了好多其他人的模型啥的,然后各种框架各种版本啥都有。。。还有一个 graph_tool,在 windows 也装不了,还是继续折腾折腾 ubuntu,省点心
    goodryb
        24
    goodryb  
       2021-05-21 10:53:47 +08:00
    WSL+ docker 想想都头大,还要上 CUDA,放过孩子吧
    RockShake
        25
    RockShake  
       2021-05-21 10:54:54 +08:00
    Windows 下面用 conda,别跟自己过不去
    necomancer
        26
    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
        27
    Muniesa  
       2021-05-21 11:07:39 +08:00
    @zxCoder ubuntu 可以用 deepin wine 的微信,基本和 Windows 版没差别
    ipwx
        28
    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
        29
    ipwx  
       2021-05-21 14:31:06 +08:00
    唯一不带的好像是 TensorFlow,你自己随便装一个
    ipwx
        30
    ipwx  
       2021-05-21 14:32:06 +08:00
    zxCoder
        31
    zxCoder  
    OP
       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
        32
    BeautifulSoap  
       2021-05-21 14:45:46 +08:00
    @zxCoder 你做学术的话就直接用 conda
    pickteemo
        33
    pickteemo  
       2021-05-21 14:53:38 +08:00
    按你的情况直接 Ubuntu+Conda 是最好的....conda10 分钟了解一下就好了
    GarrickLin
        34
    GarrickLin  
       2021-05-21 15:13:55 +08:00 via Android
    @ipwx wsl 已经开始支持 cuda 了 详见 wslg 项目
    Muniesa
        35
    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
        36
    zxCoder  
    OP
       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
        37
    zxCoder  
    OP
       2021-05-21 16:01:25 +08:00
    @Muniesa

    不对,我的 cuda 还没装,刚才只是下载了官网的 run 脚本,好大一个,那我干脆就直接用 conda 装 cuda,以后啥时候跑路直接 conda 一删就完事了 23333
    Muniesa
        38
    Muniesa  
       2021-05-21 16:03:01 +08:00
    @zxCoder 我用 conda 装的 pytorch 会优先使用虚拟环境里的 cudatoolkit,想用手动安装的 CUDA 可能需要修改环境变量之类的。安装包的 python 版本是默认的 base 环境的 python 版本,不影响新建环境的 python 版本,想要用 3.6 就新建一个环境就好了。
    zxCoder
        39
    zxCoder  
    OP
       2021-05-21 16:04:27 +08:00
    @Muniesa 感谢 大概清楚了
    Muniesa
        40
    Muniesa  
       2021-05-21 16:09:46 +08:00
    @zxCoder 官网下的 CUDA 以后有需要再装也可以,之前是碰到过有个包必须要 CUDA 编译,大部分情况 conda 的 cudatoolkit 是够用的。
    fannas
        41
    fannas  
       2021-05-21 16:21:20 +08:00 via iPhone
    申请点钱用 azure notebook 吧…跑的飞快,不用关掉就行…
    zxCoder
        42
    zxCoder  
    OP
       2021-05-21 16:40:34 +08:00
    @Muniesa 再请教一个问题。。。我现在有个 requiremets.txt 里面指定了一些包的版本,不过我看上面都没有指定 gpu 还是 cpu 版本,比如 tensorflow pytorch,还有很多我不认识的包,所以直接装整个 requirements 文件有些会出错,有些会装成 cpu 版本(但是我不清楚哪些装错了)

    这种情况我是不是应该一个包一个包确定之后单独 conda 装比较好。。。
    zxCoder
        43
    zxCoder  
    OP
       2021-05-21 17:01:07 +08:00
    @Muniesa

    就比如这些东西

    tensorflow==1.13.1
    regex==2020.11.13
    networkx==2.5
    Keras==2.2.4
    scipy==1.5.2
    torch_geometric==1.6.3
    transformers==4.1.1
    torch==1.7.1
    torch_scatter==2.0.5
    torch_sparse==0.6.8
    numpy==1.19.2
    graph_tool==2.11
    python_igraph==0.8.3
    python_Levenshtein==0.12.2
    scikit_learn==0.24.1

    我大概就只知道 tensorflow keras torch 应该是有 gpu 版本的,然后其他的不太了解。。。
    IgniteWhite
        44
    IgniteWhite  
       2021-05-21 17:15:50 +08:00 via iPhone
    见我在 9 楼的链接和内容。conda 可以装和它本身不同版本的 puthon 到虚拟环境。不过我觉得你已经解决了。主流的也有用 pyenv 的
    Muniesa
        45
    Muniesa  
       2021-05-21 17:49:27 +08:00
    @zxCoder 是的,conda 的依赖处理会比较好,你这些东西有些是互相依赖的,conda 会一起装上,建议先把 tensorflow,keras,pytorch 这种框架装上,然后再看看缺什么继续装。
    zxCoder
        46
    zxCoder  
    OP
       2021-05-21 17:59:42 +08:00
    @IgniteWhite
    多谢多谢
    supercaizehua
        47
    supercaizehua  
       2021-05-21 19:35:05 +08:00
    用到啥装啥,一个版本对应一个虚拟环境,这样比较有序
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5814 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 03:05 PVG 11:05 LAX 20:05 JFK 23:05
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86