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 · 5055 次点击
    这是一个创建于 1283 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    一开始不清楚就直接装了个 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   ·   实用小工具   ·   951 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:46 · PVG 06:46 · LAX 14:46 · JFK 17:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.