转移自2021年在简书的笔记
- 我就不该在简书写这些东西,随便发个带链接的指令就锁文章!
- 给自己做一个笔记,在2021年的时候,由于从github上抄了一些旧版代码,结果tensoflow、pytorch+cuda版本的对应问题差点把我搞死,后来慢慢的发现这些都不是问题了,但还是把心得记录一下。
2023.6 结论
- WSL+ubuntu(或者纯ubuntu)可以解决大部分问题,比如ubuntu20.04默认的python3.8下可以支持:
Tensorflow_federated 0.33+TF2.9+cuda11.8
但纯windows只能到TFF的0.17版本。不玩TFF,可以上TF2.11和cuda11.8等很高的版本。
但注意pytorch2当前只支持到cuda11.8,所以不需要搞得太高版本。
2.在windows下,也是建议cuda11.8+cudnn8.8(这个高低一些低一些好像都行),同时可以支持pytorch2和TF2.10,但TFF只能玩0.17版。
TF | Cuda | Cudnn | Keras |
---|---|---|---|
tensorflow2.10.x | cuda11.8.0 | cudnn8.8.0(for cuda11.x) | keras2.10.0 |
需要注意的是: |
- Tensorflow 2.10是最后一个在windows上支持GPU的版本,更高版本的TF在windows上找不到GPU,最好转到ubuntu。
- 这个版本的CUDA在windows上可能出“Could not locate zlibwapi.dll“ 错误,解决方法:
- 下载 http://www.winimage.com/zLibDll/zlib123dllx64.zip
(这个连接来自官方文档[Installation Guide :: NVIDIA Deep Learning cuDNN Documentation)(https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html )
2,里面的zlibwapi.lib文件拷贝到cuda安装目录的lib文件夹,zlibwapi.dll文件拷贝到cuda安装目录的bin文件夹即可,压缩包内别的文件都不用管。
如果不是历史问题,下面的东西不太用看了,不太需要考虑多版本cuda。
-----------------------下面是一些老皇历了--------------------
多版本tensorflow+cuda+cuDNN共存环境
python版本
- python 3.8.10可以支持到tensorflow 2.6(但在wsl上测试,tf2.11也能跑),tf 2.10以上推荐使用python3.9以上。
- TF1建议用pyhton3.6.x,用python3.8.x ,pip install tensorflow==1.x.x 提示找不到对应版本。
之前测试过的的TF+Keras+CUDA版本
TF | Cuda | Cudnn | Keras |
---|---|---|---|
tensorflow1.14 | cuda10.0.x | cudnn7.4.2(for cuda10) | keras2.2.5 |
tensorflow2.3.4 | cuda10.1.x | cudnn7.6.5(for cuda10.1) | keras2.4.3 |
tensorflow2.6.3 | cuda11.2.x | cudnn8.1.1 | keras2.6.0 |
windows玩联邦学习
TTF | TF | 平台 |
---|---|---|
-tensorflow-federated 0.17 | tensorflow2.3.4 | Windows |
tff目前最新版本是0.48,但里面涉及到一些包只支持linux,windows下还没找到好的安装方法。 |
显卡
- 亲测3060不能很好的支持cuda10.1,会卡在莫名其妙的地方。
- 尝试跑了一个非图像的项目,3060比2060只快了7%。不过可能是风扇更大,温度保持在50多度,2060要80度了。
- 显卡驱动,据说 studio版本比game ready的要好,也有人说差不多。
cuda+cudnn多版本切换
- 打开windows的系统环境变量,看到CUDA_PATH这里,根据想用的cuda版本,选择合适的路径。
- 然后在点开path环境变量:
- 最上面四个cuda相关的路径,两个关于10.1,两个关于10.0,用谁就把相应的版本上移。(这个步骤有点玄学,可能没用,但保险)。
- 最后重启pycharm,怕不保险就重启电脑。
- 此外,还有人说要修改NVCUDASAMPLES_ROOT这个环境变量,但目前感觉不用