CNTK for Python のインストール(Ubuntu 上)

目次

利用条件は利用者において確認すること.

サイト内の関連ページ

関連する外部ページ

CNTK の対応状況と Ubuntu での実行方法

CNTK の開発は終了している.2019年3月公開の CNTK 2.7 が最後のメジャーリリースであり,Python パッケージの最後の公開は 2020年12月の 2.7.post2 である.GitHub リポジトリは 2026年2月にアーカイブされ,読み取り専用になっている.新規に開発を行う場合は,PyTorchTensorFlowONNX Runtime などを使用する.CNTK 2.7 は ONNX 形式でのモデルの入出力に対応しているため,既存の CNTK のモデルは ONNX 形式に書き出して他のフレームワークで利用できる.

対応する Python のバージョン

CNTK 2.7.post2 で配布されている Linux 用の wheel ファイルは,Python 2.7,Python 3.5,Python 3.6 用のみである(PyPI の配布ファイル一覧による).Python 3.7 以降では「pip install cntk」は「No matching distribution found」となり失敗する.

Ubuntu のシステム Python のバージョンは次のとおりである.いずれも CNTK 2.7 が対応しないバージョンである.

OpenMPI のバージョン

CNTK 2.7 の Linux 版は OpenMPI 1.10 系(共有ライブラリ libmpi.so.12)を使用する.Ubuntu 22.04 以降の openmpi-bin パッケージは OpenMPI 4.1 系以降(libmpi.so.40)であり,これをインストールしても CNTK の import 時に「libmpi.so.12: cannot open shared object file」というエラーになる.

Ubuntu 22.04, 24.04, 26.04 での実行方法

以上のとおり,Ubuntu 22.04, 24.04, 26.04 では,システム Python への「pip install cntk」では CNTK は動作しない.これらの Ubuntu で CNTK を実行するときは,CNTK 公式の Docker イメージを使用する.このイメージは Ubuntu 16.04 をベースとし,対応バージョンの Python と OpenMPI を同梱している(x86_64 向けである).以下では,その手順を説明する.

前準備:Docker のインストール(Ubuntu 上)

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは,端末で,次のコマンドを実行する.

# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade

Docker のインストール

Docker をインストールするには,端末で,次のコマンドを実行する.

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install docker.io

sudo を付けずに docker コマンドを実行できるようにするには,端末で,次のコマンドを実行する.設定を反映させるため,実行後に一度ログアウトし,ログインし直す.

sudo usermod -aG docker $USER

CNTK for Python の実行(Docker イメージを使用)(Ubuntu 上)

  1. CNTK の Docker イメージの取得

    端末で,次のコマンドを実行する.取得されるのは CPU 版の CNTK 2.7(Python 3.5 同梱)のイメージである.

    docker pull mcr.microsoft.com/cntk/release:2.7-cpu-python3.5
    
  2. コンテナの起動

    端末で,次のコマンドを実行する.カレントディレクトリがコンテナ内の /work にマウントされる.

    docker run -it --rm -v "$PWD":/work -w /work mcr.microsoft.com/cntk/release:2.7-cpu-python3.5 bash
    
  3. CNTK の Python 環境の有効化

    コンテナ内では,CNTK は Anaconda の cntk-py35 環境に含まれている.有効化するには,コンテナ内のシェルで,次のコマンドを実行する.

    source /cntk/activate-cntk
    
  4. 動作の確認

    コンテナ内のシェルで,次のコマンドを実行する.バージョン番号(2.7)が表示されれば,CNTK は動作している.

    python -c "import cntk; print(cntk.__version__)"
    
  5. コンテナの終了

    コンテナ内のシェルで,次のコマンドを実行する.

    exit
    

CNTK for Python の GPU 対応版の実行(Docker イメージを使用)(Ubuntu 上)

  1. NVIDIA Container Toolkit のインストール

    GPU 対応版を使用するときは,NVIDIA ドライバと NVIDIA Container Toolkit が必要である.NVIDIA Container Toolkit は Ubuntu の標準リポジトリでは提供されないため,NVIDIA のリポジトリを登録してインストールする.端末で,次のコマンドを実行する.

    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install ca-certificates curl gnupg2
    curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
    curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
    sudo apt update
    sudo apt -y install nvidia-container-toolkit
    

    Docker から NVIDIA Container Runtime を使用する設定を行うには,端末で,次のコマンドを実行する.

    sudo nvidia-ctk runtime configure --runtime=docker
    sudo systemctl restart docker
    
  2. GPU 対応版の Docker イメージの取得

    端末で,次のコマンドを実行する.CNTK 2.7 の GPU 対応版が対応するのは CUDA 10.0cuDNN 7 であり,これらはイメージに同梱されている.

    docker pull mcr.microsoft.com/cntk/release:2.7-gpu-python3.5-cuda10.0-cudnn7.3
    
  3. コンテナの起動と動作の確認

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

    docker run -it --rm --gpus all -v "$PWD":/work -w /work mcr.microsoft.com/cntk/release:2.7-gpu-python3.5-cuda10.0-cudnn7.3 bash
    

    コンテナ内のシェルで,次のコマンドを実行する.GPU が認識されていれば,デバイスの一覧に GPU が表示される.

    source /cntk/activate-cntk
    python -c "import cntk; print(cntk.__version__); print(cntk.all_devices())"
    

Python 3.6 の環境を用意して pip でインストールする方法

Docker を使用せずに Ubuntu 上に直接 CNTK をインストールするときは,Python 3.6 の環境OpenMPI 1.10 系の共有ライブラリの両方を用意する.Ubuntu 22.04, 24.04, 26.04 では,どちらも標準のパッケージでは提供されない.手順は次のとおりである.

  1. ビルドツールのインストール

    pyenv で Python 3.6 をソースからビルドするために必要である.端末で,次のコマンドを実行する.

    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libffi-dev liblzma-dev curl git
    
  2. pyenv のインストールと Python 3.6 のビルド

    端末で,次のコマンドを実行する.Python 3.6 は OpenSSL 1.x を前提としているため,OpenSSL 3.x を採用する Ubuntu 22.04 以降ではビルドに失敗することがある.失敗したときは,前の節の Docker を使用する方法に切り替える.

    curl https://pyenv.run | bash
    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init -)"
    pyenv install 3.6.15
    
  3. 仮想環境の作成と CNTK のインストール

    Ubuntu 23.04 以降ではシステム Python への pip でのインストールが制限されている(PEP 668)ため,仮想環境を作成し,その中にインストールする端末で,次のコマンドを実行する.

    ~/.pyenv/versions/3.6.15/bin/python -m venv ~/cntk-env
    source ~/cntk-env/bin/activate
    pip install -U pip
    pip install numpy scipy h5py
    pip install cntk
    

    GPU 対応版をインストールするときは,「pip install cntk」でなくて,次のコマンドを実行する.CPU 版の cntk と GPU 版の cntk-gpu は,同じ環境に同時にインストールしない.

    pip install cntk-gpu
    
  4. OpenMPI 1.10 系の共有ライブラリの用意

    CNTK の import には libmpi.so.12 が必要である.Ubuntu 22.04 以降の openmpi-bin パッケージでは提供されないため,OpenMPI 1.10 系をソースからビルドして任意のディレクトリにインストールし,そのライブラリのディレクトリを LD_LIBRARY_PATH に設定する.端末で,次のコマンドを実行する.

    cd /tmp
    curl -O https://download.open-mpi.org/release/open-mpi/v1.10/openmpi-1.10.7.tar.gz
    tar zxf openmpi-1.10.7.tar.gz
    cd openmpi-1.10.7
    ./configure --prefix=$HOME/openmpi-1.10.7
    make -j $(nproc)
    make install
    export LD_LIBRARY_PATH=$HOME/openmpi-1.10.7/lib:$LD_LIBRARY_PATH
    
  5. インストールできたことの確認

    端末で,次のコマンドを実行する.バージョン番号(2.7)が表示されれば,インストールは成功している.

    python -c "import cntk; print(cntk.__version__)"