레이블이 conda channel인 게시물을 표시합니다. 모든 게시물 표시
레이블이 conda channel인 게시물을 표시합니다. 모든 게시물 표시

2020년 12월 8일 화요일

IBM PowerAI (Watson ML Community Edition)이 설치된 Ubuntu ppc64le 기반의 docker image 만들기

 


먼저 다음 링크를 참조하여 ppc64le (IBM POWER9) nvidia-docker2 환경에서 Ubuntu 기반의 docker image를 만듭니다.  


http://hwengineer.blogspot.com/2019/05/ppc64le-ibm-power9-nvidia-docker2.html


참고로 ppc64le (IBM POWER9)에서의 CUDA 설치는 NVIDIA CUDA download page의 안내와 같이 아래처럼 진행하시면 됩니다.


# wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/ppc64el/cuda-repo-ubuntu1804_10.1.105-1_ppc64el.deb

# dpkg -i cuda-repo-ubuntu1804_10.1.105-1_ppc64el.deb

# apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/ppc64el/7fa2af80.pub

# apt-get update

# apt-get install cuda



또는 이미 만들어둔 docker image를 다음과 같이 pull 해와도 됩니다.


# docker pull bsyu/ubuntu18.04_cuda10-1_ppc64le:v0.1


이렇게 pull 받아온 docker image를 확인합니다.


root@unigpu:/files/docker# docker images

REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE

bsyu/ubuntu18.04_cuda10-1_ppc64le   v0.1                ef8dd4d654e7        2 hours ago         6.33GB

ubuntu                              18.04               ecc8dc2e4170        4 weeks ago         106MB


이 image를 다음과 같이 구동합니다.  


root@unigpu:/files/docker# docker run --runtime=nvidia -ti --rm bsyu/ubuntu18.04_cuda10-1_ppc64lel:v0.1 bash


이제 그 image 속에서 다음과 같이 IBM PowerAI (IBM Watson ML Community Edition)을 설치합니다.  이는 IBM이 마련한 conda channel을 등록하고 거기에서 conda install 명령을 수행하는 방식으로 설치됩니다.


# conda config --prepend channels https://public.dhe.ibm.com/ibmdl/export/pub/software/server/ibm-ai/conda/


# conda create --name wmlce_env python=3.6


# conda activate wmlce_env


# apt-get install openssh-server


# conda install powerai     


위와 같이 conda install powerai 명령을 내리면 tensorflow 뿐만 아니라 caffe, pytorch 등이 모두 설치됩니다.  가령 Tensorflow 1.14만 설치하고자 한다면 위 명령 대신 conda install tensorflow=1.14를 수행하시면 됩니다.


powerai 전체 package 설치는 network 사정에 따라 1~2시간이 걸리기도 합니다.  설치가 완료되면 다음과 같이 docker commit하여 docker image를 저장합니다.


# docker ps -a

CONTAINER ID        IMAGE                                   COMMAND             CREATED             STATUS              PORTS               NAMES

45fb663f025c        bsyu/ubuntu18.04_cuda10-1_ppc64le:v0.1   "bash"              42 seconds ago      Up 39 seconds                           elastic_gates


이어서 v0.2 등의 새로운 tag로 commit 하시면 됩니다.


[root@ac922 docker]# docker commit 45fb663f025c bsyu/ubuntu18.04_cuda10-1_ppc64le:v0.2



아래는 그렇게 만들어진 docker image들의 사용예입니다.   제가 만든 그런 image들은 https://hub.docker.com/u/bsyu 에 올려져 있습니다.



root@unigpu:~# docker run --runtime=nvidia -ti --rm bsyu/ubuntu18.04_cuda10-1_tf1.15_pytorch1.2_ppc64le:latest 


(wmlce_env) root@bdbf11e90094:/# python

Python 3.6.10 |Anaconda, Inc.| (default, Mar 26 2020, 00:22:27)

[GCC 7.3.0] on linux

Type "help", "copyright", "credits" or "license" for more information.


>>> import torch


>>> import tensorflow as tf

2020-05-29 04:53:09.637141: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1


>>> sess=tf.Session()

2020-05-29 04:53:20.795027: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcuda.so.1

2020-05-29 04:53:20.825918: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1639] Found device 0 with properties:

name: Tesla V100-SXM2-16GB major: 7 minor: 0 memoryClockRate(GHz): 1.53

pciBusID: 0004:04:00.0

2020-05-29 04:53:20.827162: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1639] Found device 1 with properties:

name: Tesla V100-SXM2-16GB major: 7 minor: 0 memoryClockRate(GHz): 1.53

pciBusID: 0004:05:00.0

2020-05-29 04:53:20.828421: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1639] Found device 2 with properties:

name: Tesla V100-SXM2-16GB major: 7 minor: 0 memoryClockRate(GHz): 1.53

pciBusID: 0035:03:00.0

2020-05-29 04:53:20.829655: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1639] Found device 3 with properties:

name: Tesla V100-SXM2-16GB major: 7 minor: 0 memoryClockRate(GHz): 1.53

pciBusID: 0035:04:00.0

2019년 4월 9일 화요일

PowerAI 1.6.0이 나왔습니다



PowerAI 1.6이 2019년 3월 15일에 이미 나왔습니다.  정리가 늦었네요.

PowerAI 1.6부터는 배포 방식이 또 크게 변했습니다.  이제부터는 rpm이나 deb 등의 package로 배포되는 것이 아니라, IBM이 운영하는 별도의 conda channel을 통해서 python package 형태로 배포됩니다.  따라서 이제는 Redhat용과 Ubuntu용이 별도로 나오지 않고, 모두 공통적으로 conda install 명령을 통해서 설치하시면 됩니다.

공식적인 설치 가이드는 아래 link를 참조하시면 됩니다.

https://www.ibm.com/support/knowledgecenter/SS5SF7_1.6.0/navigation/pai_install.html

이럴 경우 생기는 의문이 아마 3가지 있으실 것입니다. 

1) 기존 PowerAI 버전에서의 upgrade는 어떻게 하지 ?

: 예, IBM의 입장은 단호박입니다.  그냥 기존 버전을 지우고 새로 설치하랍니다.

https://www.ibm.com/support/knowledgecenter/SS5SF7_1.6.0/navigation/pai_upgrade.html

2) Tensorflow나 pytorch 등은 원래가 python package이니까 그렇다치고, caffe는 python package가 아닌데 그것도 conda package로 제공이 되나 ?

: 예, 됩니다.  그냥 ~/anaconda3/bin/caffe 의 형태로 설치됩니다.  꼭 python 통하지 않고 그냥 binary 실행 파일 형태로 사용하시면 됩니다.

3) Python2와 python3 모두 지원하나 ?

: 예, 모두 지원합니다.  conda install powerai로 설치할 때, 자동으로 자신이 python2 환경인지 python3 환경인지 감지하여 그에 맞는 package를 설치합니다.


현재 공식적으로 지원이 되는 것은 아래와 같은 환경들입니다.   CUDA 10.1에서만 지원이 되고, Redhat 7.6에서만 지원이 되는 것이 좀 그렇긴 합니다.  그런데 해보면 CUDA 10.0에서도 돌긴 돌아가는 것 같습니다만... 그래도 IBM에서 지원한다는 환경에서 쓰시는 것이 낫겟지요.

https://www.ibm.com/support/knowledgecenter/SS5SF7_1.6.0/navigation/pai_req.html

Component               Version Recommended
Red Hat Enterprise Linux 7.6 7.6
Ubuntu                     18.04 18.04
NVIDIA GPU driver         418 418.39
Anaconda                2018.12 2018.12


실제로 보면 아직 conda channel을 계속 손보고 있는지, Anaconda2에서는 잘 되지만 Anaconda3에서는 알 수 없는 이유로 설치가 일부 안 되기도 합니다.  그럴 때 python 버전을 (공식 지원 버전인) 3.7이 아닌 3.6.8로 낮추고 하면 또 설치가 잘 되기도 하고요.  이 conda channel은 IBM이 별도로 운영하는 것이라서, 계속 update를 하고 있는 것으로 보입니다.

설치 방법은 매우 간단합니다.  먼저 Anaconda 최신 버전 (2018.12) 설치하신 뒤에, https://public.dhe.ibm.com/ibmdl/export/pub/software/server/ibm-ai/conda/ 를 conda 채널로 등록하신 뒤에 'conda install powerai' 하시면 됩니다.   이렇게 PowerAI full package를 설치하면 대략 4GB 정도 추가 공간을 차지하게 됩니다.  무료이고, 등록할 때 별도의 id/password 같은 것을 묻지는 않습니다.

아래는 Anaconda2 기준의 설치 방법입니다.  매우 쉽습니다.


root@sys-97759:/tmp# wget https://repo.continuum.io/archive/Anaconda2-2018.12-Linux-ppc64le.sh

root@sys-97759:/tmp# chmod a+x Anaconda2-2018.12-Linux-ppc64le.sh

root@sys-97759:/tmp# ./Anaconda2-2018.12-Linux-ppc64le.sh
...
[/root/anaconda2] >>> /opt/anaconda2

root@sys-97759:/tmp# which conda
/opt/anaconda2/bin/conda

root@sys-97759:/tmp# conda config --prepend channels https://public.dhe.ibm.com/ibmdl/export/pub/software/server/ibm-ai/conda/

root@sys-97759:/tmp# conda install powerai

(base) root@sys-97759:/tmp# python
Python 2.7.15 |Anaconda, Inc.| (default, Dec 14 2018, 19:05:19)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow
>>> import torch
>>> import caffe2