SlideShare a Scribd company logo
GPU on kubernetes
2018. 06. 29
이종철 책임
Contents kubernetes의 GPU
kubernetes GPU PoC
GPU Container
GPU Container 실행 요구사항
• kernel module
GPU device driver
• user-level module
CUDA Libs / NVML Libs …
• kernel module은 container에 포함하지 않음
• user-level module은 kernel module에 의존도가 있음
출처 : Automating GPU Infrastructure for kubernetes & container linux
, Lucas Serven Marin, 2018
kubernetes roadmap for GPU
출처 : The path to GPU as a Service in Kubernetes
, Renaud Gaubert, 2018
kubernetes roadmap for GPU
출처 : The path to GPU as a Service in Kubernetes
, Renaud Gaubert, 2018
제공기능
• GPU를 schedule 가능한 자원으로 등록
• kernel / user-level module을
volume으로 mount
GPU Accelerator
spec:
volumes:
- name: nvidia-libraries
hostPath:
path: /usr/lib/nvidia-390
containers:
- name: accelerator-sample
image: nvidia/cuda:latest
resources:
limits:
alpha.kubernetes.io/nvidia-gpu: 1
volumeMounts:
- name: nvidia-libraries
mountPath: /usr/local/nvidia/lib64
단점
• 1 노드당 1개 GPU만 할당 가능 (v1.6)
• Host 의존성 발생
• GPU health check 및 모니터링 기능 없음
kubernetes roadmap for GPU
출처 : The path to GPU as a Service in Kubernetes
, Renaud Gaubert, 2018
kubernetes on NVidia GPUs
출처 : GTC 2018 : a new AI era dawns
, NVidia, 2018
NVidia Device Plugin
• PodSpec의 Host 의존성을 제거
Device Plugin
출처 : Automating GPU Infrastructure for kubernetes & container linux
, Lucas Serven Marin, 2018
spec:
containers:
- name: TENSORFLOW
image: nvidia/cuda:latest
resources:
limits:
nvidia.com/gpu: 1
spec:
containers:
- name: JUPYTER
image: nvidia/cuda:latest
resources:
limits:
nvidia.com/gpu: 1
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
kubernetes roadmap for GPU
출처 : The path to GPU as a Service in Kubernetes
, Renaud Gaubert, 2018
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
목적
기간
• 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…)
S/W 구성H/W 구성
• kubernetes v1.9.3
• nvidia-docker v2.0
• docker-ce v17.03.2
• nvidia driver v390.30
• Ubuntu 16.04
• GPU 노드 #1
NVidia Tesla V100 * 8 /w NVLink 2.0 (DGX-1V)
• GPU 노드 #2
NVidia Tesla P100 * 2
• GPU 노드 #3
NVidia Tesla P4 * 4
환경구성
Master 노드
외부망
내부망
Docker
Registry
GPU 노드 #1, 2, 3
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
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가 적용된 시스템이면 사용 가능
pod sample
apiVersion: v1
kind: Pod
metadata:
name: cifar10-test
spec:
containers:
- name: cifar10-test
image: myregistrydomain.com:5000/cifar10-test
resources:
limits:
nvidia.com/gpu: 2
command: ["/bin/bash"]
args: ["-c","python cifar10_main.py --data-dir=${PWD}/cifar-10-data --job-dir=/tmp/cifar10 --num-gpus=2
--train-steps=100000"]
nodeSelector:
accelerator: nvidia-tesla-p4
imagePullSecrets:
- name: myregistrydomain
restartPolicy: OnFailure
cifar10-test.yaml
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
docker options
kubernetes
docker options
nvidia-docker /w options
• python nvcnn.py –m resnet50 –fp16 –g 4 –num_batch=256
기능검증
구분 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 배포 및 서비스 점검구동
- 서비스 : 데모 어플리케이션의 웹페이지 정상 접속 확인
정상
Program Spec
• Program: Tensorflow CNN benchmark
• Model: resnet50
• Dataset: ImageNet (2.7GB)
• Batch size: 254
Tensorflow benchmark
Tensorflow benchmark
Program Spec
• Program: Tensorflow CNN benchmark
• Model: VGG16 / resnet50 / inception3
• DataSet: ImageNet (2.7GB)
• Batch size: 64
DeepBench
• Deep Learning 운영하는데 어떤 하드웨어가 좋은 성능을 제공하는지 답변을 위해 작성
• Tensorflow와 같은 top level 프레임워크가 아닌 low level library를 이용하여 검증
• Baidu Research에서 자체 수행한 결과 데이터를 공유
Baidu DeepBench
출처 : https://github.com/baidu-research/DeepBench
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
백서
• TFLOPS: 초당 부동소수점 연산 횟수
• TFLOPS 기준 V100은 P100 대비
약 1.5배 향상된 연산성능 보유
NVidia Tesla V100
Program Spec
• Program: NVidia CNN benchmark
• F/W: Tensorflow
• Dataset: ImageNet (2.7GB)
• Batch size: 64
V100 vs P100
P100 V100
GPU 1ea 190 353 1.86x
GPU 2ea 346 655 1.89x
tensor core Program Spec
• 16비트 부동소수점 정밀도를 사용시 이용가능
• TFLOP 125로 매우 빠른 연산 가능
• program: NVidia CNN benchmark
• F/W: Tensorflow
• Dataset: ImageNet (2.7GB)
• Batch size: 64
• Option : --fp16
V100 신규 기능
EOD

More Related Content

PPTX
Introduce Docker
PDF
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
PDF
Open vSwitch 패킷 처리 구조
PDF
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
PDF
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
PDF
모두의 쿠버네티스 (Kubernetes for everyone)
PDF
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
PDF
Safety-Certifying Open Source Software: The Case of the Xen Hypervisor
Introduce Docker
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
Open vSwitch 패킷 처리 구조
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
모두의 쿠버네티스 (Kubernetes for everyone)
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
Safety-Certifying Open Source Software: The Case of the Xen Hypervisor

What's hot (20)

PPTX
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
PPTX
서버 아키텍처 이해를 위한 프로세스와 쓰레드
PDF
10分で分かるLinuxブロックレイヤ
PDF
Docker with RHEL7 技術勉強会
PDF
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
PDF
NGINX ADC: Basics and Best Practices – EMEA
PDF
New VIdeo CODEC AV1
PDF
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
PDF
[WhaTap DevOps Day] 세션 6 : 와탭랩스 DevOps 이야기
PDF
Sw 100 fr docker conteneurisation des applications
PPTX
Nginx Unitを試してみた話
PDF
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
PPTX
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
PPTX
쿠버네티스 ( Kubernetes ) 소개 자료
PDF
Introduction to kubernetes
PDF
Achieving CI/CD with Kubernetes
PDF
nexus helm 설치, docker/helm repo 설정과 예제
PDF
Marco Cavallini - Yocto Project, an automatic generator of embedded Linux dis...
PDF
Writing the Container Network Interface(CNI) plugin in golang
PDF
[2018] 오픈스택 5년 운영의 경험
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
서버 아키텍처 이해를 위한 프로세스와 쓰레드
10分で分かるLinuxブロックレイヤ
Docker with RHEL7 技術勉強会
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
NGINX ADC: Basics and Best Practices – EMEA
New VIdeo CODEC AV1
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
[WhaTap DevOps Day] 세션 6 : 와탭랩스 DevOps 이야기
Sw 100 fr docker conteneurisation des applications
Nginx Unitを試してみた話
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
쿠버네티스 ( Kubernetes ) 소개 자료
Introduction to kubernetes
Achieving CI/CD with Kubernetes
nexus helm 설치, docker/helm repo 설정과 예제
Marco Cavallini - Yocto Project, an automatic generator of embedded Linux dis...
Writing the Container Network Interface(CNI) plugin in golang
[2018] 오픈스택 5년 운영의 경험
Ad

Similar to [OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes (20)

PDF
Ibm과 nvidia가 제안하는 딥러닝 플랫폼
PDF
[The Future of IT] 3. AI 시대의 인프라_오픈소스를 활용한 인프라 구축 및 GPU as a Service 구현사례_김호진 상무
PDF
Lablupconf session7 People don't know what they want until LABLUP show it to ...
PDF
모두의 클라우드 딥러닝
PPTX
CUDA를 게임 프로젝트에 적용하기
PDF
Ai based on gpu
PDF
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
PDF
NetApp AI Control Plane
PDF
Nvidia architecture
PDF
딥러닝 서비스에 쓰이는 GPU 인스턴스 비용 효율을 위한 스팟(Spot) 활용기 - 손은주, 매스프레소 :: AWS DevDay 2018
PDF
[225]yarn 기반의 deep learning application cluster 구축 김제민
PDF
Jetson agx xavier and nvdla introduction and usage
PDF
[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트
PPTX
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
PDF
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
PDF
BRK3738 - Azure Container Instance로 시작하는 간편한 서버리스 컨테이너 개발
PPTX
CUDA 프로그래밍 기초 MODUCON2018
PDF
[2017 AWS Startup Day] 스타트업이 인공지능을 만날 때 : 딥러닝 활용사례와 아키텍쳐
PDF
Windows Kubernetes Bootstrapping and Operations
PPTX
Apache MXNet으로 배워보는 딥러닝(Deep Learning) - 김무현 (AWS 솔루션즈아키텍트)
Ibm과 nvidia가 제안하는 딥러닝 플랫폼
[The Future of IT] 3. AI 시대의 인프라_오픈소스를 활용한 인프라 구축 및 GPU as a Service 구현사례_김호진 상무
Lablupconf session7 People don't know what they want until LABLUP show it to ...
모두의 클라우드 딥러닝
CUDA를 게임 프로젝트에 적용하기
Ai based on gpu
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
NetApp AI Control Plane
Nvidia architecture
딥러닝 서비스에 쓰이는 GPU 인스턴스 비용 효율을 위한 스팟(Spot) 활용기 - 손은주, 매스프레소 :: AWS DevDay 2018
[225]yarn 기반의 deep learning application cluster 구축 김제민
Jetson agx xavier and nvdla introduction and usage
[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
BRK3738 - Azure Container Instance로 시작하는 간편한 서버리스 컨테이너 개발
CUDA 프로그래밍 기초 MODUCON2018
[2017 AWS Startup Day] 스타트업이 인공지능을 만날 때 : 딥러닝 활용사례와 아키텍쳐
Windows Kubernetes Bootstrapping and Operations
Apache MXNet으로 배워보는 딥러닝(Deep Learning) - 김무현 (AWS 솔루션즈아키텍트)
Ad

More from OpenStack Korea Community (20)

PDF
2019년 커뮤니티 활동 보고: 오픈스택 한국 커뮤니티
PDF
[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...
PDF
[2018.10.19] 김용기 부장 - IAC on OpenStack (feat. ansible)
PDF
[OpenInfra Days Korea 2018] Day 2 - E6: "SONA: ONOS SDN Controller 기반 OpenSta...
PDF
[OpenInfra Days Korea 2018] Day 2 - E3-2: "핸즈온 워크샵: Kubespray, Helm, Armada를 ...
PDF
[OpenInfra Days Korea 2018] Day 2 - E5-1: "Invited Talk: Kubicorn - Building ...
PDF
[OpenInfra Days Korea 2018] Day 1 - T4-7: "Ceph 스토리지, PaaS로 서비스 운영하기"
PDF
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
PDF
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
PDF
[OpenInfra Days Korea 2018] Day 2 - E4 - 딥다이브: immutable Kubernetes architecture
PDF
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
PDF
[OpenInfra Days Korea 2018] Day 2 - E6 - OpenInfra monitoring with Prometheus
PDF
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
PDF
[OpenInfra Days Korea 2018] Day 2 - E4 - 핸즈온 워크샵: 서버리스가 컨테이너를 만났을 때
PDF
[OpenInfra Days Korea 2018] (삼성전자) Evolution to Cloud Native
PDF
[OpenInfra Days Korea 2018] (NetApp) Open Source with NetApp - 전국섭 상무
PDF
[OpenInfra Days Korea 2018] (Track 4) - 오픈스택기반 NFV 관리 및 HA (high Availability...
PDF
[OpenInfra Days Korea 2018] (Track 4) - FreeIPA와 함께 SSO 구성
PDF
[OpenInfra Days Korea 2018] (Track 4) - Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
PDF
[OpenInfra Days Korea 2018] (Track 3) - CephFS with OpenStack Manila based on...
2019년 커뮤니티 활동 보고: 오픈스택 한국 커뮤니티
[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...
[2018.10.19] 김용기 부장 - IAC on OpenStack (feat. ansible)
[OpenInfra Days Korea 2018] Day 2 - E6: "SONA: ONOS SDN Controller 기반 OpenSta...
[OpenInfra Days Korea 2018] Day 2 - E3-2: "핸즈온 워크샵: Kubespray, Helm, Armada를 ...
[OpenInfra Days Korea 2018] Day 2 - E5-1: "Invited Talk: Kubicorn - Building ...
[OpenInfra Days Korea 2018] Day 1 - T4-7: "Ceph 스토리지, PaaS로 서비스 운영하기"
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
[OpenInfra Days Korea 2018] Day 2 - E4 - 딥다이브: immutable Kubernetes architecture
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
[OpenInfra Days Korea 2018] Day 2 - E6 - OpenInfra monitoring with Prometheus
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - E4 - 핸즈온 워크샵: 서버리스가 컨테이너를 만났을 때
[OpenInfra Days Korea 2018] (삼성전자) Evolution to Cloud Native
[OpenInfra Days Korea 2018] (NetApp) Open Source with NetApp - 전국섭 상무
[OpenInfra Days Korea 2018] (Track 4) - 오픈스택기반 NFV 관리 및 HA (high Availability...
[OpenInfra Days Korea 2018] (Track 4) - FreeIPA와 함께 SSO 구성
[OpenInfra Days Korea 2018] (Track 4) - Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
[OpenInfra Days Korea 2018] (Track 3) - CephFS with OpenStack Manila based on...

[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes

  • 1. GPU on kubernetes 2018. 06. 29 이종철 책임
  • 3. GPU Container GPU Container 실행 요구사항 • kernel module GPU device driver • user-level module CUDA Libs / NVML Libs … • kernel module은 container에 포함하지 않음 • user-level module은 kernel module에 의존도가 있음 출처 : Automating GPU Infrastructure for kubernetes & container linux , Lucas Serven Marin, 2018
  • 4. kubernetes roadmap for GPU 출처 : The path to GPU as a Service in Kubernetes , Renaud Gaubert, 2018
  • 5. kubernetes roadmap for GPU 출처 : The path to GPU as a Service in Kubernetes , Renaud Gaubert, 2018
  • 6. 제공기능 • GPU를 schedule 가능한 자원으로 등록 • kernel / user-level module을 volume으로 mount GPU Accelerator spec: volumes: - name: nvidia-libraries hostPath: path: /usr/lib/nvidia-390 containers: - name: accelerator-sample image: nvidia/cuda:latest resources: limits: alpha.kubernetes.io/nvidia-gpu: 1 volumeMounts: - name: nvidia-libraries mountPath: /usr/local/nvidia/lib64 단점 • 1 노드당 1개 GPU만 할당 가능 (v1.6) • Host 의존성 발생 • GPU health check 및 모니터링 기능 없음
  • 7. kubernetes roadmap for GPU 출처 : The path to GPU as a Service in Kubernetes , Renaud Gaubert, 2018
  • 8. kubernetes on NVidia GPUs 출처 : GTC 2018 : a new AI era dawns , NVidia, 2018
  • 9. NVidia Device Plugin • PodSpec의 Host 의존성을 제거 Device Plugin 출처 : Automating GPU Infrastructure for kubernetes & container linux , Lucas Serven Marin, 2018 spec: containers: - name: TENSORFLOW image: nvidia/cuda:latest resources: limits: nvidia.com/gpu: 1 spec: containers: - name: JUPYTER image: nvidia/cuda:latest resources: limits: nvidia.com/gpu: 1
  • 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…)
  • 14. S/W 구성H/W 구성 • kubernetes v1.9.3 • nvidia-docker v2.0 • docker-ce v17.03.2 • nvidia driver v390.30 • Ubuntu 16.04 • GPU 노드 #1 NVidia Tesla V100 * 8 /w NVLink 2.0 (DGX-1V) • GPU 노드 #2 NVidia Tesla P100 * 2 • GPU 노드 #3 NVidia Tesla P4 * 4 환경구성 Master 노드 외부망 내부망 Docker Registry GPU 노드 #1, 2, 3
  • 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가 적용된 시스템이면 사용 가능
  • 17. pod sample apiVersion: v1 kind: Pod metadata: name: cifar10-test spec: containers: - name: cifar10-test image: myregistrydomain.com:5000/cifar10-test resources: limits: nvidia.com/gpu: 2 command: ["/bin/bash"] args: ["-c","python cifar10_main.py --data-dir=${PWD}/cifar-10-data --job-dir=/tmp/cifar10 --num-gpus=2 --train-steps=100000"] nodeSelector: accelerator: nvidia-tesla-p4 imagePullSecrets: - name: myregistrydomain restartPolicy: OnFailure cifar10-test.yaml
  • 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
  • 20. docker options nvidia-docker /w options • python nvcnn.py –m resnet50 –fp16 –g 4 –num_batch=256
  • 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 배포 및 서비스 점검구동 - 서비스 : 데모 어플리케이션의 웹페이지 정상 접속 확인 정상
  • 22. Program Spec • Program: Tensorflow CNN benchmark • Model: resnet50 • Dataset: ImageNet (2.7GB) • Batch size: 254 Tensorflow benchmark
  • 23. Tensorflow benchmark Program Spec • Program: Tensorflow CNN benchmark • Model: VGG16 / resnet50 / inception3 • DataSet: ImageNet (2.7GB) • Batch size: 64
  • 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
  • 27. Program Spec • Program: NVidia CNN benchmark • F/W: Tensorflow • Dataset: ImageNet (2.7GB) • Batch size: 64 V100 vs P100 P100 V100 GPU 1ea 190 353 1.86x GPU 2ea 346 655 1.89x
  • 28. tensor core Program Spec • 16비트 부동소수점 정밀도를 사용시 이용가능 • TFLOP 125로 매우 빠른 연산 가능 • program: NVidia CNN benchmark • F/W: Tensorflow • Dataset: ImageNet (2.7GB) • Batch size: 64 • Option : --fp16 V100 신규 기능
  • 29. EOD