Docker

นักเทียบท่า ใช้ คอนเทนเนอร์ เพื่อสร้างสภาพแวดล้อมเสมือนที่แยกการติดตั้ง TensorFlow ออกจากส่วนที่เหลือของระบบ โปรแกรม TensorFlow ทำงาน ใน สภาพแวดล้อมเสมือนจริงที่สามารถแชร์ทรัพยากรกับเครื่องโฮสต์ได้ (เข้าถึงไดเร็กทอรี ใช้ GPU เชื่อมต่ออินเทอร์เน็ต ฯลฯ) อิมเมจ TensorFlow Docker ได้รับการทดสอบสำหรับแต่ละรุ่น

Docker เป็นวิธีที่ง่ายที่สุดในการเปิดใช้งาน การรองรับ TensorFlow GPU บน Linux เนื่องจากต้องใช้เพียง ไดรเวอร์ NVIDIA® GPU บนเครื่อง โฮสต์ (ไม่จำเป็นต้องติดตั้ง NVIDIA® CUDA® Toolkit )

ข้อกำหนดของ TensorFlow Docker

  1. ติดตั้ง Docker บนเครื่อง โฮสต์ ในพื้นที่ของคุณ
  2. สำหรับการรองรับ GPU บน Linux ให้ติดตั้งการรองรับ NVIDIA Docker
    • จดบันทึกเวอร์ชัน Docker ของคุณด้วย docker -v เวอร์ชัน ที่เก่ากว่า 19.03 ต้องใช้ nvidia-docker2 และ --runtime=nvidia flag ในเวอร์ชัน รวมถึงและหลัง 19.03 คุณจะใช้แพ็คเกจ nvidia-container-toolkit และ --gpus all flag ตัวเลือกทั้งสองมีเอกสารอยู่ในหน้าที่ลิงก์ด้านบน

ดาวน์โหลดภาพ TensorFlow Docker

อิมเมจ TensorFlow Docker อย่างเป็นทางการอยู่ในที่เก็บ tensorflow/tensorflow Docker Hub การเผยแพร่รูปภาพ จะถูกแท็ก โดยใช้รูปแบบต่อไปนี้:

แท็ก คำอธิบาย
latest อิมเมจไบนารี TensorFlow CPU รุ่นล่าสุด ค่าเริ่มต้น.
nightly การสร้างอิมเมจ TensorFlow ทุกคืน (ไม่มั่นคง.)
version ระบุ เวอร์ชัน ของอิมเมจไบนารี TensorFlow เช่น 2.8.3

แท็ก ฐานแต่ละแท็กมีรูปแบบที่เพิ่มหรือเปลี่ยนแปลงฟังก์ชันการทำงาน:

แท็กรูปแบบต่างๆ คำอธิบาย
tag -gpu การเปิด ตัวแท็ก ที่ระบุพร้อมการรองรับ GPU ( ดูด้านล่าง )
tag -jupyter การเปิด ตัวแท็ก ที่ระบุด้วย Jupyter (รวมถึงสมุดบันทึกการสอน TensorFlow)

คุณสามารถใช้หลายรูปแบบได้ในคราวเดียว ตัวอย่างเช่น การดาวน์โหลด TensorFlow ต่อไปนี้จะเผยแพร่อิมเมจไปยังเครื่องของคุณ:

docker pull tensorflow/tensorflow                     # latest stable release
docker pull tensorflow/tensorflow:devel-gpu           # nightly dev release w/ GPU support
docker pull tensorflow/tensorflow:latest-gpu-jupyter  # latest release w/ GPU support and Jupyter

เริ่มคอนเทนเนอร์ TensorFlow Docker

หากต้องการเริ่มคอนเทนเนอร์ที่กำหนดค่า TensorFlow ให้ใช้แบบฟอร์มคำสั่งต่อไปนี้:

docker run [-it] [--rm] [-p hostPort:containerPort] tensorflow/tensorflow[:tag] [command]

สำหรับรายละเอียด โปรดดูที่ การอ้างอิงการเรียกใช้นักเทียบท่า

ตัวอย่างการใช้อิมเมจเฉพาะ CPU

มาตรวจสอบการติดตั้ง TensorFlow โดยใช้รูปภาพที่แท็ก latest นักเทียบท่าดาวน์โหลดอิมเมจ TensorFlow ใหม่เมื่อเรียกใช้ครั้งแรก:

docker run -it --rm tensorflow/tensorflow \
   python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

มาสาธิตสูตรอาหาร TensorFlow Docker เพิ่มเติมกัน เริ่มเซสชัน bash shell ภายในคอนเทนเนอร์ที่กำหนดค่า TensorFlow:

docker run -it tensorflow/tensorflow bash

ภายในคอนเทนเนอร์ คุณสามารถเริ่มเซสชัน python และนำเข้า TensorFlow ได้

หากต้องการรันโปรแกรม TensorFlow ที่พัฒนาบนเครื่อง โฮสต์ ภายในคอนเทนเนอร์ ให้ต่อเชื่อมไดเร็กทอรีโฮสต์และเปลี่ยนไดเร็กทอรีการทำงานของคอนเทนเนอร์ ( -v hostDir:containerDir -w workDir ):

docker run -it --rm -v $PWD:/tmp -w /tmp tensorflow/tensorflow python ./script.py

ปัญหาเกี่ยวกับสิทธิ์อาจเกิดขึ้นเมื่อไฟล์ที่สร้างขึ้นภายในคอนเทนเนอร์ถูกโฮสต์เปิดเผย โดยปกติแล้ว การแก้ไขไฟล์บนระบบโฮสต์จะดีที่สุด

เริ่มเซิร์ฟเวอร์ Jupyter Notebook โดยใช้บิลด์ทุกคืนของ TensorFlow:

docker run -it -p 8888:8888 tensorflow/tensorflow:nightly-jupyter

ทำตามคำแนะนำและเปิด URL ในเว็บเบราว์เซอร์โฮสต์ของคุณ: http://127.0.0.1:8888/?token=...

รองรับจีพียู

Docker เป็นวิธีที่ง่ายที่สุดในการรัน TensorFlow บน GPU เนื่องจากเครื่อง โฮสต์ ต้องการเพียง ไดรเวอร์ NVIDIA® เท่านั้น (ไม่จำเป็นต้องใช้ NVIDIA® CUDA® Toolkit )

ติดตั้ง Nvidia Container Toolkit เพื่อเพิ่มการรองรับ NVIDIA® GPU ให้กับ Docker nvidia-container-runtime ใช้ได้กับ Linux เท่านั้น ดู คำถามที่พบบ่อยเกี่ยวกับการสนับสนุนแพลตฟอร์ม nvidia-container-runtime สำหรับรายละเอียด

ตรวจสอบว่ามี GPU หรือไม่:

lspci | grep -i nvidia

ตรวจสอบการติดตั้ง nvidia-docker ของคุณ:

docker run --gpus all --rm nvidia/cuda nvidia-smi

ตัวอย่างการใช้ภาพที่เปิดใช้งาน GPU

ดาวน์โหลดและเรียกใช้อิมเมจ TensorFlow ที่เปิดใช้งาน GPU (อาจใช้เวลาสักครู่):

docker run --gpus all -it --rm tensorflow/tensorflow:latest-gpu \
   python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

อาจใช้เวลาสักครู่ในการตั้งค่าภาพที่เปิดใช้งาน GPU หากเรียกใช้สคริปต์ที่ใช้ GPU ซ้ำ ๆ คุณสามารถใช้ docker exec เพื่อใช้คอนเทนเนอร์ซ้ำได้

ใช้อิมเมจ TensorFlow GPU ล่าสุดเพื่อเริ่มเซสชัน bash shell ในคอนเทนเนอร์:

docker run --gpus all -it tensorflow/tensorflow:latest-gpu bash