2017년 11월 10일 금요일

tensorflow 1.3, caffe2, pytorch의 nvidia-docker를 이용한 테스트

tensorflow 1.3, caffe2, pytorch의 nvidia-docker를 이용한 테스트 방법입니다.

1) tensorflow v1.3

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

root@minsky:~# nvidia-docker run -ti --rm  -v /data:/data bsyu/tf1.3-ppc64le:v0.1 bash

먼저 각종 PATH 환경 변수를 확인합니다.

root@67c0e6901bb2:/# env | grep PATH
LIBRARY_PATH=/usr/local/cuda/lib64/stubs:
LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64
PATH=/opt/anaconda3/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PYTHONPATH=/opt/anaconda3/lib/python3.6/site-packages

cifar10 관련된 example code가 들어있는 directory로 이동합니다.

root@67c0e6901bb2:/# cd /data/imsi/tensorflow/models/tutorials/image/cifar10

수행할 cifar10_multi_gpu_train.py code를 일부 수정합니다.  (원래는 --train_dir 등의 명령어 파라미터로 조정이 가능해야 하는데, 실제로는 직접 source를 수정해야 제대로 수행되는 것 같습니다.)

root@67c0e6901bb2:/data/imsi/tensorflow/models/tutorials/image/cifar10# time python cifar10_multi_gpu_train.py --batch_size 512 --num_gpus 2
usage: cifar10_multi_gpu_train.py [-h] [--batch_size BATCH_SIZE]
                                  [--data_dir DATA_DIR] [--use_fp16 USE_FP16]
cifar10_multi_gpu_train.py: error: unrecognized arguments: --num_gpus 2

위와 같은 error를 막기 위해, 아래와 같이 직접 code를 수정합니다.

root@67c0e6901bb2:/data/imsi/tensorflow/models/tutorials/image/cifar10# vi cifar10_multi_gpu_train.py
...
#parser.add_argument('--train_dir', type=str, default='/tmp/cifar10_train',
parser.add_argument('--train_dir', type=str, default='/data/imsi/test/tf1.3',
                    help='Directory where to write event logs and checkpoint.')

#parser.add_argument('--max_steps', type=int, default=1000000,
parser.add_argument('--max_steps', type=int, default=10000,
                    help='Number of batches to run.')

#parser.add_argument('--num_gpus', type=int, default=1,
parser.add_argument('--num_gpus', type=int, default=4,
                    help='How many GPUs to use.')


이제 다음과 같이 run 하시면 됩니다.  여기서는 batch_size를 512로 했는데, 더 크게 잡아도 될 것 같습니다.

root@67c0e6901bb2:/data/imsi/tensorflow/models/tutorials/image/cifar10# time python cifar10_multi_gpu_train.py --batch_size 512
>> Downloading cifar-10-binary.tar.gz 6.1%
...
2017-11-10 01:20:23.628755: step 9440, loss = 0.63 (15074.6 examples/sec; 0.034 sec/batch)
2017-11-10 01:20:25.052011: step 9450, loss = 0.64 (14615.4 examples/sec; 0.035 sec/batch)
2017-11-10 01:20:26.489564: step 9460, loss = 0.55 (14872.0 examples/sec; 0.034 sec/batch)
2017-11-10 01:20:27.860303: step 9470, loss = 0.61 (14515.9 examples/sec; 0.035 sec/batch)
2017-11-10 01:20:29.289386: step 9480, loss = 0.54 (13690.6 examples/sec; 0.037 sec/batch)
2017-11-10 01:20:30.799570: step 9490, loss = 0.69 (15940.8 examples/sec; 0.032 sec/batch)
2017-11-10 01:20:32.239056: step 9500, loss = 0.54 (12581.4 examples/sec; 0.041 sec/batch)
2017-11-10 01:20:34.219832: step 9510, loss = 0.60 (14077.9 examples/sec; 0.036 sec/batch)
...

다음으로는 전체 CPU, 즉 2개 chip 총 16-core의 절반인 1개 chip 8-core와, 전체 GPU 4개 중 2개의 GPU만 할당한 docker를 수행합니다.   여기서 --cpuset-cpus을 써서 CPU 자원을 control할 때, 저렇게 CPU 번호를 2개씩 그룹으로 줍니다.  이는 IBM POWER8가 SMT(hyperthread)가 core당 8개씩 낼 수 있는 특성 때문에 core 1개당 8개의 logical CPU 번호를 할당하기 때문입니다.  현재는 deep learning의 성능 최적화를 위해 SMT를 8이 아닌 2로 맞추어 놓았습니다.

root@minsky:~# NV_GPU=0,1 nvidia-docker run -ti --rm --cpuset-cpus="0,1,8,9,16,17,24,25,32,33,40,41,48,49" -v /data:/data bsyu/tf1.3-ppc64le:v0.1 bash

root@3b2c2614811d:~# nvidia-smi

Fri Nov 10 02:24:14 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 361.119                Driver Version: 361.119                   |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P100-SXM2...  On   | 0002:01:00.0     Off |                    0 |
| N/A   38C    P0    30W / 300W |      0MiB / 16280MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Tesla P100-SXM2...  On   | 0003:01:00.0     Off |                    0 |
| N/A   40C    P0    33W / 300W |      0MiB / 16280MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+


root@3b2c2614811d:/# cd /data/imsi/tensorflow/models/tutorials/image/cifar10

이제 GPU가 4개가 아니라 2개이므로, cifar10_multi_gpu_train.py도 아래와 같이 수정합니다.

root@3b2c2614811d:/data/imsi/tensorflow/models/tutorials/image/cifar10# vi cifar10_multi_gpu_train.py
...
#parser.add_argument('--num_gpus', type=int, default=1,
parser.add_argument('--num_gpus', type=int, default=2,
                    help='How many GPUs to use.')

수행하면 잘 돌아갑니다.

root@3b2c2614811d:/data/imsi/tensorflow/models/tutorials/image/cifar10# time python cifar10_multi_gpu_train.py --batch_size 512
>> Downloading cifar-10-binary.tar.gz 1.7%
...
2017-11-10 02:35:50.040462: step 120, loss = 4.07 (15941.4 examples/sec; 0.032 sec/batch)
2017-11-10 02:35:50.587970: step 130, loss = 4.14 (19490.7 examples/sec; 0.026 sec/batch)
2017-11-10 02:35:51.119347: step 140, loss = 3.91 (18319.8 examples/sec; 0.028 sec/batch)
2017-11-10 02:35:51.655916: step 150, loss = 3.87 (20087.1 examples/sec; 0.025 sec/batch)
2017-11-10 02:35:52.181703: step 160, loss = 3.90 (19215.5 examples/sec; 0.027 sec/batch)
2017-11-10 02:35:52.721608: step 170, loss = 3.82 (17780.1 examples/sec; 0.029 sec/batch)
2017-11-10 02:35:53.245088: step 180, loss = 3.92 (18888.4 examples/sec; 0.027 sec/batch)
2017-11-10 02:35:53.777146: step 190, loss = 3.80 (19103.7 examples/sec; 0.027 sec/batch)
2017-11-10 02:35:54.308063: step 200, loss = 3.76 (18554.2 examples/sec; 0.028 sec/batch)
...


2) caffe2

여기서는 처음부터 GPU 2개와 CPU core 8개만 가지고 docker를 띄워 보겠습니다.

root@minsky:~# NV_GPU=0,1 nvidia-docker run -ti --rm --cpuset-cpus="0,1,8,9,16,17,24,25,32,33,40,41,48,49" -v /data:/data bsyu/caffe2-ppc64le:v0.3 bash

보시는 바와 같이 GPU가 2개만 올라옵니다.

root@dc853a5495a0:/# nvidia-smi

Fri Nov 10 07:22:21 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 361.119                Driver Version: 361.119                   |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P100-SXM2...  On   | 0002:01:00.0     Off |                    0 |
| N/A   32C    P0    29W / 300W |      0MiB / 16280MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Tesla P100-SXM2...  On   | 0003:01:00.0     Off |                    0 |
| N/A   35C    P0    32W / 300W |      0MiB / 16280MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

환경변수를 확인합니다.  여기서는 caffe2가 /opt/caffe2에 설치되어 있으므로, LD_LIBRARY_PATH나 PYTHONPATH를 거기에 맞춥니다.

root@dc853a5495a0:/# env | grep PATH
LIBRARY_PATH=/usr/local/cuda/lib64/stubs:
LD_LIBRARY_PATH=/opt/caffe2/lib:/opt/DL/nccl/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64
PATH=/opt/caffe2/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PYTHONPATH=/opt/caffe2

caffe2는 아래의 resnet50_trainer.py를 이용해 테스트합니다.  그 전에, 먼저 https://github.com/caffe2/caffe2/issues/517 에 나온 lmdb 생성 문제를 해결하기 위해 이 URL에서 제시하는 대로 아래와 같이 code 일부를 수정합니다.

root@dc853a5495a0:/# cd /data/imsi/caffe2/caffe2/python/examples
root@dc853a5495a0:/data/imsi/caffe2/caffe2/python/examples# vi lmdb_create_example.py
...
            flatten_img = img_data.reshape(np.prod(img_data.shape))
#            img_tensor.float_data.extend(flatten_img)
            img_tensor.float_data.extend(flatten_img.flat)

이어서 다음과 같이 lmdb를 생성합니다.   이미 1번 수행했으므로 다시 할 경우 매우 빨리 수행될 것입니다.

root@dc853a5495a0:/data/imsi/caffe2/caffe2/python/examples# python lmdb_create_example.py --output_file /data/imsi/test/caffe2/lmdb
>>> Write database...
Inserted 0 rows
Inserted 16 rows
Inserted 32 rows
Inserted 48 rows
Inserted 64 rows
Inserted 80 rows
Inserted 96 rows
Inserted 112 rows
Checksum/write: 1744827
>>> Read database...
Checksum/read: 1744827

그 다음에 training을 다음과 같이 수행합니다.  여기서는 GPU가 2개만 보이는 환경이므로, --gpus에 0,1,2,3 대신 0,1만 써야 합니다.

root@dc853a5495a0:/data/imsi/caffe2/caffe2/python/examples# time python resnet50_trainer.py --train_data /data/imsi/test/caffe2/lmdb --gpus 0,1 --batch_size 128 --num_epochs 1

수행하면 다음과 같이 'not a valid file'이라는 경고 메시지가 나옵니다만, github 등을 googling해보면 무시하셔도 되는 메시지입니다.

Ignoring @/caffe2/caffe2/contrib/nccl:nccl_ops as it is not a valid file.
Ignoring @/caffe2/caffe2/contrib/gloo:gloo_ops as it is not a valid file.
Ignoring @/caffe2/caffe2/contrib/gloo:gloo_ops_gpu as it is not a valid file.
Ignoring @/caffe2/caffe2/distributed:file_store_handler_ops as it is not a valid file.
Ignoring @/caffe2/caffe2/distributed:redis_store_handler_ops as it is not a valid file.
INFO:resnet50_trainer:Running on GPUs: [0, 1]
INFO:resnet50_trainer:Using epoch size: 1499904
INFO:data_parallel_model:Parallelizing model for devices: [0, 1]
INFO:data_parallel_model:Create input and model training operators
INFO:data_parallel_model:Model for GPU : 0
INFO:data_parallel_model:Model for GPU : 1
INFO:data_parallel_model:Adding gradient operators
INFO:data_parallel_model:Add gradient all-reduces for SyncSGD
INFO:data_parallel_model:Post-iteration operators for updating params
INFO:data_parallel_model:Calling optimizer builder function
INFO:data_parallel_model:Add initial parameter sync
WARNING:data_parallel_model:------- DEPRECATED API, please use data_parallel_model.OptimizeGradientMemory() -----
WARNING:memonger:NOTE: Executing memonger to optimize gradient memory
INFO:memonger:Memonger memory optimization took 0.252535104752 secs
WARNING:memonger:NOTE: Executing memonger to optimize gradient memory
INFO:memonger:Memonger memory optimization took 0.253523111343 secs
INFO:resnet50_trainer:Starting epoch 0/1
INFO:resnet50_trainer:Finished iteration 1/11718 of epoch 0 (27.70 images/sec)
INFO:resnet50_trainer:Training loss: 7.39205980301, accuracy: 0.0
INFO:resnet50_trainer:Finished iteration 2/11718 of epoch 0 (378.51 images/sec)
INFO:resnet50_trainer:Training loss: 0.0, accuracy: 1.0
INFO:resnet50_trainer:Finished iteration 3/11718 of epoch 0 (387.87 images/sec)
INFO:resnet50_trainer:Training loss: 0.0, accuracy: 1.0
INFO:resnet50_trainer:Finished iteration 4/11718 of epoch 0 (383.28 images/sec)
INFO:resnet50_trainer:Training loss: 0.0, accuracy: 1.0
INFO:resnet50_trainer:Finished iteration 5/11718 of epoch 0 (381.71 images/sec)
...

다만 위와 같이 처음부터 accuracy가 1.0으로 나오는 문제가 있습니다.  이 resnet50_trainer.py 문제에 대해서는 caffe2의 github에 아래와 같이 discussion들이 있었습니다만, 아직 뾰족한 해결책은 없는 상태입니다.  하지만 상대적 시스템 성능 측정에는 별 문제가 없습니다.

https://github.com/caffe2/caffe2/issues/810


3) pytorch

이번에는 pytorch 이미지로 테스트하겠습니다.

root@8ccd72116fee:~# env | grep PATH
LIBRARY_PATH=/usr/local/cuda/lib64/stubs:
LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64
PATH=/opt/anaconda3/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

먼저 docker image를 아래와 같이 구동합니다.  단, 여기서는 --ipc=host 옵션을 씁니다.  이유는 https://discuss.pytorch.org/t/imagenet-example-is-crashing/1363/2 에서 언급된 hang 현상을 피하기 위한 것입니다. 

root@minsky:~# nvidia-docker run -ti --rm --ipc=host -v /data:/data bsyu/pytorch-ppc64le:v0.1 bash

가장 간단한 example인 mnist를 아래와 같이 수행합니다.  10 epochs를 수행하는데 대략 1분 30초 정도가 걸립니다.

root@8ccd72116fee:/data/imsi/examples/mnist# time python main.py --batch-size 512 --epochs 10
...
rain Epoch: 9 [25600/60000 (42%)]      Loss: 0.434816
Train Epoch: 9 [30720/60000 (51%)]      Loss: 0.417652
Train Epoch: 9 [35840/60000 (59%)]      Loss: 0.503125
Train Epoch: 9 [40960/60000 (68%)]      Loss: 0.477776
Train Epoch: 9 [46080/60000 (76%)]      Loss: 0.346416
Train Epoch: 9 [51200/60000 (85%)]      Loss: 0.361492
Train Epoch: 9 [56320/60000 (93%)]      Loss: 0.383941

Test set: Average loss: 0.1722, Accuracy: 9470/10000 (95%)

Train Epoch: 10 [0/60000 (0%)]  Loss: 0.369119
Train Epoch: 10 [5120/60000 (8%)]       Loss: 0.377726
Train Epoch: 10 [10240/60000 (17%)]     Loss: 0.402854
Train Epoch: 10 [15360/60000 (25%)]     Loss: 0.349409
Train Epoch: 10 [20480/60000 (34%)]     Loss: 0.295271
...

다만 이건 single-GPU만 사용하는 example입니다.  Multi-GPU를 사용하기 위해서는 아래의 imagenet example을 수행해야 하는데, 그러자면 ilsvrc2012 dataset을 download 받아 풀어놓아야 합니다.  그 data는 아래와 같이 /data/imagenet_dir/train과 /data/imagenet_dir/val에 각각 JPEG 형태로 풀어놓았습니다.

root@minsky:/data/imagenet_dir/train# while read SYNSET; do
> mkdir -p ${SYNSET}
> tar xf ../../ILSVRC2012_img_train.tar "${SYNSET}.tar"
> tar xf "${SYNSET}.tar" -C "${SYNSET}"
> rm -f "${SYNSET}.tar"
> done < /opt/DL/caffe-nv/data/ilsvrc12/synsets.txt

root@minsky:/data/imagenet_dir/train# ls -1 | wc -l
1000
root@minsky:/data/imagenet_dir/train# du -sm .
142657  .
root@minsky:/data/imagenet_dir/train# find . | wc -l
1282168

root@minsky:/data/imagenet_dir/val# ls -1 | wc -l
50000

이 상태에서 그대로 main.py를 수행하면 다음과 같은 error를 겪게 됩니다.  이유는 이 main.py는 val 디렉토리 밑에도 label별 디렉토리에 JPEG 파일들이 들어가 있기를 기대하는 구조이기 때문입니다.

RuntimeError: Found 0 images in subfolders of: /data/imagenet_dir/val
Supported image extensions are: .jpg,.JPG,.jpeg,.JPEG,.png,.PNG,.ppm,.PPM,.bmp,.BMP

따라서 아래와 같이 inception 디렉토리의 preprocess_imagenet_validation_data.py를 이용하여 label별 디렉토리로 JPEG 파일들을 분산 재배치해야 합니다.

root@minsky:/data/models/research/inception/inception/data# python preprocess_imagenet_validation_data.py /data/imagenet_dir/val imagenet_2012_validation_synset_labels.txt

이제 다시 보면 label별로 재분배된 것을 보실 수 있습니다.

root@minsky:/data/imagenet_dir/val# ls | head -n 3
n01440764
n01443537
n01484850

root@minsky:/data/imagenet_dir/val# ls | wc -l
1000
root@minsky:/data/imagenet_dir/val# find . | wc -l
51001

이제 다음과 같이 main.py를 수행하면 됩니다. 

root@8ccd72116fee:~# cd /data/imsi/examples/imagenet

root@8ccd72116fee:/data/imsi/examples/imagenet# time python main.py -a resnet18 --epochs 1 /data/imagenet_dir
=> creating model 'resnet18'
Epoch: [0][0/5005]      Time 11.237 (11.237)    Data 2.330 (2.330)      Loss 7.0071 (7.0071)    Prec@1 0.391 (0.391)   Prec@5 0.391 (0.391)
Epoch: [0][10/5005]     Time 0.139 (1.239)      Data 0.069 (0.340)      Loss 7.1214 (7.0515)    Prec@1 0.000 (0.284)   Prec@5 0.000 (1.065)
Epoch: [0][20/5005]     Time 0.119 (0.854)      Data 0.056 (0.342)      Loss 7.1925 (7.0798)    Prec@1 0.000 (0.260)   Prec@5 0.781 (0.930)
...




* 위에서 사용된 docker image들은 다음과 같이 backup을 받아두었습니다.

root@minsky:/data/docker_save# docker save --output caffe2-ppc64le.v0.3.tar bsyu/caffe2-ppc64le:v0.3
root@minsky:/data/docker_save# docker save --output pytorch-ppc64le.v0.1.tar bsyu/pytorch-ppc64le:v0.1
root@minsky:/data/docker_save# docker save --output tf1.3-ppc64le.v0.1.tar bsyu/tf1.3-ppc64le:v0.1
root@minsky:/data/docker_save# docker save --output cudnn6-conda2-ppc64le.v0.1.tar bsyu/cudnn6-conda2-ppc64le:v0.1
root@minsky:/data/docker_save# docker save --output cudnn6-conda3-ppc64le.v0.1.tar bsyu/cudnn6-conda3-ppc64le:v0.1

root@minsky:/data/docker_save# ls -l
total 28023280
-rw------- 1 root root 4713168896 Nov 10 16:48 caffe2-ppc64le.v0.3.tar
-rw------- 1 root root 4218520064 Nov 10 17:10 cudnn6-conda2-ppc64le.v0.1.tar
-rw------- 1 root root 5272141312 Nov 10 17:11 cudnn6-conda3-ppc64le.v0.1.tar
-rw------- 1 root root 6921727488 Nov 10 16:51 pytorch-ppc64le.v0.1.tar
-rw------- 1 root root 7570257920 Nov 10 16:55 tf1.3-ppc64le.v0.1.tar

비상시엔 이 이미지들을 docker load 명령으로 load 하시면 됩니다.

(예)  docker load --input caffe2-ppc64le.v0.3.tar

2017년 11월 9일 목요일

R 3.4.1의 설치 및 기존 rstudio와의 연동

예전에 쓰던 버전의 R (가령 3.3.2)를 그대로 놔둔 상태에서, 새로운 버전의 R 3.4.1을 써야 할 경우가 있습니다.  이때는 아래 절차에 따라 설치하시면 됩니다.

먼저, 아래 link에서 제가 ppc64le(POWER8) 상에서 빌드한 R server 3.4.1을 여기서 download 받아서, 기존 서버의 사용자 홈 디렉토리에 upload 한 뒤 자신의 홈 디렉토리에 풀어놓습니다. 
여기서는 u0017649라는 유저의 홈디렉토리에 풀었습니다만, 아무 곳에 풀어놓아도 상관없습니다.   기존 버전은 /usr/local/lib/R 밑에 설치되어 있을 것입니다.

u0017649@sys-89830:~$ tar -zxf R341.tgz

u0017649@sys-89830:~$ cd R
u0017649@sys-89830:~/R$ pwd
/home/u0017649/R

이제 새로 풀어놓은 R을 Rstudio와 연동시키기 위해서, 다음과 같이 기존 /usr/bin/R을 다음과 같이 옮겨놓고, 방금 풀어놓은 R을 /usr/bin/R로 softlink를 시켜 줍니다.

u0017649@sys-89830:~/R$ sudo mv /usr/bin/R /usr/bin/R.old

u0017649@sys-89830:~/R$ sudo ln /home/u0017649/R/bin/R /usr/bin/R

이제 Rstudio를 재시작합니다.

u0017649@sys-89830:~/R$ sudo systemctl stop rstudio-server.service
u0017649@sys-89830:~/R$ sudo systemctl start rstudio-server.service

u0017649@sys-89830:~/R$ sudo systemctl status rstudio-server.service
● rstudio-server.service - LSB: RStudio Server
   Loaded: loaded (/etc/init.d/rstudio-server; bad; vendor preset: enabled)
   Active: active (running) since Wed 2017-11-08 20:26:40 EST; 7s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 12456 ExecStop=/etc/init.d/rstudio-server stop (code=exited, status=0/SUCCESS)
  Process: 12469 ExecStart=/etc/init.d/rstudio-server start (code=exited, status=0/SUCCESS)
    Tasks: 3
   Memory: 10.1M
      CPU: 661ms
   CGroup: /system.slice/rstudio-server.service
           └─12477 /usr/local/lib/rstudio-server/bin/rserver

Nov 08 20:26:40 sys-89830 systemd[1]: Starting LSB: RStudio Server...
Nov 08 20:26:40 sys-89830 systemd[1]: Started LSB: RStudio Server.

그 다음에 평소대로 http://서버주소:8787 로 접속하시면 됩니다.  아래와 같이 잘 됩니다.



참고1) 기존 Rstudio 버전(Version 99.9.9)은 새 R 3.4.1과 위와 같이 잘 연동됩니다.

참고2) 여기서 사용된 CRAN R 3.4.1의 빌드는 예전 포스팅 http://hwengineer.blogspot.kr/2017/06/ppc64le-ubuntu-cran-r-package-rstudio.html 에 나온 절차대로 하시면 됩니다. 

참고3) 이 R341.tgz 속에 설치된 R 패키지들은 다음과 같습니다.

> installed.packages()
              Package        
anim.plots    "anim.plots"   
animation     "animation"    
assertthat    "assertthat"   
BH            "BH"           
bindr         "bindr"        
bindrcpp      "bindrcpp"     
bitops        "bitops"       
boot          "boot"         
Boruta        "Boruta"       
caret         "caret"        
caretEnsemble "caretEnsemble"
caTools       "caTools"      
class         "class"        
cluster       "cluster"      
codetools     "codetools"    
colorspace    "colorspace"   
curl          "curl"         
CVST          "CVST"         
data.table    "data.table"   
ddalpha       "ddalpha"      
DEoptimR      "DEoptimR"     
dichromat     "dichromat"    
digest        "digest"       
dimRed        "dimRed"       
dplyr         "dplyr"        
DRR           "DRR"          
e1071         "e1071"        
evaluate      "evaluate"     
foreach       "foreach"      
foreign       "foreign"      
gdata         "gdata"        
ggplot2       "ggplot2"      
glue          "glue"         
gower         "gower"        
gplots        "gplots"       
gridExtra     "gridExtra"    
gtable        "gtable"       
gtools        "gtools"       
highr         "highr"        
ipred         "ipred"        
iterators     "iterators"    
kernlab       "kernlab"      
KernSmooth    "KernSmooth"   
knitr         "knitr"        
labeling      "labeling"     
lattice       "lattice"      
lava          "lava"         
lazyeval      "lazyeval"     
lubridate     "lubridate"    
magrittr      "magrittr"     
markdown      "markdown"     
MASS          "MASS"         
Matrix        "Matrix"       
mgcv          "mgcv"         
mime          "mime"         
ModelMetrics  "ModelMetrics" 
munsell       "munsell"      
nlme          "nlme"         
numDeriv      "numDeriv"     
pbapply       "pbapply"      
pkgconfig     "pkgconfig"    
plogr         "plogr"        
              LibPath                        
anim.plots    "/usr/local/lib/R/site-library"
animation     "/usr/local/lib/R/site-library"
assertthat    "/usr/local/lib/R/site-library"
BH            "/usr/local/lib/R/site-library"
bindr         "/usr/local/lib/R/site-library"
bindrcpp      "/usr/local/lib/R/site-library"
bitops        "/usr/local/lib/R/site-library"
boot          "/usr/local/lib/R/site-library"
Boruta        "/usr/local/lib/R/site-library"
caret         "/usr/local/lib/R/site-library"
caretEnsemble "/usr/local/lib/R/site-library"
caTools       "/usr/local/lib/R/site-library"
class         "/usr/local/lib/R/site-library"
cluster       "/usr/local/lib/R/site-library"
codetools     "/usr/local/lib/R/site-library"
colorspace    "/usr/local/lib/R/site-library"
curl          "/usr/local/lib/R/site-library"
CVST          "/usr/local/lib/R/site-library"
data.table    "/usr/local/lib/R/site-library"
ddalpha       "/usr/local/lib/R/site-library"
DEoptimR      "/usr/local/lib/R/site-library"
dichromat     "/usr/local/lib/R/site-library"
digest        "/usr/local/lib/R/site-library"
dimRed        "/usr/local/lib/R/site-library"
dplyr         "/usr/local/lib/R/site-library"
DRR           "/usr/local/lib/R/site-library"
e1071         "/usr/local/lib/R/site-library"
evaluate      "/usr/local/lib/R/site-library"
foreach       "/usr/local/lib/R/site-library"
foreign       "/usr/local/lib/R/site-library"
gdata         "/usr/local/lib/R/site-library"
ggplot2       "/usr/local/lib/R/site-library"
glue          "/usr/local/lib/R/site-library"
gower         "/usr/local/lib/R/site-library"
gplots        "/usr/local/lib/R/site-library"
gridExtra     "/usr/local/lib/R/site-library"
gtable        "/usr/local/lib/R/site-library"
gtools        "/usr/local/lib/R/site-library"
highr         "/usr/local/lib/R/site-library"
ipred         "/usr/local/lib/R/site-library"
iterators     "/usr/local/lib/R/site-library"
kernlab       "/usr/local/lib/R/site-library"
KernSmooth    "/usr/local/lib/R/site-library"
knitr         "/usr/local/lib/R/site-library"
labeling      "/usr/local/lib/R/site-library"
lattice       "/usr/local/lib/R/site-library"
lava          "/usr/local/lib/R/site-library"
lazyeval      "/usr/local/lib/R/site-library"
lubridate     "/usr/local/lib/R/site-library"
magrittr      "/usr/local/lib/R/site-library"
markdown      "/usr/local/lib/R/site-library"
MASS          "/usr/local/lib/R/site-library"
Matrix        "/usr/local/lib/R/site-library"
mgcv          "/usr/local/lib/R/site-library"
mime          "/usr/local/lib/R/site-library"
ModelMetrics  "/usr/local/lib/R/site-library"
munsell       "/usr/local/lib/R/site-library"
nlme          "/usr/local/lib/R/site-library"
numDeriv      "/usr/local/lib/R/site-library"
pbapply       "/usr/local/lib/R/site-library"
pkgconfig     "/usr/local/lib/R/site-library"
plogr         "/usr/local/lib/R/site-library"
              Version     Priority     
anim.plots    "0.2"       NA           
animation     "2.5"       NA           
assertthat    "0.2.0"     NA           
BH            "1.65.0-1"  NA           
bindr         "0.1"       NA           
bindrcpp      "0.2"       NA           
bitops        "1.0-6"     NA           
boot          "1.3-20"    "recommended"
Boruta        "5.2.0"     NA           
caret         "6.0-77"    NA           
caretEnsemble "2.0.0"     NA           
caTools       "1.17.1"    NA           
class         "7.3-14"    "recommended"
cluster       "2.0.6"     "recommended"
codetools     "0.2-15"    "recommended"
colorspace    "1.3-2"     NA           
curl          "3.0"       NA           
CVST          "0.2-1"     NA           
data.table    "1.10.4-3"  NA           
ddalpha       "1.3.1"     NA           
DEoptimR      "1.0-8"     NA           
dichromat     "2.0-0"     NA           
digest        "0.6.12"    NA           
dimRed        "0.1.0"     NA           
dplyr         "0.7.4"     NA           
DRR           "0.0.2"     NA           
e1071         "1.6-8"     NA           
evaluate      "0.10.1"    NA           
foreach       "1.4.3"     NA           
foreign       "0.8-69"    "recommended"
gdata         "2.18.0"    NA           
ggplot2       "2.2.1"     NA           
glue          "1.2.0"     NA           
gower         "0.1.2"     NA           
gplots        "3.0.1"     NA           
gridExtra     "2.3"       NA           
gtable        "0.2.0"     NA           
gtools        "3.5.0"     NA           
highr         "0.6"       NA           
ipred         "0.9-6"     NA           
iterators     "1.0.8"     NA           
kernlab       "0.9-25"    NA           
KernSmooth    "2.23-15"   "recommended"
knitr         "1.17"      NA           
labeling      "0.3"       NA           
lattice       "0.20-35"   "recommended"
lava          "1.5.1"     NA           
lazyeval      "0.2.1"     NA           
lubridate     "1.7.1"     NA           
magrittr      "1.5"       NA           
markdown      "0.8"       NA           
MASS          "7.3-47"    "recommended"
Matrix        "1.2-11"    "recommended"
mgcv          "1.8-22"    "recommended"
mime          "0.5"       NA           
ModelMetrics  "1.1.0"     NA           
munsell       "0.4.3"     NA           
nlme          "3.1-131"   "recommended"
numDeriv      "2016.8-1"  NA           
pbapply       "1.3-3"     NA           
pkgconfig     "2.0.1"     NA           
plogr         "0.1-1"     NA           
              Depends                                                               
anim.plots    NA                                                                    
animation     "R (>= 2.14.0)"                                                       
assertthat    NA                                                                    
BH            NA                                                                    
bindr         NA                                                                    
bindrcpp      NA                                                                    
bitops        NA                                                                    
boot          "R (>= 3.0.0), graphics, stats"                                       
Boruta        "ranger"                                                              
caret         "R (>= 2.10), lattice (>= 0.20), ggplot2"                             
caretEnsemble "R (>= 3.2.0)"                                                        
caTools       "R (>= 2.2.0)"                                                        
class         "R (>= 3.0.0), stats, utils"                                          
cluster       "R (>= 3.0.1)"                                                        
codetools     "R (>= 2.1)"                                                          
colorspace    "R (>= 2.13.0), methods"                                              
curl          "R (>= 3.0.0)"                                                        
CVST          "kernlab,Matrix"                                                      
data.table    "R (>= 3.0.0)"                                                        
ddalpha       "stats, utils, graphics, grDevices, MASS, class, robustbase,\nsfsmisc"
DEoptimR      NA                                                                    
dichromat     "R (>= 2.10), stats"                                                  
digest        "R (>= 2.4.1)"                                                        
dimRed        "R (>= 3.0.0), methods, DRR"                                          
dplyr         "R (>= 3.1.2)"                                                        
DRR           "kernlab, CVST, Matrix"                                               
e1071         NA                                                                    
evaluate      "R (>= 3.0.2)"                                                        
foreach       "R (>= 2.5.0)"                                                        
foreign       "R (>= 3.0.0)"                                                        
gdata         "R (>= 2.3.0)"                                                        
ggplot2       "R (>= 3.1)"                                                          
glue          "R (>= 3.1)"                                                          
gower         NA                                                                    
gplots        "R (>= 3.0)"                                                          
gridExtra     NA                                                                    
gtable        "R (>= 2.14)"                                                         
gtools        "R (>= 2.10)"                                                         
highr         "R (>= 3.0.2)"                                                        
ipred         "R (>= 2.10)"                                                         
iterators     "R (>= 2.5.0), utils"                                                 
kernlab       "R (>= 2.10)"                                                         
KernSmooth    "R (>= 2.5.0), stats"                                                 
knitr         "R (>= 3.1.0)"                                                        
labeling      NA                                                                    
lattice       "R (>= 3.0.0)"                                                        
lava          "R (>= 3.0)"                                                          
lazyeval      "R (>= 3.1.0)"                                                        
lubridate     "methods, R (>= 3.0.0)"                                               
magrittr      NA                                                                    
markdown      "R (>= 2.11.1)"                                                       
MASS          "R (>= 3.1.0), grDevices, graphics, stats, utils"                     
Matrix        "R (>= 3.0.1)"                                                        
mgcv          "R (>= 2.14.0), nlme (>= 3.1-64)"                                     
mime          NA                                                                    
ModelMetrics  "R (>= 3.2.2)"                                                        
munsell       NA                                                                    
nlme          "R (>= 3.0.2)"                                                        
numDeriv      "R (>= 2.11.1)"                                                       
pbapply       "R (>= 3.2.0)"                                                        
pkgconfig     NA                                                                    
plogr         NA                                                                    
              Imports                                                                                                                                             
anim.plots    "animation"                                                                                                                                         
animation     NA                                                                                                                                                  
assertthat    "tools"                                                                                                                                             
BH            NA                                                                                                                                                  
bindr         NA                                                                                                                                                  
bindrcpp      "Rcpp, bindr"                                                                                                                                       
bitops        NA                                                                                                                                                  
boot          NA                                                                                                                                                  
Boruta        NA                                                                                                                                                  
caret         "foreach, methods, plyr, ModelMetrics (>= 1.1.0), nlme,\nreshape2, stats, stats4, utils, grDevices, recipes (>= 0.0.1),\nwithr (>= 2.0.0)"          
caretEnsemble "methods, pbapply, ggplot2, digest, plyr, lattice, gridExtra,\ndata.table, caret"                                                                   
caTools       "bitops"                                                                                                                                            
class         "MASS"                                                                                                                                              
cluster       "graphics, grDevices, stats, utils"                                                                                                                 
codetools     NA                                                                                                                                                  
colorspace    "graphics, grDevices"                                                                                                                               
curl          NA                                                                                                                                                  
CVST          NA                                                                                                                                                  
data.table    "methods"                                                                                                                                           
ddalpha       "Rcpp (>= 0.11.0)"                                                                                                                                  
DEoptimR      "stats"                                                                                                                                             
dichromat     NA                                                                                                                                                  
digest        NA                                                                                                                                                  
dimRed        NA                                                                                                                                                  
dplyr         "assertthat, bindrcpp (>= 0.2), glue (>= 1.1.1), magrittr,\nmethods, pkgconfig, rlang (>= 0.1.2), R6, Rcpp (>= 0.12.7),\ntibble (>= 1.3.1), utils"  
DRR           "stats, methods"                                                                                                                                    
e1071         "graphics, grDevices, class, stats, methods, utils"                                                                                                 
evaluate      "methods, stringr (>= 0.6.2)"                                                                                                                       
foreach       "codetools, utils, iterators"                                                                                                                       
foreign       "methods, utils, stats"                                                                                                                             
gdata         "gtools, stats, methods, utils"                                                                                                                     
ggplot2       "digest, grid, gtable (>= 0.1.1), MASS, plyr (>= 1.7.1),\nreshape2, scales (>= 0.4.1), stats, tibble, lazyeval"                                     
glue          "methods"                                                                                                                                           
gower         NA                                                                                                                                                  
gplots        "gtools, gdata, stats, caTools, KernSmooth"                                                                                                         
gridExtra     "gtable, grid, grDevices, graphics, utils"                                                                                                          
gtable        "grid"                                                                                                                                              
gtools        NA                                                                                                                                                  
highr         NA                                                                                                                                                  
ipred         "rpart (>= 3.1-8), MASS, survival, nnet, class, prodlim"                                                                                            
iterators     NA                                                                                                                                                  
kernlab       "methods, stats, grDevices, graphics"                                                                                                               
KernSmooth    NA                                                                                                                                                  
knitr         "evaluate (>= 0.10), digest, highr, markdown, stringr (>= 0.6),\nyaml, methods, tools"                                                              
labeling      NA                                                                                                                                                  
lattice       "grid, grDevices, graphics, stats, utils"                                                                                                           
lava          "grDevices, graphics, methods, numDeriv, stats, survival, utils"                                                                                    
lazyeval      NA                                                                                                                                                  
lubridate     "stringr, Rcpp (>= 0.11),"                                                                                                                          
magrittr      NA                                                                                                                                                  
markdown      "utils, mime (>= 0.3)"                                                                                                                              
MASS          "methods"                                                                                                                                           
Matrix        "methods, graphics, grid, stats, utils, lattice"                                                                                                    
mgcv          "methods, stats, graphics, Matrix"                                                                                                                  
mime          "tools"                                                                                                                                             
ModelMetrics  "Rcpp"                                                                                                                                              
munsell       "colorspace, methods"                                                                                                                               
nlme          "graphics, stats, utils, lattice"                                                                                                                   
numDeriv      NA                                                                                                                                                  
pbapply       "parallel"                                                                                                                                          
pkgconfig     "utils"                                                                                                                                             
plogr         NA                                                                                                                                                  
              LinkingTo                                            
anim.plots    NA                                                   
animation     NA                                                   
assertthat    NA                                                   
BH            NA                                                   
bindr         NA                                                   
bindrcpp      "Rcpp, plogr"                                        
bitops        NA                                                   
boot          NA                                                   
Boruta        NA                                                   
caret         NA                                                   
caretEnsemble NA                                                   
caTools       NA                                                   
class         NA                                                   
cluster       NA                                                   
codetools     NA                                                   
colorspace    NA                                                   
curl          NA                                                   
CVST          NA                                                   
data.table    NA                                                   
ddalpha       "BH, Rcpp"                                           
DEoptimR      NA                                                   
dichromat     NA                                                   
digest        NA                                                   
dimRed        NA                                                   
dplyr         "Rcpp (>= 0.12.0), BH (>= 1.58.0-1), bindrcpp, plogr"
DRR           NA                                                   
e1071         NA                                                   
evaluate      NA                                                   
foreach       NA                                                   
foreign       NA                                                   
gdata         NA                                                   
ggplot2       NA                                                   
glue          NA                                                   
gower         NA                                                   
gplots        NA                                                   
gridExtra     NA                                                   
gtable        NA                                                   
gtools        NA                                                   
highr         NA                                                   
ipred         NA                                                   
iterators     NA                                                   
kernlab       NA                                                   
KernSmooth    NA                                                   
knitr         NA                                                   
labeling      NA                                                   
lattice       NA                                                   
lava          NA                                                   
lazyeval      NA                                                   
lubridate     "Rcpp,"                                              
magrittr      NA                                                   
markdown      NA                                                   
MASS          NA                                                   
Matrix        NA                                                   
mgcv          NA                                                   
mime          NA                                                   
ModelMetrics  "Rcpp"                                               
munsell       NA                                                   
nlme          NA                                                   
numDeriv      NA                                                   
pbapply       NA                                                   
pkgconfig     NA                                                   
plogr         NA                                                   
              Suggests                                                                                                                                                                                                                                                     
anim.plots    "maps, knitr, mapdata, testthat"                                                                                                                                                                                                                             
animation     "MASS, class, testit"                                                                                                                                                                                                                                        
assertthat    "testthat"                                                                                                                                                                                                                                                   
BH            NA                                                                                                                                                                                                                                                           
bindr         "testthat"                                                                                                                                                                                                                                                   
bindrcpp      "testthat"                                                                                                                                                                                                                                                   
bitops        NA                                                                                                                                                                                                                                                           
boot          "MASS, survival"                                                                                                                                                                                                                                             
Boruta        "mlbench, rFerns, randomForest"                                                                                                                                                                                                                              
caret         "BradleyTerry2, e1071, earth (>= 2.2-3), fastICA, gam, ipred,\nkernlab, klaR, MASS, ellipse, mda, mgcv, mlbench, MLmetrics,\nnnet, party (>= 0.9-99992), pls, pROC, proxy, randomForest,\nRANN, spls, subselect, pamr, superpc, Cubist, testthat (>=\n0.9.1)"
caretEnsemble "caTools, testthat, lintr, randomForest, glmnet, rpart,\nkernlab, nnet, e1071, ipred, pROC, knitr, mlbench, MASS, gbm,\nklaR"                                                                                                                                
caTools       "MASS, rpart"                                                                                                                                                                                                                                                
class         NA                                                                                                                                                                                                                                                           
cluster       "MASS"                                                                                                                                                                                                                                                       
codetools     NA                                                                                                                                                                                                                                                           
colorspace    "datasets, stats, utils, KernSmooth, MASS, kernlab, mvtnorm,\nvcd, dichromat, tcltk, shiny, shinyjs"                                                                                                                                                         
curl          "testthat (>= 1.0.0), knitr, jsonlite, rmarkdown, magrittr,\nhttpuv, webutils"                                                                                                                                                                               
CVST          NA                                                                                                                                                                                                                                                           
data.table    "bit64, knitr, nanotime, chron, ggplot2 (>= 0.9.0), plyr,\nreshape, reshape2, testthat (>= 0.4), hexbin, fastmatch, nlme,\nxts, gdata, GenomicRanges, caret, curl, zoo, plm, rmarkdown,\nparallel"                                                           
ddalpha       NA                                                                                                                                                                                                                                                           
DEoptimR      NA                                                                                                                                                                                                                                                           
dichromat     NA                                                                                                                                                                                                                                                           
digest        "knitr, rmarkdown"                                                                                                                                                                                                                                           
dimRed        "MASS, Matrix, RANN, RSpectra, Rtsne, coRanking, diffusionMap,\nenergy, fastICA, ggplot2, graphics, igraph, kernlab, lle, loe,\noptimx, pcaPP, rgl, scales, scatterplot3d, stats, testthat,\ntidyr, vegan"                                                   
dplyr         "bit64, covr, dbplyr, dtplyr, DBI, ggplot2, hms, knitr, Lahman\n(>= 3.0-1), mgcv, microbenchmark, nycflights13, rmarkdown,\nRMySQL, RPostgreSQL, RSQLite, testthat, withr"                                                                                   
DRR           "knitr"                                                                                                                                                                                                                                                      
e1071         "cluster, mlbench, nnet, randomForest, rpart, SparseM, xtable,\nMatrix, MASS"                                                                                                                                                                                
evaluate      "testthat, lattice, ggplot2"                                                                                                                                                                                                                                 
foreach       "randomForest"                                                                                                                                                                                                                                               
foreign       NA                                                                                                                                                                                                                                                           
gdata         "RUnit"                                                                                                                                                                                                                                                      
ggplot2       "covr, ggplot2movies, hexbin, Hmisc, lattice, mapproj, maps,\nmaptools, mgcv, multcomp, nlme, testthat (>= 0.11.0), quantreg,\nknitr, rpart, rmarkdown, svglite"                                                                                             
glue          "testthat, covr, magrittr, crayon, knitr, rmarkdown, DBI,\nRSQLite, R.utils, forcats, microbenchmark, rprintf, stringr,\nggplot2"                                                                                                                            
gower         "testthat, knitr, rmarkdown"                                                                                                                                                                                                                                 
gplots        "grid, MASS"                                                                                                                                                                                                                                                 
gridExtra     "ggplot2, egg, lattice, knitr, testthat"                                                                                                                                                                                                                     
gtable        "testthat, covr"                                                                                                                                                                                                                                             
gtools        NA                                                                                                                                                                                                                                                           
highr         "knitr, testit"                                                                                                                                                                                                                                              
ipred         "mvtnorm, mlbench, TH.data"                                                                                                                                                                                                                                  
iterators     "RUnit"                                                                                                                                                                                                                                                      
kernlab       NA                                                                                                                                                                                                                                                           
KernSmooth    "MASS"                                                                                                                                                                                                                                                       
knitr         "formatR, testit, rgl (>= 0.95.1201), codetools, rmarkdown,\nhtmlwidgets (>= 0.7), webshot, tikzDevice (>= 0.10), png, jpeg,\nXML, RCurl, DBI (>= 0.4-1), tibble"                                                                                            
labeling      NA                                                                                                                                                                                                                                                           
lattice       "KernSmooth, MASS, latticeExtra"                                                                                                                                                                                                                             
lava          "KernSmooth, Matrix, Rgraphviz, ascii, data.table, fields,\nforeach, geepack, gof (>= 0.9), graph, igraph (>= 0.6),\nlava.tobit, lme4, mets (>= 1.1), optimx, quantreg, rgl,\ntestthat (>= 0.11), visNetwork, zoo"                                           
lazyeval      "knitr, rmarkdown (>= 0.2.65), testthat, covr"                                                                                                                                                                                                               
lubridate     "testthat, knitr, covr"                                                                                                                                                                                                                                      
magrittr      "testthat, knitr"                                                                                                                                                                                                                                            
markdown      "knitr, RCurl"                                                                                                                                                                                                                                               
MASS          "lattice, nlme, nnet, survival"                                                                                                                                                                                                                              
Matrix        "expm, MASS"                                                                                                                                                                                                                                                 
mgcv          "splines, parallel, survival, MASS"                                                                                                                                                                                                                          
mime          NA                                                                                                                                                                                                                                                           
ModelMetrics  "testthat"                                                                                                                                                                                                                                                   
munsell       "ggplot2, testthat"                                                                                                                                                                                                                                          
nlme          "Hmisc, MASS"                                                                                                                                                                                                                                                
numDeriv      NA                                                                                                                                                                                                                                                           
pbapply       NA                                                                                                                                                                                                                                                           
pkgconfig     "covr, testthat, disposables (>= 1.0.3)"                                                                                                                                                                                                                     
plogr         "Rcpp"                                                                                                                                                                                                                                                       
              Enhances                                                  
anim.plots    NA                                                        
animation     NA                                                        
assertthat    NA                                                        
BH            NA                                                        
bindr         NA                                                        
bindrcpp      NA                                                        
bitops        NA                                                        
boot          NA                                                        
Boruta        NA                                                        
caret         NA                                                        
caretEnsemble NA                                                        
caTools       NA                                                        
class         NA                                                        
cluster       NA                                                        
codetools     NA                                                        
colorspace    NA                                                        
curl          NA                                                        
CVST          NA                                                        
data.table    NA                                                        
ddalpha       NA                                                        
DEoptimR      "robustbase"                                              
dichromat     NA                                                        
digest        NA                                                        
dimRed        NA                                                        
dplyr         NA                                                        
DRR           NA                                                        
e1071         NA                                                        
evaluate      NA                                                        
foreach       "compiler, doMC, RUnit, doParallel"                       
foreign       NA                                                        
gdata         NA                                                        
ggplot2       "sp"                                                      
glue          NA                                                        
gower         NA                                                        
gplots        NA                                                        
gridExtra     NA                                                        
gtable        NA                                                        
gtools        NA                                                        
highr         NA                                                        
ipred         NA                                                        
iterators     NA                                                        
kernlab       NA                                                        
KernSmooth    NA                                                        
knitr         NA                                                        
labeling      NA                                                        
lattice       "chron"                                                   
lava          NA                                                        
lazyeval      NA                                                        
lubridate     "chron, fts, timeSeries, timeDate, tis, tseries, xts, zoo"
magrittr      NA                                                        
markdown      NA                                                        
MASS          NA                                                        
Matrix        "MatrixModels, graph, SparseM, sfsmisc"                   
mgcv          NA                                                        
mime          NA                                                        
ModelMetrics  NA                                                        
munsell       NA                                                        
nlme          NA                                                        
numDeriv      NA                                                        
pbapply       NA                                                        
pkgconfig     NA                                                        
plogr         NA                                                        
              License                         
anim.plots    "GPL-2"                         
animation     "GPL"                           
assertthat    "GPL-3"                         
BH            "BSL-1.0"                       
bindr         "MIT + file LICENSE"            
bindrcpp      "MIT + file LICENSE"            
bitops        "GPL (>= 2)"                    
boot          "Unlimited"                     
Boruta        "GPL (>= 2)"                    
caret         "GPL (>= 2)"                    
caretEnsemble "MIT + file LICENSE"            
caTools       "GPL-3"                         
class         "GPL-2 | GPL-3"                 
cluster       "GPL (>= 2)"                    
codetools     "GPL"                           
colorspace    "BSD_3_clause + file LICENSE"   
curl          "MIT + file LICENSE"            
CVST          "GPL (>= 2.0)"                  
data.table    "GPL-3 | file LICENSE"          
ddalpha       "GPL-2"                         
DEoptimR      "GPL (>= 2)"                    
dichromat     "GPL-2"                         
digest        "GPL (>= 2)"                    
dimRed        "GPL-3 | file LICENSE"          
dplyr         "MIT + file LICENSE"            
DRR           "GPL-3"                         
e1071         "GPL-2"                         
evaluate      "MIT + file LICENSE"            
foreach       "Apache License (== 2.0)"       
foreign       "GPL (>= 2)"                    
gdata         "GPL-2"                         
ggplot2       "GPL-2 | file LICENSE"          
glue          "MIT + file LICENSE"            
gower         "GPL-3"                         
gplots        "GPL-2"                         
gridExtra     "GPL (>= 2)"                    
gtable        "GPL-2"                         
gtools        "GPL-2"                         
highr         "GPL"                           
ipred         "GPL (>= 2)"                    
iterators     "Apache License (== 2.0)"       
kernlab       "GPL-2"                         
KernSmooth    "Unlimited"                     
knitr         "GPL"                           
labeling      "MIT + file LICENSE | Unlimited"
lattice       "GPL (>= 2)"                    
lava          "GPL-3"                         
lazyeval      "GPL-3"                         
lubridate     "GPL-2"                         
magrittr      "MIT + file LICENSE"            
markdown      "GPL-2"                         
MASS          "GPL-2 | GPL-3"                 
Matrix        "GPL (>= 2) | file LICENCE"     
mgcv          "GPL (>= 2)"                    
mime          "GPL"                           
ModelMetrics  "GPL (>= 2)"                    
munsell       "MIT + file LICENSE"            
nlme          "GPL (>= 2) | file LICENCE"     
numDeriv      "GPL-2"                         
pbapply       "GPL-2"                         
pkgconfig     "MIT + file LICENSE"            
plogr         "MIT + file LICENSE"            
              License_is_FOSS
anim.plots    NA             
animation     NA             
assertthat    NA             
BH            NA             
bindr         NA             
bindrcpp      NA             
bitops        NA             
boot          NA             
Boruta        NA             
caret         NA             
caretEnsemble NA             
caTools       NA             
class         NA             
cluster       NA             
codetools     NA             
colorspace    NA             
curl          NA             
CVST          NA             
data.table    NA             
ddalpha       NA             
DEoptimR      NA             
dichromat     NA             
digest        NA             
dimRed        NA             
dplyr         NA             
DRR           NA             
e1071         NA             
evaluate      NA             
foreach       NA             
foreign       NA             
gdata         NA             
ggplot2       NA             
glue          NA             
gower         NA             
gplots        NA             
gridExtra     NA             
gtable        NA             
gtools        NA             
highr         NA             
ipred         NA             
iterators     NA             
kernlab       NA             
KernSmooth    NA             
knitr         NA             
labeling      NA             
lattice       NA             
lava          NA             
lazyeval      NA             
lubridate     NA             
magrittr      NA             
markdown      NA             
MASS          NA             
Matrix        NA             
mgcv          NA             
mime          NA             
ModelMetrics  NA             
munsell       NA             
nlme          NA             
numDeriv      NA             
pbapply       NA             
pkgconfig     NA             
plogr         NA             
              License_restricts_use OS_type
anim.plots    NA                    NA     
animation     NA                    NA     
assertthat    NA                    NA     
BH            NA                    NA     
bindr         NA                    NA     
bindrcpp      NA                    NA     
bitops        NA                    NA     
boot          NA                    NA     
Boruta        NA                    NA     
caret         NA                    NA     
caretEnsemble NA                    NA     
caTools       NA                    NA     
class         NA                    NA     
cluster       NA                    NA     
codetools     NA                    NA     
colorspace    NA                    NA     
curl          NA                    NA     
CVST          NA                    NA     
data.table    NA                    NA     
ddalpha       NA                    NA     
DEoptimR      NA                    NA     
dichromat     NA                    NA     
digest        NA                    NA     
dimRed        NA                    NA     
dplyr         NA                    NA     
DRR           NA                    NA     
e1071         NA                    NA     
evaluate      NA                    NA     
foreach       NA                    NA     
foreign       NA                    NA     
gdata         NA                    NA     
ggplot2       NA                    NA     
glue          NA                    NA     
gower         NA                    NA     
gplots        NA                    NA     
gridExtra     NA                    NA     
gtable        NA                    NA     
gtools        NA                    NA     
highr         NA                    NA     
ipred         NA                    NA     
iterators     NA                    NA     
kernlab       NA                    NA     
KernSmooth    NA                    NA     
knitr         NA                    NA     
labeling      NA                    NA     
lattice       NA                    NA     
lava          NA                    NA     
lazyeval      NA                    NA     
lubridate     NA                    NA     
magrittr      NA                    NA     
markdown      NA                    NA     
MASS          NA                    NA     
Matrix        NA                    NA     
mgcv          NA                    NA     
mime          NA                    NA     
ModelMetrics  NA                    NA     
munsell       NA                    NA     
nlme          NA                    NA     
numDeriv      NA                    NA     
pbapply       NA                    NA     
pkgconfig     NA                    NA     
plogr         NA                    NA     
              MD5sum NeedsCompilation Built  
anim.plots    NA     "no"             "3.4.1"
animation     NA     "no"             "3.4.1"
assertthat    NA     "no"             "3.4.1"
BH            NA     "no"             "3.4.1"
bindr         NA     "no"             "3.4.1"
bindrcpp      NA     "yes"            "3.4.1"
bitops        NA     "yes"            "3.4.1"
boot          NA     "no"             "3.4.1"
Boruta        NA     "no"             "3.4.1"
caret         NA     "yes"            "3.4.1"
caretEnsemble NA     "no"             "3.4.1"
caTools       NA     "yes"            "3.4.1"
class         NA     "yes"            "3.4.1"
cluster       NA     "yes"            "3.4.1"
codetools     NA     "no"             "3.4.1"
colorspace    NA     "yes"            "3.4.1"
curl          NA     "yes"            "3.4.1"
CVST          NA     "no"             "3.4.1"
data.table    NA     "yes"            "3.4.1"
ddalpha       NA     "yes"            "3.4.1"
DEoptimR      NA     "no"             "3.4.1"
dichromat     NA     NA               "3.4.1"
digest        NA     "yes"            "3.4.1"
dimRed        NA     "yes"            "3.4.1"
dplyr         NA     "yes"            "3.4.1"
DRR           NA     "no"             "3.4.1"
e1071         NA     "yes"            "3.4.1"
evaluate      NA     "no"             "3.4.1"
foreach       NA     "no"             "3.4.1"
foreign       NA     "yes"            "3.4.1"
gdata         NA     "no"             "3.4.1"
ggplot2       NA     "no"             "3.4.1"
glue          NA     "yes"            "3.4.1"
gower         NA     "yes"            "3.4.1"
gplots        NA     "no"             "3.4.1"
gridExtra     NA     "no"             "3.4.1"
gtable        NA     "no"             "3.4.1"
gtools        NA     "yes"            "3.4.1"
highr         NA     "no"             "3.4.1"
ipred         NA     "yes"            "3.4.1"
iterators     NA     "no"             "3.4.1"
kernlab       NA     "yes"            "3.4.1"
KernSmooth    NA     "yes"            "3.4.1"
knitr         NA     "no"             "3.4.1"
labeling      NA     "no"             "3.4.1"
lattice       NA     "yes"            "3.4.1"
lava          NA     "no"             "3.4.1"
lazyeval      NA     "yes"            "3.4.1"
lubridate     NA     "yes"            "3.4.1"
magrittr      NA     "no"             "3.4.1"
markdown      NA     "yes"            "3.4.1"
MASS          NA     "yes"            "3.4.1"
Matrix        NA     "yes"            "3.4.1"
mgcv          NA     "yes"            "3.4.1"
mime          NA     "yes"            "3.4.1"
ModelMetrics  NA     "yes"            "3.4.1"
munsell       NA     "no"             "3.4.1"
nlme          NA     "yes"            "3.4.1"
numDeriv      NA     "no"             "3.4.1"
pbapply       NA     "no"             "3.4.1"
pkgconfig     NA     "no"             "3.4.1"
plogr         NA     "no"             "3.4.1"
 [ reached getOption("max.print") -- omitted 61 rows ]

2017년 11월 6일 월요일

IBM POK Benchmark Center에서 LSF 이용하여 ResNet cifar10 training 수행하기

먼저 우리가 수행할 queue 확인하시고 (여기서는 s822lc_p100nvme 입니다)

b7p286za@p10login1:/gpfs/gpfs_gl4_16mb/b7p286za/models/official/resnet$ bqueues
QUEUE_NAME      PRIO STATUS          MAX JL/U JL/P JL/H NJOBS  PEND   RUN  SUSP
b7p268           30  Open:Active       -    -    -    -     0     0     0     0
pmr              30  Open:Active       -    -    -    -     0     0     0     0
test-pmr         30  Open:Active       -    -    -    -     0     0     0     0
test-redhat      30  Open:Active       -    -    -    -     0     0     0     0
s822lc_p100_k80  30  Closed:Inact      -    -    -    -     0     0     0     0
822normal        30  Open:Active       -    -    -    -     0     0     0     0
s822lc_p100      30  Open:Active       -    -    -    - 22901 20021  2880     0
b7s004           30  Open:Active       -    -    -    -     0     0     0     0
coral_power9     30  Open:Active       -    -    -    -     0     0     0     0
s822lc_p100nvme  30  Open:Active       -    -    -    -     3     0     3     0
normal           30  Open:Active       -    -    -    -     0     0     0     0
s822lc_k80       30  Closed:Inact      -    -    -    -     0     0     0     0


거기에 bsub 명령어 이용하여 gpu 1개 이상인 node로 job을 submit 합니다.

b7p286za@p10login1:/gpfs/gpfs_gl4_16mb/b7p286za/models/official/resnet$ bsub -R "select[ngpus>0] rusage[ngpus_excl_p=1]" -x -q s822lc_p100nvme PYTHONPATH=/gpfs/gpfs_gl4_16mb/b7p286za/anaconda3/lib/python3.6/site-packages time /gpfs/gpfs_gl4_16mb/b7p286za/anaconda3/bin/python /gpfs/gpfs_gl4_16mb/b7p286za/models/official/resnet/cifar10_main.py
Job <158267> is submitted to queue <s822lc_p100nvme>.


여기서 -x option은 exclusive, 즉 GPU를 1장만 쓰더라도 전체 node를 exclusive로 쓰겠다는 option입니다.   Poughkeepsie 센터 운영자들은 사용자들이 이 -x 옵션을 쓰는 것을 관리 편의성 때문에 더 선호한다고 합니다.

Job이 성공적으로 잘 수행 중인지, 어디서 수행 중인지는 bhist 명령으로 확인합니다.

b7p286za@p10login1:/gpfs/gpfs_gl4_16mb/b7p286za/models/official/resnet$ bhist -l 158267
Job <158267>, User <b7p286za>, Project <default>, Command <PYTHONPATH=/gpfs/gpf
                     s_gl4_16mb/b7p286za/anaconda3/lib/python3.6/site-packages
                     time /gpfs/gpfs_gl4_16mb/b7p286za/anaconda3/bin/python /gp
                     fs/gpfs_gl4_16mb/b7p286za/models/official/resnet/cifar10_m
                     ain.py>
Mon Nov  6 01:10:45: Submitted from host <p10login1>, to Queue <s822lc_p100nvme
                     >, CWD </gpfs/gpfs_gl4_16mb/b7p286za/models/official/resne
                     t>, Requested Resources <select[ngpus>0] rusage[ngpus_excl
                     _p=1]>;
Mon Nov  6 01:10:46: Dispatched 1 Task(s) on Host(s) <p10a113>, Allocated 1 Slo
                     t(s) on Host(s) <p10a113>, Effective RES_REQ <select[(ngpu
                     s>0) && (type == local)] order[r15s:pg] rusage[ngpus_excl_
                     p=1.00] >;
Mon Nov  6 01:10:46: Starting (Pid 157797);
Mon Nov  6 01:10:53: Running with execution home </u/b7p286za>, Execution CWD <
                     /gpfs/gpfs_gl4_16mb/b7p286za/models/official/resnet>, Exec
                     ution Pid <157797>;
Mon Nov  6 01:10:53: External Message "p10a113:gpus=1;" was posted from "b7p286
                     za" to message box 0;

Summary of time in seconds spent in various states by  Mon Nov  6 01:11:19
  PEND     PSUSP    RUN      USUSP    SSUSP    UNKWN    TOTAL
  1        0        33       0        0        0        34

2017년 11월 1일 수요일

caffe2, tensorflow 1.3, pytorch가 설치된 docker image 만들기

docker hub에서 제공되는 nvidia/cuda-ppc64le 이미지를 이용하여, 거기에 이것저것 원하는 package를 설치하고 docker commit 명령을 통해 새로운 이미지를 만드는 방법을 보시겠습니다.

먼저 parent ubuntu OS에서 필요한 file들을 아래처럼 docker라는 directory에 모아둡니다.

root@firestone:~/docker# ls -l
total 2369580
-rwxr-xr-x  1 root root  284629257 Oct 31 22:27 Anaconda2-4.4.0.1-Linux-ppc64le.sh
-rwxr-xr-x  1 root root  299425582 Oct 31 22:28 Anaconda3-4.4.0.1-Linux-ppc64le.sh
-rw-r--r--  1 root root 1321330418 Oct 31 22:35 cuda-repo-ubuntu1604-8-0-local-ga2v2_8.0.61-1_ppc64el.deb
-rwxr-xr-x  1 root root       8788 Oct 31 21:40 debootstrap.sh
-rw-r--r--  1 root root   68444212 Oct 31 22:35 libcudnn6_6.0.21-1+cuda8.0_ppc64el.deb
-rw-r--r--  1 root root   59820704 Oct 31 22:35 libcudnn6-dev_6.0.21-1+cuda8.0_ppc64el.deb
-rw-r--r--  1 root root    6575300 Oct 31 22:35 libcudnn6-doc_6.0.21-1+cuda8.0_ppc64el.deb
-rw-r--r--  1 root root  386170568 Oct 31 22:36 mldl-repo-local_4.0.0_ppc64el.deb
drwxr-xr-x 21 root root       4096 Oct 31 21:55 ubuntu


이미 nvidia/cuda-ppc64le 이미지는 docker pull 명령으로 당겨왔습니다.

root@firestone:~/docker# docker images | grep nvidia
nvidia-docker                                       build                            405ee913a07e        About an hour ago   1.02GB
nvidia/cuda-ppc64le                                 8.0-cudnn6-runtime-ubuntu16.04   bf28cd22ff84        6 weeks ago         974MB
nvidia/cuda-ppc64le                                 latest                           9b0a21e35c66        6 weeks ago         1.72GB


이제 nvidia/cuda-ppc64le:latest를 interactive mode로 구동합니다.  이때 docker directory를 /docker라는 이름으로 마운트합니다.

root@firestone:~/docker# docker run -ti -v ~/docker:/docker nvidia/cuda-ppc64le:latest bash

이제 nvidia/cuda-ppc64le:latest 안에 들어왔습니다.  /docker로 가서 동일한 file들이 보이는지 확인합니다.

root@deeed8ce922f:/# cd /docker
root@deeed8ce922f:/docker# ls
Anaconda2-4.4.0.1-Linux-ppc64le.sh                         libcudnn6-doc_6.0.21-1+cuda8.0_ppc64el.deb
Anaconda3-4.4.0.1-Linux-ppc64le.sh                         libcudnn6_6.0.21-1+cuda8.0_ppc64el.deb
cuda-repo-ubuntu1604-8-0-local-ga2v2_8.0.61-1_ppc64el.deb  mldl-repo-local_4.0.0_ppc64el.deb
debootstrap.sh                                             ubuntu
libcudnn6-dev_6.0.21-1+cuda8.0_ppc64el.deb


이제 libcudnn6을 먼저 설치합니다.  아울러 NCCL 및 bazel 등을 쓸 수도 있으니 PowerAI 4.0 (mldl-repo-local_4.0.0_ppc64el.deb)의 local repo도 설치합니다.

root@deeed8ce922f:/docker# dpkg -i libcudnn6_6.0.21-1+cuda8.0_ppc64el.deb libcudnn6-dev_6.0.21-1+cuda8.0_ppc64el.deb mldl-repo-local_4.0.0_ppc64el.deb

root@deeed8ce922f:/docker# apt-get update


이제 cuda와 nccl, openblas 등을 설치합니다.

root@deeed8ce922f:/docker# apt-get install cuda

root@deeed8ce922f:/docker# apt-get install -y libnccl-dev libnccl1 python-ncclient bazel libopenblas-dev libopenblas libopenblas-base


이번엔 다른 ssh 세션에서, parent OS에서 docker ps 명령어로 현재 우리가 쓰고 있는 container ID를 확인합니다.

root@firestone:~# docker ps | grep -v k8s
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS               NAMES
deeed8ce922f        nvidia/cuda-ppc64le:latest   "bash"                   About an hour ago   Up About an hour                        gracious_bhaskara


저 container ID에 대해 docker commit 명령을 다음과 같이 날립니다.

root@firestone:~# docker commit deeed8ce922f bsyu/libcudnn6-ppc64le:xenial

이제 새로운 docker image가 생성된 것을 볼 수 있습니다.

root@firestone:~# docker images | grep -v ibm
REPOSITORY                                          TAG                              IMAGE ID            CREATED             SIZE
bsyu/libcudnn6-ppc64le                              xenial                           6d621d9d446b        48 seconds ago      7.52GB
nvidia-docker                                       build                            405ee913a07e        2 hours ago         1.02GB
nvidia/cuda-ppc64le                                 8.0-cudnn6-runtime-ubuntu16.04   bf28cd22ff84        6 weeks ago         974MB
nvidia/cuda-ppc64le                                 latest                           9b0a21e35c66        6 weeks ago         1.72GB
ppc64le/golang                                      1.6.3                            6a579d02d32f        14 months ago       705MB


적절히 tagging한 뒤, docker에 login하여 docker hub으로 push 해둡니다.

root@firestone:~# docker tag bsyu/libcudnn6-ppc64le:xenial bsyu/libcudnn6-ppc64le:latest

root@firestone:~# docker login -u bsyu
Password:
Login Succeeded

root@firestone:~# docker push bsyu/libcudnn6-ppc64le:xenial
The push refers to a repository [docker.io/bsyu/libcudnn6-ppc64le]
de3b55a17936: Pushed
9eb05620c635: Mounted from nvidia/cuda-ppc64le
688827f0a03b: Mounted from nvidia/cuda-ppc64le
a36322f4fa68: Mounted from nvidia/cuda-ppc64le
6665818dfb83: Mounted from nvidia/cuda-ppc64le
4cad4acd0601: Mounted from nvidia/cuda-ppc64le
f12b406a6a23: Mounted from nvidia/cuda-ppc64le
bb179c8bb840: Mounted from nvidia/cuda-ppc64le
cd51df595e0c: Mounted from nvidia/cuda-ppc64le
4a7a95d650cf: Mounted from nvidia/cuda-ppc64le
22c3301fbf0b: Mounted from nvidia/cuda-ppc64le
xenial: digest: sha256:3993ac50b857979694cdc41cf12d672cc078583f1babb79f6c25e0688ed603ed size: 2621


이제 여기에 추가로 caffe2를 설치합니다.  이전 포스팅(http://hwengineer.blogspot.kr/2017/10/minsky-caffe2-jupyter-notebook-mnist.html)에서 build 해두었던 /opt/caffe2 directory를 통째로 tar로 말아두었던 것을 여기에 풀겠습니다.


root@deeed8ce922f:/docker# ls
Anaconda2-4.4.0.1-Linux-ppc64le.sh                         libcudnn6-doc_6.0.21-1+cuda8.0_ppc64el.deb
Anaconda3-4.4.0.1-Linux-ppc64le.sh                         libcudnn6_6.0.21-1+cuda8.0_ppc64el.deb
caffe2.tgz                                                 mldl-repo-local_4.0.0_ppc64el.deb
cuda-repo-ubuntu1604-8-0-local-ga2v2_8.0.61-1_ppc64el.deb  site-packages.tgz
debootstrap.sh                                             ubuntu
libcudnn6-dev_6.0.21-1+cuda8.0_ppc64el.deb

root@deeed8ce922f:/docker# cd /opt
root@deeed8ce922f:/opt# tar -zxf /docker/caffe2.tgz

root@deeed8ce922f:/opt# vi ~/.bashrc
...
export LD_LIBRARY_PATH=/opt/DL/nccl/lib:/opt/DL/openblas/lib:/usr/local/cuda-8.0/lib6:/usr/lib:/usr/local/lib:/opt/caffe2/lib:/usr/lib/powerpc64le-linux-gnu
export PATH=/opt/anaconda2/bin:/opt/caffe2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PYTHONPATH=/opt/caffe2

caffe2가 정상 작동하기 위해 필요한 package들을 추가 설치합니다.

root@deeed8ce922f:/opt# conda install protobuf future

root@deeed8ce922f:/opt# apt-get install libprotobuf-dev python-protobuf libgoogle-glog-dev libopenmpi-dev liblmdb-dev python-lmdb libleveldb-dev python-leveldb libopencv-core-dev libopencv-gpu-dev python-opencv libopencv-highgui-dev libopencv-dev


이제 다시 parent OS에서 다른 이름으로 docker commit 합니다.

root@firestone:~# docker commit deeed8ce922f bsyu/caffe2-ppc64le-xenial:v0.1


이제 GPU를 사용하기 위해 nvidia-docker로 구동해봅니다.   그러자면 (혹시 아직 안 하셨다면) 먼저 nvidia-docker-plugin을 background로 구동해야 합니다.

root@firestone:~# nohup nvidia-docker-plugin &

root@firestone:~# nvidia-docker run -ti --rm -v ~/docker:/docker bsyu/caffe2-ppc64le-xenial:v0.1 bash


bsyu/caffe2-ppc64le-xenial:v0.1 컨테이너에서 caffe2가 성공적으로 import 되는 것을 확인합니다.

root@0e58f6f69c44:/# python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"
Success


이 이미지를 이용하여 또 tensorflow 1.3 및 pytorch 0.2.0이 들어간 docker image도 만듭니다.

root@firestone:~# docker run -ti --rm -v ~/docker:/docker bsyu/caffe2-ppc64le-xenial:v0.1 bash

root@8cfeaf93f28b:/# cd /opt
root@8cfeaf93f28b:/opt# ls
DL  anaconda2  anaconda3  caffe2
root@8cfeaf93f28b:/opt# rm -rf caffe2

root@8cfeaf93f28b:/opt# vi ~/.bashrc
...
export LD_LIBRARY_PATH=/opt/DL/nccl/lib:/opt/DL/openblas/lib:/usr/local/cuda-8.0/lib6:/usr/lib:/usr/local/lib:/usr/lib/powerpc64le-linux-gnu
export PATH=/opt/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PYTHONPATH=/opt/anaconda3/lib/python3.6/site-packages


root@8cfeaf93f28b:~# apt-get install libcupti-dev openjdk-8-jdk openjdk-8-jdk-headless git

root@8cfeaf93f28b:~# conda install bazel numpy

root@8cfeaf93f28b:~# git clone --recursive https://github.com/tensorflow/tensorflow.git

root@8cfeaf93f28b:~# cd tensorflow/
root@8cfeaf93f28b:~/tensorflow# git checkout r1.3

root@8cfeaf93f28b:~/tensorflow# ./configure

root@8cfeaf93f28b:~/tensorflow# bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package

root@8cfeaf93f28b:~/tensorflow# bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

root@8cfeaf93f28b:~/tensorflow# pip install /tmp/tensorflow_pkg/tensorflow-1.3.1-cp36-cp36m-linux_ppc64le.whl

root@8cfeaf93f28b:~/tensorflow# conda list | grep tensor
tensorflow                1.3.1                     <pip>
tensorflow-tensorboard    0.1.8                     <pip>


이제 tensorflow 1.3이 설치되었으므로 이를 docker commit으로 저장합니다.

root@firestone:~# docker ps | grep -v k8s
CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS              PORTS               NAMES
8cfeaf93f28b        bsyu/caffe2-ppc64le-xenial:v0.1   "bash"                   2 hours ago         Up 2 hours                              vigilant_ptolemy

root@firestone:~# docker commit 8cfeaf93f28b bsyu/tf1.3-caffe2-ppc64le-xenial:v0.1


이 이미지에 다시 pytorch를 설치합니다.

root@8cfeaf93f28b:~# git clone --recursive https://github.com/pytorch/pytorch.git

root@8cfeaf93f28b:~# cd /pytorch

root@8cfeaf93f28b:~/pytorch# export CMAKE_PREFIX_PATH=/opt/pytorch

root@8cfeaf93f28b:~/pytorch# conda install numpy pyyaml setuptools cmake cffi openblas

root@8cfeaf93f28b:~/pytorch# python setup.py install

root@8cfeaf93f28b:~# python
Python 3.6.1 |Anaconda custom (64-bit)| (default, May 11 2017, 15:31:35)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from __future__ import print_function
>>> import torch
>>>

이제 최종적으로 bsyu/pytorch-tf1.3-caffe2-ppc64le-xenial:v0.1 라는 이미지를 commit 합니다.

root@firestone:~# docker commit 8cfeaf93f28b bsyu/pytorch-tf1.3-caffe2-ppc64le-xenial:v0.1

root@firestone:~# docker push bsyu/pytorch-tf1.3-caffe2-ppc64le-xenial:v0.1