2018년 8월 9일 목요일

AC922 CUDA 9.2 설치 및 PowerAI 5.2 설치

새로 NVIDIA 홈페이지에서 새로 cuda 9.2의 rpm 파일들을 download 받습니다.   2018.8.9 현재 아래 version이 최신입니다.

# wget https://developer.nvidia.com/compute/cuda/9.2/Prod2/local_installers/cuda-repo-rhel7-9-2-local-9.2.148-1.ppc64le

# wget https://developer.nvidia.com/compute/cuda/9.2/Prod2/patches/1/cuda-repo-rhel7-9-2-148-local-patch-1-1.0-1.ppc64le

이렇게 download 받은 파일을 rpm으로 설치합니다.  이 작업으로 CUDA 관련 local yum repository가 생성됩니다.

# rpm -Uvh cuda-repo-rhel7-9-2-local-9.2.148-1.ppc64le cuda-repo-rhel7-9-2-148-local-patch-1-1.0-1.ppc64le

이제 local에 생성된 CUDA local yum repository로부터 cuda를 설치합니다.   버전 등은 신경쓰지 마시고 그냥 다음과 같이 하면 최신으로 설치합니다.

# yum install cuda

설치가 끝나면 역시 NVIDIA 홈페이지에서 NCCL과 CUDNN library들을 download 받아서 아래와 같이 설치합니다.   설치라기 보다는 tar ball을 /usr/local 밑에 풀어넣는 작업입니다.

https://developer.nvidia.com/nccl/nccl2-download-survey, https://developer.nvidia.com/rdp/cudnn-download

# tar -xvf nccl_2.2.13-1+cuda9.2_ppc64le.solitairetheme8 -C /usr/local

# tar -xvf cudnn-9.2-linux-ppc64le-v7.2.1.38.solitairetheme8 -C /usr/local

이렇게 설치가 끝나면, 아래 URL에 적힌 내용대로 일부 파일들을 수정해주어야 합니다.

# dracut --force

# vi /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0

# vi /usr/lib/systemd/system/nvidia-persistenced.service
[Unit]
Description=NVIDIA Persistence Daemon
Wants=syslog.target

[Service]
Type=forking
PIDFile=/var/run/nvidia-persistenced/nvidia-persistenced.pid
Restart=always
ExecStart=/usr/bin/nvidia-persistenced --verbose
ExecStopPost=/bin/rm -rf /var/run/nvidia-persistenced

[Install]
WantedBy=multi-user.target

# systemctl enable nvidia-persistenced

# nvidia-smi -pm 1

# vi /lib/udev/rules.d/40-redhat.rules  (아래 줄을 #으로 comment-out)
...
#SUBSYSTEM=="memory", ACTION=="add", PROGRAM="/bin/uname -p", RESULT!="s390*", ATTR{state}=="offline", ATTR{state}="online"
...

이제 rebooting 합니다.

리부팅이 끝나면 PowerAI 5.2의 rpm을 설치합니다.  이걸 설치하면 mld이라는 local repository가 생깁니다.

[root@3eb2adfbf7f2 test]# rpm -Uvh mldl-repo-local-5.2.0-201806110545.c2f9a0f.ppc64le.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:mldl-repo-local-5.2.0-20180611054################################# [100%]

그리고 환경에 따라 다음과 같이 redhat 관련 repos.conf를 수정해줘야 하는 경우가 있습니다.

[root@3eb2adfbf7f2 test]# vi /etc/yum/pluginconf.d/search-disabled-repos.conf
...
#notify_only=1
notify_only=0

먼저 Anaconda2 5.1과 Anaconda3 5.1을 미리 설치해두어야 합니다. (5.2가 최신 Anaconda인데, 이걸 설치해도 문제는 없는 듯 합니다.)   Python2를 쓰실 거면 Anaconda2 환경에서 다음과 같이 이제 yum으로 power-mldl을 설치합니다.

# which python
/opt/anaconda2/bin/python

# yum install power-mldl

설치가 끝나면 license를 accept 합니다.

# IBM_POWERAI_LICENSE_ACCEPT=yes /opt/DL/license/bin/accept-powerai-license.sh

caffe나 tensorflow 등 각 framework을 사용하기 위해서는 다음과 같이 먼저 환경변수를 설정해줘야 합니다.

# source /opt/DL/tensorflow/bin/tensorflow-activate
Missing dependencies
Run "/opt/DL/tensorflow/bin/install_dependencies" to resolve this problem.

특히 tensorflow의 경우는 위와 같이 install_dependencies를 수행하여 internet으로부터 추가 python package들을 설치해야 합니다.

[root@3eb2adfbf7f2 test]# /opt/DL/tensorflow/bin/install_dependencies
Fetching package metadata ...............

이제 다시 tensorflow-activate를 수행하시면 tensorflow를 사용하실 준비가 된 것입니다.

기본적으로 PowerAI는 python2를 기본으로 합니다만,  python3에서 tensorflow나 pytorch를 쓰시고자 하는 경우도 있습니다.

그럴 경우, 먼저 기본 환경이 Anaconda3 환경임을 확인하신 뒤, 아래와 같이 -py3를 붙여서 설치하시면 됩니다. 

# which python
/opt/anaconda3/bin/python

# yum install power-mldl-py3

# rpm -qa | grep tensorflow
tensorflow-py3-1.8.0-31721.7987738.ppc64le
tensorflow-performance-models-5.2.0-383.668a313.ppc64le
tensorflow-1.8.0-31721.7987738.ppc64le

Python2 환경에서와 동일하게 여기서도 license를 accept하고 install_dependencies를 수행하는 것은 동일합니다.

# source /opt/DL/tensorflow/bin/tensorflow-activate
Missing dependencies
Run "/opt/DL/tensorflow/bin/install_dependencies" to resolve this problem.

# /opt/DL/tensorflow/bin/install_dependencies

참고로 아래와 같은 python package들을 새로 설치하거나 upgrade합니다.  이때 일부는 internet에서 긁어와야 하는 것들도 있습니다.

The following NEW packages will be INSTALLED:

    absl-py:                    0.1.10-py36_0              file://opt/DL/conda-pkgs
    astor:                      0.6.2-py_0                 file://opt/DL/conda-pkgs
    blas:                       1.0-openblas
    blosc:                      1.14.3-hdbcaa40_0
    bzip2:                      1.0.6-h14c3975_5
    ca-certificates:            2018.03.07-hf82bc7d_0
    gast:                       0.2.0-py36_0               file://opt/DL/conda-pkgs
    glib:                       2.53.6-h000015b_2
    gmp:                        6.1.2-h7f7056e_2
    gmpy2:                      2.0.8-py36h10f8cd9_2
    grpcio:                     1.10.0-py36hf484d3e_0      file://opt/DL/conda-pkgs
    icu:                        58.2-h64fc554_1
    kiwisolver:                 1.0.1-py36hf484d3e_0
    libedit:                    3.1.20170329-h6b74fdf_2
    libgcc-ng:                  7.2.0-h7cc24e2_2
    libgfortran-ng:             7.2.0-h9f7466a_2
    libopenblas:                0.2.20-h9ac9557_7
    libprotobuf:                3.5.0-hf484d3e_0           file://opt/DL/conda-pkgs
    libstdcxx-ng:               7.2.0-h7a57d05_2
    libxcb:                     1.13-h1bed415_0
    lzo:                        2.10-h0dabc4d_2
    mpc:                        1.1.0-h10f8cd9_1
    mpfr:                       4.0.1-hdf1c602_3
    ncurses:                    6.1-hf484d3e_0
    openblas-devel:             0.2.20-7
    powerai-tensorflow-prereqs: 1.8.0_31721.7987738-py36_0 file:///opt/DL/tensorflow/conda-pkgs
    protobuf:                   3.5.0-py36_0               file://opt/DL/conda-pkgs
    readline:                   7.0-h1bed415_4
    snappy:                     1.1.7-h1532aa0_3
    termcolor:                  1.1.0-py36_0               file://opt/DL/conda-pkgs
    toposort:                   1.5-py36_0                 file://opt/DL/conda-pkgs
    typing:                     3.6.4-py36_0

The following packages will be UPDATED:

    anaconda:                   5.0.0-py36h39d2194_0       c3i_test                             --> custom-py36_0
    cairo:                      1.14.8-0                                                        --> 1.14.10-h77bcde2_6
    conda:                      4.3.27-py36_0                                                   --> 4.5.9-py36_0
    conda-env:                  2.6.0-0                                                         --> 2.6.0-1
    expat:                      2.1.0-0                                                         --> 2.2.5-hbd03837_0
    fontconfig:                 2.12.1-3                                                        --> 2.12.6-h49f89f6_0
    freetype:                   2.5.5-2                                                         --> 2.8-hadd163a_1
    h5py:                       2.7.0-np113py36_1                                               --> 2.8.0-py36h8d01980_0
    hdf5:                       1.8.17-2                                                        --> 1.10.2-hba1933b_1
    libpng:                     1.6.30-2                                                        --> 1.6.32-h288d48a_4
    libtiff:                    4.0.6-3                                                         --> 4.0.9-he85c1e1_1
    matplotlib:                 2.0.2-np113py36_0                                               --> 2.2.2-py36hbc4b006_0
    numpy:                      1.13.1-py36_1                                                   --> 1.13.3-py36h7cdd4dd_0
    openblas:                   0.2.19-0                                                        --> 0.2.20-7
    openssl:                    1.0.2l-0                                                        --> 1.0.2o-h14c3975_1
    pillow:                     4.2.1-py36_1                                                    --> 5.0.0-py36h3deb7b8_0
    pycosat:                    0.6.2-py36_0                                                    --> 0.6.3-py36h14c3975_0
    pytables:                   3.4.2-np113py36_0                                               --> 3.4.4-py36ha205bf6_0
    python:                     3.6.2-0                                                         --> 3.6.5-hc3d631a_2
    pyyaml:                     3.12-py36_0                                                     --> 3.13-py36h14c3975_0
    ruamel_yaml:                0.11.14-py36_1                                                  --> 0.15.46-py36h14c3975_0
    scikit-learn:               0.19.0-np113py36_1                                              --> 0.19.1-py36h6cfcb94_0
    scipy:                      0.19.1-np113py36_1                                              --> 1.1.0-py36h9c1e066_0
    sqlite:                     3.13.0-0                                                        --> 3.24.0-h84994c4_0
    tk:                         8.5.18-0                                                        --> 8.6.7-hb4a6f0b_3
    yaml:                       0.1.6-0                                                         --> 0.1.7-h1bed415_2


이제 다시 다음을 수행하시면 python3 환경에서 tensorflow를 사용하실 준비가 된 것입니다.

# source /opt/DL/tensorflow/bin/tensorflow-activate

댓글 없음:

댓글 쓰기