Kaynaktan bir TensorFlow pip paketi oluşturun ve bunu Ubuntu Linux ve macOS üzerine kurun. Talimatlar diğer sistemler için işe yarayabilir ancak yalnızca Ubuntu ve macOS için test edilmiş ve desteklenmiştir.
Linux ve macOS için kurulum
Geliştirme ortamınızı yapılandırmak için aşağıdaki oluşturma araçlarını kurun.
Python ve TensorFlow paket bağımlılıklarını kurun
ubuntu
sudo apt install python3-dev python3-pip
Mac os işletim sistemi
Xcode 9.2 veya sonraki sürümünü gerektirir.
Homebrew paket yöneticisini kullanarak kurun:
/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
TensorFlow pip paketi bağımlılıklarını yükleyin (sanal ortam kullanılıyorsa, --user
bağımsız değişkenini atlayın):
pip install -U --user pip numpy wheel packaging requests opt_einsum
pip install -U --user keras_preprocessing --no-deps
Bazel'i yükleyin
TensorFlow'u oluşturmak için Bazel'i kurmanız gerekecek. Bazelisk , Bazel'i kurmanın kolay bir yoludur ve TensorFlow için doğru Bazel sürümünü otomatik olarak indirir. Kullanım kolaylığı için, PATH
dosyanızda Bazel yürütülebilir dosyası olarak bazel
ekleyin.
Bazelisk mevcut değilse, Bazel'i manuel olarak kurabilirsiniz . TensorFlow'un .bazelversion dosyasından doğru Bazel sürümünü kurduğunuzdan emin olun.
GPU desteğini yükleyin (isteğe bağlı, yalnızca Linux)
macOS için GPU desteği yoktur .
TensorFlow'u bir GPU üzerinde çalıştırmak için gereken sürücüleri ve ek yazılımları yüklemek için GPU destek kılavuzunu okuyun.
TensorFlow kaynak kodunu indirin
TensorFlow deposunu klonlamak için Git'i kullanın:
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
Depo varsayılan olarak master
geliştirme şubesine gider. Oluşturmak için bir sürüm dalına da göz atabilirsiniz:
git checkout branch_name # r2.2, r2.3, etc.
İsteğe bağlı: Yapıyı yapılandırın
TensorFlow derlemeleri, havuzun kök dizinindeki .bazelrc
dosyası tarafından yapılandırılır. ./configure
veya ./configure.py
komut dosyaları, ortak ayarları yapmak için kullanılabilir.
Yapılandırmayı değiştirmeniz gerekirse, havuzun kök dizininden ./configure
betiğini çalıştırın. Bu komut dosyası sizden TensorFlow bağımlılıklarının konumunu isteyecek ve ek yapı yapılandırma seçenekleri (örneğin derleyici bayrakları) isteyecektir. Ayrıntılar için Örnek oturum bölümüne bakın.
./configure
Ayrıca bu komut dosyasının bir python sürümü vardır, ./configure.py
. Sanal bir ortam kullanılıyorsa, python configure.py
ortam içindeki yollara öncelik verirken, ./configure
ortam dışındaki yollara öncelik verir. Her iki durumda da varsayılanı değiştirebilirsiniz.
Örnek oturum
Aşağıda, ./configure
betiğinin örnek bir çalıştırması gösterilmektedir (oturumunuz farklı olabilir):
Yapılandırma seçenekleri
GPU desteği
GPU desteği için yapılandırma sırasında cuda cuda=Y
ayarlayın ve CUDA ile cuDNN sürümlerini belirtin. Sisteminizde birden fazla CUDA veya cuDNN sürümü yüklüyse, varsayılana güvenmek yerine sürümü açıkça ayarlayın. ./configure
, sisteminizin CUDA kitaplıklarına sembolik bağlantılar oluşturur; bu nedenle, CUDA kitaplık yollarınızı güncellerseniz, oluşturmadan önce bu yapılandırma adımının yeniden çalıştırılması gerekir.
optimizasyonlar
Derleme optimizasyon bayrakları için, varsayılan ( -march=native
) makinenizin CPU tipi için üretilen kodu optimize eder. Ancak, farklı bir CPU türü için TensorFlow oluşturuyorsanız, daha spesifik bir optimizasyon bayrağı düşünün. Örnekler için GCC kılavuzuna bakın.
Önceden yapılandırılmış yapılandırmalar
bazel build
komutuna eklenebilecek bazı önceden yapılandırılmış yapı yapılandırmaları vardır, örneğin:
-
--config=dbg
ayıklama bilgisi ile derleyin. Ayrıntılar için CONTRIBUTING.md'ye bakın. -
--config=mkl
MKL-DNN için destek . -
--config=monolithic
—Çoğunlukla statik, yekpare yapı için yapılandırma.
Pip paketini oluşturun ve kurun
Pip paketi iki adımda oluşturulur. bazel build
komutları, bir "paket oluşturucu" programı oluşturur. Daha sonra paketi oluşturmak için paket oluşturucuyu çalıştırırsınız.
Paket oluşturucuyu oluşturun
Yalnızca CPU desteğiyle TensorFlow 2.x paket oluşturucuyu oluşturmak için bazel build
kullanın:
bazel build [--config=option] //tensorflow/tools/pip_package:build_pip_package
GPU desteği
GPU destekli bir TensorFlow paket oluşturucu oluşturmak için:
bazel build --config=cuda [--config=option] //tensorflow/tools/pip_package:build_pip_package
Bazel yapı seçenekleri
Yapı seçenekleri için Bazel komut satırı başvurusuna bakın.
TensorFlow'u kaynaktan oluşturmak çok fazla RAM kullanabilir. Sisteminizde bellek kısıtlıysa, Bazel'in RAM kullanımını şu şekilde sınırlayın: --local_ram_resources=2048
.
Resmi TensorFlow paketleri , manylinux2010 paket standardıyla uyumlu bir GCC araç zinciri ile oluşturulmuştur.
GCC 5 ve sonrası için, eski ABI ile uyumluluk şu şekilde oluşturulabilir: --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0"
. ABI uyumluluğu, resmi TensorFlow paketine göre oluşturulmuş özel operasyonların GCC 5 yerleşik paketiyle çalışmaya devam etmesini sağlar.
paketi oluştur
Bazel bazel build
komutu, build_pip_package
adlı bir yürütülebilir dosya oluşturur; bu, pip
paketini oluşturan programdır. /tmp/tensorflow_pkg
dizininde bir .whl
paketi oluşturmak için yürütülebilir dosyayı aşağıda gösterildiği gibi çalıştırın.
Bir sürüm dalından derlemek için:
./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
Master'dan derlemek için --nightly_flag
kullanarak doğru bağımlılıkları elde edin:
./bazel-bin/tensorflow/tools/pip_package/build_pip_package --nightly_flag /tmp/tensorflow_pkg
Aynı kaynak ağaç altında hem CUDA hem de CUDA dışı yapılandırmalar oluşturmak mümkün olsa da, aynı kaynak ağaçta bu iki yapılandırma arasında geçiş yaparken bazel clean
çalıştırmanız önerilir.
paketi kurun
Oluşturulan .whl
dosyasının dosya adı, TensorFlow sürümüne ve platformunuza bağlıdır. Paketi pip install
kullanın, örneğin:
pip install /tmp/tensorflow_pkg/tensorflow-version-tags.whl
Docker Linux derlemeleri
TensorFlow'un Docker geliştirme görüntüleri, kaynaktan Linux paketleri oluşturmak için bir ortam kurmanın kolay bir yoludur. Bu görüntüler, TensorFlow'u oluşturmak için gereken kaynak kodunu ve bağımlılıkları zaten içerir. Kurulum talimatları ve mevcut görüntü etiketlerinin listesi için TensorFlow Docker kılavuzuna gidin.
yalnızca CPU
Aşağıdaki örnek, en son TensorFlow kaynak kodundan yalnızca CPU içeren bir paket oluşturmak için :devel
görüntüsünü kullanır. Kullanılabilir TensorFlow -devel
etiketleri için Docker kılavuzunu kontrol edin.
En son geliştirme görüntüsünü indirin ve pip paketini oluşturmak için kullanacağınız bir Docker konteyneri başlatın:
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
Yukarıdaki docker run
komutu, kaynak ağacın kökü olan /tensorflow_src
dizininde bir kabuk başlatır. Ana bilgisayarın geçerli dizinini kabın /mnt
dizinine bağlar ve ana bilgisayar kullanıcısının bilgilerini bir çevresel değişken yoluyla kaba aktarır (izinleri ayarlamak için kullanılır; Docker bunu zorlaştırabilir).
Alternatif olarak, bir kapsayıcı içinde TensorFlow'un ana bilgisayar kopyasını oluşturmak için ana bilgisayar kaynak ağacını kabın /tensorflow
dizinine bağlayın:
docker run -it -w /tensorflow -v /path/to/tensorflow:/tensorflow -v $PWD:/mnt \ -e HOST_PERMS="\\((id -u):\\)(id -g)" tensorflow/tensorflow:devel bash
Kaynak ağacı ayarlandığında, kabın sanal ortamında TensorFlow paketini oluşturun:
- İsteğe bağlı: Yapıyı yapılandırın—bu, kullanıcıdan yapı yapılandırma sorularını yanıtlamasını ister.
- Pip paketini oluşturmak için kullanılan aracı oluşturun.
- Pip paketini oluşturmak için aracı çalıştırın.
- Dosyanın sahiplik izinlerini kapsayıcı dışında ayarlayın.
./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
Paketi kapsayıcı içine kurun ve doğrulayın:
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__)"
Ana makinenizde, TensorFlow pip paketi geçerli dizindedir (ana bilgisayar kullanıcı izinleriyle): ./tensorflow- version - tags .whl
GPU desteği
Docker, TensorFlow için GPU desteği oluşturmanın en kolay yoludur çünkü ana makine yalnızca NVIDIA® sürücüsü gerektirir ( NVIDIA® CUDA® Toolkit'in yüklenmesi gerekmez). nvidia- docker'ı (yalnızca Linux) kurmak için GPU destek kılavuzuna ve TensorFlow Docker kılavuzuna bakın.
Aşağıdaki örnek, TensorFlow :devel-gpu
görüntüsünü indirir ve GPU etkin kapsayıcıyı çalıştırmak için nvidia-docker
docker'ı kullanır. Bu geliştirme görüntüsü, GPU desteğiyle bir pip paketi oluşturmak için yapılandırılmıştır:
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
Ardından, kabın sanal ortamında GPU desteğiyle TensorFlow paketini oluşturun:
./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
Paketi kapsayıcıya yükleyip doğrulayın ve bir GPU olup olmadığını kontrol edin:
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')))"
Test edilmiş yapı yapılandırmaları
linux
İşlemci
Sürüm | Python versiyonu | Derleyici | Yapı araçları |
---|---|---|---|
tensorflow-2.11.0 | 3.7-3.10 | GCC 9.3.1 | Bazel 5.3.0 |
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
Sürüm | Python versiyonu | Derleyici | Yapı araçları | cuDNN | CUDA |
---|---|---|---|---|---|
tensorflow-2.11.0 | 3.7-3.10 | GCC 9.3.1 | Bazel 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 | 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 |
Mac os işletim sistemi
İşlemci
Sürüm | Python versiyonu | Derleyici | Yapı araçları |
---|---|---|---|
tensorflow-2.11.0 | 3.7-3.10 | xcode 10.14'ten Clang | Bazel 5.3.0 |
tensorflow-2.10.0 | 3.7-3.10 | xcode 10.14'ten Clang | Bazel 5.1.1 |
tensorflow-2.9.0 | 3.7-3.10 | xcode 10.14'ten Clang | Bazel 5.0.0 |
tensorflow-2.8.0 | 3.7-3.10 | xcode 10.14'ten Clang | Bazel 4.2.1 |
tensorflow-2.7.0 | 3.7-3.9 | xcode 10.11'den Clang | Bazel 3.7.2 |
tensorflow-2.6.0 | 3.6-3.9 | xcode 10.11'den Clang | Bazel 3.7.2 |
tensorflow-2.5.0 | 3.6-3.9 | xcode 10.11'den Clang | Bazel 3.7.2 |
tensorflow-2.4.0 | 3.6-3.8 | xcode 10.3'ten Clang | Bazel 3.1.0 |
tensorflow-2.3.0 | 3.5-3.8 | xcode 10.1'den Clang | Bazel 3.1.0 |
tensorflow-2.2.0 | 3.5-3.8 | xcode 10.1'den Clang | Bazel 2.0.0 |
tensorflow-2.1.0 | 2.7, 3.5-3.7 | xcode 10.1'den Clang | Bazel 0.27.1 |
tensorflow-2.0.0 | 2.7, 3.5-3.7 | xcode 10.1'den Clang | Bazel 0.27.1 |
tensorflow-2.0.0 | 2.7, 3.3-3.7 | xcode 10.1'den Clang | Bazel 0.26.1 |
tensorflow-1.15.0 | 2.7, 3.3-3.7 | xcode 10.1'den Clang | Bazel 0.26.1 |
tensorflow-1.14.0 | 2.7, 3.3-3.7 | Xcode'dan Clang | Bazel 0.24.1 |
tensorflow-1.13.1 | 2.7, 3.3-3.7 | Xcode'dan Clang | Bazel 0.19.2 |
tensorflow-1.12.0 | 2.7, 3.3-3.6 | Xcode'dan Clang | Bazel 0.15.0 |
tensorflow-1.11.0 | 2.7, 3.3-3.6 | Xcode'dan Clang | Bazel 0.15.0 |
tensorflow-1.10.0 | 2.7, 3.3-3.6 | Xcode'dan Clang | Bazel 0.15.0 |
tensorflow-1.9.0 | 2.7, 3.3-3.6 | Xcode'dan Clang | Bazel 0.11.0 |
tensorflow-1.8.0 | 2.7, 3.3-3.6 | Xcode'dan Clang | Bazel 0.10.1 |
tensorflow-1.7.0 | 2.7, 3.3-3.6 | Xcode'dan Clang | Bazel 0.10.1 |
tensorflow-1.6.0 | 2.7, 3.3-3.6 | Xcode'dan Clang | Bazel 0.8.1 |
tensorflow-1.5.0 | 2.7, 3.3-3.6 | Xcode'dan Clang | Bazel 0.8.1 |
tensorflow-1.4.0 | 2.7, 3.3-3.6 | Xcode'dan Clang | Bazel 0.5.4 |
tensorflow-1.3.0 | 2.7, 3.3-3.6 | Xcode'dan Clang | Bazel 0.4.5 |
tensorflow-1.2.0 | 2.7, 3.3-3.6 | Xcode'dan Clang | Bazel 0.4.5 |
tensorflow-1.1.0 | 2.7, 3.3-3.6 | Xcode'dan Clang | Bazel 0.4.2 |
tensorflow-1.0.0 | 2.7, 3.3-3.6 | Xcode'dan Clang | Bazel 0.4.2 |
GPU
Sürüm | Python versiyonu | Derleyici | Yapı araçları | cuDNN | CUDA |
---|---|---|---|---|---|
tensorflow_gpu-1.1.0 | 2.7, 3.3-3.6 | Xcode'dan Clang | Bazel 0.4.2 | 5.1 | 8 |
tensorflow_gpu-1.0.0 | 2.7, 3.3-3.6 | Xcode'dan Clang | Bazel 0.4.2 | 5.1 | 8 |