2017년 5월 11일 목요일

Minsky 서버에 CUDA 및 PowerAI 설치, 그리고 기본 tuning

Minsky에 Ubuntu를 설치할 때는 USB로 연결되는 DVD가 잘 인식이 안 되더라는 이야기가 있습니다.  대부분은 USB memory stick에 Ubuntu ISO image를 넣어서 설치하시고 있으며, 다음 site에서 download 받은 Ubuntu ISO image를 UltraISO 또는 Rufus 같은 tool을 이용해 USB memory stick에 booting 가능한 이미지로 넣습니다.  저는 Rufus를 써봤는데 괜찮은 것 같습니다.




최근까지는 Ubuntu 16.04.01 LTS 버전을 많이 썼지만, 위의 ubuntu download site에 가보면 이미 16.04.01은 link가 없어졌고, 16.04.02의 이미지만 제공하고 있습니다.  어쩔 수 없이 이젠 16.04.02를 쓰셔야 할 듯 합니다.

https://www.ubuntu.com/download/server/power8




그에 따라 CUDA도 기존에 많이 쓰던 8.0.44나 8.0.54 버전 말고, 최신의 8.0.61 버전을 사용하실 것을 권고드립니다.  어차피 다음의 CUDA download site에 가보면 기본으로 8.0.61 버전만 제공합니다.




저 위 화면에서 deb(local) 버튼을 클릭하면 1.3GB 정도의 deb file의 download가 시작됩니다.

Minsky 서버에서 곧장 download 받을 경우 다음과 같이 wget 명령으로 받으시면 됩니다.

$ wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda-repo-ubuntu1604-8-0-local-ga2v2_8.0.61-1_ppc64el-deb


이걸 다 받고 나시면 다음과 같이 dpkg 명령으로 해당 deb file을 설치하십시요.

$ sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2v2_8.0.61-1_ppc64el.deb

이 deb file은 cuda 관련 debian package들을 /var/cuda-repo-8-0-local 로 copy한 뒤 local repository로 등록해주는 역할을 합니다.  다음으로는 이 local repository 속의 내용을 다음 명령을 통해 apt cache에 update 해줘야 합니다.

$ sudo apt-get update

이제 비로소 cuda를 설치할 준비가 끝났습니다.  cuda toolkit에는 여러가지 것들이 많습니다만 일일이 하나하나 설치하실 필요없이 그냥 다음 명령 한줄만 내리면 전체적으로 알아서 다 설치해 줍니다.

$ sudo apt-get install cuda

일단 cuda 설치가 끝났습니다.

그 다음으로는 deep learning에 필요한 cuDNN library들을 download 받아서 설치해야 합니다.  다만 이것들은 다음의 NVIDIA site에서 사용자 등록을 (무료입니다) 하시고 받으셔야 합니다.





여기서 download를 click하면 사용자 등록부터 하라고 나올 겁니다.  등록하시고 license agreement도 click하시면 아래 화면이 나오는데, 이중 Download cuDNN v5.1 (Jan 20, 2017), for CUDA 8.0 을 click 하시고, 이어서 나오는 file 목록 중 POWER8에 관련된 것들을 download 받으신 뒤 Minsky 서버에 upload 하십시요.




이렇게 받은 libcudnn*.deb 파일들을 다음과 같이 dpkg 명령으로 설치합니다.

$ sudo dpkg -i libcudnn5_5.1.10-1+cuda8.0_ppc64el.deb
$ sudo dpkg -i libcudnn5-dev_5.1.10-1+cuda8.0_ppc64el.deb 
$ sudo dpkg -i libcudnn5-doc_5.1.10-1+cuda8.0_ppc64el.deb

그 다음으로는 IBM PowerAI toolkit을 download 받습니다.  다음 site에서 최신의 local deb file을 받으시면 됩니다.




또는 다음과 같이 Minsky 서버에서 곧장 wget 명령으로 받으셔도 됩니다.

$ wget https://public.dhe.ibm.com/software/server/POWER/Linux/mldl/ubuntu/mldl-repo-local_3.4.2_ppc64el.deb

(최신 PowerAI 4.0은 다음과 같이 받으시면 됩니다.)
$ wget https://public.dhe.ibm.com/software/server/POWER/Linux/mldl/ubuntu/mldl-repo-local_4.0.0_ppc64el.deb 

이것 역시 PowerAI 관련 debian package들을 /opt/DL/repo 로 copy한 뒤 local repository로 등록해주는 역할을 합니다.  이걸 dpkg 명령으로 설치하고, 그 다음에 이 local repository 속의 내용을 다음 명령을 통해 apt cache에 update 해줘야 합니다.

$ sudo dpkg -i mldl*.deb
$ sudo apt-get update

이제 PowerAI 설치 준비가 끝났습니다.  PowerAI toolkit에는 여러가지 것들이 많습니다만 일일이 하나하나 설치하실 필요없이 그냥 다음 명령 한줄만 내리면 전체적으로 알아서 다 설치해 줍니다.

$ sudo apt-get install power-mldl

위와 같이 전체 PowerAI toolkit을 일괄 설치하는 명령에 error가 나는 경우가 가끔 있습니다.  복잡하게 생각하실 필요없이, (대부분 caffe와 tensorflow가 필요하시니까) 그냥 각각의 module을 설치하십시요.  그렇게 개개의 framework을 설치하는 것은 error 없이 잘 되실 겁니다.   이때 OpenCV나 bazel 같은 dependent package들은 자동으로 함께 설치됩니다.

$ sudo apt-get install caffe-ibm
$ sudo apt-get install caffe-bvlc
$ sudo apt-get install caffe-nv
$ sudo apt-get install tensorflow

이제 각 framework을 사용하실 때는 각각의 directory에서 사용하려는 framework을 activate 해주면 필요한 환경변수들이 자동으로 잡힙니다.  가령 caffe-ibm을 쓸 경우엔 다음과 같이 해주시면 됩니다.

$ source /opt/DL/caffe-ibm/bin/caffe-activate

다음과 같이 PATH 환경 변수를 확인해보십시요.

$ env | grep PATH
LD_LIBRARY_PATH=/opt/DL/openblas/lib:/opt/DL/caffe-ibm/lib:/usr/local/cuda-8.0/lib64
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/cuda-8.0/bin:/u/b7p088za/.local/bin:/u/b7p088za/bin:/opt/DL/caffe-ibm/bin
PYTHONPATH=/opt/DL/caffe-ibm/python

또는 tensorflow를 쓰시려 할 때는 다음과 같이 하시면 됩니다.

$ source /opt/DL/bazel/bin/bazel-activate
$ source /opt/DL/tensorflow/bin/tensorflow-activate

PATH 확인해보십시요.

$ env | grep PATH
LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/local/cuda-8.0/extras/CUPTI/lib64:/opt/DL/tensorflow/lib
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/cuda-8.0/bin:/u/b7p088za/.local/bin:/u/b7p088za/bin:/opt/DL/bazel/bin:/opt/DL/tensorflow/bin
PYTHONPATH=/opt/DL/tensorflow/lib/python2.7/site-packages


이제 기본 시스템 튜닝입니다.  기본적으로는 cpupower의 governor를 "performance"로, GPU boost를 on으로, 그리고 SMT는 2로 세팅하는 것이 좋습니다.  SMT를 몇으로 세팅하느냐 여부는 물론 workload 성격에 따라 다를 수 있습니다만, 대부분의 경우 일단 2에서 시작해서 4, 8로 늘려보거나 아예 off 해보시는 것이 좋습니다.

먼저 cpupower 명령어를 설치해야 합니다.

$ sudo apt-get install linux-tools-common cpufrequtils

만약 which cpupower 라고 입력했을 때 /usr/bin/cpupower 이라고 나온다면 이는 이미 설치된 것이므로 이건 안 하셔도 됩니다.

다음으로는 /etc/rc.local에 다음 3줄을 삽입하여 booting 시에 자동으로 cpu overclocking과 GPU autoboost가 enable 되도록 합니다.

$ sudo vi /etc/rc.local
...
(맨 아래쪽 exit 0 바로 위에 4줄 삽입)
/usr/bin/cpupower frequency-set --governor performance
/usr/bin/nvidia-smi -pm ENABLED
/usr/bin/nvidia-smi -ac 715,1480
/usr/sbin/ppc64_cpu --smt=2

exit 0

이제 rebooting 한번 해보시고, 정상적으로 부팅되면 빨간색 부분이 다음과 같이 되어 있는지 확인해보십시요.

$ cpupower frequency-info | grep governor
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
                  The governor "performance" may decide which speed to use


$ nvidia-smi -q | tail -n 16
    Applications Clocks
        Graphics                    : 1480 MHz
        Memory                      : 715 MHz
    Default Applications Clocks
        Graphics                    : 1328 MHz
        Memory                      : 715 MHz
    Max Clocks
        Graphics                    : 1480 MHz
        SM                          : 1480 MHz
        Memory                      : 715 MHz
        Video                       : 1480 MHz
    Clock Policy
        Auto Boost                  : N/A
        Auto Boost Default          : N/A
    Processes                       : None


$ ppc64_cpu --smt
SMT = 2


이제 완료된 것입니다.


댓글 없음:

댓글 쓰기