Chainer, CuPy のインストール(Ubuntu 上)

Chainerは,Python ベースの,ディープラーニングのフレームワークである.

CuPy は,numpy 相当の機能を持つ数値演算ライブラリで,動作には NVIDIA CUDA が必要である.

Chainer は 2019 年 12 月に v7 を最終メジャーリリースとし,開発は PyTorch エコシステムへ移行した.現在の Chainer は保守フェーズにあり,最新版は 7.8.1 である.Chainer で GPU を使う場合は CuPy v7 が必要であり,CuPy の最新版とは組み合わせられない.新規にディープラーニングの開発環境を構築する場合は PyTorch の利用を検討するとよい.CuPy 単体は現在も開発が継続されており,最新版を利用できる.

目次

  1. 前準備
  2. Python 仮想環境の作成と Cython のインストール
  3. CuPy のインストール
  4. Chainer のインストール
  5. CuPy の動作テストと numpy との速度比較

関連する外部ページhttps://docs.chainer.org/en/stable/install.htmlhttps://docs.cupy.dev/en/stable/install.html

前準備

Ubuntu のシステム更新

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

Ubuntu のインストールはこちらの別ページで説明する。

# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now

C/C++ コンパイラと Make とビルドツールのインストール

ソフトウェアをソースコードからビルドするには、C/C++コンパイラ (通常はGCC) や make ユーティリティといった開発ツールが重要である。Ubuntuでは、これらのツールは build-essential パッケージにまとめられている。インストールするには,端末で,次のコマンドを実行する。

sudo apt -y install build-essential libtool texinfo dpkg-dev pkg-config

libtool, texinfo, dpkg-dev, pkg-config は、より複雑なビルドやパッケージ管理の際に役立つ開発関連ツールである。

NVIDIA ドライバ,NVIDIA CUDA ツールキット,NVIDIA cuDNN のインストール(Ubuntu 上)

Ubuntu での NVIDIA ドライバ,NVIDIA CUDA ツールキット,NVIDIA cuDNN のインストール: 別ページ »で説明

インストールする CUDA のバージョンは,使用するライブラリの対応状況に合わせる.CuPy の最新版は CUDA 11.x および 12.x に対応している.Chainer で GPU を使う場合は CuPy v7 が必要であり,CuPy v7 が対応する CUDA は 10.x 以前である.

Git, cmake, curl, p7zip-full のインストール(Ubuntu 上)

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

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install git cmake cmake-curses-gui cmake-gui curl p7zip-full

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

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

Python, pip のコマンドでの起動のまとめ.

Ubuntu のシステム Python を用いるとき, python, pip は,次のコマンドで起動できる.

Ubuntu での Python 開発環境(JupyterLab, spyder, nteract)のインストール: 別ページ »で説明

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 仮想環境の作成と Cython のインストール

Ubuntu 23.04 以降では,OS のパッケージ管理と競合しないよう,システム Python への pip による直接のインストールが既定で禁止されている(PEP 668,externally-managed-environment エラー).そのため,Python 仮想環境 (venv) を作成し,その中にインストールする

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

python3 -m venv ~/venv/chainer
source ~/venv/chainer/bin/activate
pip install -U pip setuptools wheel
pip install cython

以降のコマンドは,この仮想環境を有効化した状態(プロンプトの先頭に (chainer) と表示される状態)で実行する.端末を開き直したときは,端末で,次のコマンドを実行して仮想環境を有効化する.

source ~/venv/chainer/bin/activate

CuPy のインストール

CuPy は,numpy 相当の機能を持つ数値演算ライブラリで,動作には NVIDIA CUDA が必要である.

CuPy には,CUDA のバージョンごとにビルド済みパッケージ (wheel) が用意されている.ソースコードからのビルドは時間がかかるため,通常はビルド済みパッケージを用いる.

  1. CuPy のインストール(ビルド済みパッケージを使用)

    端末で,インストール済みの CUDA のバージョンに合わせて,次のいずれかのコマンドを実行する.

    # CUDA 12.x のとき
    pip install cupy-cuda12x
    
    # CUDA 11.x のとき
    pip install cupy-cuda11x
    

    CUDA のバージョンは,端末で,次のコマンドを実行して確認する.

    nvcc --version
    
  2. CuPy のインストール(ソースコードを使用)

    ビルド済みパッケージが提供されていない CUDA のバージョンを使う場合は,ソースコードからビルドする.端末で,次のコマンドを実行する.ビルドには時間がかかる.

    CUDA_PATH="/usr/local/cuda" CFLAGS="-I/usr/local/cuda/include" LDFLAGS="-L/usr/local/cuda/lib64" pip install cupy --no-cache-dir -vvvv
    
  3. cupy がインストールできたことの確認

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

    pip show cupy
    
  4. GPU が認識されていることの確認

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

    python -c "import cupy; cupy.show_config()"
    

Chainer のインストール

Chainer は保守フェーズにあり,PyPI で公開されている 7.8.1 が最新版である.端末で,次のコマンドを実行する.

pip install chainer
Chainer の GPU 機能を使うには CuPy v7 が必要である.CuPy の最新版と組み合わせた場合,GPU 機能は動作しない.GPU を使う場合は,CUDA のバージョンに対応した CuPy v7 のパッケージ(例: cupy-cuda101)をインストールする.
  1. 開発版のソースコードからインストールする場合

    端末で,次のコマンドを実行する.終了までしばらく待つ.

    cd /tmp
    rm -rf chainer
    git clone https://github.com/chainer/chainer.git
    cd /tmp/chainer
    pip -v install .
    
  2. 終了の確認

    エラーメッセージが出ていなければ OK.

  3. chainer がインストールできたことの確認

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

    pip show chainer
    

CuPy の動作テストと numpy との速度比較(配列の掛け算による)

インストールできたかを確認する.

Python プログラムの実行

Python 開発環境(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder, PyCharm, PyScripterなど)も便利である.

Python のまとめ: 別ページ »にまとめ

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

python
N = 10000 の倍精度浮動小数点数の行列 3 個で約 2.4 GB のメモリを使用する.GPU のメモリが不足する場合は N の値を小さくする.
  1. numpy での配列の掛け算
    import numpy as np
    N = 10000
    X = np.random.rand(N, N)
    Y = np.random.rand(N, N)
    import time
    start_time = time.time()
    Z = np.dot(X, Y)
    print(time.time() - start_time)
    exit()
    
  2. cupy での配列の掛け算

    CuPy の演算は GPU 上で非同期に実行されるため,計測の前後で同期を取らないと実際の計算時間が得られない.次のプログラムでは cp.cuda.Stream.null.synchronize() により同期を取る.

    import numpy as np
    import cupy as cp
    N = 10000
    X = cp.asarray( np.random.rand(N, N) )
    Y = cp.asarray( np.random.rand(N, N) )
    import time
    cp.cuda.Stream.null.synchronize()
    start_time = time.time()
    Z = cp.dot(X, Y)
    cp.cuda.Stream.null.synchronize()
    print(time.time() - start_time)
    exit()