通过WSL2来实现Windows10/11的深度学习模型GPU加速,TensorFlow项,Jupyter及其插件安装,CQF心得,金融量化

通过WSL2来实现TF的GPU加速

为什么要用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

  1. 我的Windows10是22H2版本的,超过这个版本应该都适用。据官方给出来的答案是从1903版开始可以正常安装使用WSL2, 请提前做好功课;
  2. 通过cmd或者powershell的管理员模式来进行安装wsl2,现在默认的版本是ubuntu2204LTS版;
  3. wsl --install -d ubuntu
  4. 安装好之后可以设置以什么身份来登录WSL2,建议用root来登录,省去很多麻烦;
  5. wsl --shutdown
  6. ubuntu.exe --default-user root
  7. 如果你想切换回用户模式,可以用下面的命令在cmd或者powershell的管理员模式来进设置;
  8. wsl --shutdown
  9. ubuntu.exe --default-user -u <你的用户名>
  10. 然后在cmd或者powershell的管理员模式来进入到WSL2里
  11. wsl
  12. 如果你想进入到你的用户模式的文件夹,输入以下:
  13. cd /home/<你的用户名>
  14. 参考文献如下:

安装 Miniconda3

建议大家安装的时候在/home/<你的用户名>下面操作,以后装啥都在这里操作,以免遇到问题或者找不到文件啥的。

  1. 下载最新版的Linux版本miniconda3到文件夹内;

  2. wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh

  3. 给予权限;

  4. chmod 777 Miniconda3-latest-Linux-x86_64.sh

  5. 开始安装miniconda3;

  6. bash Miniconda3-latest-Linux-x86_64.sh

  7. 如果出现conda不能使用的问题,请参阅文献,vim保存的时候先点击esc,然后输入:wq!;

  8. 创建一个你的Python运行环境;

  9. conda create -n <你想起的环境名> python==<你想安装的python版本>

  10. 我的环境是3.10.13,py3.10的最后的稳定版 ;

  11. 一定要先去查看你运行的TensorFlow或者PyTorch兼容哪个Python版本;

  12. 不建议选择bugfix版本的python,最新的不一定是最好的;

  13. 激活你的环境;

  14. source activate <你的环境名>

  15. 参考文献如下:

安装 CUDA

  1. 链接:CUDA的最新版首页
  2. 按照网站给出的安装指示进行安排即可,没有什么特别麻烦的步骤,就是复制粘贴,一行一行来;
  3. 记得你应该还在 /home/<你的用户名>这个目录下,如果不是请cd到那里cd /home/<你的用户名>;
  4. 你的python环境也是应该被激活的,看看wsl命令行前面有没有(<你的环境名>);
  5. wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
  6. sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
  7. 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
  8. sudo dpkg -i cuda-repo-wsl-ubuntu-12-3-local_12.3.2-1_amd64.deb
  9. sudo cp /var/cuda-repo-wsl-ubuntu-12-3-local/cuda-*-keyring.gpg /usr/share/keyrings/
  10. sudo apt-get update
  11. sudo apt-get -y install cuda-toolkit-12-3
  12. 注意看好了你装的是什么版本的。截止到2024年1月份,Linux版本的CUDA更新到12.3,如果你想安装12.3版本就按照我的来;如果你装的时候已经变成12.5或者13.x了,请自行复制粘贴官网的安装命令;
  13. 具体安装过程我就不贴出来了,参考文献里面博主写得很详细,耗时大约10分钟左右,看你的网速多快了。一共要下载3G多文件;
  14. 参考文献如下:

安装 cuDNN

  1. 记得你应该还在 /home/<你的用户名>这个目录下,如果不是请cd到那里cd /home/<你的用户名>;
  2. 你的python环境也是应该被激活的,看看wsl命令行前面有没有(<你的环境名>);
  3. 现在我们试试nvidia-smi是否已经能看到你的nVidia的相关信息;
  4. 重新安装一遍cudatoolkit;
  5. conda install -c conda-forge cudatoolkit=11.8.0
  6. 这里我装的cudnn是最新版的8.9.6.50,在Windows的时候我的LSTM代码只能用这个版本才能运行,不知道为什么;
  7. pip install nvidia-cudnn-cu11==8.9.6.50 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
  8. 安装完成后配置环境
  9. CUDNN_PATH=$(dirname $(python -c "import nvidia.cudnn;print(nvidia.cudnn.__file__)"))
  10. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/:$CUDNN_PATH/lib
  11. 自动配置
  12. mkdir -p $CONDA_PREFIX/etc/conda/activate.d
  13. echo 'CUDNN_PATH=$(dirname $(python -c "import nvidia.cudnn;print(nvidia.cudnn.__file__)"))' >> $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
  14. echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/:$CUDNN_PATH/lib' >> $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
  15. 具体参考文献:

安装 TensorFlow 库

  1. 记得你应该还在 /home/<你的用户名>这个目录下,如果不是请cd到那里cd /home/<你的用户名>;
  2. 你的python环境也是应该被激活的,看看wsl命令行前面有没有(<你的环境名>);
  3. 安装tensorflow其实挺straight forward的,因为我们已经把前面需要的dependencies都搞定了;
  4. pip install tensorflow==<你想装的版本> 我目前用的是的是==2.15.0版;
  5. 然后测试一下我们有没有设置成功;
  6. python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
  7. [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]的字样已经体现,如果返回的结果只是[ ]空白的,说明未成功,可以回去排查一下哪里出现了问题,或者说安装的不够严谨。
  8. 关于Your kernel may have been built without NUMA support.的提示,可以忽略,StackOverflow上有人问过这个问题,已解决。
  9. 参考文献:

安装 TA-Lib 库

TA-Lib库是数据技术分析的主要运行库之一,非常好用,但是吧,它是C语言编译的,没有办法普通pip install来安装。

  1. 记得你应该还在 /home/<你的用户名>这个目录下,如果不是请cd到那里cd /home/<你的用户名>;
  2. 你的python环境也是应该被激活的,看看wsl命令行前面有没有(<你的环境名>);
  3. 准备工作
  4. sudo apt-get install aptitude
  5. sudo apt install build-essential
  6. sudo apt install python3-dev
  7. sudo apt install automake
  8. sudo apt install libtool
  9. 安装TA-Lib
  10. git clone https://github.com/TA-Lib/ta-lib.git
  11. cd ta-lib
  12. sudo chmod u+x autogen.sh
  13. ./autogen.sh
  14. ./configure --prefix=/usr
  15. make
  16. sudo make install
  17. pip install TA-Lib
  18. 参考文献:

安装其它CQF及金融量化相关的库

这个安装列表是我自己整理出来的,有一定的个人偏好,可以自行修改增减。

  1. 你的python环境也是应该被激活的,看看wsl命令行前面有没有(<你的环境名>);
  2. pip install akshare backtrader tushare pywencai qstock py-vollib
  3. pip install scipy statsmodels tabulate taichi scikit-learn pymysql sqlalchemy
  4. pip install networkx pandas-ta cufflinks sympy plotly seaborn pyecharts pyfinance yfinance
  5. pip install lightgbm catboost xgboost shap boruta
  6. 安装Jupyter及其相关插件,
  7. 这里不要修改,目前notebook7版本与插件不兼容,
  8. 这个配搭是一套完美的配搭组合,
  9. pip install notebook==6.4.6 jupyter traitlets==5.9.0
  10. pip install jupyter_contrib_nbextensions
  11. jupyter contrib nbextension install --user
  12. pip install jupyter_nbextensions_configurator
  13. jupyter nbextensions_configurator enable --user
  14. jupyter notebook --generate-config

希望这篇博客对您有所帮助

相关推荐
懂点Tech26 分钟前
ctfshow misc28:GIF 高度修改解题与脚本实现
开发语言·windows·python
comedate40 分钟前
SMLib 的 Examples 导读:PyAPI / SM_API / SMLib 三组示例怎么读
python·cad·smlib·examples·sm_api
云和数据.ChenGuang1 小时前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
川石课堂软件测试1 小时前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http
美狐美颜SDK开放平台2 小时前
视频美颜SDK试用DEMO阶段应该测试什么?直播APP接入实操指南
开发语言·人工智能·深度学习·音视频·美颜sdk·直播美颜sdk·第三方美颜sdk
万化冥合2 小时前
PyBox屏幕键盘如何辅助演示键盘操作?
python·计算机外设
车软学堂2 小时前
从测试转开发,到底要补什么
网络·人工智能·python·功能测试·单片机·车载系统·自动化
天空依然蔚蓝2 小时前
分享一个自动检测网站在线状态的python程序
python·运维开发·1024程序员节
岁月宁静2 小时前
一个 AI 项目从本地到上线,要经过哪些步骤?全流程讲清楚
python·docker·agent
codists3 小时前
《crafting interpreters》阅读笔记:p45-p45
python