Những kết hợp phiên bản TensorFlow và CUDA nào tương thích?


144

Tôi đã nhận thấy rằng một số phiên bản TensorFlow mới hơn không tương thích với các phiên bản CUDA và cuDNN cũ hơn. Có một cái nhìn tổng quan về các phiên bản tương thích hoặc thậm chí một danh sách các kết hợp được thử nghiệm chính thức tồn tại không? Tôi không thể tìm thấy nó trong tài liệu của TensorFlow.


1
Tất cả các yêu cầu được đưa ra với hướng dẫn cài đặt , phần được gọi là " Yêu cầu của NVIDIA để chạy TensorFlow với hỗ trợ GPU ".
P-Gn

10
Câu hỏi đã giải quyết tính tương thích và (chính thức) các kết hợp đã được thử nghiệm, theo quan điểm của tôi, không được cung cấp trong hướng dẫn cài đặt. Ngoài ra, tôi không thể tìm thấy phần bạn đang đề cập đến. Những quan sát này dẫn đến quan điểm chung của tôi rằng thông tin được yêu cầu rất khó tìm và do đó biện minh cho việc cung cấp quyền truy cập dễ dàng vào liên kết được đăng trong câu trả lời.
Fábio

Bạn sẽ thấy rằng các phiên bản CUDA và cuDNN trên trang bạn đề cập khớp với một trong các hướng dẫn cài đặt.
P-Gn

Để tìm hướng dẫn cài đặt, hãy truy cập trang tôi đã liên kết ở trên, sau đó theo liên kết cho hệ điều hành của bạn.
P-Gn

1
Ồ tôi hiểu ý của bạn - cố gắng xem phiên bản kéo căng nào phù hợp với sự kết hợp CUDA / cuDNN cụ thể. Bạn có thể duyệt các ghi chú phát hành của TF nhưng bảng bạn liên kết thực sự là một bản tóm tắt tốt.
P-Gn

Câu trả lời:


209

Nói chung là:

Kiểm tra phiên bản CUDA:

cat /usr/local/cuda/version.txt

và phiên bản cuDNN:

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

và cài đặt một sự kết hợp như được đưa ra dưới đây trong hình ảnh hoặc ở đây .

Các hình ảnh và liên kết sau đây cung cấp tổng quan về các kết hợp được thử nghiệm / hỗ trợ chính thức của CUDA và TensorFlow trên Linux, macOS và Windows:

Cấu hình nhỏ:

Vì các thông số kỹ thuật đã cho bên dưới trong một số trường hợp có thể quá rộng, đây là một cấu hình cụ thể hoạt động:

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

Các cudnn tương ứng có thể được tải xuống ở đây .

(số liệu cập nhật ngày 20 tháng 5 năm 2020)

GPU Linux

nhập mô tả hình ảnh ở đây

Linux

nhập mô tả hình ảnh ở đây

GPU macOS

nhập mô tả hình ảnh ở đây

hệ điều hành Mac

nhập mô tả hình ảnh ở đây

(số liệu cập nhật ngày 31 tháng 5 năm 2018)

các cửa sổ

nhập mô tả hình ảnh ở đây

Cập nhật kể từ ngày 14 tháng 1 năm 2020: Để biết thông tin cập nhật, vui lòng tham khảo Liên kết cho LinuxLiên kết cho Windows .


1
Tôi đã thông báo rằng các phiên bản TensorFlow <1.0 đã bị loại khỏi tổng quan. Có ai đó có một ý tưởng để tìm danh sách tương tự cho các phiên bản cũ hơn không?
Fábio

2
Có vẻ như họ không chỉ định các phiên bản nhỏ cho cuda và cudnn,
mrgloom

1
CẬP NHẬT: đã thử nghiệm TF-GPU 1.12, Windows 10, CUDA 9.0, CuDNN 7.3.1, Python 3.6.6
m cameraec

1
Đừng cập nhật số liệu, liên kết đến tài liệu. Liên kết thay đổi ít thường xuyên hơn các bảng
Trylks 7/11/19

1
@ Fábio: Cập nhật câu trả lời của bạn với các Liên kết mới nhất theo yêu cầu của bạn.
Hỗ trợ kéo căng

23

Bảng tương thích được cung cấp trong trang web tenorflow không chứa các phiên bản nhỏ cụ thể cho cuda và cuDNN. Tuy nhiên, nếu các phiên bản cụ thể không được đáp ứng, sẽ có lỗi khi bạn cố gắng sử dụng tenorflow.

Đối với tensorflow-gpu==1.12.0cuda==9.0, cuDNNphiên bản tương thích là 7.1.4, có thể được tải xuống từ đây sau khi đăng ký.

Bạn có thể kiểm tra phiên bản cuda của mình bằng cách sử dụng
nvcc --version

phiên bản cuDNN sử dụng
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2

phiên bản tenorflow-gpu sử dụng
pip freeze | grep tensorflow-gpu

CẬP NHẬT: Kể từ tenorflow 2.0, đã được phát hành, tôi cũng sẽ chia sẻ các phiên bản cuda và cuDNN tương thích cho nó (cho Ubuntu 18.04).

  • tensorflow-gpu = 2.0.0
  • cuda = 10,0
  • cuDNN = 7.6.0

1
Câu trả lời của bạn rất hữu ích. Giống như bạn đã nói tài liệu không rõ ràng để gọi ra các phiên bản nhỏ. Tôi đã làm theo cấu hình của bạn và nó đã làm việc!
Vikrame

2

nếu bạn đang mã hóa trong sổ ghi chép jupyter và muốn kiểm tra phiên bản cuda nào đang sử dụng, hãy chạy lệnh follow trực tiếp vào ô jupyter:

!conda list cudatoolkit

!conda list cudnn

và để kiểm tra xem gpu có hiển thị với tf không:

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

1

Bạn có thể sử dụng cấu hình này cho cuda 10.0 (10.1 không hoạt động kể từ 3/18), điều này chạy cho tôi:

  • dòng chảy> = 1.12.0
  • tenorflow_gpu> = 1.4

Cài đặt phiên bản gpu dòng chảy:

pip install tensorflow-gpu==1.4.0

1

Tôi đã cài đặt CUDA 10.1 và CUDNN 7.6 do nhầm lẫn. Bạn có thể sử dụng các cấu hình sau (Điều này hiệu quả với tôi - kể từ ngày 9/10). :

  • Dòng chảy-gpu == 1.14.0
  • CUDA 10.1
  • CUDNN 7.6
  • Ubuntu 18.04

Nhưng tôi đã phải tạo ra các liên kết tượng trưng cho nó để hoạt động như tenorflow ban đầu hoạt động với 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

Và thêm phần sau vào ~ / .bashrc của tôi -

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/

0

Tôi gặp vấn đề tương tự sau khi nâng cấp lên TF 2.0. Phiên bản CUDA mà TF đang báo cáo không khớp với những gì Ubuntu 18.04 nghĩ tôi đã cài đặt. Nó cho biết tôi đang sử dụng CUDA 7.5.0, nhưng apt nghĩ rằng tôi đã cài đặt đúng phiên bản.

Những gì tôi cuối cùng phải làm là grep đệ quy trong /usr/localcho CUDNN_MAJOR, và tôi thấy rằng /usr/local/cuda-10.0/targets/x86_64-linux/include/cudnn.hđã thực sự xác định phiên bản như 7.5.0.
/usr/local/cuda-10.1hiểu đúng và /usr/local/cudachỉ vào /usr/local/cuda-10.1, vì vậy nó là (và vẫn) là một bí ẩn đối với tôi tại sao TF lại nhìn vào /usr/local/cuda-10.0.

Dù sao, tôi mới chuyển /usr/local/cuda-10.0đến /usr/local/old-cuda-10.0để TF không thể tìm thấy nó nữa và mọi thứ sau đó hoạt động như một cơ duyên.

Tất cả đều rất bực bội, và tôi vẫn cảm thấy như mình vừa thực hiện một vụ hack ngẫu nhiên. Nhưng nó đã hoạt động :) và có lẽ điều này sẽ giúp ai đó có vấn đề tương tự.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.