Kombinasi versi TensorFlow dan CUDA mana yang kompatibel?

170

Saya perhatikan bahwa beberapa versi TensorFlow yang lebih baru tidak kompatibel dengan versi CUDA dan cuDNN yang lebih lama. Apakah ada gambaran umum tentang versi yang kompatibel atau bahkan daftar kombinasi yang diuji secara resmi? Saya tidak bisa menemukannya di dokumentasi TensorFlow.

benar
sumber
2
Semua persyaratan diberikan dengan petunjuk penginstalan , bagian yang disebut " Persyaratan NVIDIA untuk menjalankan TensorFlow dengan dukungan GPU ".
P-Gn
11
Pertanyaannya adalah membahas kompatibilitas dan kombinasi yang (secara resmi) diuji, yang menurut saya, tidak diberikan dalam petunjuk pemasangan. Juga, saya tidak dapat menemukan bagian yang Anda maksud. Pengamatan ini menghasilkan pandangan saya secara keseluruhan bahwa informasi yang diminta sulit ditemukan dan oleh karena itu membenarkan pemberian akses mudah ke tautan yang diposting dalam jawaban.
benar
Anda akan menemukan bahwa versi CUDA dan cuDNN pada halaman yang Anda sebutkan cocok dengan salah satu petunjuk instalasi.
P-Gn
Untuk menemukan petunjuk penginstalan, buka halaman yang saya tautkan di atas lalu ikuti link untuk OS Anda.
P-Gn
1
Oh, saya mengerti maksud Anda - mencoba melihat versi tensorflow mana yang cocok dengan kombinasi CUDA / cuDNN tertentu. Anda dapat menelusuri catatan rilis TF tetapi tabel yang Anda tautkan memang merupakan ringkasan yang bagus.
P-Gn

Jawaban:

246

TL; DR ) Lihat tabel ini: https://www.tensorflow.org/install/source#gpu

Umumnya:

Periksa versi CUDA:

cat /usr/local/cuda/version.txt

dan versi cuDNN:

grep CUDNN_MAJOR -A 2 /usr/local/cuda/include/cudnn.h

dan pasang kombinasi seperti yang diberikan di bawah ini pada gambar atau di sini .

Gambar dan tautan berikut memberikan ikhtisar tentang kombinasi CUDA dan TensorFlow yang didukung / teruji secara resmi di Linux, macOS, dan Windows:

Konfigurasi kecil:

Karena spesifikasi yang diberikan di bawah dalam beberapa kasus mungkin terlalu luas, berikut adalah satu konfigurasi khusus yang berfungsi:

  • tensorflow-gpu==1.12.0
  • cuda==9.0
  • cuDNN==7.1.4

Hasil yang sesuai dapat diunduh di sini .

Konfigurasi build yang diuji

Silakan merujuk ke https://www.tensorflow.org/install/source#gpu untuk grafik kompatibilitas terbaru (untuk roda TF resmi).

(angka diperbarui 20 Mei 2020)

GPU Linux

masukkan deskripsi gambar di sini

Linux

masukkan deskripsi gambar di sini

macOS GPU

masukkan deskripsi gambar di sini

macOS

masukkan deskripsi gambar di sini

(angka diperbarui 31 Mei 2018)

Windows

masukkan deskripsi gambar di sini

Diperbarui pada 14 Jan 2020: Untuk informasi terbaru, silakan lihat Tautan untuk Linux dan Tautan untuk Windows .

benar
sumber
1
Saya menyadari bahwa TensorFlow versi <1.0 telah dikecualikan dari ringkasan. Apakah ada yang tahu di mana menemukan daftar yang sama untuk versi yang lebih lama?
benar
2
Sepertinya mereka tidak menentukan versi minor untuk cuda dan cudnn,
mrgloom
1
PEMBARUAN: menguji TF-GPU 1.12, Windows 10, CUDA 9.0, CuDNN 7.3.1, Python 3.6.6
mjaniec
2
Jangan perbarui angkanya, tautan ke dokumentasi. Tautan berubah lebih jarang daripada tabel
Trylks
1
@ Fábio: Memperbarui jawaban Anda dengan Tautan Terbaru sesuai permintaan Anda.
Dukungan Tensorflow
28

Tabel kompatibilitas yang diberikan di situs tensorflow tidak berisi versi minor tertentu untuk cuda dan cuDNN. Namun, jika versi tertentu tidak terpenuhi, akan ada kesalahan saat Anda mencoba menggunakan tensorflow.

Untuk tensorflow-gpu==1.12.0dan cuda==9.0, cuDNNversi yang kompatibel 7.1.4, yang dapat diunduh dari sini setelah pendaftaran.

Anda dapat memeriksa versi cuda Anda menggunakan
nvcc --version

versi cuDNN menggunakan
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2

versi tensorflow-gpu menggunakan
pip freeze | grep tensorflow-gpu

UPDATE: Sejak tensorflow 2.0, telah dirilis, saya akan membagikan versi cuda dan cuDNN yang kompatibel untuk itu juga (untuk Ubuntu 18.04).

  • tensorflow-gpu = 2.0.0
  • cuda = 10.0
  • cuDNN = 7.6.0
Atul Balaji
sumber
2
Jawaban Anda sangat berguna. Seperti yang Anda katakan, dokumentasinya tidak terlalu jelas untuk menyebut versi minor. Saya mengikuti konfigurasi Anda dan berhasil!
Vikrame
Apakah mungkin untuk melatih model TF1.4 pada kartu gpu CUDA10?
ivan866
3

Anda dapat menggunakan konfigurasi ini untuk cuda 10.0 (10.1 tidak berfungsi pada 3/18), ini berjalan untuk saya:

  • tensorflow> = 1.12.0
  • tensorflow_gpu> = 1.4

Instal versi tensorflow gpu:

pip install tensorflow-gpu==1.4.0
ED-DOUGHMI younes
sumber
Jadi, itu secara efektif berarti bahwa kartu gpu yang lebih baru TIDAK mendukung tumpukan perangkat lunak yang lebih lama, yang berarti kompatibilitas mundur memang rusak? #NVIDIA
ivan866
3

jika Anda melakukan coding di notebook jupyter, dan ingin memeriksa versi cuda mana yang digunakan tf, jalankan perintah follow langsung ke sel jupyter:

!conda list cudatoolkit

!conda list cudnn

dan untuk memeriksa apakah gpu terlihat oleh tf:

tf.test.is_gpu_available(
    cuda_only=False, min_cuda_compute_capability=None
)
Savrige
sumber
1

Saya telah menginstal CUDA 10.1 dan CUDNN 7.6 karena kesalahan. Anda dapat menggunakan konfigurasi berikut (Ini berhasil untuk saya - mulai 9/10). :

  • Tensorflow-gpu == 1.14.0
  • CUDA 10.1
  • CUDNN 7.6
  • Ubuntu 18.04

Tetapi saya harus membuat symlink agar berfungsi karena tensorflow awalnya berfungsi dengan 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

Dan tambahkan yang berikut ini ke ~ / .bashrc saya -

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/
yatish hr
sumber
Saya yakin memanfaatkan nvidia-dockerlapisan perangkat lunak dapat mengatasi masalah kombinasi cuda-tf yang tidak kompatibel. Menjelaskan bagaimana Anda menemukan lib mana yang perlu dirutekan ulang dengan symlink juga akan bagus.
ivan866
-2

Saya mengalami masalah serupa setelah memutakhirkan ke TF 2.0. Versi CUDA yang dilaporkan TF tidak sesuai dengan apa yang menurut Ubuntu 18.04 telah saya instal. Dikatakan saya menggunakan CUDA 7.5.0, tetapi saya pikir saya telah menginstal versi yang benar.

Apa yang akhirnya harus saya lakukan adalah grep secara rekursif di /usr/localuntuk CUDNN_MAJOR, dan saya menemukan bahwa /usr/local/cuda-10.0/targets/x86_64-linux/include/cudnn.hmemang menentukan versinya sebagai 7.5.0.
/usr/local/cuda-10.1melakukannya dengan benar, dan /usr/local/cudamenunjuk ke /usr/local/cuda-10.1, jadi itu (dan tetap) menjadi misteri bagi saya mengapa TF melihatnya /usr/local/cuda-10.0.

Anyway, saya baru saja pindah /usr/local/cuda-10.0ke /usr/local/old-cuda-10.0sehingga TF tidak bisa menemukannya lagi dan semuanya kemudian bekerja seperti pesona.

Itu semua sangat membuat frustrasi, dan saya masih merasa seperti saya baru saja melakukan peretasan acak. Tapi itu berhasil :) dan mungkin ini akan membantu seseorang dengan masalah serupa.

Matt Ginsberg
sumber
10.0 adalah versi CUDA SDK; 7.5 adalah Kemampuan Komputasi dari GPU itu sendiri
ivan866