关于TensorFlow和PyTorch共同安装的兼容版本尝试的记录 - env_name: tftorch

所用命令简述

# 安装 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)

NameVersionBuild
python3.6.12h5500b2f_2
pytorch1.5.1py3.6_cuda92_cudnn7_0
cudatoolkit9.20
numpy1.19.5pypi_0
numpy-base1.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对应版本对照查找

综上,决定尝试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
          

3)安装PyTorch及相关cuda套件,命令如(“二”内末尾所示:conda install pytorch==1.5.1 torchvision==0.6.1 cudatoolkit=10.1 -c pytorch

  • 安装耗时:1~2min? 没注意。
  • 安装成功:两个都能够import而无错:import tensorflowimport torch
    • 由于pytorch的安装还涉及了cuda等部分,所以找了一个CSDN的Blog,按上面的方式检查了一遍。发现没有问题。
四、汇总

1)当前env -n tftorch的一些安装包版本信息
—— 与“一、”的信息对应、对比一下。

NameVersionBuild
python3.6.12 3.6.13h5500b2f_2 h3758d61_0
pytorch1.5.1py3.6_cuda92_cudnn7_0 py3.6_cuda101_cudnn7_0
cudatoolkit9.2 10.1.2430 h74a9793_0
numpy1.19.5 1.18.5pypi_0
numpy-base1.19.2# ?不知道这是啥 # py36ha3acd2a_0
tensorflow2.3.0pypi_0
tensorflow-estimator2.3.0pypi_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翻墙后访问网站下载成功。
  • 报错如下红框所示:
    在这里插入图片描述

后后记

又在另一个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,问题果然就解决了。

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xdhsCS_cv_ml

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值