2018년 1월 13일 토요일

AC922 "Newell" Redhat 7.4 환경에서 Tensorflow Technical Preview 설치하기

먼저, 인터넷 연결이 없는 환경을 위해 ISO 이미지를 이용하여 redhat local repository를 만듭니다.

[root@ac922 nvme]# ls -l *.iso
-rw-r--r--. 1 root root 3187027968 Jan 10 12:42 rhel-alt-server-7.4-ppc64le-dvd.iso

[root@ac922 nvme]# mount -t iso9660 -o loop rhel-alt-server-7.4-ppc64le-dvd.iso /mnt
mount: /dev/loop0 is write-protected, mounting read-only

[root@ac922 nvme]# vi /etc/yum.repos.d/local.repo
[local]
baseurl=file:///mnt/
gpgcheck=0


CUDA 설치를 위한 사전 필요 파일셋을 설치합니다.

[root@ac922 ~]# sudo yum -y install wget nano bzip2

[root@ac922 ~]# wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

[root@ac922 ~]# rpm -ihv epel-release-latest-7.noarch.rpm

[root@ac922 ~]# yum update kernel kernel-tools kernel-tools-libs kernel-bootwrapper gcc openssh-server openssh-clients openssl-devel python-devel kernel-devel-uname-r elfutils-libelf-devel

[root@ac922 ~]# yum update


그리고 Tensorflow Technical Preview에서 요구하는대로, 아래 파일을 수정한 뒤 리부팅합니다.

[root@ac922 ~]# 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"

[root@ac922 ~]# shutdown -r now


이제 Anaconda를 다운받고 설치합니다.  참고로, IBM에서 제공하는 Tensorflow Technical Preview는 아직 공식적으로는 TF1.4 with python2만 지원하며, python3를 비롯한 정식 지원은 2018년 2Q에 예정되어 있습니다.   여기서는 python3에서도 TF1.4.1을 빌드할 것이므로, 일단 Anaconda3도 설치합니다.

[root@ac922 nvme]# wget https://repo.continuum.io/archive/Anaconda2-5.0.0-Linux-ppc64le.sh
[root@ac922 nvme]# wget https://repo.continuum.io/archive/Anaconda3-5.0.0-Linux-ppc64le.sh

[root@ac922 nvme]# ./Anaconda2-5.0.0-Linux-ppc64le.sh
...
[/root/anaconda2] >>> /opt/anaconda2

[root@ac922 nvme]# ./Anaconda3-5.0.0-Linux-ppc64le.sh
...
[/root/anaconda3] >>> /opt/anaconda3

여기서는 anaconda2를 써야 합니다.  이 Tensorflow ESP는 python 2.x만 지원하기 때문입니다.

[root@ac922 nvme]# export PATH="/opt/anaconda2/bin:$PATH"


이제 CUDA를 설치합니다. 

[root@ac922 nvme]# rpm -Uvh cuda-repo-rhel7-9-1-local-9.1.85-1.ppc64le.rpm

[root@ac922 nvme]# wget ftp://fr2.rpmfind.net/linux/fedora-secondary/development/rawhide/Everything/ppc64le/os/Packages/d/dkms-2.4.0-1.20170926git959bd74.fc28.noarch.rpm

[root@ac922 nvme]# rpm -Uvh dkms-2.4.0-1.20170926git959bd74.fc28.noarch.rpm

[root@ac922 nvme]# yum install cuda

[root@ac922 nvme]# cd /usr/local

[root@ac922 local]# tar -ztvf /nvme/cudnn-9.1.tgz
-r--r--r-- erisuser/erisuser 107140 2017-11-01 21:13 cuda/targets/ppc64le-linux/include/cudnn.h
-r--r--r-- erisuser/erisuser  38963 2017-10-20 21:28 cuda/targets/ppc64le-linux/NVIDIA_SLA_cuDNN_Support.txt
lrwxrwxrwx erisuser/erisuser      0 2017-11-17 14:24 cuda/targets/ppc64le-linux/lib/libcudnn.so -> libcudnn.so.7
lrwxrwxrwx erisuser/erisuser      0 2017-11-17 14:24 cuda/targets/ppc64le-linux/lib/libcudnn.so.7 -> libcudnn.so.7.0.5
-rwxrwxr-x erisuser/erisuser 282621088 2017-11-17 13:23 cuda/targets/ppc64le-linux/lib/libcudnn.so.7.0.5
-rw-rw-r-- erisuser/erisuser 277149668 2017-11-17 14:05 cuda/targets/ppc64le-linux/lib/libcudnn_static.a

이건 좀 묘하긴 한데, 나중에 cudnn.h를 /usr/local/cuda/targets/ppc64le-linux/lib에서 찾는 경우가 있으므로 일단 아래와 같이 soft link를 걸어 줍니다.

[root@ac922 local]# ln -s /usr/local/cuda/targets/ppc64le-linux/include/cudnn.h /usr/local/cuda/targets/ppc64le-linux/lib/cudnn.h

CUDA 설치가 끝나면, 이제 JDK와 cmake 등을 설치합니다.  이것들은 나중에 TF1.4.1을 python3 환경에서 빌드할 때 필요합니다.

[root@ac922 ~]# yum install java-1.8.0-openjdk.ppc64le java-1.8.0-openjdk-headless.ppc64le java-1.8.0-openjdk-devel.ppc64le cmake.ppc64le automake.noarch ftp libtool.ppc64le libtool-ltdl-devel.ppc64le apr-util-devel.ppc64le openssl-devel.ppc64le



이제 IBM에서 제공하는 Tensorflow Technical Preview를 설치하겠습니다.  이건 AC922을 구매한 고객에 한해서 별도로 제공되는군요.

[root@ac922 tf_tech_preview]# ls -l
total 21080
-rw-r--r--. 1 root root  5868971 Jan 11 10:02 ibm_smpi-10.02.00.00eval-rh7_20171214.ppc64le.rpm
-rw-r--r--. 1 root root   498399 Jan 11 10:02 ibm_smpi-devel-10.02.00.00eval-rh7_20171214.ppc64le.rpm
-rw-r--r--. 1 root root  4380209 Jan 11 10:02 ibm_smpi_lic_s-10.02.00eval-rh7_20171214.ppc64le.rpm
-rw-r--r--. 1 root root 10816940 Jan 11 10:02 mldl-repo-local-esp-5.0.0-20.7e4ad85.ppc64le.rpm
-rw-r--r--. 1 root root    13569 Jan 11 10:02 README.md

다음과 같이 smpi 관련 파일셋들을 먼저 설치한 뒤, mldl-repo-local을 설치합니다.

[root@ac922 tf_tech_preview]# rpm -Uvh ibm_smpi*.rpm mldl-repo-local-esp-5.0.0-20.7e4ad85.ppc64le.rpm

[root@ac922 tf_tech_preview]# yum update

[root@ac922 tf_tech_preview]# yum install power-mldl-esp


설치된  Tensorflow Technical Preview를 사용하기 위해서는 예전의 PowerAI에서처럼 *-activate를 먼저 해주어야 합니다.  단, 이젠 license 동의 과정도 있고, 또 dependency 자동 설치 과정도 있습니다.

[root@ac922 ~]# /opt/DL/license/bin/accept-powerai-license.sh   # 이걸 먼저 해주지 않으면 다음 과정이 진행되지 않습니다.

[root@ac922 ~]# /opt/DL/tensorflow/bin/install_dependencies    # 역시 이 과정을 해줘야 Tensorflow Technical Preview를 사용할 수 있습니다.
Fetching package metadata ...........
Solving package specifications: .

Package plan for installation in environment /opt/anaconda2:

The following NEW packages will be INSTALLED:

    backports.weakref: 1.0rc1-py27_0
    libprotobuf:       3.4.0-hd26fab5_0
    mock:              2.0.0-py27_0
    pbr:               1.10.0-py27_0
    protobuf:          3.4.0-py27h7448ec6_0

Proceed ([y]/n)? y

libprotobuf-3. 100% |##########################################################| Time: 0:00:00  42.42 MB/s
backports.weak 100% |##########################################################| Time: 0:00:00   9.48 MB/s
protobuf-3.4.0 100% |##########################################################| Time: 0:00:00 551.85 kB/s
pbr-1.10.0-py2 100% |##########################################################| Time: 0:00:00 286.73 kB/s
mock-2.0.0-py2 100% |##########################################################| Time: 0:00:00 249.62 kB/s

그리고나서 예전처럼 /opt/DL/tensorflow/bin/tensorflow-activate을 하면 이제 tensorflow를 사용하실 준비가 된 것입니다.

[root@ac922 ~]# source /opt/DL/tensorflow/bin/tensorflow-activate

댓글 없음:

댓글 쓰기