日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

记录之使用3080ti运行tensorflow-gpu=1.x版本的源码

發布時間:2024/4/18 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 记录之使用3080ti运行tensorflow-gpu=1.x版本的源码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

環境:Anaconda3,ubuntu18.04,RTX3080ti,python3.7

RTX3080ti顯卡是當前市面上比較新的,算力比較強的顯卡,且這類顯卡采用了安培架構僅支持cuda11.x及以上版本。關于tf-gpu,cuda,cudnn間的對應關系,我們可以查看:從源代碼構建 ?|? TensorFlow
關于驅動和cuda,cudnn的對應關系,我們可以查看:Release Notes :: CUDA Toolkit Documentation
?

##問題1:我的30系列卡的驅動為450.x.x或更高,按照向下兼容的道理,那我是不是可以使用cuda10.x?

正常答案是不能,因為正常情況下30系列的卡只支持cuda11.x(非正常的答案也有,不過安裝起來比較麻煩,這里我們只討論正常情況,下面會給出這種情況的鏈接)。這個問題也是困擾我的問題,因為我一直秉持著向下兼容的道理,相信我的3080ti支持cuda10.x,我在幾次測試時發現,行不通。我們都知道,在使用conda安裝tf-gpu的時候,會自動安裝對應的cudatoolkit和cudnn,這也著實為我們省了不少麻煩。但是在安裝時發現conda可以search到的最高tensorflow-gpu版本為2.4.1,而其對應的cudatoolkit是10.1.183,這種辦法裝好的環境,在使用tf.test.is_gpu_avaliable()時打印出的是True,但在實際跑代碼時,會卡在奇怪的地方:

然后報最下面的一行錯,可以看到,cuda和cudnn雖正常打開,但是并沒辦法使用,就是因為30系列的卡只支持cuda11.x,這也就意味低于tf-gpu=2.x版本的代碼是不能運行的,tf-gpu=1.x的版本更不可以。怎么解決呢,繼續看問題2和3。
PS:非正常情況,因為Geogle不再維護tf1.x,但是Nvidia公司有在維護一款tf-gpu=1.15.x,且可以運行在30系列的卡,該方法需要科學上網和指定的ubuntu版本(ubuntu20.x),因此我就沒有嘗試,有興趣的可以一試,鏈接:
https://blog.csdn.net/wu496963386/article/details/109583045

##問題2:我虛擬環境中的tensorflow-gpu如果不使用conda自動安裝的cudatoolkit和cudnn,直接使用大環境的CUDA和cudnn(前提是你的大環境已經配置好)?

答案是可以,因為conda可以search到的最高tensorflow-gpu版本為2.4.1,而其對應的cudatoolkit是10.1.183,我們的30卡不可以直接用。由于該tf-gpu和cudatoolkit,cudnn是捆綁安裝的,且卸載的時候是捆綁卸載的,所以我們不能使用conda來裝tf-gpu了。將原來conda裝的tf-gpu卸載,會一并卸載cudatoolkit和cudnn。如果環境中沒有cudatoolkit和cudnn,就會使用大環境中的cuda和cudnn,使用pip在虛擬環境中安裝tf-gpu,由于我的大環境cuda版本為11.2,因此我下載了tf-gpu=2.6.1。不少同學會問,可是我的代碼時1.x的怎么辦,接著看問題3。

##問題3:tf2.x和tf1.x相比,很多函數都變了,也舍棄了很多函數,怎么辦?

根據問題1,我們已經知道,tf-gpu=1.x的版本正常是無法在30系列的卡上運行的,想調顯卡就必須使用tf-gpu=2.x,因此我們需要針對修改源碼,以讓其在tf-gpu=2.x下運行,主要涉及的改動:

1.在import tensorflow 時使用:

import tensorflow.compat.v1 as tf ### tf.disable_v2_behavior()

這種方式import的tf不包含contrib,因為tf2.x丟棄了這個包

2.一些使用contrib包的初始化方式及函數:

tf1.x: tf.contrib.layers.xavier_initializer()-->tf2.x: tf.keras.initializers.glorot_normal()

tf1.x: tf.contrib.layers.l2_regularizer(0.01)) -->tf2.x: tf.keras.regularizers.l2(0.01))

?大家在修改時,要根據出現的報錯修改,改動應該不會涉及太多。


最后給大家說一下,我當前的配置:Nvidia-driver:465.31,tf-gpu=2.6.1,cuda=11.2(11.2.142), cudnn=8.1.1

最后還有一個問題:根據從源代碼構建 ?|? TensorFlow這里查詢到的tf-gpu=2.4.0應該是搭配cuda=11.0的,為什么conda里會搭配cudatoolkit=10.1.x呢?應該是該網址給出的是已知能用的搭配,并不是所有搭配,想嘗試conda這組搭配可不可行的,可以使用20系列顯卡,安裝搭配cuda10.1的驅動。

總結

以上是生活随笔為你收集整理的记录之使用3080ti运行tensorflow-gpu=1.x版本的源码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。