TensorFlow และ CUDA เวอร์ชันใดบ้างที่เข้ากันได้


170

ฉันสังเกตเห็นว่า TensorFlow เวอร์ชันใหม่บางรุ่นไม่สามารถใช้งานร่วมกับ CUDA และ cuDNN เวอร์ชันเก่าได้ มีภาพรวมของเวอร์ชันที่เข้ากันได้หรือแม้แต่รายการชุดค่าผสมที่ทดสอบอย่างเป็นทางการหรือไม่ หาไม่พบในเอกสาร TensorFlow


2
ข้อกำหนดทั้งหมดจะได้รับพร้อมกับคำแนะนำสำหรับการติดตั้งส่วนที่เรียกว่า " ข้อกำหนดของ NVIDIA ในการเรียกใช้ TensorFlow ด้วยการรองรับ GPU "
P-Gn

11
คำถามนี้เกี่ยวกับความเข้ากันได้และชุดค่าผสมที่ทดสอบ (อย่างเป็นทางการ) ซึ่งในมุมมองของฉันไม่มีอยู่ในคำแนะนำสำหรับการติดตั้ง นอกจากนี้ฉันไม่พบส่วนที่คุณอ้างถึง การสังเกตเหล่านี้ส่งผลให้ฉันเห็นโดยรวมว่าข้อมูลที่ร้องขอนั้นหายากดังนั้นจึงเป็นเหตุให้สามารถเข้าถึงลิงก์ที่โพสต์ในคำตอบได้อย่างง่ายดาย
whiletrue

คุณจะพบว่าเวอร์ชัน CUDA และ cuDNN ในหน้าที่คุณกล่าวถึงตรงกับคำแนะนำในการติดตั้ง
P-Gn

หากต้องการค้นหาคำแนะนำในการติดตั้งไปที่หน้าที่ฉันเชื่อมโยงไว้ด้านบนจากนั้นไปที่ลิงค์สำหรับระบบปฏิบัติการของคุณ
P-Gn

1
ฉันเข้าใจว่าคุณหมายถึงอะไร - พยายามดูว่าเทนเซอร์โฟลว์รุ่นใดที่เหมาะกับชุดค่าผสม CUDA / cuDNN โดยเฉพาะ คุณสามารถเรียกดูบันทึกประจำรุ่นของ TF ได้ แต่ตารางที่คุณเชื่อมโยงไปนั้นเป็นบทสรุปที่ดี
P-Gn

คำตอบ:


246

TL; DR ) ดูตารางนี้: https://www.tensorflow.org/install/source#gpu

โดยทั่วไป:

ตรวจสอบเวอร์ชัน CUDA:

cat /usr/local/cuda/version.txt

และเวอร์ชัน cuDNN:

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

และติดตั้งรวมกันตามที่กำหนดด้านล่างในภาพหรือนี่

รูปภาพและลิงค์ต่อไปนี้ให้ภาพรวมของ CUDA และ TensorFlow ที่รองรับ / ทดสอบอย่างเป็นทางการบน Linux, macOS และ Windows:

การกำหนดค่าเล็กน้อย:

เนื่องจากข้อกำหนดที่ระบุด้านล่างในบางกรณีอาจกว้างเกินไปนี่คือการกำหนดค่าเฉพาะที่ใช้งานได้:

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

cudnn สอดคล้องกันสามารถดาวน์โหลดได้ที่นี่

การกำหนดค่าการสร้างที่ทดสอบแล้ว

โปรดดูที่https://www.tensorflow.org/install/source#gpuสำหรับแผนภูมิความเข้ากันได้ล่าสุด (สำหรับล้อ TF อย่างเป็นทางการ)

(ตัวเลขอัปเดตเมื่อวันที่ 20 พฤษภาคม 2020)

Linux GPU

ป้อนคำอธิบายภาพที่นี่

ลินุกซ์

ป้อนคำอธิบายภาพที่นี่

macOS GPU

ป้อนคำอธิบายภาพที่นี่

macOS

ป้อนคำอธิบายภาพที่นี่

(รูปปรับปรุง 31 พฤษภาคม 2018)

Windows

ป้อนคำอธิบายภาพที่นี่

Updated ณ 14 มกราคม 2020:สำหรับข้อมูลปรับปรุงโปรดดูเว็บไซต์สำหรับลินุกซ์และการเชื่อมโยงสำหรับ Windows


1
ฉันสังเกตเห็นว่า TensorFlow เวอร์ชัน <1.0 ถูกแยกออกจากภาพรวม ใครมีความคิดที่จะหารายการเดียวกันสำหรับเวอร์ชันเก่า?
whiletrue

2
ดูเหมือนว่าพวกเขาไม่ได้ระบุเวอร์ชันรองสำหรับ cuda และ cudnn
mrgloom

1
UPDATE: ทดสอบ TF-GPU 1.12, Windows 10, CUDA 9.0, CuDNN 7.3.1, Python 3.6.6
mjaniec

2
อย่าอัปเดตตัวเลขลิงก์ไปยังเอกสารประกอบ ลิงก์มีการเปลี่ยนแปลงน้อยกว่าตาราง
Trylks

1
@ Fábio: อัปเดตคำตอบของคุณด้วยลิงค์ล่าสุดตามคำขอของคุณ
Tensorflow Support

28

ตารางความเข้ากันได้ที่ระบุในไซต์ tensorflowไม่มีเวอร์ชันรองเฉพาะสำหรับ cuda และ cuDNN อย่างไรก็ตามหากไม่ตรงตามเวอร์ชันที่ระบุจะมีข้อผิดพลาดเมื่อคุณพยายามใช้เทนเซอร์โฟลว์

สำหรับtensorflow-gpu==1.12.0และเวอร์ชันที่cuda==9.0เข้ากันได้cuDNNคือ7.1.4ซึ่งสามารถดาวน์โหลดได้จากที่นี่หลังการลงทะเบียน

คุณสามารถตรวจสอบเวอร์ชัน cuda ของคุณโดยใช้ไฟล์
nvcc --version

cuDNN โดยใช้
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2

รุ่น tensorflow-gpu โดยใช้
pip freeze | grep tensorflow-gpu

อัปเดต: ตั้งแต่ tensorflow 2.0 ได้รับการเผยแพร่ฉันจะแชร์เวอร์ชัน cuda และ cuDNN ที่เข้ากันได้ด้วย (สำหรับ Ubuntu 18.04)

  • tensorflow-gpu = 2.0.0
  • cuda = 10.0
  • cuDNN = 7.6.0

2
คำตอบของคุณมีประโยชน์มาก เช่นเดียวกับที่คุณกล่าวว่าเอกสารประกอบยังไม่ชัดเจนในการเรียกรุ่นรอง ฉันทำตามการกำหนดค่าของคุณและมันใช้งานได้!
Vikrame

เป็นไปได้ไหมที่จะฝึกรุ่น TF1.4 บนการ์ด CUDA10 gpu?
ivan866

3

คุณสามารถใช้การกำหนดค่านี้สำหรับ cuda 10.0 (10.1 ใช้ไม่ได้ ณ วันที่ 3/18) สิ่งนี้ทำงานให้ฉัน:

  • เทนเซอร์โฟลว์> = 1.12.0
  • tensorflow_gpu> = 1.4

ติดตั้งรุ่น tensorflow gpu:

pip install tensorflow-gpu==1.4.0

ดังนั้นนั่นหมายความว่าการ์ด gpu รุ่นใหม่ ๆ ไม่รองรับสแต็คซอฟต์แวร์รุ่นเก่าหมายความว่าความเข้ากันได้แบบย้อนกลับเสียจริงหรือ? #NVIDIA
ivan866

3

หากคุณกำลังเข้ารหัสในสมุดบันทึก jupyter และต้องการตรวจสอบว่าใช้ cuda เวอร์ชัน tf ใดให้เรียกใช้คำสั่ง follow โดยตรงในเซลล์ jupyter:

!conda list cudatoolkit

!conda list cudnn

และตรวจสอบว่า gpu มองเห็นได้หรือไม่ tf:

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

1

ฉันติดตั้ง CUDA 10.1 และ CUDNN 7.6 โดยไม่ได้ตั้งใจ คุณสามารถใช้การกำหนดค่าต่อไปนี้ (สิ่งนี้ใช้ได้กับฉัน - ณ วันที่ 9/10) :

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

แต่ฉันต้องสร้างซิมลิงค์เพื่อให้มันทำงานได้เนื่องจากเทนเซอร์โฟลว์ทำงานกับ 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/

ฉันเชื่อว่าการใช้nvidia-dockerเลเยอร์ซอฟต์แวร์สามารถจัดการกับปัญหาของชุดค่าผสม cuda-tf ที่เข้ากันไม่ได้ การอธิบายว่าคุณทราบได้อย่างไรว่า libs ใดที่ต้องกำหนดเส้นทางใหม่ด้วย symlinks ก็จะดีเช่นกัน
ivan866

-2

ฉันมีปัญหาที่คล้ายกันหลังจากอัปเกรดเป็น TF 2.0 เวอร์ชัน CUDA ที่ TF รายงานไม่ตรงกับสิ่งที่ Ubuntu 18.04 คิดว่าฉันติดตั้งไว้ มันบอกว่าฉันใช้ CUDA 7.5.0 แต่ฉลาดคิดว่าฉันติดตั้งเวอร์ชันที่ถูกต้องแล้ว

ในที่สุดสิ่งที่ฉันต้องทำคือ grep วนซ้ำใน/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.0TF จึงไม่สามารถหามันได้อีกต่อไปและทุกอย่างก็ดูมีเสน่ห์

มันน่าผิดหวังมากและฉันก็ยังรู้สึกเหมือนเพิ่งแฮ็คแบบสุ่ม แต่มันใช้งานได้ :) และบางทีนี่อาจช่วยคนที่มีปัญหาคล้ายกัน


10.0 คือ CUDA SDK เวอร์ชัน; 7.5 คือ Compute Capability ของ GPU นั่นเอง
ivan866
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.