สร้างจากแหล่งที่มา

สร้างแพ็คเกจ pip ของ TensorFlow จากแหล่งที่มาและติดตั้งบน Ubuntu Linux และ macOS แม้ว่าคำแนะนำอาจใช้ได้กับระบบอื่น แต่ก็มีการทดสอบและรองรับกับ Ubuntu และ macOS เท่านั้น

การตั้งค่าสำหรับ Linux และ macOS

ติดตั้งเครื่องมือสร้างต่อไปนี้เพื่อกำหนดค่าสภาพแวดล้อมการพัฒนาของคุณ

ติดตั้งการขึ้นต่อกันของแพ็คเกจ Python และ TensorFlow

อูบุนตู

sudo apt install python3-dev python3-pip

ระบบปฏิบัติการ macOS

ต้องใช้ Xcode 9.2 หรือใหม่กว่า

ติดตั้งโดยใช้ตัวจัดการแพ็คเกจ Homebrew :

brew install python

ติดตั้งการพึ่งพาแพ็คเกจ pip ของ TensorFlow (หากใช้สภาพแวดล้อมเสมือน ให้ละเว้นอาร์กิวเมนต์ --user ):

pip install -U --user pip numpy wheel packaging requests opt_einsum
pip install -U --user keras_preprocessing --no-deps

ติดตั้งบาเซล

หากต้องการสร้าง TensorFlow คุณจะต้องติดตั้ง Bazel Bazelisk เป็นวิธีง่ายๆ ในการติดตั้ง Bazel และดาวน์โหลด Bazel เวอร์ชันที่ถูกต้องสำหรับ TensorFlow โดยอัตโนมัติ เพื่อความสะดวกในการใช้งาน ให้เพิ่ม Bazelisk เป็น bazel ที่สามารถเรียกใช้งานได้ใน PATH ของคุณ

หากไม่มี Bazelisk คุณสามารถ ติดตั้ง Bazel ได้ด้วยตนเอง ตรวจสอบให้แน่ใจว่าได้ติดตั้งเวอร์ชัน Bazel ที่ถูกต้องจากไฟล์ .bazelversion ของ TensorFlow

Clang เป็นคอมไพเลอร์ C/C++/Objective-C ที่คอมไพล์ในภาษา C++ โดยใช้ LLVM เป็นคอมไพเลอร์เริ่มต้นในการสร้าง TensorFlow โดยเริ่มต้นด้วย TensorFlow 2.13 เวอร์ชันที่รองรับในปัจจุบันคือ LLVM/Clang 16

แพ็คเกจ LLVM Debian/Ubuntu ทุกคืน มีสคริปต์การติดตั้งอัตโนมัติและแพ็คเกจสำหรับการติดตั้งด้วยตนเองบน Linux ตรวจสอบให้แน่ใจว่าคุณรันคำสั่งต่อไปนี้หากคุณเพิ่มพื้นที่เก็บข้อมูล llvm apt ลงในแหล่งแพ็คเกจของคุณด้วยตนเอง:

sudo apt-get update && sudo apt-get install -y llvm-16 clang-16

หรือคุณสามารถดาวน์โหลดและแตกไฟล์ Clang + LLVM 16 ที่สร้างไว้ล่วงหน้าได้

ด้านล่างนี้คือตัวอย่างขั้นตอนที่คุณสามารถทำได้เพื่อตั้งค่าไบนารี Clang + LLVM 16 ที่ดาวน์โหลดมา:

  1. เปลี่ยนเป็นไดเร็กทอรีปลายทางที่ต้องการ:

    ```cd <desired directory>```
    
    1. โหลดและแตกไฟล์เก็บถาวร...(เหมาะกับสถาปัตยกรรมของคุณ):

      
      wget https://github.com/llvm/llvm-project/releases/download/llvmorg-16.0.0/clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz
      
      tar -xvf clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz
      
      

    2. ตรวจสอบเวอร์ชันไบนารีของ Clang + LLVM 16 ที่ได้รับ:

      
      ./clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/clang-16 --version 
      

    3. Directory /clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/clang-16 เป็นเส้นทางที่แท้จริงไปยังเสียงดังกราวใหม่ของคุณ คุณสามารถเรียกใช้สคริปต์ ./configure หรือตั้งค่าตัวแปรสภาพแวดล้อม CC และ BAZEL_COMPILER ให้กับเส้นทางนี้ด้วยตนเอง

    ติดตั้งการรองรับ GPU (เป็นทางเลือก, Linux เท่านั้น)

    ไม่มี การรองรับ GPU สำหรับ macOS

    อ่านคู่มือ สนับสนุน GPU เพื่อติดตั้งไดรเวอร์และซอฟต์แวร์เพิ่มเติมที่จำเป็นสำหรับการรัน TensorFlow บน GPU

    ดาวน์โหลดซอร์สโค้ด TensorFlow

    ใช้ Git เพื่อโคลน พื้นที่เก็บข้อมูล TensorFlow :

    git clone https://github.com/tensorflow/tensorflow.git
    cd tensorflow
    

    repo มีค่าเริ่มต้นเป็นสาขาการพัฒนา master คุณยังสามารถตรวจสอบ สาขาการเผยแพร่ เพื่อสร้าง:

    git checkout branch_name  # r2.2, r2.3, etc.
    

    กำหนดค่าบิลด์

    บิวด์ TensorFlow ได้รับการกำหนดค่าโดยไฟล์ .bazelrc ในไดเร็กทอรีรากของที่เก็บ คุณสามารถใช้สคริปต์ ./configure หรือ ./configure.py เพื่อปรับการตั้งค่าทั่วไปได้

    โปรดเรียกใช้สคริปต์ ./configure จากไดเรกทอรีรากของที่เก็บ สคริปต์นี้จะแจ้งให้คุณทราบตำแหน่งของการขึ้นต่อกันของ TensorFlow และขอตัวเลือกการกำหนดค่าบิวด์เพิ่มเติม (เช่น แฟล็กคอมไพเลอร์) โปรดดูส่วน เซสชันตัวอย่าง สำหรับรายละเอียด

    ./configure
    

    นอกจากนี้ยังมีเวอร์ชันหลามของสคริปต์นี้ . ./configure.py หากใช้สภาพแวดล้อมเสมือน python configure.py จะจัดลำดับความสำคัญของเส้นทางภายในสภาพแวดล้อม ในขณะที่ ./configure จะจัดลำดับความสำคัญของเส้นทางภายนอกสภาพแวดล้อม ในทั้งสองกรณี คุณสามารถเปลี่ยนค่าเริ่มต้นได้

    เซสชันตัวอย่าง

    ข้อมูลต่อไปนี้แสดงตัวอย่างการทำงานของสคริปต์ ./configure (เซสชันของคุณอาจแตกต่างกัน):

    ตัวเลือกการกำหนดค่า

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

    สำหรับ การรองรับ GPU ให้ตั้งค่า cuda=Y ระหว่างการกำหนดค่าและระบุเวอร์ชันของ CUDA และ cuDNN หากระบบของคุณมี CUDA หรือ cuDNN ติดตั้งไว้หลายเวอร์ชัน ให้ตั้งค่าเวอร์ชันอย่างชัดเจนแทนที่จะใช้ค่าเริ่มต้น ./configure จะสร้างลิงก์สัญลักษณ์ไปยังไลบรารี CUDA ของระบบของคุณ ดังนั้นหากคุณอัปเดตพาธไลบรารี CUDA ของคุณ ขั้นตอนการกำหนดค่านี้จะต้องดำเนินการอีกครั้งก่อนที่จะสร้าง

    การเพิ่มประสิทธิภาพ

    สำหรับแฟล็กการเพิ่มประสิทธิภาพการคอมไพล์ ค่าดีฟอลต์ ( -march=native ) จะปรับโค้ดที่สร้างขึ้นให้เหมาะสมสำหรับประเภท CPU ของเครื่องของคุณ อย่างไรก็ตาม หากสร้าง TensorFlow สำหรับ CPU ประเภทอื่น ให้พิจารณาแฟล็กการปรับให้เหมาะสมที่เฉพาะเจาะจงมากขึ้น ตรวจสอบ คู่มือ GCC เพื่อดูตัวอย่าง

    การกำหนดค่าที่กำหนดไว้ล่วงหน้า

    มีการกำหนดค่าบิลด์ที่กำหนดค่าไว้ล่วงหน้าบางส่วนที่สามารถเพิ่มลงในคำสั่ง bazel build ได้ เช่น:

    • --config=dbg — สร้างด้วยข้อมูลการดีบัก ดู CONTRIBUTING.md สำหรับรายละเอียด
    • --config=mkl —รองรับ Intel® MKL-DNN
    • --config=monolithic —การกำหนดค่าสำหรับบิลด์เสาหินแบบคงที่เป็นส่วนใหญ่

    สร้างและติดตั้งแพ็คเกจ pip

    แพ็คเกจ pip ถูกสร้างขึ้นในสองขั้นตอน คำสั่ง bazel build จะสร้างโปรแกรม "package-builder" จากนั้นคุณรันตัวสร้างแพ็คเกจเพื่อสร้างแพ็คเกจ

    สร้างตัวสร้างแพ็คเกจ

    ใช้ bazel build เพื่อสร้างตัวสร้างแพ็คเกจ TensorFlow 2.x:

    bazel build [--config=option] //tensorflow/tools/pip_package:build_pip_package
    

    ตัวเลือกการสร้าง Bazel

    อ้างอิงถึง การอ้างอิงบรรทัดคำสั่ง Bazel สำหรับ ตัวเลือกบิลด์

    การสร้าง TensorFlow จากแหล่งที่มาสามารถใช้ RAM ได้จำนวนมาก หากระบบของคุณมีหน่วยความจำจำกัด ให้จำกัดการใช้ RAM ของ Bazel ด้วย: --local_ram_resources=2048

    แพ็คเกจ TensorFlow อย่างเป็นทางการ สร้างขึ้นด้วย Clang toolchain ที่สอดคล้องกับมาตรฐานแพ็คเกจ manylinux2014

    สร้างแพ็คเกจ

    คำสั่ง bazel build สร้างไฟล์ปฏิบัติการชื่อ build_pip_package ซึ่งเป็นโปรแกรมที่สร้างแพ็คเกจ pip รันไฟล์ปฏิบัติการตามที่แสดงด้านล่างเพื่อสร้างแพ็คเกจ .whl ในไดเร็กทอรี /tmp/tensorflow_pkg

    วิธีสร้างจากสาขาที่วางจำหน่าย:

    ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
    

    หากต้องการสร้างจากต้นแบบให้ใช้ --nightly_flag เพื่อรับการอ้างอิงที่ถูกต้อง:

    ./bazel-bin/tensorflow/tools/pip_package/build_pip_package --nightly_flag /tmp/tensorflow_pkg
    

    แม้ว่าจะสามารถสร้างทั้งการกำหนดค่า CUDA และที่ไม่ใช่ CUDA ภายใต้แผนผังต้นทางเดียวกันได้ แต่ขอแนะนำให้เรียกใช้ bazel clean เมื่อสลับระหว่างการกำหนดค่าทั้งสองนี้ในแผนผังต้นทางเดียวกัน

    ติดตั้งแพ็คเกจ

    ชื่อไฟล์ของไฟล์ .whl ที่สร้างขึ้นจะขึ้นอยู่กับเวอร์ชัน TensorFlow และแพลตฟอร์มของคุณ ใช้ pip install เพื่อติดตั้งแพ็คเกจ ตัวอย่างเช่น:

    pip install /tmp/tensorflow_pkg/tensorflow-version-tags.whl
    

    Docker Linux สร้างขึ้น

    อิมเมจการพัฒนา Docker ของ TensorFlow เป็นวิธีง่ายๆ ในการตั้งค่าสภาพแวดล้อมเพื่อสร้างแพ็คเกจ Linux จากแหล่งที่มา รูปภาพเหล่านี้มีซอร์สโค้ดและการขึ้นต่อกันที่จำเป็นในการสร้าง TensorFlow อยู่แล้ว ไปที่ คู่มือ TensorFlow Docker เพื่อดูคำแนะนำในการติดตั้งและ รายการแท็กรูปภาพที่มีอยู่

    CPU เท่านั้น

    ตัวอย่างต่อไปนี้ใช้อิมเมจ :devel เพื่อสร้างแพ็กเกจเฉพาะ CPU จากซอร์สโค้ด TensorFlow ล่าสุด ตรวจสอบ คู่มือนักเทียบท่า เพื่อดูแท็ก TensorFlow -devel ที่มีอยู่

    ดาวน์โหลดอิมเมจการพัฒนาล่าสุดและเริ่มคอนเทนเนอร์ Docker ที่คุณจะใช้เพื่อสร้างแพ็คเกจ pip :

    docker pull tensorflow/tensorflow:devel
    docker run -it -w /tensorflow_src -v $PWD:/mnt -e HOST_PERMS="$(id -u):$(id -g)" \
        tensorflow/tensorflow:devel bash
    
    git pull  # within the container, download the latest source code
    

    คำสั่ง docker run ด้านบนจะเริ่มต้นเชลล์ในไดเร็กทอรี /tensorflow_src ซึ่งเป็นรากของแผนผังต้นทาง โดยจะติดตั้งไดเร็กทอรีปัจจุบันของโฮสต์ในไดเร็กทอรี /mnt ของคอนเทนเนอร์ และส่งข้อมูลของผู้ใช้โฮสต์ไปยังคอนเทนเนอร์ผ่านตัวแปรสภาพแวดล้อม (ใช้เพื่อตั้งค่าการอนุญาต - นักเทียบท่าสามารถทำให้ยุ่งยากได้)

    อีกทางหนึ่ง หากต้องการสร้างสำเนาโฮสต์ของ TensorFlow ภายในคอนเทนเนอร์ ให้ต่อเชื่อมแผนผังต้นทางโฮสต์ที่ไดเร็กทอรี /tensorflow ของคอนเทนเนอร์:

    docker run -it -w /tensorflow -v /path/to/tensorflow:/tensorflow -v $PWD:/mnt \
        -e HOST_PERMS="\\((id -u):\\)(id -g)" tensorflow/tensorflow:devel bash
    

    เมื่อตั้งค่าแผนผังต้นทางแล้ว ให้สร้างแพ็คเกจ TensorFlow ภายในสภาพแวดล้อมเสมือนของคอนเทนเนอร์:

    1. ทางเลือก: กำหนดค่าบิลด์ ซึ่งจะแจ้งให้ผู้ใช้ตอบคำถามเกี่ยวกับการกำหนดค่าบิลด์
    2. สร้างเครื่องมือที่ใช้สร้างแพ็คเกจ pip
    3. เรียกใช้เครื่องมือเพื่อสร้างแพ็คเกจ pip
    4. ปรับสิทธิ์การเป็นเจ้าของไฟล์สำหรับภายนอกคอนเทนเนอร์
    ./configure  # if necessary
    
    bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
    
    ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /mnt  # create package
    
    chown $HOST_PERMS /mnt/tensorflow-version-tags.whl
    

    ติดตั้งและตรวจสอบบรรจุภัณฑ์ภายในคอนเทนเนอร์:

    pip uninstall tensorflow  # remove current version
    
    pip install /mnt/tensorflow-version-tags.whl
    cd /tmp  # don't import from source directory
    python -c "import tensorflow as tf; print(tf.__version__)"
    

    บนเครื่องโฮสต์ของคุณ แพ็คเกจ pip ของ TensorFlow อยู่ในไดเร็กทอรีปัจจุบัน (พร้อมสิทธิ์ผู้ใช้โฮสต์): ./tensorflow- version - tags .whl

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

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

    ตัวอย่างต่อไปนี้ดาวน์โหลดอิมเมจ TensorFlow :devel-gpu และใช้ nvidia-docker เพื่อเรียกใช้คอนเทนเนอร์ที่เปิดใช้งาน GPU อิมเมจการพัฒนานี้ได้รับการกำหนดค่าเพื่อสร้างแพ็คเกจ pip ที่รองรับ GPU:

    docker pull tensorflow/tensorflow:devel-gpu
    docker run --gpus all -it -w /tensorflow -v $PWD:/mnt -e HOST_PERMS="$(id -u):$(id -g)" \
        tensorflow/tensorflow:devel-gpu bash
    git pull  # within the container, download the latest source code
    

    จากนั้น ภายในสภาพแวดล้อมเสมือนของคอนเทนเนอร์ ให้สร้างแพ็คเกจ TensorFlow ที่รองรับ GPU:

    ./configure  # if necessary
    
    bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
    
    ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /mnt  # create package
    
    chown $HOST_PERMS /mnt/tensorflow-version-tags.whl
    

    ติดตั้งและตรวจสอบแพ็คเกจภายในคอนเทนเนอร์และตรวจสอบ GPU:

    pip uninstall tensorflow  # remove current version
    
    pip install /mnt/tensorflow-version-tags.whl
    cd /tmp  # don't import from source directory
    python -c "import tensorflow as tf; print(\"Num GPUs Available: \", len(tf.config.list_physical_devices('GPU')))"
    

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

    ลินุกซ์

    ซีพียู

    เวอร์ชัน เวอร์ชันหลาม คอมไพเลอร์ สร้างเครื่องมือ
    เทนเซอร์โฟลว์-2.15.0 3.9-3.11 เสียงดังกราว 16.0.0 บาเซล 6.1.0
    เทนเซอร์โฟลว์-2.14.0 3.9-3.11 เสียงดังกราว 16.0.0 บาเซล 6.1.0
    เทนเซอร์โฟลว์-2.13.0 3.8-3.11 เสียงดังกราว 16.0.0 บาเซล 5.3.0
    เทนเซอร์โฟลว์-2.12.0 3.8-3.11 GCC 9.3.1 บาเซล 5.3.0
    เทนเซอร์โฟลว์-2.11.0 3.7-3.10 GCC 9.3.1 บาเซล 5.3.0
    เทนเซอร์โฟลว์-2.10.0 3.7-3.10 GCC 9.3.1 บาเซล 5.1.1
    เทนเซอร์โฟลว์-2.9.0 3.7-3.10 GCC 9.3.1 บาเซล 5.0.0
    เทนเซอร์โฟลว์-2.8.0 3.7-3.10 GCC 7.3.1 บาเซล 4.2.1
    เทนเซอร์โฟลว์-2.7.0 3.7-3.9 GCC 7.3.1 บาเซล 3.7.2
    เทนเซอร์โฟลว์-2.6.0 3.6-3.9 GCC 7.3.1 บาเซล 3.7.2
    เทนเซอร์โฟลว์-2.5.0 3.6-3.9 GCC 7.3.1 บาเซล 3.7.2
    เทนเซอร์โฟลว์-2.4.0 3.6-3.8 GCC 7.3.1 บาเซล 3.1.0
    เทนเซอร์โฟลว์-2.3.0 3.5-3.8 GCC 7.3.1 บาเซล 3.1.0
    เทนเซอร์โฟลว์-2.2.0 3.5-3.8 GCC 7.3.1 บาเซล 2.0.0
    เทนเซอร์โฟลว์-2.1.0 2.7, 3.5-3.7 GCC 7.3.1 บาเซล 0.27.1
    เทนเซอร์โฟลว์-2.0.0 2.7, 3.3-3.7 GCC 7.3.1 บาเซล 0.26.1
    เทนเซอร์โฟลว์-1.15.0 2.7, 3.3-3.7 GCC 7.3.1 บาเซล 0.26.1
    เทนเซอร์โฟลว์-1.14.0 2.7, 3.3-3.7 จีซีซี 4.8 บาเซล 0.24.1
    เทนเซอร์โฟลว์-1.13.1 2.7, 3.3-3.7 จีซีซี 4.8 บาเซล 0.19.2
    เทนเซอร์โฟลว์-1.12.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.15.0
    เทนเซอร์โฟลว์-1.11.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.15.0
    เทนเซอร์โฟลว์-1.10.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.15.0
    เทนเซอร์โฟลว์-1.9.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.11.0
    เทนเซอร์โฟลว์-1.8.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.10.0
    เทนเซอร์โฟลว์-1.7.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.10.0
    เทนเซอร์โฟลว์-1.6.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.9.0
    เทนเซอร์โฟลว์-1.5.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.8.0
    เทนเซอร์โฟลว์-1.4.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.5.4
    เทนเซอร์โฟลว์-1.3.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.4.5
    เทนเซอร์โฟลว์-1.2.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.4.5
    เทนเซอร์โฟลว์-1.1.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.4.2
    เทนเซอร์โฟลว์-1.0.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.4.2

    จีพียู

    เวอร์ชัน เวอร์ชันหลาม คอมไพเลอร์ สร้างเครื่องมือ cuDNN CUDA
    เทนเซอร์โฟลว์-2.15.0 3.9-3.11 เสียงดังกราว 16.0.0 บาเซล 6.1.0 8.8 12.2
    เทนเซอร์โฟลว์-2.14.0 3.9-3.11 เสียงดังกราว 16.0.0 บาเซล 6.1.0 8.7 11.8
    เทนเซอร์โฟลว์-2.13.0 3.8-3.11 เสียงดังกราว 16.0.0 บาเซล 5.3.0 8.6 11.8
    เทนเซอร์โฟลว์-2.12.0 3.8-3.11 GCC 9.3.1 บาเซล 5.3.0 8.6 11.8
    เทนเซอร์โฟลว์-2.11.0 3.7-3.10 GCC 9.3.1 บาเซล 5.3.0 8.1 11.2
    เทนเซอร์โฟลว์-2.10.0 3.7-3.10 GCC 9.3.1 บาเซล 5.1.1 8.1 11.2
    เทนเซอร์โฟลว์-2.9.0 3.7-3.10 GCC 9.3.1 บาเซล 5.0.0 8.1 11.2
    เทนเซอร์โฟลว์-2.8.0 3.7-3.10 GCC 7.3.1 บาเซล 4.2.1 8.1 11.2
    เทนเซอร์โฟลว์-2.7.0 3.7-3.9 GCC 7.3.1 บาเซล 3.7.2 8.1 11.2
    เทนเซอร์โฟลว์-2.6.0 3.6-3.9 GCC 7.3.1 บาเซล 3.7.2 8.1 11.2
    เทนเซอร์โฟลว์-2.5.0 3.6-3.9 GCC 7.3.1 บาเซล 3.7.2 8.1 11.2
    เทนเซอร์โฟลว์-2.4.0 3.6-3.8 GCC 7.3.1 บาเซล 3.1.0 8.0 11.0
    เทนเซอร์โฟลว์-2.3.0 3.5-3.8 GCC 7.3.1 บาเซล 3.1.0 7.6 10.1
    เทนเซอร์โฟลว์-2.2.0 3.5-3.8 GCC 7.3.1 บาเซล 2.0.0 7.6 10.1
    เทนเซอร์โฟลว์-2.1.0 2.7, 3.5-3.7 GCC 7.3.1 บาเซล 0.27.1 7.6 10.1
    เทนเซอร์โฟลว์-2.0.0 2.7, 3.3-3.7 GCC 7.3.1 บาเซล 0.26.1 7.4 10.0
    เทนเซอร์โฟลว์_gpu-1.15.0 2.7, 3.3-3.7 GCC 7.3.1 บาเซล 0.26.1 7.4 10.0
    เทนเซอร์โฟลว์_gpu-1.14.0 2.7, 3.3-3.7 จีซีซี 4.8 บาเซล 0.24.1 7.4 10.0
    เทนเซอร์โฟลว์_gpu-1.13.1 2.7, 3.3-3.7 จีซีซี 4.8 บาเซล 0.19.2 7.4 10.0
    เทนเซอร์โฟลว์_gpu-1.12.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.15.0 7 9
    เทนเซอร์โฟลว์_gpu-1.11.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.15.0 7 9
    tensorflow_gpu-1.10.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.15.0 7 9
    เทนเซอร์โฟลว์_gpu-1.9.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.11.0 7 9
    เทนเซอร์โฟลว์_gpu-1.8.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.10.0 7 9
    เทนเซอร์โฟลว์_gpu-1.7.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.9.0 7 9
    เทนเซอร์โฟลว์_gpu-1.6.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.9.0 7 9
    เทนเซอร์โฟลว์_gpu-1.5.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.8.0 7 9
    เทนเซอร์โฟลว์_gpu-1.4.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.5.4 6 8
    เทนเซอร์โฟลว์_gpu-1.3.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.4.5 6 8
    เทนเซอร์โฟลว์_gpu-1.2.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.4.5 5.1 8
    เทนเซอร์โฟลว์_gpu-1.1.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.4.2 5.1 8
    เทนเซอร์โฟลว์_gpu-1.0.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.4.2 5.1 8

    ระบบปฏิบัติการ macOS

    ซีพียู

    เวอร์ชัน เวอร์ชันหลาม คอมไพเลอร์ สร้างเครื่องมือ
    เทนเซอร์โฟลว์-2.15.0 3.9-3.11 เสียงดังกราวจาก xcode 10.15 บาเซล 6.1.0
    เทนเซอร์โฟลว์-2.14.0 3.9-3.11 เสียงดังกราวจาก xcode 10.15 บาเซล 6.1.0
    เทนเซอร์โฟลว์-2.13.0 3.8-3.11 เสียงดังกราวจาก xcode 10.15 บาเซล 5.3.0
    เทนเซอร์โฟลว์-2.12.0 3.8-3.11 เสียงดังกราวจาก xcode 10.15 บาเซล 5.3.0
    เทนเซอร์โฟลว์-2.11.0 3.7-3.10 เสียงดังกราวจาก xcode 10.14 บาเซล 5.3.0
    เทนเซอร์โฟลว์-2.10.0 3.7-3.10 เสียงดังกราวจาก xcode 10.14 บาเซล 5.1.1
    เทนเซอร์โฟลว์-2.9.0 3.7-3.10 เสียงดังกราวจาก xcode 10.14 บาเซล 5.0.0
    เทนเซอร์โฟลว์-2.8.0 3.7-3.10 เสียงดังกราวจาก xcode 10.14 บาเซล 4.2.1
    เทนเซอร์โฟลว์-2.7.0 3.7-3.9 เสียงดังกราวจาก xcode 10.11.1 บาเซล 3.7.2
    เทนเซอร์โฟลว์-2.6.0 3.6-3.9 เสียงดังกราวจาก xcode 10.11.1 บาเซล 3.7.2
    เทนเซอร์โฟลว์-2.5.0 3.6-3.9 เสียงดังกราวจาก xcode 10.11.1 บาเซล 3.7.2
    เทนเซอร์โฟลว์-2.4.0 3.6-3.8 เสียงดังกราวจาก xcode 10.3 บาเซล 3.1.0
    เทนเซอร์โฟลว์-2.3.0 3.5-3.8 เสียงดังกราวจาก xcode 10.1.1 บาเซล 3.1.0
    เทนเซอร์โฟลว์-2.2.0 3.5-3.8 เสียงดังกราวจาก xcode 10.1.1 บาเซล 2.0.0
    เทนเซอร์โฟลว์-2.1.0 2.7, 3.5-3.7 เสียงดังกราวจาก xcode 10.1.1 บาเซล 0.27.1
    เทนเซอร์โฟลว์-2.0.0 2.7, 3.5-3.7 เสียงดังกราวจาก xcode 10.1.1 บาเซล 0.27.1
    เทนเซอร์โฟลว์-2.0.0 2.7, 3.3-3.7 เสียงดังกราวจาก xcode 10.1.1 บาเซล 0.26.1
    เทนเซอร์โฟลว์-1.15.0 2.7, 3.3-3.7 เสียงดังกราวจาก xcode 10.1.1 บาเซล 0.26.1
    เทนเซอร์โฟลว์-1.14.0 2.7, 3.3-3.7 เสียงดังกราวจาก xcode บาเซล 0.24.1
    เทนเซอร์โฟลว์-1.13.1 2.7, 3.3-3.7 เสียงดังกราวจาก xcode บาเซล 0.19.2
    เทนเซอร์โฟลว์-1.12.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.15.0
    เทนเซอร์โฟลว์-1.11.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.15.0
    เทนเซอร์โฟลว์-1.10.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.15.0
    เทนเซอร์โฟลว์-1.9.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.11.0
    เทนเซอร์โฟลว์-1.8.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.10.1
    เทนเซอร์โฟลว์-1.7.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.10.1
    เทนเซอร์โฟลว์-1.6.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.8.1
    เทนเซอร์โฟลว์-1.5.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.8.1
    เทนเซอร์โฟลว์-1.4.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.5.4
    เทนเซอร์โฟลว์-1.3.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.4.5
    เทนเซอร์โฟลว์-1.2.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.4.5
    เทนเซอร์โฟลว์-1.1.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.4.2
    เทนเซอร์โฟลว์-1.0.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.4.2

    จีพียู

    เวอร์ชัน เวอร์ชันหลาม คอมไพเลอร์ สร้างเครื่องมือ cuDNN CUDA
    เทนเซอร์โฟลว์_gpu-1.1.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.4.2 5.1 8
    เทนเซอร์โฟลว์_gpu-1.0.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.4.2 5.1 8
,

สร้างแพ็คเกจ pip ของ TensorFlow จากแหล่งที่มาและติดตั้งบน Ubuntu Linux และ macOS แม้ว่าคำแนะนำอาจใช้ได้กับระบบอื่น แต่ก็มีการทดสอบและรองรับกับ Ubuntu และ macOS เท่านั้น

การตั้งค่าสำหรับ Linux และ macOS

ติดตั้งเครื่องมือสร้างต่อไปนี้เพื่อกำหนดค่าสภาพแวดล้อมการพัฒนาของคุณ

ติดตั้งการขึ้นต่อกันของแพ็คเกจ Python และ TensorFlow

อูบุนตู

sudo apt install python3-dev python3-pip

ระบบปฏิบัติการ macOS

ต้องใช้ Xcode 9.2 หรือใหม่กว่า

ติดตั้งโดยใช้ตัวจัดการแพ็คเกจ Homebrew :

brew install python

ติดตั้งการพึ่งพาแพ็คเกจ pip ของ TensorFlow (หากใช้สภาพแวดล้อมเสมือน ให้ละเว้นอาร์กิวเมนต์ --user ):

pip install -U --user pip numpy wheel packaging requests opt_einsum
pip install -U --user keras_preprocessing --no-deps

ติดตั้งบาเซล

หากต้องการสร้าง TensorFlow คุณจะต้องติดตั้ง Bazel Bazelisk เป็นวิธีง่ายๆ ในการติดตั้ง Bazel และดาวน์โหลด Bazel เวอร์ชันที่ถูกต้องสำหรับ TensorFlow โดยอัตโนมัติ เพื่อความสะดวกในการใช้งาน ให้เพิ่ม Bazelisk เป็น bazel ที่สามารถเรียกใช้งานได้ใน PATH ของคุณ

หากไม่มี Bazelisk คุณสามารถ ติดตั้ง Bazel ได้ด้วยตนเอง ตรวจสอบให้แน่ใจว่าได้ติดตั้งเวอร์ชัน Bazel ที่ถูกต้องจากไฟล์ .bazelversion ของ TensorFlow

Clang เป็นคอมไพเลอร์ C/C++/Objective-C ที่คอมไพล์ในภาษา C++ โดยใช้ LLVM เป็นคอมไพเลอร์เริ่มต้นในการสร้าง TensorFlow โดยเริ่มต้นด้วย TensorFlow 2.13 เวอร์ชันที่รองรับในปัจจุบันคือ LLVM/Clang 16

แพ็คเกจ LLVM Debian/Ubuntu ทุกคืน มีสคริปต์การติดตั้งอัตโนมัติและแพ็คเกจสำหรับการติดตั้งด้วยตนเองบน Linux ตรวจสอบให้แน่ใจว่าคุณรันคำสั่งต่อไปนี้หากคุณเพิ่มพื้นที่เก็บข้อมูล llvm apt ลงในแหล่งแพ็คเกจของคุณด้วยตนเอง:

sudo apt-get update && sudo apt-get install -y llvm-16 clang-16

หรือคุณสามารถดาวน์โหลดและแตกไฟล์ Clang + LLVM 16 ที่สร้างไว้ล่วงหน้าได้

ด้านล่างนี้คือตัวอย่างขั้นตอนที่คุณสามารถทำได้เพื่อตั้งค่าไบนารี Clang + LLVM 16 ที่ดาวน์โหลดมา:

  1. เปลี่ยนเป็นไดเร็กทอรีปลายทางที่ต้องการ:

    ```cd <desired directory>```
    
    1. โหลดและแตกไฟล์เก็บถาวร...(เหมาะกับสถาปัตยกรรมของคุณ):

      
      wget https://github.com/llvm/llvm-project/releases/download/llvmorg-16.0.0/clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz
      
      tar -xvf clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz
      
      

    2. ตรวจสอบเวอร์ชันไบนารีของ Clang + LLVM 16 ที่ได้รับ:

      
      ./clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/clang-16 --version 
      

    3. Directory /clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/clang-16 เป็นเส้นทางที่แท้จริงไปยังเสียงดังกราวใหม่ของคุณ คุณสามารถเรียกใช้สคริปต์ ./configure หรือตั้งค่าตัวแปรสภาพแวดล้อม CC และ BAZEL_COMPILER ให้กับเส้นทางนี้ด้วยตนเอง

    ติดตั้งการรองรับ GPU (เป็นทางเลือก, Linux เท่านั้น)

    ไม่มี การรองรับ GPU สำหรับ macOS

    อ่านคู่มือ สนับสนุน GPU เพื่อติดตั้งไดรเวอร์และซอฟต์แวร์เพิ่มเติมที่จำเป็นสำหรับการรัน TensorFlow บน GPU

    ดาวน์โหลดซอร์สโค้ด TensorFlow

    ใช้ Git เพื่อโคลน พื้นที่เก็บข้อมูล TensorFlow :

    git clone https://github.com/tensorflow/tensorflow.git
    cd tensorflow
    

    repo มีค่าเริ่มต้นเป็นสาขาการพัฒนา master คุณยังสามารถตรวจสอบ สาขาการเผยแพร่ เพื่อสร้าง:

    git checkout branch_name  # r2.2, r2.3, etc.
    

    กำหนดค่าบิลด์

    บิวด์ TensorFlow ได้รับการกำหนดค่าโดยไฟล์ .bazelrc ในไดเร็กทอรีรากของที่เก็บ คุณสามารถใช้สคริปต์ ./configure หรือ ./configure.py เพื่อปรับการตั้งค่าทั่วไปได้

    โปรดเรียกใช้สคริปต์ ./configure จากไดเรกทอรีรากของที่เก็บ สคริปต์นี้จะแจ้งให้คุณทราบตำแหน่งของการขึ้นต่อกันของ TensorFlow และขอตัวเลือกการกำหนดค่าบิวด์เพิ่มเติม (เช่น แฟล็กคอมไพเลอร์) โปรดดูส่วน เซสชันตัวอย่าง สำหรับรายละเอียด

    ./configure
    

    นอกจากนี้ยังมีเวอร์ชันหลามของสคริปต์นี้ . ./configure.py หากใช้สภาพแวดล้อมเสมือน python configure.py จะจัดลำดับความสำคัญของเส้นทางภายในสภาพแวดล้อม ในขณะที่ ./configure จะจัดลำดับความสำคัญของเส้นทางภายนอกสภาพแวดล้อม ในทั้งสองกรณี คุณสามารถเปลี่ยนค่าเริ่มต้นได้

    เซสชันตัวอย่าง

    ข้อมูลต่อไปนี้แสดงตัวอย่างการทำงานของสคริปต์ ./configure (เซสชันของคุณอาจแตกต่างกัน):

    ตัวเลือกการกำหนดค่า

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

    สำหรับ การรองรับ GPU ให้ตั้งค่า cuda=Y ระหว่างการกำหนดค่าและระบุเวอร์ชันของ CUDA และ cuDNN หากระบบของคุณมี CUDA หรือ cuDNN ติดตั้งไว้หลายเวอร์ชัน ให้ตั้งค่าเวอร์ชันอย่างชัดเจนแทนที่จะใช้ค่าเริ่มต้น ./configure จะสร้างลิงก์สัญลักษณ์ไปยังไลบรารี CUDA ของระบบของคุณ ดังนั้นหากคุณอัปเดตพาธไลบรารี CUDA ของคุณ ขั้นตอนการกำหนดค่านี้จะต้องดำเนินการอีกครั้งก่อนที่จะสร้าง

    การเพิ่มประสิทธิภาพ

    สำหรับแฟล็กการเพิ่มประสิทธิภาพการคอมไพล์ ค่าดีฟอลต์ ( -march=native ) จะปรับโค้ดที่สร้างขึ้นให้เหมาะสมสำหรับประเภท CPU ของเครื่องของคุณ อย่างไรก็ตาม หากสร้าง TensorFlow สำหรับ CPU ประเภทอื่น ให้พิจารณาแฟล็กการปรับให้เหมาะสมที่เฉพาะเจาะจงมากขึ้น ตรวจสอบ คู่มือ GCC เพื่อดูตัวอย่าง

    การกำหนดค่าที่กำหนดไว้ล่วงหน้า

    มีการกำหนดค่าบิลด์ที่กำหนดค่าไว้ล่วงหน้าบางส่วนที่สามารถเพิ่มลงในคำสั่ง bazel build ได้ เช่น:

    • --config=dbg — สร้างด้วยข้อมูลการดีบัก ดู CONTRIBUTING.md สำหรับรายละเอียด
    • --config=mkl —รองรับ Intel® MKL-DNN
    • --config=monolithic —การกำหนดค่าสำหรับบิลด์เสาหินแบบคงที่เป็นส่วนใหญ่

    สร้างและติดตั้งแพ็คเกจ pip

    แพ็คเกจ pip ถูกสร้างขึ้นในสองขั้นตอน คำสั่ง bazel build จะสร้างโปรแกรม "package-builder" จากนั้นคุณรันตัวสร้างแพ็คเกจเพื่อสร้างแพ็คเกจ

    สร้างตัวสร้างแพ็คเกจ

    ใช้ bazel build เพื่อสร้างตัวสร้างแพ็คเกจ TensorFlow 2.x:

    bazel build [--config=option] //tensorflow/tools/pip_package:build_pip_package
    

    ตัวเลือกการสร้าง Bazel

    อ้างอิงถึง การอ้างอิงบรรทัดคำสั่ง Bazel สำหรับ ตัวเลือกบิลด์

    การสร้าง TensorFlow จากแหล่งที่มาสามารถใช้ RAM ได้จำนวนมาก หากระบบของคุณมีหน่วยความจำจำกัด ให้จำกัดการใช้ RAM ของ Bazel ด้วย: --local_ram_resources=2048

    แพ็คเกจ TensorFlow อย่างเป็นทางการ สร้างขึ้นด้วย Clang toolchain ที่สอดคล้องกับมาตรฐานแพ็คเกจ manylinux2014

    สร้างแพ็คเกจ

    คำสั่ง bazel build สร้างไฟล์ปฏิบัติการชื่อ build_pip_package ซึ่งเป็นโปรแกรมที่สร้างแพ็คเกจ pip รันไฟล์ปฏิบัติการตามที่แสดงด้านล่างเพื่อสร้างแพ็คเกจ .whl ในไดเร็กทอรี /tmp/tensorflow_pkg

    วิธีสร้างจากสาขาที่วางจำหน่าย:

    ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
    

    หากต้องการสร้างจากต้นแบบให้ใช้ --nightly_flag เพื่อรับการอ้างอิงที่ถูกต้อง:

    ./bazel-bin/tensorflow/tools/pip_package/build_pip_package --nightly_flag /tmp/tensorflow_pkg
    

    แม้ว่าจะสามารถสร้างทั้งการกำหนดค่า CUDA และที่ไม่ใช่ CUDA ภายใต้แผนผังต้นทางเดียวกันได้ แต่ขอแนะนำให้เรียกใช้ bazel clean เมื่อสลับระหว่างการกำหนดค่าทั้งสองนี้ในแผนผังต้นทางเดียวกัน

    ติดตั้งแพ็คเกจ

    ชื่อไฟล์ของไฟล์ .whl ที่สร้างขึ้นจะขึ้นอยู่กับเวอร์ชัน TensorFlow และแพลตฟอร์มของคุณ ใช้ pip install เพื่อติดตั้งแพ็คเกจ ตัวอย่างเช่น:

    pip install /tmp/tensorflow_pkg/tensorflow-version-tags.whl
    

    Docker Linux สร้างขึ้น

    อิมเมจการพัฒนา Docker ของ TensorFlow เป็นวิธีง่ายๆ ในการตั้งค่าสภาพแวดล้อมเพื่อสร้างแพ็คเกจ Linux จากแหล่งที่มา รูปภาพเหล่านี้มีซอร์สโค้ดและการขึ้นต่อกันที่จำเป็นในการสร้าง TensorFlow อยู่แล้ว ไปที่ คู่มือ TensorFlow Docker เพื่อดูคำแนะนำในการติดตั้งและ รายการแท็กรูปภาพที่มีอยู่

    CPU เท่านั้น

    ตัวอย่างต่อไปนี้ใช้อิมเมจ :devel เพื่อสร้างแพ็กเกจเฉพาะ CPU จากซอร์สโค้ด TensorFlow ล่าสุด ตรวจสอบ คู่มือนักเทียบท่า เพื่อดูแท็ก TensorFlow -devel ที่มีอยู่

    ดาวน์โหลดอิมเมจการพัฒนาล่าสุดและเริ่มคอนเทนเนอร์ Docker ที่คุณจะใช้เพื่อสร้างแพ็คเกจ pip :

    docker pull tensorflow/tensorflow:devel
    docker run -it -w /tensorflow_src -v $PWD:/mnt -e HOST_PERMS="$(id -u):$(id -g)" \
        tensorflow/tensorflow:devel bash
    
    git pull  # within the container, download the latest source code
    

    คำสั่ง docker run ด้านบนจะเริ่มต้นเชลล์ในไดเร็กทอรี /tensorflow_src ซึ่งเป็นรากของแผนผังต้นทาง โดยจะติดตั้งไดเร็กทอรีปัจจุบันของโฮสต์ในไดเร็กทอรี /mnt ของคอนเทนเนอร์ และส่งข้อมูลของผู้ใช้โฮสต์ไปยังคอนเทนเนอร์ผ่านตัวแปรสภาพแวดล้อม (ใช้เพื่อตั้งค่าการอนุญาต - นักเทียบท่าสามารถทำให้ยุ่งยากได้)

    อีกทางหนึ่ง หากต้องการสร้างสำเนาโฮสต์ของ TensorFlow ภายในคอนเทนเนอร์ ให้ต่อเชื่อมแผนผังต้นทางโฮสต์ที่ไดเร็กทอรี /tensorflow ของคอนเทนเนอร์:

    docker run -it -w /tensorflow -v /path/to/tensorflow:/tensorflow -v $PWD:/mnt \
        -e HOST_PERMS="\\((id -u):\\)(id -g)" tensorflow/tensorflow:devel bash
    

    เมื่อตั้งค่าแผนผังต้นทางแล้ว ให้สร้างแพ็คเกจ TensorFlow ภายในสภาพแวดล้อมเสมือนของคอนเทนเนอร์:

    1. ทางเลือก: กำหนดค่าบิลด์ ซึ่งจะแจ้งให้ผู้ใช้ตอบคำถามเกี่ยวกับการกำหนดค่าบิลด์
    2. สร้างเครื่องมือที่ใช้สร้างแพ็คเกจ pip
    3. เรียกใช้เครื่องมือเพื่อสร้างแพ็คเกจ pip
    4. ปรับสิทธิ์การเป็นเจ้าของไฟล์สำหรับภายนอกคอนเทนเนอร์
    ./configure  # if necessary
    
    bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
    
    ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /mnt  # create package
    
    chown $HOST_PERMS /mnt/tensorflow-version-tags.whl
    

    ติดตั้งและตรวจสอบบรรจุภัณฑ์ภายในคอนเทนเนอร์:

    pip uninstall tensorflow  # remove current version
    
    pip install /mnt/tensorflow-version-tags.whl
    cd /tmp  # don't import from source directory
    python -c "import tensorflow as tf; print(tf.__version__)"
    

    บนเครื่องโฮสต์ของคุณ แพ็คเกจ pip ของ TensorFlow อยู่ในไดเร็กทอรีปัจจุบัน (พร้อมสิทธิ์ผู้ใช้โฮสต์): ./tensorflow- version - tags .whl

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

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

    ตัวอย่างต่อไปนี้ดาวน์โหลดอิมเมจ TensorFlow :devel-gpu และใช้ nvidia-docker เพื่อเรียกใช้คอนเทนเนอร์ที่เปิดใช้งาน GPU อิมเมจการพัฒนานี้ได้รับการกำหนดค่าเพื่อสร้างแพ็คเกจ pip ที่รองรับ GPU:

    docker pull tensorflow/tensorflow:devel-gpu
    docker run --gpus all -it -w /tensorflow -v $PWD:/mnt -e HOST_PERMS="$(id -u):$(id -g)" \
        tensorflow/tensorflow:devel-gpu bash
    git pull  # within the container, download the latest source code
    

    จากนั้น ภายในสภาพแวดล้อมเสมือนของคอนเทนเนอร์ ให้สร้างแพ็คเกจ TensorFlow ที่รองรับ GPU:

    ./configure  # if necessary
    
    bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
    
    ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /mnt  # create package
    
    chown $HOST_PERMS /mnt/tensorflow-version-tags.whl
    

    ติดตั้งและตรวจสอบแพ็คเกจภายในคอนเทนเนอร์และตรวจสอบ GPU:

    pip uninstall tensorflow  # remove current version
    
    pip install /mnt/tensorflow-version-tags.whl
    cd /tmp  # don't import from source directory
    python -c "import tensorflow as tf; print(\"Num GPUs Available: \", len(tf.config.list_physical_devices('GPU')))"
    

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

    ลินุกซ์

    ซีพียู

    เวอร์ชัน เวอร์ชันหลาม คอมไพเลอร์ สร้างเครื่องมือ
    เทนเซอร์โฟลว์-2.15.0 3.9-3.11 เสียงดังกราว 16.0.0 บาเซล 6.1.0
    เทนเซอร์โฟลว์-2.14.0 3.9-3.11 เสียงดังกราว 16.0.0 บาเซล 6.1.0
    เทนเซอร์โฟลว์-2.13.0 3.8-3.11 เสียงดังกราว 16.0.0 บาเซล 5.3.0
    เทนเซอร์โฟลว์-2.12.0 3.8-3.11 GCC 9.3.1 บาเซล 5.3.0
    เทนเซอร์โฟลว์-2.11.0 3.7-3.10 GCC 9.3.1 บาเซล 5.3.0
    เทนเซอร์โฟลว์-2.10.0 3.7-3.10 GCC 9.3.1 บาเซล 5.1.1
    เทนเซอร์โฟลว์-2.9.0 3.7-3.10 GCC 9.3.1 บาเซล 5.0.0
    เทนเซอร์โฟลว์-2.8.0 3.7-3.10 GCC 7.3.1 บาเซล 4.2.1
    เทนเซอร์โฟลว์-2.7.0 3.7-3.9 GCC 7.3.1 บาเซล 3.7.2
    เทนเซอร์โฟลว์-2.6.0 3.6-3.9 GCC 7.3.1 บาเซล 3.7.2
    เทนเซอร์โฟลว์-2.5.0 3.6-3.9 GCC 7.3.1 บาเซล 3.7.2
    เทนเซอร์โฟลว์-2.4.0 3.6-3.8 GCC 7.3.1 บาเซล 3.1.0
    เทนเซอร์โฟลว์-2.3.0 3.5-3.8 GCC 7.3.1 บาเซล 3.1.0
    เทนเซอร์โฟลว์-2.2.0 3.5-3.8 GCC 7.3.1 บาเซล 2.0.0
    เทนเซอร์โฟลว์-2.1.0 2.7, 3.5-3.7 GCC 7.3.1 บาเซล 0.27.1
    เทนเซอร์โฟลว์-2.0.0 2.7, 3.3-3.7 GCC 7.3.1 บาเซล 0.26.1
    เทนเซอร์โฟลว์-1.15.0 2.7, 3.3-3.7 GCC 7.3.1 บาเซล 0.26.1
    เทนเซอร์โฟลว์-1.14.0 2.7, 3.3-3.7 จีซีซี 4.8 บาเซล 0.24.1
    เทนเซอร์โฟลว์-1.13.1 2.7, 3.3-3.7 จีซีซี 4.8 บาเซล 0.19.2
    เทนเซอร์โฟลว์-1.12.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.15.0
    เทนเซอร์โฟลว์-1.11.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.15.0
    เทนเซอร์โฟลว์-1.10.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.15.0
    เทนเซอร์โฟลว์-1.9.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.11.0
    เทนเซอร์โฟลว์-1.8.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.10.0
    เทนเซอร์โฟลว์-1.7.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.10.0
    เทนเซอร์โฟลว์-1.6.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.9.0
    เทนเซอร์โฟลว์-1.5.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.8.0
    เทนเซอร์โฟลว์-1.4.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.5.4
    เทนเซอร์โฟลว์-1.3.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.4.5
    เทนเซอร์โฟลว์-1.2.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.4.5
    เทนเซอร์โฟลว์-1.1.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.4.2
    เทนเซอร์โฟลว์-1.0.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.4.2

    จีพียู

    เวอร์ชัน เวอร์ชันหลาม คอมไพเลอร์ สร้างเครื่องมือ cuDNN CUDA
    เทนเซอร์โฟลว์-2.15.0 3.9-3.11 เสียงดังกราว 16.0.0 บาเซล 6.1.0 8.8 12.2
    เทนเซอร์โฟลว์-2.14.0 3.9-3.11 เสียงดังกราว 16.0.0 บาเซล 6.1.0 8.7 11.8
    เทนเซอร์โฟลว์-2.13.0 3.8-3.11 เสียงดังกราว 16.0.0 บาเซล 5.3.0 8.6 11.8
    เทนเซอร์โฟลว์-2.12.0 3.8-3.11 GCC 9.3.1 บาเซล 5.3.0 8.6 11.8
    เทนเซอร์โฟลว์-2.11.0 3.7-3.10 GCC 9.3.1 บาเซล 5.3.0 8.1 11.2
    เทนเซอร์โฟลว์-2.10.0 3.7-3.10 GCC 9.3.1 บาเซล 5.1.1 8.1 11.2
    เทนเซอร์โฟลว์-2.9.0 3.7-3.10 GCC 9.3.1 บาเซล 5.0.0 8.1 11.2
    เทนเซอร์โฟลว์-2.8.0 3.7-3.10 GCC 7.3.1 บาเซล 4.2.1 8.1 11.2
    เทนเซอร์โฟลว์-2.7.0 3.7-3.9 GCC 7.3.1 บาเซล 3.7.2 8.1 11.2
    เทนเซอร์โฟลว์-2.6.0 3.6-3.9 GCC 7.3.1 บาเซล 3.7.2 8.1 11.2
    เทนเซอร์โฟลว์-2.5.0 3.6-3.9 GCC 7.3.1 บาเซล 3.7.2 8.1 11.2
    เทนเซอร์โฟลว์-2.4.0 3.6-3.8 GCC 7.3.1 บาเซล 3.1.0 8.0 11.0
    เทนเซอร์โฟลว์-2.3.0 3.5-3.8 GCC 7.3.1 บาเซล 3.1.0 7.6 10.1
    เทนเซอร์โฟลว์-2.2.0 3.5-3.8 GCC 7.3.1 บาเซล 2.0.0 7.6 10.1
    เทนเซอร์โฟลว์-2.1.0 2.7, 3.5-3.7 GCC 7.3.1 บาเซล 0.27.1 7.6 10.1
    เทนเซอร์โฟลว์-2.0.0 2.7, 3.3-3.7 GCC 7.3.1 บาเซล 0.26.1 7.4 10.0
    เทนเซอร์โฟลว์_gpu-1.15.0 2.7, 3.3-3.7 GCC 7.3.1 บาเซล 0.26.1 7.4 10.0
    เทนเซอร์โฟลว์_gpu-1.14.0 2.7, 3.3-3.7 จีซีซี 4.8 บาเซล 0.24.1 7.4 10.0
    เทนเซอร์โฟลว์_gpu-1.13.1 2.7, 3.3-3.7 จีซีซี 4.8 บาเซล 0.19.2 7.4 10.0
    เทนเซอร์โฟลว์_gpu-1.12.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.15.0 7 9
    เทนเซอร์โฟลว์_gpu-1.11.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.15.0 7 9
    tensorflow_gpu-1.10.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.15.0 7 9
    เทนเซอร์โฟลว์_gpu-1.9.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.11.0 7 9
    เทนเซอร์โฟลว์_gpu-1.8.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.10.0 7 9
    เทนเซอร์โฟลว์_gpu-1.7.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.9.0 7 9
    เทนเซอร์โฟลว์_gpu-1.6.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.9.0 7 9
    เทนเซอร์โฟลว์_gpu-1.5.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.8.0 7 9
    เทนเซอร์โฟลว์_gpu-1.4.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.5.4 6 8
    เทนเซอร์โฟลว์_gpu-1.3.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.4.5 6 8
    เทนเซอร์โฟลว์_gpu-1.2.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.4.5 5.1 8
    เทนเซอร์โฟลว์_gpu-1.1.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.4.2 5.1 8
    เทนเซอร์โฟลว์_gpu-1.0.0 2.7, 3.3-3.6 จีซีซี 4.8 บาเซล 0.4.2 5.1 8

    ระบบปฏิบัติการ macOS

    ซีพียู

    เวอร์ชัน เวอร์ชันหลาม คอมไพเลอร์ สร้างเครื่องมือ
    เทนเซอร์โฟลว์-2.15.0 3.9-3.11 เสียงดังกราวจาก xcode 10.15 บาเซล 6.1.0
    เทนเซอร์โฟลว์-2.14.0 3.9-3.11 เสียงดังกราวจาก xcode 10.15 บาเซล 6.1.0
    เทนเซอร์โฟลว์-2.13.0 3.8-3.11 เสียงดังกราวจาก xcode 10.15 บาเซล 5.3.0
    เทนเซอร์โฟลว์-2.12.0 3.8-3.11 เสียงดังกราวจาก xcode 10.15 บาเซล 5.3.0
    เทนเซอร์โฟลว์-2.11.0 3.7-3.10 เสียงดังกราวจาก xcode 10.14 บาเซล 5.3.0
    เทนเซอร์โฟลว์-2.10.0 3.7-3.10 เสียงดังกราวจาก xcode 10.14 บาเซล 5.1.1
    เทนเซอร์โฟลว์-2.9.0 3.7-3.10 เสียงดังกราวจาก xcode 10.14 บาเซล 5.0.0
    เทนเซอร์โฟลว์-2.8.0 3.7-3.10 เสียงดังกราวจาก xcode 10.14 บาเซล 4.2.1
    เทนเซอร์โฟลว์-2.7.0 3.7-3.9 เสียงดังกราวจาก xcode 10.11.1 บาเซล 3.7.2
    เทนเซอร์โฟลว์-2.6.0 3.6-3.9 เสียงดังกราวจาก xcode 10.11.1 บาเซล 3.7.2
    เทนเซอร์โฟลว์-2.5.0 3.6-3.9 เสียงดังกราวจาก xcode 10.11.1 บาเซล 3.7.2
    เทนเซอร์โฟลว์-2.4.0 3.6-3.8 เสียงดังกราวจาก xcode 10.3 บาเซล 3.1.0
    เทนเซอร์โฟลว์-2.3.0 3.5-3.8 เสียงดังกราวจาก xcode 10.1.1 บาเซล 3.1.0
    เทนเซอร์โฟลว์-2.2.0 3.5-3.8 เสียงดังกราวจาก xcode 10.1.1 บาเซล 2.0.0
    เทนเซอร์โฟลว์-2.1.0 2.7, 3.5-3.7 เสียงดังกราวจาก xcode 10.1.1 บาเซล 0.27.1
    เทนเซอร์โฟลว์-2.0.0 2.7, 3.5-3.7 เสียงดังกราวจาก xcode 10.1.1 บาเซล 0.27.1
    เทนเซอร์โฟลว์-2.0.0 2.7, 3.3-3.7 เสียงดังกราวจาก xcode 10.1.1 บาเซล 0.26.1
    เทนเซอร์โฟลว์-1.15.0 2.7, 3.3-3.7 เสียงดังกราวจาก xcode 10.1.1 บาเซล 0.26.1
    เทนเซอร์โฟลว์-1.14.0 2.7, 3.3-3.7 เสียงดังกราวจาก xcode บาเซล 0.24.1
    เทนเซอร์โฟลว์-1.13.1 2.7, 3.3-3.7 เสียงดังกราวจาก xcode บาเซล 0.19.2
    เทนเซอร์โฟลว์-1.12.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.15.0
    เทนเซอร์โฟลว์-1.11.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.15.0
    เทนเซอร์โฟลว์-1.10.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.15.0
    เทนเซอร์โฟลว์-1.9.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.11.0
    เทนเซอร์โฟลว์-1.8.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.10.1
    เทนเซอร์โฟลว์-1.7.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.10.1
    เทนเซอร์โฟลว์-1.6.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.8.1
    เทนเซอร์โฟลว์-1.5.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.8.1
    เทนเซอร์โฟลว์-1.4.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.5.4
    เทนเซอร์โฟลว์-1.3.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.4.5
    เทนเซอร์โฟลว์-1.2.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.4.5
    เทนเซอร์โฟลว์-1.1.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.4.2
    เทนเซอร์โฟลว์-1.0.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.4.2

    จีพียู

    เวอร์ชัน เวอร์ชันหลาม คอมไพเลอร์ สร้างเครื่องมือ cuDNN CUDA
    เทนเซอร์โฟลว์_gpu-1.1.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.4.2 5.1 8
    เทนเซอร์โฟลว์_gpu-1.0.0 2.7, 3.3-3.6 เสียงดังกราวจาก xcode บาเซล 0.4.2 5.1 8