はじめに
Docker 19.03 以降から Docker のコンテナから Nvidia GPU を使いやすくなりました。 tensorflow-gpu を Docker で使う場合は、公式のtensorflow/tensorflow:latest-gpu-py3があります。
エラーの内容
このコンテナを Sandy Bridge 以前の CPU で使うと
Illegal instruction (core dumped)
というエラーが出ます。 これは AVX という命令が古すぎる CPU にはないために起こるエラーです。
解決方法
解決方法は
- tensorflow をコンテナ内でビルドする
- 古い CPU でも動く tensorflow をどっかから取ってくる。
の二種類があります。
この記事では 2.を使い、Anaconda のリポジトリから取ってきた tensorflow-gpu を用いたDockerfileを書いたので紹介します。
使い方
Dockerfileを使ってください。
動作環境
- Ubuntu 18.04
- docker 19.03 以降
- nvidia-driver-435
遊び方
環境がきちんと整っていれば次で動作すると思います。
$ git clone https://github.com/derbuihan/docker-tensorflow-gpu
$ cd docker-tensorflow-gpu
$ docker build -t mnist_sample .
$ docker run --gpus device=0 -it --rm mnist_sample /bin/bash
(base)$ conda activate tf-gpu
(tf-gpu)$ wget https://raw.githubusercontent.com/keras-team/keras/master/examples/mnist_cnn.py
(tf-gpu)$ python mnist_cnn.py