所用命令简述
# 安装 TensorFlow 和 Pytorch
conda create --name tftorch python=3.6
conda activate tftorch
pip install tensorflow==2.2.0 # 耗时:10min,或使用清华镜像以提升安装包下载速度,耗时 1~2min,命令:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==2.2.0
pip show tensorflow
pip install --upgrade tensorflow-probability==0.10.1
conda install pytorch==1.5.1 torchvision==0.6.1 cudatoolkit=10.1 -c pytorch # 耗时:1~2min
# 运行FVD代码所需的其它包
pip install --upgrade tensorflow-hub
pip install tensorflow-gan
conda install av -c conda-forge # import av
pip install tqdm # from tqdm import tqdm
—————— 以下,详细记录、描述 ————————
起因(Motivation):
因为要使用的代码需要TensorFlow,而原本代码是基于PyTorch的,所以正在研究哪些TensorFlow和PyTorch版本可以兼容。
网上找到的一个CSDN的Blog说要先安装TensorFlow-gpu,再安装PyTorch,否则会报错,且提供了一个兼容版本的例子。但对我而言这些信息还不够,因为我需要找的版本要既能兼容TensorFlow又能让原有的使用PyTorch的代码顺利运行。
考虑到这种env安装试错成本太高,最好一次性成功,不然可能都不知道是当前操作出错还是之前的遗留问题没解决干净,然后脑壳爆炸。再考虑到现在的计算机视觉+深度学习的代码主要就是用这两个框架,可能也有其它人因为各种原因被迫同时使用这两个框架。所以在这里写个Blog,详细记录一下怎么一步步准备,然后尽量一次性解决。也方便以后可能的重复安装。
状态:已完成
记录
一、当前计算机条件
1.1 当前使用的代码环境(env)
Name | Version | Build |
---|---|---|
python | 3.6.12 | h5500b2f_2 |
pytorch | 1.5.1 | py3.6_cuda92_cudnn7_0 |
cudatoolkit | 9.2 | 0 |
numpy | 1.19.5 | pypi_0 |
numpy-base | 1.19.2 | # ?不知道这是啥 # py36ha3acd2a_0 |
- 注-1:pytorch及其cudatoolkit等套件的安装命令:
conda install pytorch==1.5.1 torchvision==0.6.1 cudatoolkit=9.2 -c pytorch
- 注-2:貌似也有说是tensorflow对numpy版本有要求,所以这里也关注一下numpy。
1.2 电脑的硬件环境
CUDA 11.6.99 - 是之前刚下载的最新版cudatoolkit, 可向下兼容。查找方法是按百度找的一个网站弄的。稍有不同的是我电脑右下角NVIDA图标右键就可以看到"NVIDA控制面板",我直接点进去就可以了,省了之前几步。
二、关于TensorFlow和Pytorch对应版本对照查找
- PyTorch官网 - 用conda安装根据其安装命令推断可接受的CUDA环境
- 发现pytorch 1.5.1 可以接受cudatoolkit 9.2,10.1和10.2
- CSDN的某个Blog
- 发现 tensorflow_gpu-2.3.0,2.2.0,2.1.0都可接受CUDA 10.1
- TensorFlow官网 - 用pip安装
- 据说(依旧tf官网)对于“1.15 及更早版本,CPU 和 GPU 软件包是分开的”,所以就像TensorFlow2推荐的pip安装命令网页内“下载软件包”右边显示的那三个安装相关的命令一样,安装命令应该不需要额外提及
-gpu
。 - 官网的tf对应表:含tensorflow、python、cudnn、cuda等版本对应关系。
- 据说(依旧tf官网)对于“1.15 及更早版本,CPU 和 GPU 软件包是分开的”,所以就像TensorFlow2推荐的pip安装命令网页内“下载软件包”右边显示的那三个安装相关的命令一样,安装命令应该不需要额外提及
综上,决定尝试tensorflow_gpu-2.3.0,CUDA 10.1,pytorch 1.5.1。其相关命令收集如下:
# CUDA 10.1 - for Linux and Windows
# TensorFlow
pip install tensorflow==2.3.0
# PyTorch
conda install pytorch==1.5.1 torchvision==0.6.1 cudatoolkit=10.1 -c pytorch
三、尝试配置env
计划 - 简述
1)先用conda新建一个环境
2)安装TensorFlow2.3.0
3)安装PyTorch及相关cuda套件
计划 - 实施记录
1)先用conda新建一个环境,python=3.6,命令:conda create --name tftorch python=3.6
,而后激活环境命令conda activate tftorch
。
—— conda对大小写不敏感,最起码环境名称可以随意大小写,activate时都会指向同一环境。
—— 提前准备其它可能用到的相关conda命令:
conda env list # 查看已有虚拟环境(env)
conda list # 查看当前激活的env的安装模块有哪些
# conda list的相关拓展
conda list python # 查看特定安装包(此处为python)的信息,如其版本
conda list -n gan_vae python # 查看"指定env(此处为gan_vae)"的python版本
conda install -n gan_vae XX # 可以安装XX模块到"指定env",若无"-n gan_vae",则安装到当前激活的环境中去。
conda deactivate # 退出激活环境
conda env remove -n 环境名称 # 删除"环境名称"对应的虚拟环境
conda create -n new-env-name --clone old-env-name # 复制"old-env-name"对应的虚拟环境
conda clean -p # 清除缓存,一时间安装多次时或有用。
# 如安装到一半时中断,那下载了一半的pkgs是否会被作为缓存清除?
# 无所谓,下一句应该可以直接将那种下载了一半的pkgs都给清除了。
conda clean -y --all # 删除pkgs目录下所有的无用安装包及cache
2)安装TensorFlow2.3.0,命令如上(“二”内末尾所示:pip install tensorflow==2.3.0
)
- 下载安装耗时情况记录)
- 主要部分:342.5MB,下载耗时:10 分钟(min)。需要一直盯着,最好别做其它事情,不然容易莫名其妙中断。
- 其它部分:零零散散的,下载及最后的安装花了3~4min左右。
- 下载时网速几百KB/s到一点几MB/s,大多是在八九百KB/s范围浮动。
- 验证是否安装成功:
- pip命令
pip show tensorflow
,成功 - python的import命令,报错如下:
2022-04-16 18:04:07.009531: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found 2022-04-16 18:04:07.009983: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
- 查找原因,说是tensorflow版本过高,导致与python的版本不对应。
- 卸载tensorflow后(
pip uninstall tensorflow
),尝试安装2.1.0命令pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==2.1.0
- 下载安装耗时:1~2min,清华镜像源,666。主要部分 356.5MB+其它零散部分。
- 结果:失败。具体:下载tensorflow 2.1.0 还是报原本警告。
- 猜测:可能是cuda还没安装的缘故。因为tensorflow2把cpu和gpu放一块,如果没检测到gpu,可能就会使用cpu。
- 根据上述猜测,重新尝试:安装回tensorflow 2.3.0,然后安装cuda和PyTorch,再import tensorflow,看看会不会有该警告。
- 另外,在重新安装、删除 tensorflow 2.1.0 时发现,用
conda list tensorflow
发现仅用conda uninstall tensorflow
没删干净,所以用pip uninstall XX
把list出的tensorflow相关安装包逐个删除了。 - 重新安装tensorflow 2.3.0时用原本的安装命令
pip install tensorflow==2.3.0
,但无需重新下载,直接用cache内的内容。不过,如果用了conda clean -y -a
就说不定了。 - 结果:成功。
import tensorflow
后的print:2022-04-16 19:01:59.126602: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudart64_101.dll
- 另外,在重新安装、删除 tensorflow 2.1.0 时发现,用
- 卸载tensorflow后(
- pip命令
3)安装PyTorch及相关cuda套件,命令如(“二”内末尾所示:conda install pytorch==1.5.1 torchvision==0.6.1 cudatoolkit=10.1 -c pytorch
)
- 安装耗时:1~2min? 没注意。
- 安装成功:两个都能够
import
而无错:import tensorflow
和import torch
。- 由于pytorch的安装还涉及了cuda等部分,所以找了一个CSDN的Blog,按上面的方式检查了一遍。发现没有问题。
四、汇总
1)当前env -n tftorch的一些安装包版本信息
—— 与“一、”的信息对应、对比一下。
Name | Version | Build |
---|---|---|
python | ||
pytorch | 1.5.1 | |
cudatoolkit | ||
numpy | pypi_0 | |
numpy-base | 1.19.2 | # ?不知道这是啥 # py36ha3acd2a_0 |
tensorflow | 2.3.0 | pypi_0 |
tensorflow-estimator | 2.3.0 | pypi_0 |
五、下一步
分别尝试运行使用tensorflow的新添代码和使用PyTorch的原本代码,检查效果。
- 运行新代码还需安装的包:tensorflow-hub和tensorflow-gan。
- 安装命令:
pip install --upgrade tensorflow-hub pip install tensorflow-gan pip install --upgrade tensorflow-probability==0.11.1
- 注意:安装tf-gan时自动安装了最新版本的 tensorflow-probability。它与tensorflow 2.3.0有兼容问题,所以需要退回到可兼容的版本。查看官网找到0.11.0和0.11.1版本可兼容tensorflow 2.3.0。
感想
完成后回顾,发现比我弄之前想的容易多了,累积花了我大概3~4个小时。我是边写Blog记录信息,边查找处理的。这么想来,把写Blog当作记笔记,在处理这种需要的关键比较琐碎的事情上还蛮有帮助的。(最开始是想着,反正在哪儿不是记,这儿还帮忙管理,容易找)。也应该还有tensorflow和pytorch把它们包的安装搞得越来越好了的缘故。反正比我当初弄conda+pytorch时轻松多了。开心😊。
后记
因为tensorflow2.3版本不支持算力5.2以下的英伟达显卡,否则报错。所以把tf换成2.2.0了。
- 替换成2.2.0的命令:
pip install tensorflow==2.2.0
,运行时会自动uninstall并替换掉已存在的TensorFlow和tensorflow-estimator版本,比之前降级成2.1.0时的先逐个package uninstall再安装的方式更方便。或许在install
后面再加上--upgrade
命令会更好?- 相应的 TensorFlow Probability 版本:0.10.1,0.10.0。命令:
pip install --upgrade tensorflow-probability==0.10.1
。同样,这个版本变换也不需要uninstall,这样反而更好,install命令会自动寻找需要替换的packages(这里有两个要替换的,之前tensorflow也是有两个要替换的,自己uninstall反而容易遗漏,搞错)。- tf版本降级后,使用tensorflow_hub.load()可能报错:
OSError: SavedModel file does not exist at: C:\Users\ASUS\AppData\Local\Temp\tfhub_modules\092225fb776e28d6d64ac605ab6be03f18dd2027/{saved_model.pbtxt|saved_model.pb}
- 对此,删除文件夹
092225fb776e28d6d64ac605ab6be03f18dd2027
并重新运行hub.load()即可。- 其可能原因是之前tf=2.3.0时下载的model和其trained weights不适应新版本。网上找到的该问题的相关问答。
- 重新运行 hub.load()时,遇到
urllib.error.URLError:
,使用VPN翻墙后访问网站下载成功。
- 相应的 TensorFlow Probability 版本:0.10.1,0.10.0。命令:
- 报错如下红框所示:
后后记
又在另一个Linux系统设置了一波虚拟环境,这次使用更高版本的 TensorFlow(TF) 和 PyTorch(Py),发现:TF 和 Py 似乎向上兼容 cuda,cudnn 等包?即,它们官网显示的都是可兼容的 cuda、cudnn 等的最低版本。因为此时系统自带的 CUDA=11.7,远高于其内置的 TF 和 Py 版本所对应的 CUDA 版本。
另外,之所以使用更高版本,是因为遇到了类似“后记”内报错图中类似的错误(RuntimeError: CUDA error: no kernel image is available for execution on the device
)。该错误和上图的最后一句的后半部分基本一样,让我怀疑可能又是GPU和包版本不匹配造成的。而某网站内最后的解决方法也是将pytorch版本从 1.7.1 升级到 1.8.0 就解决了,佐证了我的猜测。而后我弄了个更高版本的 PyTorch 和 TensorFlow,问题果然就解决了。