Google I/O にご参加くださり、ありがとうございます。すべてのセッションはオンデマンドで視聴できますオンデマンド視聴

ソースからビルド

ソースから TensorFlow pipパッケージをビルドし、Ubuntu Linux および macOS にインストールします。この手順は他のシステムでも機能する可能性がありますが、Ubuntu と macOS でのみテストおよびサポートされています。

Linux および macOS のセットアップ

次のビルド ツールをインストールして、開発環境を構成します。

Python と TensorFlow パッケージの依存関係をインストールする

Ubuntu

sudo apt install python3-dev python3-pip

マックOS

Xcode 9.2 以降が必要です。

Homebrewパッケージ マネージャーを使用してインストールします。

brew install python

TensorFlow pipパッケージの依存関係をインストールします (仮想環境を使用している場合は、 --user引数を省略します)。

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

ベゼルを取り付ける

TensorFlow をビルドするには、Bazel をインストールする必要があります。 Bazelisk は、Bazel をインストールする簡単な方法であり、TensorFlow の正しい Bazel バージョンを自動的にダウンロードします。使いやすくするために、 bazel実行可能ファイルとして Bazelisk をPATHに追加します。

Bazelisk が利用できない場合は、 Bazel を手動でインストールできます。 TensorFlow の.bazelversionファイルから正しい Bazel バージョンをインストールしてください。

GPU サポートのインストール (オプション、Linux のみ)

macOS の GPU サポートはありません。

GPU サポートガイドを読んで、GPU で TensorFlow を実行するために必要なドライバーと追加のソフトウェアをインストールします。

TensorFlow ソースコードをダウンロードする

Gitを使用してTensorFlow リポジトリのクローンを作成します。

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

リポジトリはデフォルトでmaster開発ブランチになります。ビルドするリリース ブランチをチェックアウトすることもできます。

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

オプション: ビルドを構成する

TensorFlow ビルドは、リポジトリのルート ディレクトリにある.bazelrcファイルによって構成されます。 ./configureまたは./configure.pyスクリプトを使用して、一般的な設定を調整できます。

構成を変更する必要がある場合は、リポジトリのルート ディレクトリから./configureスクリプトを実行します。このスクリプトは、TensorFlow の依存関係の場所を尋ね、追加のビルド構成オプション (コンパイラ フラグなど) を尋ねます。詳細については、サンプル セッションのセクションを参照してください。

./configure

このスクリプトの Python バージョン./configure.pyもあります。仮想環境を使用している場合、 python configure.py環境内のパスを優先し、 ./configure環境外のパスを優先します。どちらの場合も、デフォルトを変更できます。

サンプルセッション

以下は、 ./configureスクリプトのサンプル実行を示しています (セッションは異なる場合があります)。

構成オプション

GPU サポート

GPU サポートの場合、構成中にcuda=Yを設定し、CUDA と cuDNN のバージョンを指定します。システムに CUDA または cuDNN の複数のバージョンがインストールされている場合は、デフォルトに依存するのではなく、明示的にバージョンを設定します。 ./configureシステムの CUDA ライブラリへのシンボリック リンクを作成します。そのため、CUDA ライブラリ パスを更新する場合は、ビルドする前にこの構成手順を再度実行する必要があります。

最適化

コンパイル最適化フラグの場合、デフォルト ( -march=native ) は、マシンの CPU タイプに合わせて生成されたコードを最適化します。ただし、別の CPU タイプ用に TensorFlow を構築する場合は、より具体的な最適化フラグを検討してください。例については、 GCC のマニュアルを確認してください。

構成済みの構成

bazel buildコマンドに追加できる事前構成済みのビルド構成がいくつかあります。次に例を示します。

  • --config=dbg — デバッグ情報を使用してビルドします。詳細については、 CONTRIBUTING.md を参照してください。
  • --config=mklIntel® MKL-DNNのサポート。
  • --config=monolithic — ほぼ静的なモノリシック ビルドの構成。

pip パッケージをビルドしてインストールする

pip パッケージは 2 つのステップでビルドされます。 bazel buildコマンドは、「パッケージ ビルダー」プログラムを作成します。次に、package-builder を実行してパッケージを作成します。

パッケージビルダーをビルドする

bazel buildを使用して、 CPU のみをサポートする TensorFlow 2.x パッケージ ビルダーを作成します。

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

GPU サポート

GPU をサポートする TensorFlow パッケージ ビルダーをビルドするには:

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

Bazel ビルド オプション

ビルド オプションについては、Bazelコマンドライン リファレンスを参照してください。

ソースから TensorFlow をビルドすると、大量の RAM が使用される可能性があります。システムのメモリに制約がある場合は、Bazel の RAM 使用量を--local_ram_resources=2048で制限します。

公式の TensorFlow パッケージは、 manylinux2014 パッケージ標準に準拠する GCC ツールチェーンで構築されています。

パッケージをビルドする

bazel buildコマンドは、 build_pip_packageという名前の実行可能ファイルを作成します。これは、 pipパッケージをビルドするプログラムです。以下に示すように実行可能ファイルを実行して、 /tmp/tensorflow_pkgディレクトリに.whlパッケージをビルドします。

リリース ブランチからビルドするには:

./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 構成の両方をビルドすることは可能ですが、同じソース ツリーでこれら 2 つの構成を切り替える場合は、 bazel cleanを実行することをお勧めします。

パッケージをインストールする

生成された.whlファイルのファイル名は、TensorFlow のバージョンとプラットフォームによって異なります。 pip install使用してパッケージをインストールします。次に例を示します。

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

Docker Linux ビルド

TensorFlow の Docker 開発イメージは、ソースから Linux パッケージをビルドするための環境をセットアップする簡単な方法です。これらのイメージには、TensorFlow のビルドに必要なソース コードと依存関係が既に含まれています。インストール手順と使用可能なイメージ タグのリストについては、TensorFlow Docker ガイドを参照してください。

CPUのみ

次の例では、 :develイメージを使用して、最新の TensorFlow ソース コードから CPU のみのパッケージをビルドします。利用可能な TensorFlow -develタグについては、 Docker ガイドを確認してください。

最新の開発イメージをダウンロードし、 pipパッケージのビルドに使用する Docker コンテナーを開始します。

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ディレクトリにマウントし、ホスト ユーザーの情報を環境変数 (アクセス許可の設定に使用されます。Docker ではこれが難しい場合があります) を介してコンテナーに渡します。

または、コンテナー内に 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__)"

ホスト マシンでは、TensorFlow pipパッケージは現在のディレクトリにあります (ホスト ユーザーのアクセス許可を使用): ./tensorflow- version - tags .whl

GPU サポート

Docker は TensorFlow の GPU サポートを構築する最も簡単な方法です。ホストマシンにはNVIDIA® ドライバーしか必要ないためです ( NVIDIA® CUDA® Toolkitをインストールする必要はありません)。 GPU サポート ガイドと TensorFlow Docker ガイドを参照して、 nvidia-dockerをセットアップします (Linux のみ)。

次の例では、TensorFlow :devel-gpuイメージをダウンロードし、 nvidia-dockerを使用して GPU 対応コンテナーを実行します。この開発イメージは、GPU をサポートするpipパッケージをビルドするように構成されています。

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

次に、コンテナーの仮想環境内で、GPU をサポートする TensorFlow パッケージをビルドします。

./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')))"

テスト済みのビルド構成

Linux

CPU

バージョンPython バージョンコンパイラビルドツール
テンソルフロー-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 GCC 4.8バゼル 0.24.1
テンソルフロー-1.13.1 2.7、3.3-3.7 GCC 4.8バゼル 0.19.2
テンソルフロー-1.12.0 2.7、3.3-3.6 GCC 4.8バゼル 0.15.0
テンソルフロー-1.11.0 2.7、3.3-3.6 GCC 4.8バゼル 0.15.0
テンソルフロー-1.10.0 2.7、3.3-3.6 GCC 4.8バゼル 0.15.0
テンソルフロー-1.9.0 2.7、3.3-3.6 GCC 4.8バゼル 0.11.0
テンソルフロー-1.8.0 2.7、3.3-3.6 GCC 4.8バゼル 0.10.0
テンソルフロー-1.7.0 2.7、3.3-3.6 GCC 4.8バゼル 0.10.0
テンソルフロー-1.6.0 2.7、3.3-3.6 GCC 4.8バゼル 0.9.0
テンソルフロー-1.5.0 2.7、3.3-3.6 GCC 4.8バゼル 0.8.0
テンソルフロー-1.4.0 2.7、3.3-3.6 GCC 4.8バゼル 0.5.4
テンソルフロー-1.3.0 2.7、3.3-3.6 GCC 4.8バゼル 0.4.5
テンソルフロー-1.2.0 2.7、3.3-3.6 GCC 4.8バゼル 0.4.5
テンソルフロー-1.1.0 2.7、3.3-3.6 GCC 4.8バゼル 0.4.2
テンソルフロー-1.0.0 2.7、3.3-3.6 GCC 4.8バゼル 0.4.2

GPU

バージョンPython バージョンコンパイラビルドツールcuDNNクーダ
テンソルフロー-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
tensorflow_gpu-1.15.0 2.7、3.3-3.7 GCC 7.3.1バゼル 0.26.1 7.4 10.0
tensorflow_gpu-1.14.0 2.7、3.3-3.7 GCC 4.8バゼル 0.24.1 7.4 10.0
tensorflow_gpu-1.13.1 2.7、3.3-3.7 GCC 4.8バゼル 0.19.2 7.4 10.0
tensorflow_gpu-1.12.0 2.7、3.3-3.6 GCC 4.8バゼル 0.15.0 7 9
tensorflow_gpu-1.11.0 2.7、3.3-3.6 GCC 4.8バゼル 0.15.0 7 9
tensorflow_gpu-1.10.0 2.7、3.3-3.6 GCC 4.8バゼル 0.15.0 7 9
tensorflow_gpu-1.9.0 2.7、3.3-3.6 GCC 4.8バゼル 0.11.0 7 9
tensorflow_gpu-1.8.0 2.7、3.3-3.6 GCC 4.8バゼル 0.10.0 7 9
tensorflow_gpu-1.7.0 2.7、3.3-3.6 GCC 4.8バゼル 0.9.0 7 9
tensorflow_gpu-1.6.0 2.7、3.3-3.6 GCC 4.8バゼル 0.9.0 7 9
tensorflow_gpu-1.5.0 2.7、3.3-3.6 GCC 4.8バゼル 0.8.0 7 9
tensorflow_gpu-1.4.0 2.7、3.3-3.6 GCC 4.8バゼル 0.5.4 6 8
tensorflow_gpu-1.3.0 2.7、3.3-3.6 GCC 4.8バゼル 0.4.5 6 8
tensorflow_gpu-1.2.0 2.7、3.3-3.6 GCC 4.8バゼル 0.4.5 5.1 8
tensorflow_gpu-1.1.0 2.7、3.3-3.6 GCC 4.8バゼル 0.4.2 5.1 8
tensorflow_gpu-1.0.0 2.7、3.3-3.6 GCC 4.8バゼル 0.4.2 5.1 8

マックOS

CPU

バージョンPython バージョンコンパイラビルドツール
テンソルフロー-2.12.0 3.8-3.11 xcode 10.15 からの Clangバゼル 5.3.0
テンソルフロー-2.11.0 3.7-3.10 xcode 10.14 からの Clangバゼル 5.3.0
テンソルフロー-2.10.0 3.7-3.10 xcode 10.14 からの Clangバゼル 5.1.1
テンソルフロー-2.9.0 3.7-3.10 xcode 10.14 からの Clangバゼル 5.0.0
テンソルフロー-2.8.0 3.7-3.10 xcode 10.14 からの Clangバゼル 4.2.1
テンソルフロー-2.7.0 3.7-3.9 xcode 10.11 からの Clangバゼル 3.7.2
テンソルフロー-2.6.0 3.6-3.9 xcode 10.11 からの Clangバゼル 3.7.2
テンソルフロー-2.5.0 3.6-3.9 xcode 10.11 からの Clangバゼル 3.7.2
テンソルフロー-2.4.0 3.6-3.8 xcode 10.3 からの Clangバゼル 3.1.0
テンソルフロー-2.3.0 3.5-3.8 xcode 10.1 からの Clangバゼル 3.1.0
テンソルフロー-2.2.0 3.5-3.8 xcode 10.1 からの Clangバゼル 2.0.0
テンソルフロー-2.1.0 2.7、3.5-3.7 xcode 10.1 からの Clangバゼル 0.27.1
テンソルフロー-2.0.0 2.7、3.5-3.7 xcode 10.1 からの Clangバゼル 0.27.1
テンソルフロー-2.0.0 2.7、3.3-3.7 xcode 10.1 からの Clangバゼル 0.26.1
テンソルフロー-1.15.0 2.7、3.3-3.7 xcode 10.1 からの Clangバゼル 0.26.1
テンソルフロー-1.14.0 2.7、3.3-3.7 xcode から Clangバゼル 0.24.1
テンソルフロー-1.13.1 2.7、3.3-3.7 xcode から Clangバゼル 0.19.2
テンソルフロー-1.12.0 2.7、3.3-3.6 xcode から Clangバゼル 0.15.0
テンソルフロー-1.11.0 2.7、3.3-3.6 xcode から Clangバゼル 0.15.0
テンソルフロー-1.10.0 2.7、3.3-3.6 xcode から Clangバゼル 0.15.0
テンソルフロー-1.9.0 2.7、3.3-3.6 xcode から Clangバゼル 0.11.0
テンソルフロー-1.8.0 2.7、3.3-3.6 xcode から Clangバゼル 0.10.1
テンソルフロー-1.7.0 2.7、3.3-3.6 xcode から Clangバゼル 0.10.1
テンソルフロー-1.6.0 2.7、3.3-3.6 xcode から Clangバゼル 0.8.1
テンソルフロー-1.5.0 2.7、3.3-3.6 xcode から Clangバゼル 0.8.1
テンソルフロー-1.4.0 2.7、3.3-3.6 xcode から Clangバゼル 0.5.4
テンソルフロー-1.3.0 2.7、3.3-3.6 xcode から Clangバゼル 0.4.5
テンソルフロー-1.2.0 2.7、3.3-3.6 xcode から Clangバゼル 0.4.5
テンソルフロー-1.1.0 2.7、3.3-3.6 xcode から Clangバゼル 0.4.2
テンソルフロー-1.0.0 2.7、3.3-3.6 xcode から Clangバゼル 0.4.2

GPU

バージョンPython バージョンコンパイラビルドツールcuDNNクーダ
tensorflow_gpu-1.1.0 2.7、3.3-3.6 xcode から Clangバゼル 0.4.2 5.1 8
tensorflow_gpu-1.0.0 2.7、3.3-3.6 xcode から Clangバゼル 0.4.2 5.1 8