通过WSL2来实现TF的GPU加速
- 为什么要用WSL(Windows Subsystem Linux)
- 安装WSL2,miniconda,cuda,cudnn,TA-Lib
- 安装 WSL2
- 安装 Miniconda3
- 安装 CUDA
- 安装 cuDNN
- 安装 TensorFlow 库
- 安装 TA-Lib 库
- 安装其它CQF及金融量化相关的库
- 希望这篇博客对您有所帮助
为什么要用WSL(Windows Subsystem Linux)
主要是Windows开窍了,觉得让DEVs的门槛稍微降低,让普通人也有机会接触到开发和应用这一块。抛去这些7788的冠冕堂皇,来个实在些的就是TensorFlow已经在2.10版之后不再支持Windows平台的GPU加速技术了,就问你闹心不?就问你恶心不?!像我这种傻不啦叽的直接在Windows上用TensorFlow 2.15版写代码的,然后再反向寻找GPU加速,这简直就是灾难,我来罗列一下:
- TF 2.15版写出来的代码是修复了很多Bugs的,相对来讲已经比较能稳定的运行市场上目前很多的模型架构,譬如CNN RNN LSTM及其相关的衍生出来的算法模型。但是2.0 ~ 2.12版的TF可以说是灾难性的,因为我们学习的代码基本上都是CuttingEdge的,TF也得一直更新跟进,顺手消灭一些Bugs的存在。当然了,大家再一年后看我这篇帖子,也会觉得2.15可能也是Bug重重的。
- TF 2.15的确修复了很多Bugs,代码运行方面也比 2.10 GPU版成熟了很多,毕竟经历了5代大更新;但是懂python的人都懂,不同python库版本写出来的代码有很大的可能性是不能通用的,In my case scenario,是的,你丫就是不能用2.15写的代码在2.10上运行,气你肝儿疼。
- 那么我们真的就不能在Windows上实现GPU加速了么?答案是否定的。我们可以通过WSL来搭建一个虚拟Linux平台,然后通过我们的IDE(Pycharm Jupyter VScode 等)把WSL的interpreter(解析器)从次平台导入到Windows主平台里进行使用。
安装WSL2,miniconda,cuda,cudnn,TA-Lib
安装 WSL2
- 我的Windows10是
22H2
版本的,超过这个版本应该都适用。据官方给出来的答案是从1903
版开始可以正常安装使用WSL2, 请提前做好功课; - 通过cmd或者powershell的管理员模式来进行安装wsl2,现在默认的版本是ubuntu2204LTS版;
wsl --install -d ubuntu
- 安装好之后可以设置以什么身份来登录WSL2,建议用root来登录,省去很多麻烦;
wsl --shutdown
ubuntu.exe --default-user root
- 如果你想切换回用户模式,可以用下面的命令在cmd或者powershell的管理员模式来进设置;
wsl --shutdown
ubuntu.exe --default-user -u <你的用户名>
- 然后在cmd或者powershell的管理员模式来进入到WSL2里
wsl
- 如果你想进入到你的用户模式的文件夹,输入以下:
cd /home/<你的用户名>
- 参考文献如下:
- TensorFlow GPU不可用,WSL2安装
- WSL Ubuntu22.04默认用户(default用户)更改
- 在WSL2 root 和普通用户的切换
安装 Miniconda3
建议大家安装的时候在/home/<你的用户名>
下面操作,以后装啥都在这里操作,以免遇到问题或者找不到文件啥的。
-
下载最新版的Linux版本miniconda3到文件夹内;
-
wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
-
给予权限;
-
chmod 777 Miniconda3-latest-Linux-x86_64.sh
-
开始安装miniconda3;
-
bash Miniconda3-latest-Linux-x86_64.sh
-
如果出现
conda
不能使用的问题,请参阅文献,vim保存的时候先点击esc
,然后输入:wq!
; -
创建一个你的Python运行环境;
-
conda create -n <你想起的环境名> python==<你想安装的python版本>
-
我的环境是
3.10.13
,py3.10
的最后的稳定版 ; -
一定要先去查看你运行的TensorFlow或者PyTorch兼容哪个Python版本;
-
不建议选择bugfix版本的python,最新的不一定是最好的;
-
激活你的环境;
-
source activate <你的环境名>
-
参考文献如下:
- windows系统下装载wsl2,安装Miniconda3或Anaconda进行生信准备工作
- windows系统下装载wsl2,安装Miniconda3或Anaconda进行生信准备工作
安装 CUDA
- 链接:CUDA的最新版首页
- 按照网站给出的安装指示进行安排即可,没有什么特别麻烦的步骤,就是复制粘贴,一行一行来;
- 记得你应该还在
/home/<你的用户名>
这个目录下,如果不是请cd到那里cd /home/<你的用户名>
; - 你的python环境也是应该被激活的,看看wsl命令行前面有没有
(<你的环境名>)
;
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.3.2/local_installers/cuda-repo-wsl-ubuntu-12-3-local_12.3.2-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-12-3-local_12.3.2-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-12-3-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-3
- 注意看好了你装的是什么版本的。截止到2024年1月份,Linux版本的CUDA更新到12.3,如果你想安装12.3版本就按照我的来;如果你装的时候已经变成12.5或者13.x了,请自行复制粘贴官网的安装命令;
- 具体安装过程我就不贴出来了,参考文献里面博主写得很详细,耗时大约10分钟左右,看你的网速多快了。一共要下载3G多文件;
- 参考文献如下:
- TensorFlow GPU不可用,WSL2安装
安装 cuDNN
- 记得你应该还在
/home/<你的用户名>
这个目录下,如果不是请cd到那里cd /home/<你的用户名>
; - 你的python环境也是应该被激活的,看看wsl命令行前面有没有
(<你的环境名>)
; - 现在我们试试
nvidia-smi
是否已经能看到你的nVidia的相关信息;
- 重新安装一遍cudatoolkit;
conda install -c conda-forge cudatoolkit=11.8.0
- 这里我装的cudnn是最新版的
8.9.6.50
,在Windows的时候我的LSTM代码只能用这个版本才能运行,不知道为什么;
pip install nvidia-cudnn-cu11==8.9.6.50 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
- 安装完成后配置环境
CUDNN_PATH=$(dirname $(python -c "import nvidia.cudnn;print(nvidia.cudnn.__file__)"))
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/:$CUDNN_PATH/lib
- 自动配置
mkdir -p $CONDA_PREFIX/etc/conda/activate.d
echo 'CUDNN_PATH=$(dirname $(python -c "import nvidia.cudnn;print(nvidia.cudnn.__file__)"))' >> $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/:$CUDNN_PATH/lib' >> $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
- 具体参考文献:
- TensorFlow GPU不可用,WSL2安装
安装 TensorFlow 库
- 记得你应该还在
/home/<你的用户名>
这个目录下,如果不是请cd到那里cd /home/<你的用户名>
; - 你的python环境也是应该被激活的,看看wsl命令行前面有没有
(<你的环境名>)
; - 安装tensorflow其实挺straight forward的,因为我们已经把前面需要的dependencies都搞定了;
pip install tensorflow==<你想装的版本>
我目前用的是的是==2.15.0
版;- 然后测试一下我们有没有设置成功;
python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
的字样已经体现,如果返回的结果只是[ ]
空白的,说明未成功,可以回去排查一下哪里出现了问题,或者说安装的不够严谨。- 关于
Your kernel may have been built without NUMA support.
的提示,可以忽略,StackOverflow上有人问过这个问题,已解决。 - 参考文献:
- TensorFlow GPU不可用,WSL2安装
- Your kernel may have been built without NUMA support.。
安装 TA-Lib 库
TA-Lib库是数据技术分析的主要运行库之一,非常好用,但是吧,它是C语言编译的,没有办法普通pip install
来安装。
- 记得你应该还在
/home/<你的用户名>
这个目录下,如果不是请cd到那里cd /home/<你的用户名>
; - 你的python环境也是应该被激活的,看看wsl命令行前面有没有
(<你的环境名>)
; - 准备工作
sudo apt-get install aptitude
sudo apt install build-essential
sudo apt install python3-dev
sudo apt install automake
sudo apt install libtool
- 安装TA-Lib
git clone https://github.com/TA-Lib/ta-lib.git
cd ta-lib
sudo chmod u+x autogen.sh
./autogen.sh
./configure --prefix=/usr
make
sudo make install
pip install TA-Lib
- 参考文献:
- Win11+WSL2+Ubuntu22.04LTS+TA-Lib
安装其它CQF及金融量化相关的库
这个安装列表是我自己整理出来的,有一定的个人偏好,可以自行修改增减。
- 你的python环境也是应该被激活的,看看wsl命令行前面有没有
(<你的环境名>)
; pip install akshare backtrader tushare pywencai qstock py-vollib
pip install scipy statsmodels tabulate taichi scikit-learn pymysql sqlalchemy
pip install networkx pandas-ta cufflinks sympy plotly seaborn pyecharts pyfinance yfinance
pip install lightgbm catboost xgboost shap boruta
- 安装Jupyter及其相关插件,
- 这里不要修改,目前notebook7版本与插件不兼容,
- 这个配搭是一套完美的配搭组合,
pip install notebook==6.4.6 jupyter traitlets==5.9.0
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user
jupyter notebook --generate-config