10. NVidia Container Runtime
• docker / cri-o / LXD / Singularity 와 같은 다양한 Container
에서 GPU 기능 사용 가능
• OCI Runtime Interface 사용
Container Runtime
출처 : The path to GPU as a Service in Kubernetes
, Renaud Gaubert, 2018
11. kubernetes roadmap for GPU
출처 : The path to GPU as a Service in Kubernetes
, Renaud Gaubert, 2018
12. AI 기반으로 Kubernetes 적용
Data Analytics & AI Platform
• Container Orchestration 제공 기능이 많아,
기존 Appliance 기반 구성보다 공수절감 예상
• kubernetes는 시장 점유율이 높고, 적용 사례도 많음
- Cloudera Data Science Workbench
• Cloud Big 3에 모두 서비스가 존재하여,
향후 멀티클라우드로 전환도 용이
• Cloud상에서 Data 수집, 저장, 처리 및
분석 환경을 제공
• 기존 빅데이터 플랫폼에 AI를 추가하려는 요구 발생
LG CNS에서 kubernetes GPU
Data Analytics & AI Platform
GPU 사용 검증 필요
• GPU 기능은 당시 alpha stage
13. 목적
기간
• alpha stage인 GPU 기능이 서비스에 문제가 없는지 검증
• NGC를 통해 로컬에서 수행하는 AI어플리케이션과 동일한 수준의 성능을 보장하는지 검증
• 1차 테스트 (3/12~3/30) : 기본 구성 및 기능위주 테스트
• 2차 테스트 (4/16~4/27) : 장비 추가 및 비기능 위주 테스트
kubernetes GPU PoC
테스트 케이스
• 기능 : unit test 케이스 중 GPU관련 필요검증항목 추출 (46/901)
https://github.com/kubernetes/kubernetes/blob/release-1.9/test/test_owners.csv
• 안정성 : GPU 주요 컴포넌트의 장애 테스트
• 어플리케이션 : 공개되어있는 benchmark 프로그램을 이용 (Tensorflow / Caffee…)
15. kubernetes GPU 설치 – v1.9
device plugins 설정
• kubelet : --feature-gates="DevicePlugins=true“
container-runtime 설치
• nvidia driver 설치 (>= v.361.93)
• nvidia-docker 2.0 설치 (docker 버전에 맞춤)
• daemon.json : default runtime 변경
device plugin 설치
• device plugin 설치 (DaemonSet)
• node labeling (accelerator=[value])
출처 : https://kubernetes.io/docs/tasks/manage-gpus/scheduling-gpus/
https://github.com/NVIDIA/k8s-device-plugin
16. docker image sample
FROM nvcr.io/nvidia/tensorflow:18.02-py3
RUN mkdir -p /data/cifar10_estimator
ADD cifar10_estimator/* /data/cifar10_estimator/
WORKDIR /data/cifar10_estimator/
RUN python generate_cifar10_tfrecords.py --data-dir=${PWD}/cifar-10-data
CMD exec /bin/bash -c "trap : TERM INT; sleep infinity & wait"
Dockerfile NVidia Container Registry
• NVidia에 의해 최적화된 검증된 Deep Learning
Framework 이미지 제공
• NVidia GPU가 적용된 시스템이면 사용 가능
18. docker options
NOTE: The SHMEM allocation limit is set to the default of 64MB. This may be
insufficient for TensorFlow. NVIDIA recommends the use of the following flags:
nvidia-docker run --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 ...
--shm-size
• container 내부 IPC 통신시 사용할 Share Memory 크기
• 기본값 : 64mb
--ulimit memlock
• 메모리 주소공간 최대크기
• 기본값 : 64kb
• -1이면 swap을 사용하지 않음
--ulimit stack
• 스택 크기
• 기본값 : 8192kb
21. 기능검증
구분 Test Case 설명 GPU 할당 점검 결과
주기능
container 생성/배포
AI어플리케이션 이미지(tensorflow, caffe)를 GPU노드에 배포
- 명령어 : kubectl create -f “yaml_file”.yaml
Single 정상
Multi 정상
container 로그 확인
container 로그를 출력하여 이상 유무 확인
- 명령어 : kubectl logs “pod_name”
Single 정상
Multi 정상
container 접속
container 접속 후 정상 배포 여부 확인
- 명령어 : kubectl exec –it “pod_name”
Single 정상
Multi 정상
container 삭제
container 삭제
- 명령어 : kubectl delete –f “yaml_file”.yaml
Single 정상
Multi 정상
가용성
Master 노드 장애
Master 노드 셧다운 시
작업 수행중인 GPU container의 영향도 확인
정상
kubelet 서비스 장애
GPU 노드의 kubelet 서비스 장애시
작업 수행중인 GPU container의 영향도 확인
정상
device plugin 장애
GPU 노드의 device plugin 프로세스 장애시
작업 수행중인 GPU container의 영향도 확인
정상
CPU/GPU
혼용
CPU container 배포
GPU container가 배포된 동일 노드에
CPU container 배포 및 서비스 점검구동
- 서비스 : 데모 어플리케이션의 웹페이지 정상 접속 확인
정상
24. DeepBench
• Deep Learning 운영하는데 어떤 하드웨어가 좋은 성능을 제공하는지 답변을 위해 작성
• Tensorflow와 같은 top level 프레임워크가 아닌 low level library를 이용하여 검증
• Baidu Research에서 자체 수행한 결과 데이터를 공유
Baidu DeepBench
출처 : https://github.com/baidu-research/DeepBench
25. DeepBench benchmark
Program Spec
• Program: GEMM
• Model: Dense Matrix Multiplication
• NVidia P100로 비교
baidu
M N K Time(usec)
7680 48000 2560 206884
6144 48000 2048 135716
4608 48000 1536 74962
8448 48000 2816 250482
3072 48000 1024 33614
kubernetes
M N K Time(usec)
7680 48000 2560 207228
6144 48000 2048 132857
4608 48000 1536 75045
8448 48000 2816 250733
3072 48000 1024 33758
26. 백서
• TFLOPS: 초당 부동소수점 연산 횟수
• TFLOPS 기준 V100은 P100 대비
약 1.5배 향상된 연산성능 보유
NVidia Tesla V100