为了准备相关比赛,最近在搭建机器学习的环境
这个 TensorFlow 在 Windows 平台调用GPU非常困难
网上看到好多帖子在讲这个问题,但各种尝试,结果都失败了
今天忙了一天总算把它装好了,总结一下,也分享一下经验至于我选择 Conda 是因为
- 首先我用的 Pytorch 和 TensorFlow-GPU 支持的 Python 版本不一样,需要虚拟环境
- 其次它既有较成熟的社区,又不至于像 Docker 那样占空间
- 最后是因为。。。用习惯了
新人博主,不喜勿喷(狗头保命)
今天是2024年8月2日,随着时间流逝,官方可能会对一些内容进行更改,出现的异常概不负责(狗头保命)
顺便说一句,你都搞机器学习了,有些事情我就不保姆级讲解了(再次狗头保命)
第一步 安装conda
Anaconda 和 Miniconda 都可以用
我选择了miniconda,因为它善 因为它节约空间
国内可以从 清华源 下载并安装,省的数据翻山越岭,当然如果你有别的手段可以当我放屁
注意,由于安装包按照字典序排列,所以请仔细寻找最新的版本
我今天要找到的是
Miniconda3-latest-Windows-x86_64.exe
要是哪天Anaconda出第四代了、Windows全用ARM架构了 啥啥的,请自己找对应的安装包
接下来,你都开始搞机器学习了,运行安装包然后点下一步不用教了吧。。。
第二步 初始化conda
修改环境变量
控制面板
→
\to
→ 搜索“环境变量”
→
\to
→ 编辑账户的环境变量
→
\to
→ 点击上框的Path
选择新建,并将Anaconda(miniconda)安装目录下的Scripts路径添加到其中
这一步方法很多,你爱咋咋地,我只是写了一种比较寻常的,你要是有疑问可以找些别的帖子
现在的 Windows 流行用 PowerShell
启动 PowerShell
运行
conda init powershell
这里好像是要重新开一个命令行,我失败了太多次,不记得了,你自己看着办吧
参考 清华源 Anaconda 帮助
在 PowerShell 运行conda config --set show_channel_urls yes
在用户目录修改.condarc
的内容,如下
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
deepmodeling: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/
保存关闭,重开一个PowerShell,执行命令 conda clean -i
配置pip、安装 PyTorch 的环境
最新的 PyTorch 跟着 Python 的更新,适配到了今天的 Python 3.12,但我知道你看这篇文章的时候应该早就有了更新的版本,自己看着办
我给我的 PyTorch 选择了最新版本的Python,但当下,Windows 系统下 TensorFlow-GPU 不适配最新的 Python,所以两者不能放在同一个环境
我给 PyTorch 的环境起名叫 pytorch24,因为当前最新的是 PyTorch 2.4,你给他起什么名字随你便
依次运行下面的脚本:
创建环境记得改你自己起的名字和你想安装的版本号,不写 =3.12
好像也会默认安装最新的
conda create -n pytorch24 python=3.12
激活环境,这一行对应改成你自己环境的名字
conda activate pytorch24
更新pip
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
换 pypi 源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
可选,添加备用源:
pip config set global.extra-index-url "https://mirrors.cernet.edu.cn/pypi/web/simple"
上面这一步直接调用了 Anaconda 配置好的虚拟环境,有人说用 conda install 不太好,这我确实不清楚,反正配置环境蛮方便,出了问题以后再说(狗头)
conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia
这些是我自己要用的库,你自己看着要用也可以装上
pip install scikit-learn pandas matplotlib opencv-contrib-python seaborn xgboost scipy
这一行是安装jupyter notebook,你也自己看着办
pip install notebook
安装 TensorFlow-GPU
TensorFlow 有繁琐的版本对应,不建议随便改,但那个 tf210 是我起的名字,你改改没关系
知周所众,起名字一直是一个很麻烦的事情
依次执行命令
创建环境
conda create tf210 python=3.10
激活环境
conda activate tf210
安装虚拟环境的CudaToolkit 和 cuDNN
conda install -c conda-forge cudatoolkit=11.2 cudnn=8.1.0
安装 TensorFlow
python -m pip install "tensorflow<2.11"
调整numpy版本
pip install -U numpy==1.24
下面两行可选,是一些常用的科学计算与机器学习库
pip install scikit-learn pandas matplotlib opencv-contrib-python seaborn xgboost scipy
pip install notebook
安装问题说明
PyTorch
非常友好,conda
有现成的包可以用
TensorFlow
的安装有很多讲究
注意:
TensorFlow
中文文档长期没有维护,所以我们在参考时,全部切换至英文
TensorFlow
只有 2.10 之前支持 Windows 平台的 GPU,
版本对照参考 官方构建程序时的说明
当前最新的对应关系是:
TensorFlow_gpu-2.10.0
Python 3.7-3.10
MSVC 2019
Bazel 5.1.1
cuDNN 8.1
CUDA 11.2
参照 官方安装教程 所示,依次进行
但TensorFlow仍然不能正常运行,出现的问题参考StackOverflow 社区的相关内容
Nothing helped me, except for downgrading tensorflow-metal to v.0.6.0:
"pandas>=2.0.0", "ipykernel>=6.22.0", "tensorflow-macos>=2.10.0", "tensorflow-metal==0.6.0", "openpyxl>=3.1.2", "plotly>=5.14.1", "matplotlib>=3.7.1", "scikit-learn>=1.2.2", "keras>=2.10.0", "keras-self-attention>=0.51.0", "numpy~=1.24",
requires-python = “>=3.9”
我遇到的问题似乎和题主有点区别,我的解决方法是:
其中提到需要的numpy版本应在 1.24 左右,但默认安装了当下最新的 2.01
执行命令pip install -U numpy==1.24
即可
测试
PyTorch
在PowerShell激活环境后输入指令
python -c "import torch; print(torch.cuda.is_available())"
TensorFlow
在PowerShell激活环境后输入指令
python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"