LoginSignup
1
0

More than 3 years have passed since last update.

スパコン ITO のフロントエンド(GPU有り)で Jupyter から TensorFlow 2.1 を実行する手順

Last updated at Posted at 2020-04-12

スパコンITOフロントエンド の Jupyter で TensorFlow を使えるようにします.フロントエンド と Jupyter の設定手順はこちらの記事にまとめています.
フロントエンド で GPU が使えるのはベアメタルのみです.GPU を利用するためには,フロントエンドの資源を予約する際に,ベアメタルを選択する必要があります.GPU はフロントエンド仮想マシンでは利用できません.
NVIDIA の GPU を利用した,Linux 環境における TensorFlow のインストール方法は,スパコンITOに限らず,一般的な内容です.

フロントエンドノードで GPU の設定

こちらの記事を参照して,予約したフロントエンドノードにログインします.スパコンITOでは module を load することで様々なソフトウエアを利用できます.TensorFlow 2.1GPU を使用するために必要となる,CUDA 10.1 をloadします.TensorFlow と GPU それぞれのバージョンの組み合わせは要注意です.TensorFlow 2.1 は CUDA 10.1 が必要です.
CUDA の load は TensorFlow のインストール時だけでなく,TensorFlow 実行時に毎回必要です.

# ログイン後に必要要件を実行します
$ ulimit -v 20140000
$ ulimit -u 512
# GPU利用のため適切なバージョンのcudaをloadします
$ module load cuda/10.1
# cudaがloadされたことを確認します.著者の環境ではIntelコンパイラもloadされています.
$ module list
Currently Loaded Modulefiles:
  1) intel/2019.4   2) cuda/10.1

# NVIDIA CUDA Toolkit のバージョンが確認できれば成功です
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243

TensorFlow のインストールと確認

最初は Intel のディストリビューションで仮想環境を構築した上で,Anaconda Cloud を参照し,intel channel を含む様々なchannelの TensorFlow 2.1 のインストールを試しました.しかし,GPU が認識されませんでした.結局,anaconda channel で仮想環境を構築し,anaconda channeltensorflow-gpu パッケージをインストールすることで成功しました.
こちらの記事で整備したMinicondaを用いました.新しい仮想環境 tf を用意して作業を進めます.

$ conda create -c anaconda -n tf
$ conda activate tf
$ conda install -c anaconda tensorflow-gpu

TensorFlow が GPU を認識するか,確認しましょう.Python環境で以下を実行します.

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

実際にやってみると以下のようになりました.Python環境では Shift-Enter で実行します.下の方に,device_type: "GPU" が現れ,GPU を認識していることが確認できます.Python環境から抜けるには quit() を実行します.

$ python
Python 3.7.7 (default, Mar 26 2020, 15:48:22)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from tensorflow.python.client import device_lib
>>> device_lib.list_local_devices()
2020-04-12 10:07:00.887858: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 AVX512F FMA
2020-04-12 10:07:01.650004: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2300000000 Hz
2020-04-12 10:07:01.674747: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x7fd2f0c37f20 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-04-12 10:07:01.674811: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
2020-04-12 10:07:01.862541: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcuda.so.1
2020-04-12 10:07:02.015789: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1555] Found device 0 with properties:
pciBusID: 0000:37:00.0 name: Quadro P4000 computeCapability: 6.1
coreClock: 1.48GHz coreCount: 14 deviceMemorySize: 7.93GiB deviceMemoryBandwidth: 226.62GiB/s
2020-04-12 10:07:02.066758: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1
2020-04-12 10:07:07.009068: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10
2020-04-12 10:07:10.726880: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcufft.so.10
2020-04-12 10:07:11.122902: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcurand.so.10
2020-04-12 10:07:16.866789: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusolver.so.10
2020-04-12 10:07:17.233256: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusparse.so.10
2020-04-12 10:07:21.609688: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2020-04-12 10:07:21.630634: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1697] Adding visible gpu devices: 0
2020-04-12 10:07:21.653310: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1
2020-04-12 10:07:21.868090: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1096] Device interconnect StreamExecutor with strength 1 edge matrix:
2020-04-12 10:07:21.868135: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1102]      0
2020-04-12 10:07:21.881889: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] 0:   N
2020-04-12 10:07:21.953254: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1241] Created TensorFlow device (/device:GPU:0 with 7609 MB memory) -> physical GPU (device: 0, name: Quadro P4000, pci bus id: 0000:37:00.0, compute capability: 6.1)
2020-04-12 10:07:22.064372: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x7fd2f185b0d0 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:
2020-04-12 10:07:22.064411: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Quadro P4000, Compute Capability 6.1
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 604661095847797083
, name: "/device:XLA_CPU:0"
device_type: "XLA_CPU"
memory_limit: 17179869184
locality {
}
incarnation: 8073603212876973691
physical_device_desc: "device: XLA_CPU device"
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 7979450368
locality {
  bus_id: 1
  links {
  }
}
incarnation: 4571149872542587611
physical_device_desc: "device: 0, name: Quadro P4000, pci bus id: 0000:37:00.0, compute capability: 6.1"
, name: "/device:XLA_GPU:0"
device_type: "XLA_GPU"
memory_limit: 17179869184
locality {
}
incarnation: 3629064078974056009
physical_device_desc: "device: XLA_GPU device"
]
>>>

必要なパッケージをインストールする

TensorFlow の他に必要なパッケージを tf仮想環境 にインストールしておきます.channelanaconda を指定しました.必須の jupyterlab に加え,リモートセンシング解析のため,以下をインストールしました.

$ conda install -c anaconda jupyterlab matplotlib rasterio scikit-learn

Jupyterを立ち上げる

Jupyter を起動し,TensorFlow を import して使えるようにします.方法の詳細はこちらの記事にまとめてあります.要約すると,以下の手順です.

# 1. ログインノードのターミナルにおいて以下を実行し,フロントエンドノードに入る

$ ssh -A -Y Floating_IP
# Floating_IP はメールで送られてくる,172.18.32.191 のようなIPアドレスです.

# 2. フロントエンドノードにおいて,Jupyterを起動

# Jupyter Notebook の場合
$ jupyter notebook --ip=127.0.0.1 --port=8888 --no-browser
# JupterLab の場合
$ jupyter lab --ip=127.0.0.1 --port=8888 --no-browser

# 3. 1.で現れる以下のようなurlをクライアントのブラウザurlに貼り付け実行
http://127.0.0.1:8888/?token=... 

注意: JupyterLab で実行中にcellが * 状態で止まってしまうことがありました.その場合は KernelRestart Kernel で解決しました.

パッケージの確認

パッケージは日々更新されますので,インストールの日時によって挙動が異なります.2020年4月11日時点での上記の方法によるパッケージリストを示しておきます.ただし,上記インストールのうち,scikit-learn は含まれていません.

$ conda list
# packages in environment at /home/usr1/m00000a/local/miniconda3/envs/tf:
#
# Name                    Version                   Build  Channel
_tflow_select             2.1.0                       gpu    anaconda
absl-py                   0.9.0                    py37_0    anaconda
affine                    2.3.0                      py_0    anaconda
asn1crypto                1.3.0                    py37_0    anaconda
astor                     0.8.0                    py37_0    anaconda
attrs                     19.3.0                     py_0    anaconda
backcall                  0.1.0                    py37_0    anaconda
blas                      1.0                         mkl    anaconda
bleach                    3.1.0                    py37_0    anaconda
blinker                   1.4                      py37_0    anaconda
boost-cpp                 1.72.0               h8e57a91_0    conda-forge
bzip2                     1.0.8                h7b6447c_0    anaconda
c-ares                    1.15.0            h7b6447c_1001    anaconda
ca-certificates           2020.1.1                      0    anaconda
cachetools                3.1.1                      py_0    anaconda
cairo                     1.16.0            hcf35c78_1003    conda-forge
certifi                   2020.4.5.1               py37_0    anaconda
cffi                      1.14.0           py37h2e261b9_0    anaconda
cfitsio                   3.470                hb7c8383_2    anaconda
chardet                   3.0.4                 py37_1003    anaconda
click                     7.1.1                      py_0    anaconda
click-plugins             1.1.1                      py_0    anaconda
cligj                     0.5.0                    py37_0    anaconda
cryptography              2.8              py37h1ba5d50_0    anaconda
cudatoolkit               10.1.243             h6bb024c_0    anaconda
cudnn                     7.6.5                cuda10.1_0    anaconda
cupti                     10.1.168                      0    anaconda
curl                      7.69.1               hbc83047_0    anaconda
cycler                    0.10.0                   py37_0    anaconda
decorator                 4.4.2                      py_0    anaconda
defusedxml                0.6.0                      py_0    anaconda
entrypoints               0.3                      py37_0    anaconda
expat                     2.2.9                he1b5a44_2    conda-forge
fontconfig                2.13.1            h86ecdb6_1001    conda-forge
freetype                  2.10.1                        1    intel
freexl                    1.0.5                h14c3975_0    anaconda
gast                      0.2.2                    py37_0    anaconda
geos                      3.8.0                he6710b0_0    anaconda
geotiff                   1.5.1                h38872f0_8    conda-forge
giflib                    5.2.1                h516909a_2    conda-forge
glib                      2.63.1               h5a9c865_0    anaconda
gmp                       6.1.2                hb3b607b_0    anaconda
google-auth               1.13.1                     py_0    anaconda
google-auth-oauthlib      0.4.1                      py_2    anaconda
google-pasta              0.2.0                      py_0    anaconda
grpcio                    1.27.2           py37hf8bcb03_0    anaconda
h5py                      2.10.0          nompi_py37h513d04c_102    conda-forge
hdf4                      4.2.13               h3ca952b_2
hdf5                      1.10.5          nompi_h3c11f04_1104    conda-forge
icu                       64.2                 he1b5a44_1    conda-forge
idna                      2.9                        py_1    anaconda
importlib_metadata        1.5.0                    py37_0    anaconda
intel-openmp              2020.0                      166    anaconda
intelpython               2020.1                        0    intel
ipykernel                 5.1.4            py37h39e3cac_0    anaconda
ipython                   7.13.0           py37h5ca1d4c_0    anaconda
ipython_genutils          0.2.0                    py37_0    anaconda
jedi                      0.16.0                   py37_1    anaconda
jinja2                    2.11.1                     py_0    anaconda
jpeg                      9c                h14c3975_1001    conda-forge
json-c                    0.13.1               h1bed415_0    anaconda
json5                     0.9.4                      py_0    anaconda
jsonschema                3.2.0                    py37_0    anaconda
jupyter_client            6.1.2                      py_0    anaconda
jupyter_core              4.6.3                    py37_0    anaconda
jupyterlab                1.2.6              pyhf63ae98_0    anaconda
jupyterlab_server         1.1.0                      py_0    anaconda
kealib                    1.4.13               hec59c27_0    conda-forge
keras-applications        1.0.8                      py_0    anaconda
keras-preprocessing       1.1.0                      py_1    anaconda
kiwisolver                1.1.0            py37he6710b0_0    anaconda
krb5                      1.17.1               h173b8e3_0    anaconda
ld_impl_linux-64          2.33.1               h53a641e_7    anaconda
libblas                   3.8.0                    14_mkl    conda-forge
libcblas                  3.8.0                    14_mkl    conda-forge
libcurl                   7.69.1               h20c2e04_0    anaconda
libdap4                   3.20.4               hd3bb157_0    conda-forge
libedit                   3.1.20181209         hc058e9b_0    anaconda
libffi                    3.2.1                h4deb6c0_3    anaconda
libgcc-ng                 9.1.0                hdf63c60_0    anaconda
libgdal                   3.0.4                h20022a4_0    conda-forge
libgfortran-ng            7.3.0                hdf63c60_0    anaconda
libiconv                  1.15                 h63c8f33_5    anaconda
libkml                    1.3.0             hb574062_1011    conda-forge
liblapack                 3.8.0                    14_mkl    conda-forge
libnetcdf                 4.7.3           nompi_h9f9fd6a_101    conda-forge
libpng                    1.6.37               hbc83047_0    anaconda
libpq                     12.2                 h20c2e04_0    anaconda
libprotobuf               3.11.4               hd408876_0    anaconda
libsodium                 1.0.16               h1bed415_0    anaconda
libspatialite             4.3.0a            ha48a99a_1034    conda-forge
libssh2                   1.9.0                h1ba5d50_1    anaconda
libstdcxx-ng              9.1.0                hdf63c60_0    anaconda
libtiff                   4.1.0                hc3755c2_3    conda-forge
libuuid                   2.32.1            h14c3975_1000    conda-forge
libwebp                   1.0.2                h56121f0_5    conda-forge
libxcb                    1.13                 h1bed415_1    anaconda
libxml2                   2.9.10               hee79883_0    conda-forge
lz4-c                     1.8.3             he1b5a44_1001    conda-forge
markdown                  3.1.1                    py37_0    anaconda
markupsafe                1.1.1            py37h7b6447c_0    anaconda
matplotlib                3.1.2                    py37_3    intel
mistune                   0.8.4            py37h7b6447c_0    anaconda
mkl                       2019.5                      281    anaconda
mkl-service               2.3.0            py37he904b0f_0    anaconda
mkl_fft                   1.0.15           py37ha843d7b_0    anaconda
mkl_random                1.1.0            py37hd6b4f25_0    anaconda
nbconvert                 5.6.1                    py37_0    anaconda
nbformat                  5.0.4                      py_0    anaconda
ncurses                   6.2                  he6710b0_0    anaconda
notebook                  6.0.3                    py37_0    anaconda
numpy                     1.17.5           py37h95a1406_0    conda-forge
numpy-base                1.18.1           py37hde5b4d6_1    anaconda
oauthlib                  3.1.0                      py_0    anaconda
openjpeg                  2.3.1                h981e76c_3    conda-forge
openssl                   1.1.1                h7b6447c_0    anaconda
opt_einsum                3.1.0                      py_0    anaconda
pandoc                    2.2.3.2                       0    anaconda
pandocfilters             1.4.2                    py37_1    anaconda
parso                     0.6.2                      py_0    anaconda
pcre                      8.43                 he6710b0_0    anaconda
pexpect                   4.8.0                    py37_0    anaconda
pickleshare               0.7.5                    py37_0    anaconda
pip                       20.0.2                   py37_1    anaconda
pixman                    0.38.0               h7b6447c_0    anaconda
poppler                   0.67.0               h14e79db_8    conda-forge
poppler-data              0.4.9                         0    anaconda
postgresql                12.2                 h20c2e04_0    anaconda
proj                      6.3.0                hc80f0dc_0    conda-forge
prometheus_client         0.7.1                      py_0    anaconda
prompt-toolkit            3.0.4                      py_0    anaconda
prompt_toolkit            3.0.4                         0    anaconda
protobuf                  3.11.4           py37he6710b0_0    anaconda
ptyprocess                0.6.0                    py37_0    anaconda
pyasn1                    0.4.8                      py_0    anaconda
pyasn1-modules            0.2.7                      py_0    anaconda
pycparser                 2.20                       py_0    anaconda
pygments                  2.6.1                      py_0    anaconda
pyjwt                     1.7.1                    py37_0    anaconda
pyopenssl                 19.1.0                   py37_0    anaconda
pyparsing                 2.4.6                      py_0    anaconda
pyrsistent                0.16.0           py37h7b6447c_0    anaconda
pysocks                   1.7.1                    py37_0    anaconda
python                    3.7.7           hcf32534_0_cpython    anaconda
python-dateutil           2.8.1                      py_0    anaconda
pytz                      2019.3                     py_0    anaconda
pyzmq                     18.1.1           py37he6710b0_0    anaconda
rasterio                  1.1.0            py37h41e4f33_0    anaconda
readline                  8.0                  h7b6447c_0    anaconda
requests                  2.23.0                   py37_0    anaconda
requests-oauthlib         1.3.0                      py_0    anaconda
rsa                       4.0                        py_0    anaconda
scipy                     1.4.1            py37h0b6359f_0    anaconda
send2trash                1.5.0                    py37_0    anaconda
setuptools                46.1.3                   py37_0    anaconda
six                       1.14.0                   py37_0    anaconda
snuggs                    1.4.7                      py_0    anaconda
sqlite                    3.31.1               h7b6447c_0    anaconda
tbb                       2018.0.5             h6bb024c_0    anaconda
tcl                       8.6.9                        24    intel
tensorboard               2.1.0                     py3_0    anaconda
tensorflow                2.1.0           gpu_py37h7a4bb67_0    anaconda
tensorflow-base           2.1.0           gpu_py37h6c5654b_0    anaconda
tensorflow-estimator      2.1.0              pyhd54b08b_0    anaconda
tensorflow-gpu            2.1.0                h0d30ee6_0    anaconda
termcolor                 1.1.0                    py37_1    anaconda
terminado                 0.8.3                    py37_0    anaconda
testpath                  0.4.4                      py_0    anaconda
tiledb                    1.7.0                hcde45ca_2    conda-forge
tk                        8.6.8                hbc83047_0    anaconda
tornado                   6.0.4            py37h7b6447c_1    anaconda
traitlets                 4.3.3                    py37_0    anaconda
urllib3                   1.25.8                   py37_0    anaconda
wcwidth                   0.1.9                      py_0    anaconda
webencodings              0.5.1                    py37_1    anaconda
werkzeug                  1.0.0                      py_0    anaconda
wheel                     0.34.2                   py37_0    anaconda
wrapt                     1.12.1           py37h7b6447c_1    anaconda
xerces-c                  3.2.2             h8412b87_1004    conda-forge
xorg-kbproto              1.0.7             h14c3975_1002    conda-forge
xorg-libice               1.0.10               h516909a_0    conda-forge
xorg-libsm                1.2.3             h84519dc_1000    conda-forge
xorg-libx11               1.6.9                h516909a_0    conda-forge
xorg-libxext              1.3.4                h516909a_0    conda-forge
xorg-libxrender           0.9.10            h516909a_1002    conda-forge
xorg-renderproto          0.11.1            h14c3975_1002    conda-forge
xorg-xextproto            7.3.0             h14c3975_1002    conda-forge
xorg-xproto               7.0.31            h14c3975_1007    conda-forge
xz                        5.2.4                h14c3975_4    anaconda
zeromq                    4.3.1                he6710b0_3    anaconda
zipp                      2.2.0                      py_0    anaconda
zlib                      1.2.11               h7b6447c_3    anaconda
zstd                      1.4.4                h3b9ef0a_2    conda-forge

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0