赞
踩
两个框架所需软件/硬件条件:英伟达显卡及驱动、cuda、cudnn
在正式安装前,需要以下条件:
会使用conda创建和激活环境
有一张nvidia的显卡,且CUDA compute capabilitiy 不低于3.5.(只要显卡不是很旧应该行)
显卡驱动版本大于418.x(此处是2.3版本的需要,具体版本参考官网),不是的话需要去更新,提供一个官网地址。此外如何查看驱动版本两个方法:
1.点击nvidia设置查看左下角的系统信息可见版本。2.在dos命令行中通过nvidia-smi
可见(如果报错应该是环境变量需要设置)
示例conda create -n tensorflow23 python=3.7.3
,通过activate tensorflow23
激活环境。
然后需要安装tensorflow的gpu的依赖(依据tensorflow的版本下载对应的依赖版本):cudnn、cudatoolkit。通过conda下载可以不用设置一步到位:
conda install cudnn=7.6.5
(2.3的tf对应的一个版本)该命令同时会下载其依赖cudatoolkit
两个文件都是几百m,觉得慢可以使用镜像源。
这里安装的版本是tensorflow==2.3.0。在2.x后的gpu/cpu都包含在里面了,可以不加后缀-gpu。
关键:使用conda install tensorflow=2.3
有可能会因为下载的源不是来自pypi/或者只带有cpu部分。导致不能调用GPU。
所以需要使用pip来下载,并且官网也是这样推荐的。
pip install tensorflow==2.3.0 -i https://pypi.douban.com/simple/
(使用豆瓣会明显快些)
在激活此环境后运行一下python代码
import os,warnings
warnings.filterwarnings('ignore')
import tensorflow as tf
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "99"
print(tf.test.is_gpu_available())
print(tf.config.list_physical_devices('GPU'))
以上有诸多细节需要注意,在安装过程中也踩了不少坑,有些博客也过时不适用了,想必此文也有过时的时候,彼时请参考较新的博客。
这里提供示例的环境依赖mlbase-gpu.yml,复制保存后通过conda导入环境: conda env create -f mlbase.yml
name: MLbase-gpu channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge - defaults dependencies: - _tflow_select=2.3.0=gpu - absl-py=0.12.0=pyhd8ed1ab_0 - aiohttp=3.7.4=py37hcc03f2d_0 - astor=0.8.1=pyh9f0ad1d_0 - astunparse=1.6.3=pyhd8ed1ab_0 - async-timeout=3.0.1=py_1000 - attrs=20.3.0=pyhd3deb0d_0 - blinker=1.4=py_1 - brotlipy=0.7.0=py37hcc03f2d_1001 - ca-certificates=2021.4.13=haa95532_1 - cachetools=4.2.1=pyhd8ed1ab_0 - certifi=2020.12.5=py37haa95532_0 - cffi=1.14.5=py37hd8e9650_0 - chardet=4.0.0=py37h03978a9_1 - click=7.1.2=pyh9f0ad1d_0 - cryptography=3.4.7=py37h20c650d_0 - cudatoolkit=10.1.243=h74a9793_0 - cudnn=7.6.5=cuda10.1_0 - gast=0.3.3=py_0 - google-auth=1.26.1=pyh44b312d_0 - google-auth-oauthlib=0.4.1=py_2 - google-pasta=0.2.0=pyh8c360ce_0 - grpcio=1.36.1=py37h04d2302_0 - h5py=2.10.0=nompi_py37h23cfb99_105 - hdf5=1.10.6=nompi_h5268f04_1114 - idna=2.10=pyh9f0ad1d_0 - importlib-metadata=3.9.0=py37h03978a9_0 - intel-openmp=2020.3=h57928b3_311 - keras-applications=1.0.8=py_1 - keras-preprocessing=1.1.2=pyhd8ed1ab_0 - krb5=1.17.2=hbae68bd_0 - libblas=3.9.0=8_mkl - libcblas=3.9.0=8_mkl - libcurl=7.75.0=hf1763fc_0 - liblapack=3.9.0=8_mkl - libprotobuf=3.15.6=h7755175_0 - libssh2=1.9.0=h680486a_6 - m2w64-gcc-libgfortran=5.3.0=6 - m2w64-gcc-libs=5.3.0=7 - m2w64-gcc-libs-core=5.3.0=7 - m2w64-gmp=6.1.0=2 - m2w64-libwinpthread-git=5.0.0.4634.697f757=2 - markdown=3.3.4=pyhd8ed1ab_0 - mkl=2020.4=hb70f87d_311 - msys2-conda-epoch=20160418=1 - multidict=5.1.0=py37hcc03f2d_1 - oauthlib=3.0.1=py_0 - openssl=1.1.1k=h2bbff1b_0 - pandas=1.2.3=py37h08fd248_0 - pip=21.0.1=pyhd8ed1ab_0 - protobuf=3.15.6=py37hf2a7229_0 - pyasn1=0.4.8=py_0 - pyasn1-modules=0.2.7=py_0 - pycparser=2.20=pyh9f0ad1d_2 - pyjwt=2.0.1=pyhd8ed1ab_0 - pyopenssl=20.0.1=pyhd8ed1ab_0 - pyreadline=2.1=py37h03978a9_1003 - pysocks=1.7.1=py37h03978a9_3 - python=3.7.10=h7840368_100_cpython - python-dateutil=2.8.1=py_0 - python_abi=3.7=1_cp37m - pytz=2021.1=pyhd8ed1ab_0 - requests=2.25.1=pyhd3deb0d_0 - requests-oauthlib=1.3.0=pyh9f0ad1d_0 - rsa=4.7.2=pyh44b312d_0 - setuptools=49.6.0=py37h03978a9_3 - six=1.15.0=pyh9f0ad1d_0 - sqlite=3.35.3=h8ffe710_0 - tensorboard=2.4.1=pyhd8ed1ab_0 - tensorboard-plugin-wit=1.8.0=pyh44b312d_0 - termcolor=1.1.0=py_2 - tk=8.6.10=h8ffe710_1 - typing-extensions=3.7.4.3=0 - typing_extensions=3.7.4.3=py_0 - urllib3=1.26.4=pyhd8ed1ab_0 - vc=14.2=hb210afc_4 - vs2015_runtime=14.28.29325=h5e1d092_4 - werkzeug=1.0.1=pyh9f0ad1d_0 - wheel=0.36.2=pyhd3deb0d_0 - win_inet_pton=1.1.0=py37h03978a9_2 - wincertstore=0.2=py37h03978a9_1006 - wrapt=1.12.1=py37hcc03f2d_3 - yarl=1.6.3=py37hcc03f2d_1 - zipp=3.4.1=pyhd8ed1ab_0 - zlib=1.2.11=h62dcd97_1010 - pip: - joblib==1.0.1 - numpy==1.18.5 - opt-einsum==3.3.0 - scikit-learn==0.24.1 - scipy==1.4.1 - sklearn==0.0 - tensorflow==2.3.0 - tensorflow-estimator==2.3.0 - threadpoolctl==2.1.0 prefix: D:\Miniconda3\envs\MLbase-gpu
另一台电脑编译安装tensorflow2.4时出现的问题:
conda用文件创建环境时出现gbk解码错误,可能是miniconda和anaconda问题
conda默认源下载cudnn更快但没有最新版如cudnn=8.0及以上。
conda用了清华源能下载最新的但速度稳定都不佳多次失败。解决办法是根据http报错的链接去浏览器下载文件,或者看下面的文件信息拼出链接
如图可以看到cudatoolkit链接是https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/win-64/cudatoolkit-11.2.2-h933977f_8.tar.bz2
(这里加上了文件后缀)
再用conda本地安装
conda install --use-local your-pkg-name
–use-local后面最好写绝对路径,或者进入到Anaconda的pkgs目录下再执行上述语句。
但我要下载cudnn=8.0.5清华源里没找到只好去英伟达官网下载cudnn(麻烦是还有注册)参考link。cudatoolkit的安装是按照上面的离线方法
经理了前面的踩坑后做类似的事情就很顺手。
先在cmd里查看nvidia-smi确认是显卡驱动是较新版本(这样能保证用新的cuda),如果没有输出或者版本老,去nvidia官网下新驱动并安装(如同安装其他软件一样next)。
安装conda并创建虚拟环境(可以用默认环境),用conda安装cudnn(会自动安装cuda),有许多其他博客是去下载安装程序但明显这个conda安装更好还方便管理(除了国内下载慢)。安装命令 conda install cudnn
(也可以指定版本参考这里 ) 会安装最新的cudnn、cuda请确保你的驱动版本够兼容(nvidai-smi会显示支持的最新cuda版本) --PS:cudatoolkit包是完整CUDA的子集含所需文件
去官网获取conda下载命令,如conda install pytorch torchvision torchaudio -c pytorch
现在pytorch已经有自带cudnn的build版本了,所以仅一个官网上的下载命令
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
(可以事先换源或用代理可能快点)
换了USTC源发现没有最新的pytorch,只能加-c pytorch下,太慢使用代理即可:如果是widows开全局模式用
curl ip.sb
测试,如果是Linux需要本地跑个v2ray等代理并找到其配置中运行的socks端口,设个环境变量export all_proxy="socks5://127.0.0.1:1080"
即可,如果是wsl的话你的v2ray代理在windows中,wsl通过/etc/resovle.conf确定windows的ip如172.17.192.1只需要设环境变量export all_proxy="socks5://172.17.192.1:10808"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。