Linux を使用して TensorFlow Hub の pip パケージを作成する

注意: このドキュメントは TensorFlow Hub 自体の変更に関心がある開発者を対象としています。TensorFlow Hub を使用するには、インストール手順をご覧ください。

TensorFlow Hub の pip パッケージを変更すると、ほとんどの場合、ソースから pip パッケージを再構築して変更内容を試すことになるでしょう。

それを行う場合は、次が必要となります。

  • Python
  • TensorFlow
  • Git
  • Bazel

または、protobuf コンパイラをインストールする場合は、bazel を使用せずに変更を試すことができます。

virtualenv をセットアップする

virtualenv の有効化

すでにインストール済みでない場合は、virtualenv をインストールします。

~$ sudo apt-get install python-virtualenv

パッケージ作成用の仮想環境を作成します。

~$ virtualenv --system-site-packages tensorflow_hub_env

その環境を有効化します。

~$ source ~/tensorflow_hub_env/bin/activate  # bash, sh, ksh, or zsh
~$ source ~/tensorflow_hub_env/bin/activate.csh  # csh or tcsh

TensorFlow Hub リポジトリの複製

(tensorflow_hub_env)~/$ git clone https://github.com/tensorflow/hub
(tensorflow_hub_env)~/$ cd hub

変更をテストする

TensorFlow Hub のテストの実行

(tensorflow_hub_env)~/hub/$ bazel test tensorflow_hub:all

パッケージを構築してインストールする

TensorFlow Hub の pip パッケージ作成スクリプトの構築

TensorFlow Hub の pip パッケージを構築するには、次のコードを実行します。

(tensorflow_hub_env)~/hub/$ bazel build tensorflow_hub/pip_package:build_pip_package

TensorFlow Hub の pip パッケージの作成

(tensorflow_hub_env)~/hub/$ bazel-bin/tensorflow_hub/pip_package/build_pip_package \
/tmp/tensorflow_hub_pkg

pip パッケージのインストールとテスト(オプション)

次のコマンドを実行して、pip パッケージをインストールします。

(tensorflow_hub_env)~/hub/$ pip install /tmp/tensorflow_hub_pkg/*.whl

TensorFlow Hub のインポートのテスト:

(tensorflow_hub_env)~/hub/$ cd ..  # exit the directory to avoid confusion
(tensorflow_hub_env)~/$ python -c "import tensorflow_hub as hub"

"Developer" インストール(実験的)

警告: TensorFlow を実行するための次のアプローチは実験的であり、TensorFlow Hub チームが正式にサポートするものではありません。

bazel を使用してパッケージを構築する方法が唯一サポートされている手法です。ただし、bazel に不慣れな場合は、オープンソースツールを使用することもできます。これには、パッケージの「developer install」を実行することができます。

このインストール方法では、作業ディレクトリを Python 環境にインストールできるため、継続的な変更は、パッケージをインポートする際に反映されます。

リポジトリのセットアップ

まず、上述のとおり、virtualenv とリポジトリをセットアップします。

protoc のインストール

TensorFlow Hub は protobufs を使用するため、.proto ファイルから必要な Python _pb2.py ファイルを作成するには、protobuf コンパイラが必要となります。

Mac:

(tensorflow_hub_env)~/hub/$ brew install protobuf

Linux

(tensorflow_hub_env)~/hub/$ sudo apt install protobuf-compiler

.proto ファイルのコンパイル

最初は、ディレクトリに _pb2.py ファイルは存在しません。

(tensorflow_hub_env)~/hub/$ ls -1 tensorflow_hub/*_pb2.py

protoc を実行して、ファイルを作成します。

(tensorflow_hub_env)~/hub/$ protoc -I=tensorflow_hub --python_out=tensorflow_hub tensorflow_hub/*.proto
(tensorflow_hub_env)~/hub/$ ls -1 tensorflow_hub/*_pb2.py
tensorflow_hub/image_module_info_pb2.py
tensorflow_hub/module_attachment_pb2.py
tensorflow_hub/module_def_pb2.py

注意: .proto の定義を変更した場合は、忘れずに _pb2.py ファイルをリコンパイルしてください。

リポジトリから直接インポートする

_pb2.py ファイルが配置されたら、TensorFlow Hub ディレクトリから直接変更を使用して試すことができます。

(tensorflow_hub_env)~/$ python -c "import tensorflow_hub as hub"

"developer" モードでのインストール

リポジトリルートの外部からファイルを使用するには、setup.py develop インストールを使用できます。

(tensorflow_hub_env)~/hub/$ python tensorflow_hub/pip_package/setup.py develop

これで、通常の Python 仮想環境のローカル変更を使用できるようになりました。変更するたびに、pip パッケージを再構築してインストールする必要はありません。

(tensorflow_hub_env)~/hub/$ cd ..  # exit the directory to avoid confusion
(tensorflow_hub_env)~/$ python -c "import tensorflow_hub as hub"

virtualenv を無効化する

(tensorflow_hub_env)~/hub/$ deactivate