मैंने देखा है कि कुछ नए TensorFlow संस्करण पुराने CUDA और cuDNN संस्करणों के साथ असंगत हैं। क्या संगत संस्करणों का अवलोकन या यहां तक कि आधिकारिक रूप से परीक्षण किए गए संयोजनों की सूची मौजूद है? मैं इसे TensorFlow प्रलेखन में नहीं पा सकता।
मैंने देखा है कि कुछ नए TensorFlow संस्करण पुराने CUDA और cuDNN संस्करणों के साथ असंगत हैं। क्या संगत संस्करणों का अवलोकन या यहां तक कि आधिकारिक रूप से परीक्षण किए गए संयोजनों की सूची मौजूद है? मैं इसे TensorFlow प्रलेखन में नहीं पा सकता।
जवाबों:
CUDA संस्करण की जाँच करें:
cat /usr/local/cuda/version.txt
और cuDNN संस्करण:
grep CUDNN_MAJOR -A 2 /usr/local/cuda/include/cudnn.h
और चित्रों में या यहाँ नीचे दिए अनुसार एक संयोजन स्थापित करें ।
निम्नलिखित चित्र और लिंक लिनक्स, मैकओएस और विंडोज पर CUDA और TensorFlow के आधिकारिक तौर पर समर्थित / परीक्षण किए गए संयोजनों का अवलोकन प्रदान करते हैं:
चूंकि कुछ मामलों में नीचे दिए गए विनिर्देश बहुत व्यापक हो सकते हैं, यहां एक विशिष्ट कॉन्फ़िगरेशन है जो काम करता है:
tensorflow-gpu==1.12.0
cuda==9.0
cuDNN==7.1.4
संबंधित cudnn को यहां डाउनलोड किया जा सकता है ।
(आंकड़े 20 मई, 2020 को अपडेट किए गए)
(आंकड़ा 31 मई, 2018 को अपडेट किया गया)
14 जनवरी 2020 तक अपडेट किया गया: अद्यतन जानकारी के लिए कृपया लिनक्स के लिए लिंक और विंडोज के लिए लिंक देखें ।
टेनसफ़्लो साइट में दी गई संगतता तालिका में cuda और cuDNN के लिए विशिष्ट लघु संस्करण नहीं हैं। हालाँकि, यदि विशिष्ट संस्करण नहीं मिले हैं, तो जब आप टेंसरफ़्लो का उपयोग करने का प्रयास करते हैं तो एक त्रुटि होगी।
के लिए tensorflow-gpu==1.12.0
और cuda==9.0
, संगत cuDNN
संस्करण है 7.1.4
, से डाउनलोड किया जा सकता है, जो यहाँ पंजीकरण के बाद।
आप अपने क्यूडा संस्करण का उपयोग करके जांच कर सकते हैं
nvcc --version
cuDNN संस्करण का उपयोग कर
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
उपयोग करते हुए टेंसरफ़्लो-जीपीयू संस्करण
pip freeze | grep tensorflow-gpu
अद्यतन: चूंकि टेंसरफ़्लो 2.0 जारी किया गया है, मैं इसके लिए संगत क्यूडा और cuDNN संस्करणों को (साथ ही उबुन्टु 18.04 के लिए) साझा करूँगा।
tensorflow-gpu
= 2.0.0cuda
= 10.0cuDNN
= 7.6.0यदि आप ज्यूपिटर नोटबुक में कोडिंग कर रहे हैं, और यह जांचना चाहते हैं कि कौन सा क्यूडा संस्करण tf उपयोग कर रहा है, तो सीधे jupyter सेल में कमांड का पालन करें:
!conda list cudatoolkit
!conda list cudnn
और यह जाँचने के लिए कि क्या gpu tf को दिखाई दे रहा है:
tf.test.is_gpu_available(
cuda_only=False, min_cuda_compute_capability=None
)
आप इस कॉन्फ़िगरेशन को cuda 10.0 के लिए उपयोग कर सकते हैं (10.1 3/18 के रूप में काम नहीं करता है), यह मेरे लिए चलता है:
संस्करण टेंसरफ़्लो gpu स्थापित करें:
pip install tensorflow-gpu==1.4.0
मैंने CUDA 10.1 और CUDNN 7.6 को गलती से स्थापित किया था। आप निम्नलिखित विन्यास का उपयोग कर सकते हैं (यह मेरे लिए काम किया - 9/10 के रूप में)। :
लेकिन मुझे इसके लिए सहानुभूति पैदा करनी थी क्योंकि टेंसरफ्लो के रूप में काम करने के लिए मूल रूप से CUDA 10 के साथ काम करता है।
sudo ln -s /opt/cuda/targets/x86_64-linux/lib/libcublas.so /opt/cuda/targets/x86_64-linux/lib/libcublas.so.10.0
sudo cp /usr/lib/x86_64-linux-gnu/libcublas.so.10 /usr/local/cuda-10.1/lib64/
sudo ln -s /usr/local/cuda-10.1/lib64/libcublas.so.10 /usr/local/cuda-10.1/lib64/libcublas.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcusolver.so.10 /usr/local/cuda/lib64/libcusolver.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcurand.so.10 /usr/local/cuda/lib64/libcurand.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcufft.so.10 /usr/local/cuda/lib64/libcufft.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcudart.so /usr/local/cuda/lib64/libcudart.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcusparse.so.10 /usr/local/cuda/lib64/libcusparse.so.10.0
और निम्नलिखित को मेरी ~ / .bashrc में जोड़ें -
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/cuda/targets/x86_64-linux/lib/
मुझे TF 2.0 में अपग्रेड करने के बाद भी ऐसी ही समस्या थी। CUDA संस्करण जो कि TF रिपोर्ट कर रहा था, वह उस मिलान से मेल नहीं खाता जो Ubuntu 18.04 ने सोचा था कि मैंने स्थापित किया है। यह कहा कि मैं CUDA 7.5.0 का उपयोग कर रहा था, लेकिन मुझे लगा कि मेरे पास सही संस्करण स्थापित है।
क्या मैं अंत में करना था ग्रेप रिकर्सिवली में था /usr/local
के लिए CUDNN_MAJOR
, और मैंने पाया कि /usr/local/cuda-10.0/targets/x86_64-linux/include/cudnn.h
वास्तव में के रूप में संस्करण निर्दिष्ट किया 7.5.0
।
/usr/local/cuda-10.1
यह सही है, और /usr/local/cuda
बताया /usr/local/cuda-10.1
, तो यह था (और रहता है) मेरे लिए एक रहस्य है कि TF क्यों देख रहा था /usr/local/cuda-10.0
।
वैसे भी, मैं सिर्फ इसलिए टीएफ /usr/local/cuda-10.0
को ले गया , /usr/local/old-cuda-10.0
इसे कोई और नहीं मिला और सब कुछ फिर एक आकर्षण की तरह काम किया।
यह सब बहुत निराशाजनक था, और मुझे अभी भी लगता है जैसे मैंने एक यादृच्छिक हैक किया था। लेकिन इसने काम किया :) और शायद यह इसी तरह के मुद्दे के साथ किसी को मदद करेगा।