古老的tensorflow项目移植的坑

简介

我只想说用tensorflow搞好的老项目,没事!!!千万!!!别动它的环境!
事情是这样的,本来这个服务是部署在我们本地服务器的。
但是甲方由于各种原因(速度和安全)要把这个用tensorflow写的计算接口移植到甲方服务器上。
我本来以为把docker直接打包个镜像就过去了,但是事实告诉我你想多了!

灾难来了

由于项目比较古老(之前还有用caffe做的),我本地服务器配置如下:

Cuda:9.0
Cudnn:7.5
python:3.6
tensorflow:1.10-gpu
显卡:1080ti

甲方让我给配置单,不出意外的情况下出意外了,我特意强调一定30以下的显卡结果买的是3080ti,哎无语!!!!那咋整干吧!所以遇到了一下问题:

  1. 由于30以上的显卡采用了全新的架构所以最低cuda版本为11(30以下显卡是老架构)。
  2. cuda11以上这就导致了必须使用tensorflow2.5以上,众所周知tensorflowv1和v2简直就是两个东西!
  3. 最致命的来了tensorflow2.5以上不仅pyhon3.9并且keras要用最新的!

我本着侥幸心理将打包好的docker镜像加载之后,果不其然因为虽然是虚拟环境,但是用的还是主机显卡,所以cuda9装好了也是缺少各种东西不能调用!。
于是老老实实的重新建立docker容器,环境如下:

Cuda:11.0
Cudnn:8.5
python:3.9
tensorflow:2.5-gpu
显卡:3080ti

看起来是不是十分完美,但是代码运行报错。
在我不断地修改下,发现错误的源头居然是keras!!!,回想起来当时项目还是在tensorflow最牛逼的时候,当时tensorflow-keras配合起来就是王炸!
由于维护的问题模型加载有个东西是用了keras2.0.8才有这个功能,此刻我已经要死了!keras2.0.8必须要用tf1.10左右的版本!
搞了三天最终得出结论这是死结,没法破!
最后找到了一个tensorflow1.15版本,这个版本是维护的最后一个版本,同时也做了很多兼容可以用keras2.0.8,但是显卡就是用不了,无奈和甲方沟通,最后用cpu版本,测试下来速度大差不差(任务简单),就这样的解决了。

总结

对于古老的tensorflow项目,千万别动,如果要动一定注意显卡版本,对于代码用老框架的可以用tensorflow1.15版本,这是做了最后优化兼容的版本,如果这个不行那么就别挣扎了。如果纯tensorflow代码可以用工具直接转化新版本,但是如果和keras搭配使用,那么只能祝你好运,大概率要重构模型了哈哈哈哈!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值