Bangun dari sumber

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Buat paket pip TensorFlow dari sumber dan instal di Ubuntu Linux dan macOS. Meskipun petunjuknya mungkin berfungsi untuk sistem lain, itu hanya diuji dan didukung untuk Ubuntu dan macOS.

Pengaturan untuk Linux dan macOS

Instal alat pembangunan berikut untuk mengonfigurasi lingkungan pengembangan Anda.

Instal Python dan dependensi paket TensorFlow

Ubuntu

sudo apt install python3-dev python3-pip

macOS

Membutuhkan Xcode 9.2 atau lebih baru.

Instal menggunakan manajer paket Homebrew :

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
# if you are on macOS 10.12 (Sierra) use export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
brew install python

Instal dependensi paket pip TensorFlow (jika menggunakan lingkungan virtual, hilangkan argumen --user ):

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

Instal Bazel

Untuk membangun TensorFlow, Anda harus menginstal Bazel. Bazelisk adalah cara mudah untuk menginstal Bazel dan secara otomatis mengunduh versi Bazel yang benar untuk TensorFlow. Untuk kemudahan penggunaan, tambahkan Bazelisk sebagai bazel yang dapat dieksekusi di PATH Anda.

Jika Bazelisk tidak tersedia, Anda dapat menginstal Bazel secara manual. Pastikan untuk menginstal versi Bazel yang didukung: versi apa pun antara _TF_MIN_BAZEL_VERSION dan _TF_MAX_BAZEL_VERSION seperti yang ditentukan dalam tensorflow/configure.py .

Instal dukungan GPU (opsional, hanya Linux)

Tidak ada dukungan GPU untuk macOS.

Baca panduan dukungan GPU untuk menginstal driver dan perangkat lunak tambahan yang diperlukan untuk menjalankan TensorFlow di GPU.

Unduh kode sumber TensorFlow

Gunakan Git untuk mengkloning repositori TensorFlow :

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

Repo default ke cabang pengembangan master . Anda juga dapat memeriksa cabang rilis untuk membangun:

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

Opsional: Konfigurasikan build

Build TensorFlow dikonfigurasikan oleh file .bazelrc di direktori root repositori. Skrip ./configure atau ./configure.py dapat digunakan untuk menyesuaikan pengaturan umum.

Jika Anda perlu mengubah konfigurasi, jalankan skrip ./configure dari direktori root repositori. Skrip ini akan menanyakan lokasi dependensi TensorFlow dan meminta opsi konfigurasi build tambahan (flag compiler, misalnya). Lihat bagian Sesi sampel untuk detailnya.

./configure

Ada juga versi python dari skrip ini, ./configure.py . Jika menggunakan lingkungan virtual, python configure.py memprioritaskan jalur di dalam lingkungan, sedangkan ./configure memprioritaskan jalur di luar lingkungan. Dalam kedua kasus, Anda dapat mengubah default.

Sesi sampel

Berikut ini menunjukkan contoh menjalankan skrip ./configure (sesi Anda mungkin berbeda):

Opsi konfigurasi

dukungan GPU

Untuk dukungan GPU , setel cuda=Y selama konfigurasi dan tentukan versi CUDA dan cuDNN. Jika sistem Anda memiliki beberapa versi CUDA atau cuDNN yang diinstal, atur versi secara eksplisit alih-alih mengandalkan default. ./configure membuat tautan simbolis ke pustaka CUDA sistem Anda—jadi jika Anda memperbarui jalur pustaka CUDA, langkah konfigurasi ini harus dijalankan lagi sebelum membangun.

Pengoptimalan

Untuk flag pengoptimalan kompilasi, default ( -march=native ) mengoptimalkan kode yang dihasilkan untuk jenis CPU mesin Anda. Namun, jika membuat TensorFlow untuk jenis CPU yang berbeda, pertimbangkan flag pengoptimalan yang lebih spesifik. Periksa manual GCC untuk contoh.

Konfigurasi yang telah dikonfigurasi sebelumnya

Ada beberapa konfigurasi build yang telah dikonfigurasi sebelumnya yang dapat ditambahkan ke perintah bazel build , misalnya:

  • --config=dbg —Membangun dengan info debug. Lihat CONTRIBUTING.md untuk detailnya.
  • --config=mkl —Dukungan untuk Intel® MKL-DNN .
  • --config=monolithic —Konfigurasi untuk bangunan monolitik yang sebagian besar statis.

Bangun dan instal paket pip

Paket pip dibangun dalam dua langkah. Perintah bazel build membuat program "pembuat paket". Anda kemudian menjalankan pembuat paket untuk membuat paket.

Bangun pembuat paket

Gunakan bazel build untuk membuat pembuat paket TensorFlow 2.x dengan dukungan khusus CPU :

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

dukungan GPU

Untuk membangun pembuat paket TensorFlow dengan dukungan GPU:

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

Opsi pembuatan bazel

Lihat referensi baris perintah Bazel untuk opsi build .

Membangun TensorFlow dari sumber dapat menggunakan banyak RAM. Jika sistem Anda dibatasi memori, batasi penggunaan RAM Bazel dengan: --local_ram_resources=2048 .

Paket TensorFlow resmi dibuat dengan toolchain GCC yang sesuai dengan standar paket manylinux2010.

Untuk GCC 5 dan yang lebih baru, kompatibilitas dengan ABI yang lebih lama dapat dibangun menggunakan: --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" . Kompatibilitas ABI memastikan bahwa operasi kustom yang dibuat dengan paket TensorFlow resmi terus bekerja dengan paket yang dibuat GCC 5.

Bangun paket

Perintah bazel build membuat executable bernama build_pip_package —ini adalah program yang membangun paket pip . Jalankan executable seperti yang ditunjukkan di bawah ini untuk membangun paket .whl di /tmp/tensorflow_pkg .

Untuk membangun dari cabang rilis:

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

Untuk membangun dari master, gunakan --nightly_flag untuk mendapatkan dependensi yang tepat:

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

Meskipun dimungkinkan untuk membangun konfigurasi CUDA dan non-CUDA di bawah pohon sumber yang sama, disarankan untuk menjalankan bazel clean saat beralih di antara dua konfigurasi ini di pohon sumber yang sama.

Instal paketnya

Nama file dari file .whl yang dihasilkan bergantung pada versi TensorFlow dan platform Anda. Gunakan pip install untuk menginstal paket, misalnya:

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

Docker Linux dibangun

Gambar pengembangan Docker TensorFlow adalah cara mudah untuk menyiapkan lingkungan untuk membangun paket Linux dari sumber. Gambar-gambar ini sudah berisi kode sumber dan dependensi yang diperlukan untuk membangun TensorFlow. Buka panduan Docker TensorFlow untuk petunjuk penginstalan dan daftar tag gambar yang tersedia .

khusus CPU

Contoh berikut menggunakan gambar :devel untuk membuat paket khusus CPU dari kode sumber TensorFlow terbaru. Periksa panduan Docker untuk tag -devel -devel yang tersedia.

Unduh gambar pengembangan terbaru dan mulai wadah Docker yang akan Anda gunakan untuk membangun paket 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

Perintah docker run di atas memulai shell di direktori /tensorflow_src —akar dari pohon sumber. Ini me-mount direktori host saat ini di direktori /mnt container, dan meneruskan informasi pengguna host ke container melalui variabel lingkungan (digunakan untuk mengatur izin—Docker dapat membuat ini rumit).

Atau, untuk membuat salinan host TensorFlow dalam sebuah container, pasang pohon sumber host di direktori /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

Dengan pengaturan pohon sumber, buat paket TensorFlow dalam lingkungan virtual container:

  1. Opsional: Konfigurasi build—ini meminta pengguna untuk menjawab pertanyaan konfigurasi build.
  2. Bangun alat yang digunakan untuk membuat paket pip .
  3. Jalankan alat untuk membuat paket pip .
  4. Sesuaikan izin kepemilikan file untuk di luar penampung.
./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

Instal dan verifikasi paket di dalam wadah:

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__)"

Pada mesin host Anda, paket pip TensorFlow berada di direktori saat ini (dengan izin pengguna host): ./tensorflow- version - tags .whl

dukungan GPU

Docker adalah cara termudah untuk membangun dukungan GPU untuk TensorFlow karena mesin host hanya memerlukan driver NVIDIA® ( Nvidia® CUDA® Toolkit tidak harus diinstal). Lihat panduan dukungan GPU dan panduan TensorFlow Docker untuk menyiapkan nvidia-docker (khusus Linux).

Contoh berikut mendownload image TensorFlow :devel-gpu dan menggunakan nvidia-docker untuk menjalankan container yang mendukung GPU. Gambar pengembangan ini dikonfigurasi untuk membuat paket pip dengan dukungan 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

Kemudian, dalam lingkungan virtual container, buat paket TensorFlow dengan dukungan 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

Instal dan verifikasi paket di dalam wadah dan periksa 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')))"

Konfigurasi build yang diuji

Linux

CPU

Versi: kapan versi python Penyusun Membangun alat
tensorflow-2.10.0 3.7-3.10 GCC 9.3.1 Bazel 5.0.0
tensorflow-2.9.0 3.7-3.10 GCC 9.3.1 Bazel 5.0.0
tensorflow-2.8.0 3.7-3.10 GCC 7.3.1 Bazel 4.2.1
tensorflow-2.7.0 3.7-3.9 GCC 7.3.1 Bazel 3.7.2
tensorflow-2.6.0 3.6-3.9 GCC 7.3.1 Bazel 3.7.2
tensorflow-2.5.0 3.6-3.9 GCC 7.3.1 Bazel 3.7.2
tensorflow-2.4.0 3.6-3.8 GCC 7.3.1 Bazel 3.1.0
tensorflow-2.3.0 3,5-3,8 GCC 7.3.1 Bazel 3.1.0
tensorflow-2.2.0 3,5-3,8 GCC 7.3.1 Bazel 2.0.0
tensorflow-2.1.0 2,7, 3,5-3,7 GCC 7.3.1 Bazel 0.27.1
tensorflow-2.0.0 2,7, 3,3-3,7 GCC 7.3.1 Bazel 0.26.1
tensorflow-1.15.0 2,7, 3,3-3,7 GCC 7.3.1 Bazel 0.26.1
tensorflow-1.14.0 2,7, 3,3-3,7 GCC 4.8 Bazel 0.24.1
tensorflow-1.13.1 2,7, 3,3-3,7 GCC 4.8 Bazel 0.19.2
tensorflow-1.12.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.15.0
tensorflow-1.11.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.15.0
tensorflow-1.10.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.15.0
tensorflow-1.9.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.11.0
tensorflow-1.8.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.10.0
tensorflow-1.7.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.10.0
tensorflow-1.6.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.9.0
tensorflow-1.5.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.8.0
tensorflow-1.4.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.5.4
tensorflow-1.3.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.4.5
tensorflow-1.2.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.4.5
tensorflow-1.1.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.4.2
tensorflow-1.0.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.4.2

GPU

Versi: kapan versi python Penyusun Membangun alat cuDNN CUDA
tensorflow-2.10.0 3.7-3.10 GCC 9.3.1 Bazel 5.1.1 8.1 11.2
tensorflow-2.9.0 3.7-3.10 GCC 9.3.1 Bazel 5.0.0 8.1 11.2
tensorflow-2.8.0 3.7-3.10 GCC 7.3.1 Bazel 4.2.1 8.1 11.2
tensorflow-2.7.0 3.7-3.9 GCC 7.3.1 Bazel 3.7.2 8.1 11.2
tensorflow-2.6.0 3.6-3.9 GCC 7.3.1 Bazel 3.7.2 8.1 11.2
tensorflow-2.5.0 3.6-3.9 GCC 7.3.1 Bazel 3.7.2 8.1 11.2
tensorflow-2.4.0 3.6-3.8 GCC 7.3.1 Bazel 3.1.0 8.0 11.0
tensorflow-2.3.0 3,5-3,8 GCC 7.3.1 Bazel 3.1.0 7.6 10.1
tensorflow-2.2.0 3,5-3,8 GCC 7.3.1 Bazel 2.0.0 7.6 10.1
tensorflow-2.1.0 2,7, 3,5-3,7 GCC 7.3.1 Bazel 0.27.1 7.6 10.1
tensorflow-2.0.0 2,7, 3,3-3,7 GCC 7.3.1 Bazel 0.26.1 7.4 10.0
tensorflow_gpu-1.15.0 2,7, 3,3-3,7 GCC 7.3.1 Bazel 0.26.1 7.4 10.0
tensorflow_gpu-1.14.0 2,7, 3,3-3,7 GCC 4.8 Bazel 0.24.1 7.4 10.0
tensorflow_gpu-1.13.1 2,7, 3,3-3,7 GCC 4.8 Bazel 0.19.2 7.4 10.0
tensorflow_gpu-1.12.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.15.0 7 9
tensorflow_gpu-1.11.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.15.0 7 9
tensorflow_gpu-1.10.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.15.0 7 9
tensorflow_gpu-1.9.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.11.0 7 9
tensorflow_gpu-1.8.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.10.0 7 9
tensorflow_gpu-1.7.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.9.0 7 9
tensorflow_gpu-1.6.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.9.0 7 9
tensorflow_gpu-1.5.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.8.0 7 9
tensorflow_gpu-1.4.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.5.4 6 8
tensorflow_gpu-1.3.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.4.5 6 8
tensorflow_gpu-1.2.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.4.5 5.1 8
tensorflow_gpu-1.1.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.4.2 5.1 8
tensorflow_gpu-1.0.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.4.2 5.1 8

macOS

CPU

Versi: kapan versi python Penyusun Membangun alat
tensorflow-2.10.0 3.7-3.10 Dentang dari xcode 10.14 Bazel 5.1.1
tensorflow-2.9.0 3.7-3.10 Dentang dari xcode 10.14 Bazel 5.0.0
tensorflow-2.8.0 3.7-3.10 Dentang dari xcode 10.14 Bazel 4.2.1
tensorflow-2.7.0 3.7-3.9 Dentang dari xcode 10.11 Bazel 3.7.2
tensorflow-2.6.0 3.6-3.9 Dentang dari xcode 10.11 Bazel 3.7.2
tensorflow-2.5.0 3.6-3.9 Dentang dari xcode 10.11 Bazel 3.7.2
tensorflow-2.4.0 3.6-3.8 Dentang dari xcode 10.3 Bazel 3.1.0
tensorflow-2.3.0 3,5-3,8 Dentang dari xcode 10.1 Bazel 3.1.0
tensorflow-2.2.0 3,5-3,8 Dentang dari xcode 10.1 Bazel 2.0.0
tensorflow-2.1.0 2,7, 3,5-3,7 Dentang dari xcode 10.1 Bazel 0.27.1
tensorflow-2.0.0 2,7, 3,5-3,7 Dentang dari xcode 10.1 Bazel 0.27.1
tensorflow-2.0.0 2,7, 3,3-3,7 Dentang dari xcode 10.1 Bazel 0.26.1
tensorflow-1.15.0 2,7, 3,3-3,7 Dentang dari xcode 10.1 Bazel 0.26.1
tensorflow-1.14.0 2,7, 3,3-3,7 Dentang dari xcode Bazel 0.24.1
tensorflow-1.13.1 2,7, 3,3-3,7 Dentang dari xcode Bazel 0.19.2
tensorflow-1.12.0 2,7, 3,3-3,6 Dentang dari xcode Bazel 0.15.0
tensorflow-1.11.0 2,7, 3,3-3,6 Dentang dari xcode Bazel 0.15.0
tensorflow-1.10.0 2,7, 3,3-3,6 Dentang dari xcode Bazel 0.15.0
tensorflow-1.9.0 2,7, 3,3-3,6 Dentang dari xcode Bazel 0.11.0
tensorflow-1.8.0 2,7, 3,3-3,6 Dentang dari xcode Bazel 0.10.1
tensorflow-1.7.0 2,7, 3,3-3,6 Dentang dari xcode Bazel 0.10.1
tensorflow-1.6.0 2,7, 3,3-3,6 Dentang dari xcode Bazel 0.8.1
tensorflow-1.5.0 2,7, 3,3-3,6 Dentang dari xcode Bazel 0.8.1
tensorflow-1.4.0 2,7, 3,3-3,6 Dentang dari xcode Bazel 0.5.4
tensorflow-1.3.0 2,7, 3,3-3,6 Dentang dari xcode Bazel 0.4.5
tensorflow-1.2.0 2,7, 3,3-3,6 Dentang dari xcode Bazel 0.4.5
tensorflow-1.1.0 2,7, 3,3-3,6 Dentang dari xcode Bazel 0.4.2
tensorflow-1.0.0 2,7, 3,3-3,6 Dentang dari xcode Bazel 0.4.2

GPU

Versi: kapan versi python Penyusun Membangun alat cuDNN CUDA
tensorflow_gpu-1.1.0 2,7, 3,3-3,6 Dentang dari xcode Bazel 0.4.2 5.1 8
tensorflow_gpu-1.0.0 2,7, 3,3-3,6 Dentang dari xcode Bazel 0.4.2 5.1 8