TensorFlowインストール(docker)(2020年4月)

macのdocker環境にTensorFlowをインストールした際の記録です。mac本体に直接インストールした際の記録は以下に記載しています。

参考元

今回の作業は以下をベースに進めています。

https://www.tensorflow.org/install/pip

https://www.tensorflow.org/install/docker

Ubuntu上にインストール

docker上でUbuntuを起動し、その中にTensorFlowをインストールしてみます。

dockerの起動とログイン

dockerイメージのプル

まずはUbuntuのdockerイメージをプルします。

$ docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
d51af753c3d3: Pull complete
fc878cd0a91c: Pull complete
6154df8ff988: Pull complete
fee5db0ff82f: Pull complete
Digest: sha256:747d2dbbaaee995098c9792d99bd333c6783ce56150d1b11e333bbceed5c54d7
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
$

プルできました。元の状態や最新のdockerイメージの状態にもよりますが、上記の様な結果となります。

コンテナ起動

次にプルしたUbuntuを起動します。

$ docker run -dit --name my-ubuntu-app ubuntu:latest
9f24b514cb06bbceced85580f963128daa024e1d05fdce438f8adc698d8e9cdc
$

起動しました。コンテナの名前は適当に「my-ubuntu-app」としています。

ログイン

起動したコンテナにログインします。

$ docker exec -it my-ubuntu-app /bin/bash
root@9f24b514cb06:/#

無事にログインできました。

Python開発環境のインストール

状態確認

まずは必要なコマンド「python3」「pip3」「virtualenv」のインストール状況を確認します。

root@9f24b514cb06:/# python3 --version
bash: python3: command not found
root@9f24b514cb06:/# pip3 --version
bash: pip3: command not found
root@9f24b514cb06:/# virtualenv --version
bash: virtualenv: command not found
root@9f24b514cb06:/#

いずれもインストールされていないことが分かります。

apt update

まずはaptを更新しておきます。

root@9f24b514cb06:/# apt update
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [97.9 kB]
Get:2 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]
Get:3 http://archive.ubuntu.com/ubuntu focal-updates InRelease [89.1 kB]
Get:4 http://archive.ubuntu.com/ubuntu focal-backports InRelease [89.2 kB]
Get:5 http://archive.ubuntu.com/ubuntu focal/multiverse amd64 Packages [177 kB]
Get:6 http://archive.ubuntu.com/ubuntu focal/restricted amd64 Packages [33.4 kB]
Get:7 http://archive.ubuntu.com/ubuntu focal/universe amd64 Packages [11.3 MB]
Get:8 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages [1275 kB]
Get:9 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [1958 B]
Fetched 13.4 MB in 17s (798 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
root@9f24b514cb06:/#

pythonとpipのインストール

pythonとpipをインストールします。

root@9f24b514cb06:/# apt install python3-dev python3-pip
Reading package lists... Done
Building dependency tree
Reading state information... Done

…(略)…

Setting up libalgorithm-diff-xs-perl (0.04-6) ...
Setting up libalgorithm-merge-perl (0.08-3) ...
Setting up libpython3-dev:amd64 (3.8.2-0ubuntu2) ...
Setting up libldap-2.4-2:amd64 (2.4.49+dfsg-2ubuntu1) ...
Setting up dirmngr (2.2.19-3ubuntu2) ...
Setting up python3-dev (3.8.2-0ubuntu2) ...
Setting up gpg-wks-client (2.2.19-3ubuntu2) ...
Setting up gnupg (2.2.19-3ubuntu2) ...
Processing triggers for libc-bin (2.31-0ubuntu9) ...
Processing triggers for ca-certificates (20190110ubuntu1) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
root@9f24b514cb06:/#

virtualenvのインストール

次にvirtualenvをインストールします。

root@9f24b514cb06:/# pip3 install -U virtualenv
Collecting virtualenv
  Downloading virtualenv-20.0.18-py2.py3-none-any.whl (4.6 MB)
     |████████████████████████████████| 4.6 MB 551 kB/s
Collecting distlib<1,>=0.3.0
  Downloading distlib-0.3.0.zip (571 kB)
     |████████████████████████████████| 571 kB 820 kB/s
Collecting six<2,>=1.9.0
  Downloading six-1.14.0-py2.py3-none-any.whl (10 kB)
Collecting appdirs<2,>=1.4.3
  Downloading appdirs-1.4.3-py2.py3-none-any.whl (12 kB)
Collecting filelock<4,>=3.0.0
  Downloading filelock-3.0.12-py3-none-any.whl (7.6 kB)
Building wheels for collected packages: distlib
  Building wheel for distlib (setup.py) ... done
  Created wheel for distlib: filename=distlib-0.3.0-py3-none-any.whl size=340427 sha256=015f35553437d0e4b1c041e62a1ec5d3117abfe5eaf54e14d60abc32dd01a6e0
  Stored in directory: /root/.cache/pip/wheels/eb/4e/d2/a903d4184fb49e4ac06474d65715b129aee13d69f7d227e78e
Successfully built distlib
Installing collected packages: distlib, six, appdirs, filelock, virtualenv
Successfully installed appdirs-1.4.3 distlib-0.3.0 filelock-3.0.12 six-1.14.0 virtualenv-20.0.18
root@9f24b514cb06:/#

インストール結果確認

インストール結果を確認します。最初に実行したコマンドです。

root@9f24b514cb06:/# python3 --version
Python 3.8.2
root@9f24b514cb06:/# pip3 --version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
root@9f24b514cb06:/# virtualenv --version
virtualenv 20.0.18 from /usr/local/lib/python3.8/dist-packages/virtualenv/__init__.py
root@9f24b514cb06:/#

無事にインストールが確認できました。(バージョンが表示されました。)

Python仮想環境の作成

Pythonの仮想環境を作成します。

ディレクトリ作成

まずはディレクトリを作成します。フォルダ名は参考元のままvenvにしています。

root@9f24b514cb06:/# virtualenv --system-site-packages -p python3 ./venv
created virtual environment CPython3.8.2.final.0-64 in 566ms
  creator CPython3Posix(dest=/venv, clear=False, global=True)
  seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=/root/.local/share/virtualenv/seed-app-data/v1.0.1)
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
root@9f24b514cb06:/#

仮想環境の有効化

先ほど作成した仮想環境を有効します。

root@9f24b514cb06:/# source ./venv/bin/activate
(venv) root@9f24b514cb06:/#

有効になったため先頭に「(venv)」が表示される様になりました。

pipのアップグレード

仮想環境上のpipをアップグレードします。

(venv) root@9f24b514cb06:/# pip install --upgrade pip
Requirement already up-to-date: pip in /venv/lib/python3.8/site-packages (20.0.2)
(venv) root@9f24b514cb06:/#

先ほどインストールした直後だからか特に更新はかからなかった様です。

実行後の状態は以下の様になりました。

(venv) root@9f24b514cb06:/# pip list
Package    Version
---------- -------
appdirs    1.4.3
distlib    0.3.0
filelock   3.0.12
pip        20.0.2
setuptools 46.1.3
six        1.14.0
virtualenv 20.0.18
wheel      0.34.2
(venv) root@9f24b514cb06:/#

TensorFlowのインストール

一通り準備が終わったので、TensorFlowをインストールします。

インストール

pipを使ってTensorFlowをインストールします。


(venv) root@9f24b514cb06:/# pip install --upgrade tensorflow
Collecting tensorflow
  Downloading tensorflow-2.2.0rc3-cp38-cp38-manylinux2010_x86_64.whl (516.3 MB)
     |████████████████████████████████| 516.3 MB 7.3 kB/s

…(略)…

Successfully built absl-py wrapt termcolor
Installing collected packages: absl-py, tensorflow-estimator, gast, astunparse, grpcio, wrapt, numpy, h5py, protobuf, tensorboard-plugin-wit, pyasn1, rsa, cachetools, pyasn1-modules, google-auth, oauthlib, certifi, idna, urllib3, chardet, requests, requests-oauthlib, google-auth-oauthlib, werkzeug, markdown, tensorboard, scipy, termcolor, keras-preprocessing, opt-einsum, google-pasta, tensorflow
Successfully installed absl-py-0.9.0 astunparse-1.6.3 cachetools-4.1.0 certifi-2020.4.5.1 chardet-3.0.4 gast-0.3.3 google-auth-1.14.1 google-auth-oauthlib-0.4.1 google-pasta-0.2.0 grpcio-1.28.1 h5py-2.10.0 idna-2.9 keras-preprocessing-1.1.0 markdown-3.2.1 numpy-1.18.3 oauthlib-3.1.0 opt-einsum-3.2.1 protobuf-3.11.3 pyasn1-0.4.8 pyasn1-modules-0.2.8 requests-2.23.0 requests-oauthlib-1.3.0 rsa-4.0 scipy-1.4.1 tensorboard-2.2.1 tensorboard-plugin-wit-1.6.0.post3 tensorflow-2.2.0rc3 tensorflow-estimator-2.2.0 termcolor-1.1.0 urllib3-1.25.9 werkzeug-1.0.1 wrapt-1.12.1
(venv) root@9f24b514cb06:/#

インストール結果の検証

インストール結果の検証をします。

(venv) root@9f24b514cb06:/# python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
2020-04-27 14:09:29.268715: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory
2020-04-27 14:09:29.269486: E tensorflow/stream_executor/cuda/cuda_driver.cc:313] failed call to cuInit: UNKNOWN ERROR (303)
2020-04-27 14:09:29.270648: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (9f24b514cb06): /proc/driver/nvidia/version does not exist
2020-04-27 14:09:29.276958: I tensorflow/core/platform/cpu_feature_guard.cc:143] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2020-04-27 14:09:29.290787: I tensorflow/core/platform/profile_utils/cpu_utils.cc:102] CPU Frequency: 1200000000 Hz
2020-04-27 14:09:29.291595: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x7f0e2c000b60 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-04-27 14:09:29.291630: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
tf.Tensor(939.0471, shape=(), dtype=float32)
(venv) root@9f24b514cb06:/#

エラーと警告が出ているので少々分かりづらいですが、以下の様に表示されているので無事に実行できていることが分かります。

tf.Tensor(939.0471, shape=(), dtype=float32)

TensorFlowのDockerイメージを起動

先ほどはUbuntuのイメージ上にTensorFlowをインストールしてみました。今度はTensorFlowが用意しているイメージを使ってみます。

dockerイメージのプル

まずはTensorFlowのdockerイメージをプルします。

$ docker pull tensorflow/tensorflow:latest
latest: Pulling from tensorflow/tensorflow
2746a4a261c9: Already exists
4c1d20cdee96: Already exists
0d3160e1d0de: Already exists
c8e37668deea: Already exists
e52cad4ccd83: Already exists
fac2cc420193: Pull complete
3cae0d3239d1: Pull complete
d383bce69b6c: Pull complete
8a90b3d85a18: Pull complete
4baf29878469: Pull complete
4475017ba949: Pull complete
Digest: sha256:cec133a881c752a82953e88f34a1e9f878b5523779666528c5d2bdfefe3ba6ae
Status: Downloaded newer image for tensorflow/tensorflow:latest
docker.io/tensorflow/tensorflow:latest
$

コンテナ起動

プルしたイメージを起動します。

$ docker run -it tensorflow/tensorflow:latest

________                               _______________
___  __/__________________________________  ____/__  /________      __
__  /  _  _ \_  __ \_  ___/  __ \_  ___/_  /_   __  /_  __ \_ | /| / /
_  /   /  __/  / / /(__  )/ /_/ /  /   _  __/   _  / / /_/ /_ |/ |/ /
/_/    \___//_/ /_//____/ \____//_/    /_/      /_/  \____/____/|__/


WARNING: You are running this container as root, which can cause new files in
mounted volumes to be created as the root user on your host machine.

To avoid this, run the container by specifying your user's userid:

$ docker run -u $(id -u):$(id -g) args...

root@b2939bcd3ca7:/#

インストール検証

先ほどと違いプルしたイメージを起動しただけですが、先ほどと同様にインストール検証のコマンドを実行してみます。

root@b2939bcd3ca7:/# python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
2020-04-28 14:50:25.153869: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libnvinfer.so.6'; dlerror: libnvinfer.so.6: cannot open shared object file: No such file or directory
2020-04-28 14:50:25.156078: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libnvinfer_plugin.so.6'; dlerror: libnvinfer_plugin.so.6: cannot open shared object file: No such file or directory
2020-04-28 14:50:25.157838: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:30] Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.
2020-04-28 14:50:26.168508: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory
2020-04-28 14:50:26.168748: E tensorflow/stream_executor/cuda/cuda_driver.cc:351] failed call to cuInit: UNKNOWN ERROR (303)
2020-04-28 14:50:26.168999: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (b2939bcd3ca7): /proc/driver/nvidia/version does not exist
2020-04-28 14:50:26.171998: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2020-04-28 14:50:26.192148: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 1200000000 Hz
2020-04-28 14:50:26.193117: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x55fa8b6327b0 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-04-28 14:50:26.193292: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
tf.Tensor(-1727.1592, shape=(), dtype=float32)
root@b2939bcd3ca7:/#

警告なども表示されていますが、以下が表示されていることが無事確認できました。

tf.Tensor(-1727.1592, shape=(), dtype=float32)

コメント

タイトルとURLをコピーしました