# 安装 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
—————— 以下,详细记录、描述 ————————
因为要使用的代码需要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 |
conda install pytorch==1.5.1 torchvision==0.6.1 cudatoolkit=9.2 -c pytorch
1.2 电脑的硬件环境
CUDA 11.6.99 - 是之前刚下载的最新版cudatoolkit, 可向下兼容。查找方法是按百度找的一个网站弄的。稍有不同的是我电脑右下角NVIDA图标右键就可以看到"NVIDA控制面板",我直接点进去就可以了,省了之前几步。
-gpu
。综上,决定尝试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
计划 - 简述
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
)
pip show tensorflow
,成功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.
pip uninstall tensorflow
),尝试安装2.1.0命令pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==2.1.0
conda list tensorflow
发现仅用conda uninstall tensorflow
没删干净,所以用pip uninstall XX
把list出的tensorflow相关安装包逐个删除了。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
3)安装PyTorch及相关cuda套件,命令如(“二”内末尾所示:conda install pytorch==1.5.1 torchvision==0.6.1 cudatoolkit=10.1 -c pytorch
)
import
而无错:import tensorflow
和import torch
。
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的原本代码,检查效果。
pip install --upgrade tensorflow-hub
pip install tensorflow-gan
pip install --upgrade tensorflow-probability==0.11.1
完成后回顾,发现比我弄之前想的容易多了,累积花了我大概3~4个小时。我是边写Blog记录信息,边查找处理的。这么想来,把写Blog当作记笔记,在处理这种需要的关键比较琐碎的事情上还蛮有帮助的。(最开始是想着,反正在哪儿不是记,这儿还帮忙管理,容易找)。也应该还有tensorflow和pytorch把它们包的安装搞得越来越好了的缘故。反正比我当初弄conda+pytorch时轻松多了。开心。
因为tensorflow2.3版本不支持算力5.2以下的英伟达显卡,否则报错。所以把tf换成2.2.0了。
pip install tensorflow==2.2.0
,运行时会自动uninstall并替换掉已存在的TensorFlow和tensorflow-estimator版本,比之前降级成2.1.0时的先逐个package uninstall再安装的方式更方便。或许在install
后面再加上--upgrade
命令会更好?
pip install --upgrade tensorflow-probability==0.10.1
。同样,这个版本变换也不需要uninstall,这样反而更好,install命令会自动寻找需要替换的packages(这里有两个要替换的,之前tensorflow也是有两个要替换的,自己uninstall反而容易遗漏,搞错)。
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()即可。
urllib.error.URLError:
,使用VPN后访问网站下载成功。又在另一个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,问题果然就解决了。