Windows11 WSL2 Ubuntu 24.04 LTS Docker miniconda3
python 3.12 tensorflow 2.20 コンテナ作成
ここまでで Docker コンテナ yamat-mini が完成しました。
少し不満な点は
python 3.11、tensorflow 2.12
に対応しているところです。
何とかもっと新しい版数に対応させたいですよね。
[2025/11/5日現在]
どうも Conda での GPU サポートは tensorflow のバージョンは 2.12 までで停止しているようです。
それ以降の最新の GPU インストールには pip を使用することが推奨されています。
もし GPU サポートが必要な場合は、pip を使用したインストールを検討する必要があります。
TensorFlow のサイト www.tensorflow.org
pip を使用して TensorFlow をインストールする
に行くと必要条件が分かります。
- システム要件
Ubuntu 16.04 以降(64ビット)
- ソフトウェア要件
Python 3.9~3.12
- pip version
Linux の場合、pip バージョン 19.0 以上
- NVIDIA® ソフトウェア
NVIDIA® ソフトウェアは GPU サポートにのみ必要
NVIDIA® GPU ドライバー
Linuxの場合:525.60.13 以上
Windows 上の WSL の場合 >= 528.33
- その他
CUDA® ツールキット 12.3
cuDNN SDK 8.9.7
$ pip install tensorflow[and-cuda]
でいっしょにインストールされるようです。
pip で TensorFlow gpu をインストール
まずは Docker 及び conda は使用せず
pip で TensorFlow gpu をインストールします。
pip を使用して TensorFlow をインストールする -- linux
を参照してください。
ここでは、linux を参考に話を進めます。
① 仮想環境のための準備をする
yamada@yama:~$ sudo apt install python3.12-venv
② 仮想環境 tf (名前は適当に)作成
yamada@yama:~$ python3 -m venv tf
③ 仮想環境 tf アクティベート
yamada@yama:~$ source tf/bin/activate
④ 最新バージョンの pip にする
(tf) yamada@yama:~$ pip install --upgrade pip
⑤ pip を使用して TensorFlow をインストール
(tf) yamada@yama:~$ pip install tensorflow[and-cuda]
⑥ GPU の設定を確認
(tf) yamada@yama:~$ python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
[結果]
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
この1行が最後に表示されればインストール成功です。
今までは tensorflow パッケージは AVX 命令を使用するため、私の PC では実行できず
Illegal instruction (コアダンプ)となっていました。
これを回避するため conda 仮想環境を構築し AVX 命令を使用しない tensorflow パッケージを
インストールしていたのですが、今回は回避することができました。
これまでは何だったのだろう!!
Docker コンテナ TensorFlow gpu を pip で作成
miniconda3 に頼らず pip で Docker コンテナ TensorFlow gpu を作成していきます。
上記と同じインストール作業を Dockerfile で実現していきます。
- ① 仮想環境のための準備
python3.12 を構築します。
python3.12 の中に TensorFlow gpu をインストールします。
python3.12 の Docker イメージは python:3.12-slim が良いようです。
DockerのPython公式イメージにおけるタグの指定について
が参考になります。
タグに slim と指定すると、よく用いられるライブラリ以外を除外したサイズが削減された Python イメージを取得することができます。
docker hub python 3.12 スリムイメージは、最小限の Debian ベースで構築された公式 Python イメージです。
不要なパッケージを削除することでイメージサイズを小さく抑えており、フルサイズの Python イメージが100MB以上になるのに対し、 通常は 30~40MB 程度です。
Python 3.12 は最新の安定版リリースであり、パフォーマンスの向上と開発者待望の新機能を備えています。
スリム版と組み合わせることで、大きなイメージのオーバーヘッドなしの最新の Python 機能を利用できます。
指定は以下のように行います。
python:3.12-slim
このイメージを元に TensorFlow を構築していきます。
FROM python:3.12-slim
WORKDIR /app
- ②③④ 仮想環境 dtf 作成、アクティベート、pip update
python:3.12-slim を取り込むことにより python:3.12 の環境が構築されますので、再度の python 3.12 の仮想環境は作成しません。
pip update も省略します。
python は仮想環境 venv にインストールするのが基本ですが、 どうも Docker コンテナ自体が仮想環境の一種であり、仮想環境になっていると見てよいようです。 - ⑤ pip を使用して TensorFlow をインストール
④最新バージョンの pip にするのは省略。
すでに pip バージョンは 19.0 以上(25.0)になっています。
pip install で指定した python パッケージをインストールします。
pandas(numpy), matplotlib, mplfinance, scikit-learn, tensorflow をインストールします。
RUN pip install pandas
RUN pip install matplotlib
RUN pip install mplfinance
RUN pip install scikit-learn
RUN pip install tensorflow[and-cuda] - CMD ["/bin/bash"]
CMD コマンドでコンテナを起動したときのデフォルトコマンドを設定できます。
CMD ["/bin/bash"] としておくとコンテナ起動時のコマンド引数がなくても bash が起動します。
つまり
docker run -it -rm イメージ名 bash
ではなく CMD 設定後は
docker run -it -rm イメージ名 <-- "bash" が不要
の書式でコンテナを起動できます。
python 3.12 tensorflow 2.20 Dockerfile まとめ
ここまで説明してきた Dockerfile の内容をまとめます。
FROM python:3.12-slim
WORKDIR /app
RUN pip install pandas
RUN pip install matplotlib
RUN pip install mplfinance
RUN pip install scikit-learn
RUN pip install tensorflow[and-cuda]
CMD ["/bin/bash"]
ここまでで、python 3.12 tensorflow 2.20 Dockerfile ができました。
引き続き、docker-compose ファイルを作成します。