服务器安装tensorflow踩坑实录

这两天在部署代码到服务器

1.由于数据机密的原因,服务器之前只能在内网使用。为了下载环境了,首先采用的是docker,我做事情从来是不求甚解,尤其是像这种操作、记忆的东西。总觉得没有必要去理解。
2.后来为了方便使用,还是搭载了两台外网服务器。
3.所使用的代码,tensorflow 1.x 版本的书写风格,虽然tensorflow 2.x版本仍然兼容 1.x版本,但有许多函数被弃用。并且如果所运行的tensorflow环境版本太高,经过本地的测试是无法运行的。

首先采用docker方式,因为之前的同学都操作过了。但是第一个问题,原先我在本地代码运行的环境为tensorflow 2.3.0、python 3.7、cudatoolkit 10.1和cudnn 7.6。在docker desktop上所能拉取的tensorflow 官方镜像最低版本为2.14.0。于是尝试下载用户根据自己容器建立的镜像。
首先拉取的镜像是:
tensorflow:2.3.0rc1-gpu-jupyter
映射容器后,为了可视化程序能否运行,又连接IDE,这里选取的是VS Code。在这期间,梯子一直不稳定,卡掉网络好几次(找原因都好几次,一开始以为是docker desktop的原因,后来又以为是vscode"远程连接服务器"的原因,最后才发现是梯子的原因)。最后由于vscode界面崩掉,docker镜像与容器都自删除。
之后尝试新的镜像,发现疑似有古早版本的版本。
又是一波拉取镜像、映射容器。结果一跑连tensorflow都没有。

于是,期望在外网服务器上安装conda环境。按照网上的教程安装anaconda后,再按照在windows本地建立虚拟环境的操作。环境变量如果按照系统指示安装总是会报错安装不下去。之后如果在按照指示环境变量选择"No",再自己配置环境变量后,大多代码都能运行,但使用gpu运行时,两个测试代码。

# --coding: utf8--

import tensorflow as tf

if __name__ == '__main__':
    print('tf version: {}'.format(tf.__version__))
    # print('keras version: {}'.format(tf.keras.__version__))
    # print('GPU: {}'.format(tf.test.is_gpu_available())) # 1.x版本的TF使用此行
    print('GPU: {}'.format(tf.config.list_physical_devices('GPU'))) # 2.x版本的TF使用

import tensorflow as tf

version = tf.__version__
gpu_ok = tf.test.is_gpu_available()
print("tf version:",version,"\nuse GPU",gpu_ok)

第一个可以运行,第二个总是报错
"RuntimeError: CUDA runtime implicit initialization on GPU:0 failed. Status: device kernel image is invalid
"
经过检查,和windows本地的区别仅在conda版本上。并且opencv库一直安装不了,想要直接更新conda版本也是不行。只能重新安装其他的anaconda,去官网下载了最新的版本后再进行安装。之后重复操作,也是不行。
还是同样的报错。
尝试更新版本的tensorflow、更高版本的cudatoolkit、cudnn等。先在本地上部署,tensorflow 2.5.0、python 3.7 、cudatoolkit 11.2 、cudnn 8.1等。tensorflow 2.5.0无法安装,改为 2.6.0版本,直接成功。
再在服务器上,终于运行成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值