ML Community Day is November 9! Join us for updates from TensorFlow, JAX, and more Learn more

Bangun dari sumber

Membangun sebuah paket TensorFlow pip dari sumber dan menginstalnya pada 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 Homebrew manajer paket:

/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 paket TensorFlow pip dependensi (jika menggunakan lingkungan virtual, menghilangkan --user argumen):

pip install -U --user pip numpy wheel
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 mendownload versi Bazel benar untuk TensorFlow. Untuk kemudahan penggunaan, tambahkan Bazelisk sebagai bazel dieksekusi dalam Anda PATH .

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

Instal dukungan GPU (opsional, hanya Linux)

Tidak ada dukungan GPU untuk MacOS.

Baca dukungan GPU panduan untuk menginstal driver dan software tambahan yang diperlukan untuk menjalankan TensorFlow pada GPU.

Unduh kode sumber TensorFlow

Gunakan Git untuk mengkloning repositori TensorFlow :

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

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

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

Konfigurasikan bangunan

Mengkonfigurasi sistem Anda membangun dengan menjalankan ./configure di akar pohon sumber TensorFlow Anda. Skrip ini meminta Anda untuk lokasi dependensi TensorFlow dan meminta opsi konfigurasi build tambahan (flag compiler, misalnya).

./configure

Jika menggunakan lingkungan virtual, python configure.py mengutamakan jalur dalam lingkungan, sedangkan ./configure mengutamakan jalur luar lingkungan. Dalam kedua kasus, Anda dapat mengubah default.

Sesi sampel

Berikut ini menunjukkan lari sampel ./configure naskah (sesi Anda mungkin berbeda):

Opsi konfigurasi

dukungan GPU

Untuk dukungan GPU , set cuda=Y selama konfigurasi dan menentukan versi CUDA dan cuDNN. Jika sistem Anda memiliki beberapa versi CUDA atau cuDNN yang diinstal, atur versi secara eksplisit alih-alih mengandalkan default. ./configure menciptakan link simbolik ke sistem anda CUDA perpustakaan-jadi jika Anda memperbarui CUDA jalur perpustakaan Anda, langkah konfigurasi ini harus dijalankan lagi sebelum membangun.

Pengoptimalan

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

Konfigurasi yang telah dikonfigurasi sebelumnya

Ada beberapa yang telah dikonfigurasikan membangun konfigurasi yang tersedia yang dapat ditambahkan ke bazel build perintah, misalnya:

  • --config=dbg -Membangun dengan info debug. Lihat CONTRIBUTING.md untuk rincian.
  • --config=mkl -Dukungan untuk Intel® MKL-DNN .
  • --config=monolithic -Konfigurasi untuk kebanyakan statis, monolitik membangun.
  • --config=v1 -Membangun TensorFlow 1.x bukan 2.x.

Bangun paket pip

TensorFlow 2.x

Instal Bazel dan penggunaan bazel build untuk membuat paket 2.x TensorFlow dengan dukungan CPU-satunya:

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

TensorFlow 1.x

Untuk membangun sebuah TensorFlow paket 1.x tua, gunakan --config=v1 pilihan:

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

Opsi pembuatan bazel

Lihat Bazel referensi baris perintah untuk membangun pilihan .

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

The paket TensorFlow resmi yang dibangun dengan GCC 7.3 toolchain yang dipatuhi dengan standar paket manylinux2010.

Untuk GCC 5 dan kemudian, kompatibilitas dengan ABI tua dapat dibangun dengan 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

The bazel build perintah menciptakan bernama executable build_pip_package -ini adalah program yang membangun pip paket. Jalankan executable seperti yang ditunjukkan di bawah ini untuk membangun .whl paket dalam /tmp/tensorflow_pkg direktori.

Untuk membangun dari cabang rilis:

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

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

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

Meskipun mungkin untuk membangun kedua CUDA dan konfigurasi non-CUDA bawah pohon sumber yang sama, itu dianjurkan untuk menjalankan bazel clean bila beralih di antara dua konfigurasi ini di pohon sumber yang sama.

Instal paketnya

Nama file dari yang dihasilkan .whl berkas tergantung pada versi TensorFlow dan platform Anda. Gunakan pip install untuk menginstal paket tersebut, 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. Lihat TensorFlow Docker panduan untuk instalasi dan daftar tag gambar yang tersedia .

khusus CPU

Contoh berikut menggunakan :devel gambar untuk membangun sebuah paket CPU-satunya dari kode sumber TensorFlow terbaru. Lihat Docker panduan untuk TensorFlow tersedia -devel tag.

Download gambar perkembangan terbaru dan memulai sebuah wadah Docker yang akan kami 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

Di atas docker run perintah dimulai shell di /tensorflow_src direktori-akar pohon sumber. Itu gunung direktori saat host dalam wadah /mnt direktori, dan melewati informasi pengguna host untuk kontainer melalui variabel lingkungan (digunakan untuk mengatur hak akses-Docker dapat membuat rumit).

Atau, untuk membangun sebuah salinan sejumlah TensorFlow dalam sebuah wadah, mount pohon host sumber di wadah /tensorflow direktori:

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. Konfigurasi build—ini meminta pengguna untuk menjawab pertanyaan konfigurasi build.
  2. Membangun alat yang digunakan untuk membuat paket pip.
  3. Jalankan alat untuk membuat paket pip.
  4. Sesuaikan izin kepemilikan file untuk di luar penampung.
./configure  # answer prompts or use defaults

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 TensorFlow pip adalah di direktori saat ini (dengan izin tuan pengguna): ./tensorflow- version - tags .whl

dukungan GPU

Docker adalah cara termudah untuk dukungan membangun GPU untuk TensorFlow sejak mesin host hanya membutuhkan sopir NVIDIA® (NVIDIA CUDA® Toolkit tidak harus diinstal). Lihat dukungan panduan GPU dan TensorFlow panduan Docker untuk mengatur nvidia-buruh pelabuhan (Linux).

Contoh berikut mendownload TensorFlow yang :devel-gpu gambar dan menggunakan nvidia-docker untuk menjalankan wadah GPU-enabled. Image perkembangan ini dikonfigurasi untuk membangun sebuah 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  # answer prompts or use defaults

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.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.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.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