Buat paket pip TensorFlow dari sumber dan instal di Ubuntu Linux dan macOS. Sementara instruksi mungkin bekerja untuk sistem lain, itu hanya diuji dan didukung untuk Ubuntu dan macOS.
Pengaturan untuk Linux dan macOS
Instal alat build berikut untuk mengonfigurasi lingkungan pengembangan Anda.
Instal dependensi paket Python dan TensorFlow
Ubuntu
sudo apt install python3-dev python3-pip
macOS
Membutuhkan Xcode 9.2 atau lebih baru.
Instal menggunakan manajer paket Homebrew :
brew install python
Instal dependensi paket pip TensorFlow (jika menggunakan lingkungan virtual, abaikan 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 perlu memasang Bazel. Bazelisk adalah cara mudah untuk menginstal Bazel dan secara otomatis mendownload 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 benar dari file .bazelversion TensorFlow.
Instal Dentang (disarankan, hanya Linux)
Dentang adalah kompiler C/C++/Objective-C yang dikompilasi dalam C++ berdasarkan LLVM. Ini adalah compiler default untuk membangun TensorFlow dimulai dengan TensorFlow 2.13. Versi yang didukung saat ini adalah LLVM/Dentang 16.
Paket LLVM Debian/Ubuntu nightly menyediakan skrip instalasi otomatis dan paket untuk instalasi manual di Linux. Pastikan Anda menjalankan perintah berikut jika Anda menambahkan repositori apt llvm secara manual ke sumber paket Anda:
sudo apt-get update && sudo apt-get install -y llvm-16 clang-16
Sebagai alternatif, Anda dapat mengunduh dan membongkar binari Clang+LLVM-16 bawaan .
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 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 cabang pengembangan master
. Anda juga dapat melihat cabang rilis untuk dibuat:
git checkout branch_name # r2.2, r2.3, etc.
Opsional: Konfigurasikan build
Build TensorFlow dikonfigurasi 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 adalah contoh menjalankan skrip ./configure
(sesi Anda mungkin berbeda):
Opsi konfigurasi
Dukungan GPU
Untuk dukungan GPU , atur cuda=Y
selama konfigurasi dan tentukan versi CUDA dan cuDNN. Jika sistem Anda memiliki beberapa versi CUDA atau cuDNN yang diinstal, setel versi secara eksplisit alih-alih mengandalkan default. ./configure
membuat tautan simbolik ke pustaka CUDA sistem Anda—jadi jika Anda memperbarui jalur pustaka CUDA, langkah konfigurasi ini harus dijalankan lagi sebelum membangun.
Pengoptimalan
Untuk tanda pengoptimalan kompilasi, default ( -march=native
) mengoptimalkan kode yang dihasilkan untuk jenis CPU mesin Anda. Namun, jika membuat TensorFlow untuk jenis CPU yang berbeda, pertimbangkan tanda pengoptimalan yang lebih spesifik. Periksa manual GCC untuk contoh.
Konfigurasi yang telah dikonfigurasi sebelumnya
Ada beberapa konfigurasi build prakonfigurasi yang tersedia yang dapat ditambahkan ke perintah bazel build
, misalnya:
-
--config=dbg
—Bangun 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 "package-builder". 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 mem-build pembuat paket TensorFlow dengan dukungan GPU:
bazel build --config=cuda [--config=option] //tensorflow/tools/pip_package:build_pip_package
Opsi build 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 resmi TensorFlow dibuat dengan toolchain Clang yang sesuai dengan standar paket manylinux2014.
Membangun paket
Perintah bazel build
membuat sebuah executable bernama build_pip_package
— ini adalah program yang membangun paket pip
. Jalankan executable seperti yang ditunjukkan di bawah ini untuk membuat paket .whl
di direktori /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 pohon sumber yang sama, disarankan untuk menjalankan bazel clean
saat beralih di antara kedua 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 menyiapkan lingkungan untuk membangun paket Linux dari sumber. Gambar ini sudah berisi kode sumber dan dependensi yang diperlukan untuk membangun TensorFlow. Buka panduan TensorFlow Docker untuk petunjuk penginstalan dan daftar tag image yang tersedia .
Khusus CPU
Contoh berikut menggunakan :devel
image untuk membuat paket khusus CPU dari kode sumber TensorFlow terbaru. Periksa panduan Docker untuk tag TensorFlow -devel
yang tersedia.
Unduh gambar pengembangan terbaru dan mulai wadah Docker yang akan Anda gunakan untuk membuat 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 sebuah shell di direktori /tensorflow_src
—akar dari pohon sumber. Itu me-mount direktori host saat ini di direktori /mnt
wadah, dan meneruskan informasi pengguna host ke wadah melalui variabel lingkungan (digunakan untuk mengatur izin—Docker dapat membuat ini rumit).
Alternatifnya, untuk mem-build salinan host TensorFlow di dalam container, pasang pohon sumber host di direktori /tensorflow
container:
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 penyiapan pohon sumber, buat paket TensorFlow dalam lingkungan virtual penampung:
- Opsional: Konfigurasikan build—ini meminta pengguna untuk menjawab pertanyaan konfigurasi build.
- Bangun alat yang digunakan untuk membuat paket pip .
- Jalankan alat untuk membuat paket pip .
- 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__)"
Di mesin host Anda, paket pip TensorFlow ada di direktori saat ini (dengan izin pengguna host): ./tensorflow- version - tags .whl
Dukungan GPU
Docker adalah cara termudah 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 TensorFlow :devel-gpu
image 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 teruji
Linux
CPU
Versi: kapan | versi Python | Penyusun | Membangun alat |
---|---|---|---|
tensorflow-2.13.0 | 3.8-3.11 | Dentang 16.0.0 | Bagel 5.3.0 |
tensorflow-2.12.0 | 3.8-3.11 | GCC 9.3.1 | Bagel 5.3.0 |
tensorflow-2.11.0 | 3.7-3.10 | GCC 9.3.1 | Bagel 5.3.0 |
tensorflow-2.10.0 | 3.7-3.10 | GCC 9.3.1 | Bazel 5.1.1 |
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 | Bagel 3.7.2 |
tensorflow-2.6.0 | 3.6-3.9 | GCC 7.3.1 | Bagel 3.7.2 |
tensorflow-2.5.0 | 3.6-3.9 | GCC 7.3.1 | Bagel 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 | Bagel 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 | Bagel 0.15.0 |
tensorflow-1.11.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 0.15.0 |
tensorflow-1.10.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 0.15.0 |
tensorflow-1.9.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 0.11.0 |
tensorflow-1.8.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 0.10.0 |
tensorflow-1.7.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 0.10.0 |
tensorflow-1.6.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 0.9.0 |
tensorflow-1.5.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 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 | Bagel 0.4.5 |
tensorflow-1.2.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 0.4.5 |
tensorflow-1.1.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 0.4.2 |
tensorflow-1.0.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 0.4.2 |
GPU
Versi: kapan | versi Python | Penyusun | Membangun alat | cuDNN | CUDA |
---|---|---|---|---|---|
tensorflow-2.13.0 | 3.8-3.11 | Dentang 16.0.0 | Bagel 5.3.0 | 8.6 | 11.8 |
tensorflow-2.12.0 | 3.8-3.11 | GCC 9.3.1 | Bagel 5.3.0 | 8.6 | 11.8 |
tensorflow-2.11.0 | 3.7-3.10 | GCC 9.3.1 | Bagel 5.3.0 | 8.1 | 11.2 |
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 | Bagel 3.7.2 | 8.1 | 11.2 |
tensorflow-2.6.0 | 3.6-3.9 | GCC 7.3.1 | Bagel 3.7.2 | 8.1 | 11.2 |
tensorflow-2.5.0 | 3.6-3.9 | GCC 7.3.1 | Bagel 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 | Bagel 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 | Bagel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.11.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.10.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.9.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 0.11.0 | 7 | 9 |
tensorflow_gpu-1.8.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 0.10.0 | 7 | 9 |
tensorflow_gpu-1.7.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 0.9.0 | 7 | 9 |
tensorflow_gpu-1.6.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 0.9.0 | 7 | 9 |
tensorflow_gpu-1.5.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 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 | Bagel 0.4.5 | 6 | 8 |
tensorflow_gpu-1.2.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 0.4.5 | 5.1 | 8 |
tensorflow_gpu-1.1.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 0.4.2 | 5.1 | 8 |
tensorflow_gpu-1.0.0 | 2.7, 3.3-3.6 | GCC 4.8 | Bagel 0.4.2 | 5.1 | 8 |
macOS
CPU
Versi: kapan | versi Python | Penyusun | Membangun alat |
---|---|---|---|
tensorflow-2.13.0 | 3.8-3.11 | Dentang dari xcode 10.15 | Bagel 5.3.0 |
tensorflow-2.12.0 | 3.8-3.11 | Dentang dari xcode 10.15 | Bagel 5.3.0 |
tensorflow-2.11.0 | 3.7-3.10 | Dentang dari xcode 10.14 | Bagel 5.3.0 |
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 | Bagel 3.7.2 |
tensorflow-2.6.0 | 3.6-3.9 | Dentang dari xcode 10.11 | Bagel 3.7.2 |
tensorflow-2.5.0 | 3.6-3.9 | Dentang dari xcode 10.11 | Bagel 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 | Bagel 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 | Bagel 0.15.0 |
tensorflow-1.11.0 | 2.7, 3.3-3.6 | Dentang dari xcode | Bagel 0.15.0 |
tensorflow-1.10.0 | 2.7, 3.3-3.6 | Dentang dari xcode | Bagel 0.15.0 |
tensorflow-1.9.0 | 2.7, 3.3-3.6 | Dentang dari xcode | Bagel 0.11.0 |
tensorflow-1.8.0 | 2.7, 3.3-3.6 | Dentang dari xcode | Bagel 0.10.1 |
tensorflow-1.7.0 | 2.7, 3.3-3.6 | Dentang dari xcode | Bagel 0.10.1 |
tensorflow-1.6.0 | 2.7, 3.3-3.6 | Dentang dari xcode | Bagel 0.8.1 |
tensorflow-1.5.0 | 2.7, 3.3-3.6 | Dentang dari xcode | Bagel 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 | Bagel 0.4.5 |
tensorflow-1.2.0 | 2.7, 3.3-3.6 | Dentang dari xcode | Bagel 0.4.5 |
tensorflow-1.1.0 | 2.7, 3.3-3.6 | Dentang dari xcode | Bagel 0.4.2 |
tensorflow-1.0.0 | 2.7, 3.3-3.6 | Dentang dari xcode | Bagel 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 | Bagel 0.4.2 | 5.1 | 8 |
tensorflow_gpu-1.0.0 | 2.7, 3.3-3.6 | Dentang dari xcode | Bagel 0.4.2 | 5.1 | 8 |