隔離された Python 3.6 仮想環境の新規作成と,TensorFlow 1.15.5,Keras のインストール(venv を使用)(Ubuntu 上)

Ubuntu で,次のことを行う.
  1. 前準備
  2. Python の仮想環境の新規作成と,TensorFlow 1.15.5,その他パッケージのインストール
  3. TensorFlow の動作確認

TensorFlow 1.15.5 は,TensorFlow 1 系の最終リリースであり,動作対象の Python は 3.6 までである(Python 3.7 以降の公式ビルドは配布されていない).Python 3.6 と TensorFlow 1.15 はいずれもサポートが終了しているため,新規開発では TensorFlow 2 系を使用する.このページの手順は,TensorFlow 1 系でしか動作しない既存プログラムを実行する場合に使用する.

Ubuntu のシステム Python のバージョンは 3.8 以降であるため,pyenv で Python 3.6 を別途インストールし,その Python 3.6 を用いて venv による隔離された仮想環境を作成する.システム全体の Python 環境には影響を与えない.

サイト内の関連ページ

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する.これは,パッケージ情報を最新の状態にし,インストール済みのパッケージをセキュリティ更新やバグ修正を含めて更新するためである.

Ubuntu のインストールはこちらの別ページで説明する.
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを更新 (依存関係の変化も反映)
sudo apt full-upgrade
# カーネル更新等で再起動が必要な場合のみ実行
# sudo shutdown -r now

Python3 開発用ファイル,pip, setuptools, venv のインストール,Python 開発環境,Python コンソールのインストール(Ubuntu 上)

Python 本体のインストールは行わない(Ubuntu のシステム Python を用いる).

Ubuntu のシステム Python を用いるとき, Python, pip, Python 開発環境,Python コンソールは,次のコマンドで起動できる.

Python3 開発用ファイル,pip, setuptools, venv のインストール

端末で,次のコマンドを実行する.

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install python-is-python3 python3-dev python-dev-is-python3 python3-pip python3-setuptools python3-venv build-essential

Python 開発環境(Jupyter Notebook, JupyterLab, Jupyter Qt Console, spyder)

端末で,次のコマンドを実行する.システム Python の領域には apt でインストールする.Ubuntu 23.04 以降のシステム Python は外部管理環境 (externally-managed-environment) であり,sudo pip3 install による導入は拒否される,あるいは apt が管理するファイルを破壊する可能性があるため用いない.

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install jupyter-notebook jupyter-qtconsole spyder
このページで作成する Python 3.6 の仮想環境では,仮想環境の内部に別途 Jupyter 等をインストールする(後述).システム側の Jupyter からは仮想環境の Python 3.6 は使用できない.

NVIDIA ドライバのインストール(Ubuntu 上)

Ubuntu での NVIDIA ドライバのインストール: 別ページ »で説明

(NVIDIA GPU を使うとき)NVIDIA CUDA ツールキット 10.0,NVIDIA cuDNN 7 のインストール

NVIDIA CUDA ツールキット は,NVIDIA 社が提供する GPU 用のツールキットである.GPU を用いた演算のプログラム作成や実行のための各種機能を備えており,ディープラーニングでも利用されている.

TensorFlow 1.15 の GPU 機能は,NVIDIA CUDA ツールキット 10.0NVIDIA cuDNN 7(7.4 以上)を前提としてビルドされている.これより新しいバージョンの CUDA ツールキットでは動作しない.対応バージョンの根拠は次のページである.

ダウンロードページ

cuDNN は,ダウンロードして展開(解凍)したのち,パスを通しておくこと.

インストール手順の詳細(別ページ)

CUDA ツールキット 10.0 のインストーラが公式に対応する Ubuntu は 18.04 までである.Ubuntu 20.04 以降で GPU を使用する場合は,NVIDIA Container Toolkit と公式コンテナイメージ tensorflow/tensorflow:1.15.5-gpu-py3 を用いる方法がある.この方法では,ホストには NVIDIA ドライバのみをインストールし,CUDA ツールキットと cuDNN はコンテナイメージに含まれるものを使用する.
sudo docker run --gpus all -it --rm tensorflow/tensorflow:1.15.5-gpu-py3 python -c "import tensorflow as tf; print(tf.__version__)"

Python の仮想環境の新規作成(pyenv, venv を使用)と,TensorFlow 1.15.5,その他パッケージのインストール

最新版ではない TensorFlow を使う.そうした場合,運用を簡単にする(バージョン指定のものを意図せず更新しないなど)ために,venv を用いて,Python の仮想環境を作る.

今から作成するPython の仮想環境の名前と,Python のバージョンを決めておく.

pyenv のインストール

pyenv は,複数バージョンの Python のインストールと切り替えを行うソフトウェアである.

  1. いまインストールされている pyenv の消去

    次のコマンドは,pyenv 本体と,pyenv 配下にインストール済みの Python およびそのパッケージをすべて削除する.pyenv を新規に導入する場合や,作り直す場合に実行する.

    rm -rf ~/.pyenv
    
  2. pyenv のダウンロードと更新
    cd /tmp
    git clone https://github.com/pyenv/pyenv.git ~/.pyenv
    cd ~/.pyenv
    git pull
    src/configure
    make -C src
    
  3. pyenv の設定

    pyenv 2 系では,eval "$(pyenv init -)" によりパスの設定と shims の初期化がまとめて行われる.

    echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.profile
    echo 'if [ -d "${PYENV_ROOT}" ]; then' >> ~/.profile
    echo '    export PATH="${PYENV_ROOT}/bin:$PATH"' >> ~/.profile
    echo '    eval "$(pyenv init -)"' >> ~/.profile
    echo 'fi' >> ~/.profile
    exec $SHELL -l
    
  4. Python のビルドに必要なライブラリのインストール

    pyenv は Python をソースからビルドするため,次のライブラリが必要である.

    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
    

Ubuntu のシステム Python とは別に Python 3.6 をインストール(pyenv を使用)

  1. インストールできる Python のバージョンの確認
    pyenv rehash
    pyenv install -l
    
  2. インストールできる Python 3.6 のバージョンの確認
    pyenv install -l | grep 3.6
    
  3. Python 3.6.15 のインストール

    3.6.15 は Python 3.6 系の最終リリースである.

    pyenv install 3.6.15
    
    OpenSSL 3 系を採用した Ubuntu 22.04 以降では,Python 3.6 のビルドが OpenSSL 1.1 を要求して失敗することがある.その場合は,前述の NVIDIA Container Toolkit を用いる方法,または OpenSSL 1.1 を含む Ubuntu 20.04 のコンテナ上で作業する方法を用いる.
  4. pyenv の Python 3.6 の有効化
    pyenv shell 3.6.15
    
Python の切り替えは次のようなコマンドで行う.

隔離された Python 3.6 仮想環境の作成(venv を使用)

下の例では,Python の仮想環境のためのディレクトリを ~/tf115py36 に作成している.システム側のパッケージと混在させないため,--system-site-packages は指定しない

pyenv shell 3.6.15
python -m pip install -U pip setuptools
python -m venv ~/tf115py36

venvPython の仮想環境有効化し,pip と setuptools を更新する.あわせて,Python 開発環境,Python コンソールJupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab)をインストールする.バージョンを指定しない場合,pip は Python 3.6 に対応する最後のバージョンを選択する.

source ~/tf115py36/bin/activate
python -m pip install -U pip setuptools wheel
python -m pip install -U notebook jupyterlab jupyter jupyter-console jupytext
Python 3.6 に対応する pip の最終バージョンは 21.3.1 である.「pip install -U pip」を実行しても,これより新しい pip はインストールされない.

TensorFlow 1.15.5 のインストール

  1. venvPython の仮想環境有効化する
    source ~/tf115py36/bin/activate
    
  2. TensorFlow 1.15.5, Keras, Matplotlib, opencv-python のインストール

    「==1.15.5」のところでバージョンを指定している.同時に指定している各バージョンの理由は次のとおりである.

    • keras==2.3.1: TensorFlow 1.15 を backend として動作する Keras の最終バージョンである(2.4.0 以降は TensorFlow 2 が必要).
    • numpy==1.18.5: numpy 1.19 以降と TensorFlow 1.15 の組み合わせでは,型に関する多数の警告が発生する.
    • h5py==2.10.0: h5py 3 系では,HDF5 形式で保存した重みの読み込みでエラーが発生する.
    python -m pip uninstall -y protobuf tensorflow tensorflow-cpu tensorflow-gpu tensorflow-intel tensorflow-text tensorflow-estimator tf-models-official tf_slim tensorflow_datasets tensorflow-hub keras keras-tuner keras-visualizer
    python -m pip install -U tensorflow==1.15.5 keras==2.3.1 numpy==1.18.5 h5py==2.10.0 matplotlib opencv-python
    

    TensorFlow Hub, TensorFlow Datasets を使用する場合は,TensorFlow 1.15 に対応するバージョンを指定してインストールする.

    python -m pip install tensorflow-hub==0.12.0 tensorflow_datasets==3.2.1
    

    (以下省略)
    venv による隔離された Python 環境を使っているときは,Windows でも Ubuntu でも同じで,「python -m pip install ...」である.

TensorFlow の動作確認

  1. venvPython の仮想環境有効化する
    source ~/tf115py36/bin/activate
    
  2. TensorFlow のバージョン確認

    「1.15.5」と表示されれば,インストールは成功している.

    python -c "import tensorflow as tf; print( tf.__version__ )"
    
  3. (GPU を使うとき)TensorFlow から GPU が認識できているかの確認

    実行結果の中に「device_type: "GPU"」があれば,GPU が認識できている.

    python -c "from tensorflow.python.client import device_lib; print(device_lib.list_local_devices())"
    
    GPU があるのに認識されない場合は,TensorFlow 1.15 が要求する NVIDIA CUDA ツールキット 10.0NVIDIA cuDNN 7 がインストールされていないことが原因として考えられる.表示されるエラーメッセージには,読み込みに失敗した共有ライブラリ名(libcudart.so.10.0, libcudnn.so.7 など)が含まれるので,不足しているものを確認する.インストール手順は,別ページ »で説明する.
  4. TensorFlow の実行確認

    Ubuntu で Python プログラムを動かす.次のプログラムを実行すると, 「b'Hello, TensorFlow!'」と表示される.TensorFlow 1 系の tf.Session を用いた記述である.

    import tensorflow as tf
    hello = tf.constant('Hello, TensorFlow!')
    sess = tf.Session()
    result = sess.run(hello)
    print(result)
    sess.close()