SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
NVIDIA Architecture
Produced by Tae Young Lee
Tesla ( 2008년 NVIDIA에서 출시된 GPU Architecture )
Tesla GPU는 SM(Streaming Multiprocessor)의
집합으로 이뤄짐.
Tesla 에서 SM은 8개의 SP(Stream Processor)와
2개의 SFU(Special Function Unit), Shared
Memory등으로 이뤄짐
SP (Core)를 보통 CUDA core라고 하는데, GPU의 각
세대마다 SM, SP의 개수가 차이가 남
SP (Stream Processor) 는 core 역할을 하기 때문에
CPU의 core격인 ALU와 같이 논리, 수학 연산(with
MAD(Multiply-add-Divide))을 수행함
SFU (Special Function Unit) 는 초월함수, 픽셀
attribute interpolation등의 연산에 사용되고 4개의
부동 소수점 곱셈기도 포함하고 있다.
https://89douner.tistory.com/159?category=913897
초월함수는 일반적 다항식의 근으로 정의할 수 없는 함수 부동소수점 연산
고정 소수점 방식을 알아보자
CPU가 32bit 명령어 체계를 사용한다면 아래와 같이 부호
(+.-)와 정수부, 소수부로 나눌 수 있다. 문제는 정수,
소수부를 표현할 수 있는 경우가 제한적이다.
https://89douner.tistory.com/159?category=913897
부동 소수점 방식은 유효숫자를 나타내는 가수와 소수점의 위치를 풀이하는 지수로 나누어 표현하는 방식이다.
부동소수점에서는 지수부(Exponent)는 기준값(Bias)를 중심으로 +,-값을 표현한다.
13.5를 32bit 부동소수점 (float : 32bit )로 표현
https://89douner.tistory.com/159?category=913897
FLOPS (FLoat point Operations Per Second)
FLOPS는 컴퓨터의 성능을 표현하는 데 굉장히
중요한 지표로 사용됨
말그대로 초당 부동소수점을 계산하는 능력을 의미
딥러닝에서는 대부분 계산들이 부동소수점 (실수형태
: float 자료형)으로 계산이 되는 것을 알 수 있다.
그렇기 때문에 FLOPS라는 지표가 딥러닝과 같이
소수점을 기반으로 한 과학연산에서 시간을 측정하는
중요한 지표가 될 수 있다.
만약 FLOPS 성능이 좋은 GPU를 사용한다고 하면
다른 FLOPS가 낮은 GPU보다 모델을 학습시키거나
inference하는 것이 더 빠름
VGG19를 돌리기 위해선 적어도 40G-Ops이상을
지원하는 GPU를 구매해야 함
1,000,000,000 FLOPS = 1 GFLOPS (giga FLOPS)
1000 GFLOPS = 1 TFLOPS (Tera FLOPS)
https://89douner.tistory.com/159?category=913897
SM (Streaming Multi-processor)
만약 8개의 SP와 2개의 SFU가 모두 사용될 경우 SM에서는
1 clock cycle당 최대 16(=8+4*2)회의 부동소수점 곱셈을
수행할 수 있음
Shared Memory는 SM내에서 실행되는 thread 사이의
data교환을 가능하게 해주는 곳이다.
Tesla에서 Shared Memory는 16KB용량을 갖는다.
SIMT (Single Instruction Multiple Threading)
(GP)GPU로 넘어오면서 CUDA를 지원하자 SIMT방식을
고안함
CPU에서는 주로 SIMD (Single Instruction Multiple Data)
라는 용어를 사용.
CPU의 성능을 최대로 활용하기 위해서 하나의 명령어로
여러개의 데이터를 처리하도록 하는 동작을 의미
CUDA가 등장하면서 하나의 명령어로 여러개의 Thread를
동작시키는 일이 필요해졌기 때문에 SIMT방식을 고안함
https://89douner.tistory.com/159?category=913897
Fermi ( 2010년에 출시된 NVIDIA GPU 아키텍처)
Tesla에서 각 SM마다 제공되던 16KB shared
memory는 64KB로 용량이 늘었다.
SM외부의 texture unit의 도움을 받아 실행되던
load/store 명령도 SM내에 Load/Store(LD&ST)
유닛이 추가됨으로써 SM 자체적으로 실행이
가능해짐
SM에 포함되어 있는 SP는 Tesla에 비해 4배가
늘어난 32개로 구성됨
Tesla의 SP는 32-bit 부동소수점을 지원
Fermi에서는 32-bit 부동소수점을 지원하는
CUDA core 2개를 동시에 사용할 수 있어 64bit
부동소수점 연산을 할 수 있게 됨
https://89douner.tistory.com/159?category=913897
Kepler ( 2012 )
Fermi 구조에서는 CUDA core, LD&ST unit, SFU 등의 실행
유닛들이 다른 유닛들에 비해 두 배 빠른 속도로 동작했다면 Kepler
구조에서는 전체 유닛이 동일한 속도로 동작하도록 변경
( Performance/Watt 문제로 이런식의 구조를 고안했다고 함 )
Kepler부터 SM이라는 용어가 SMX로 이름이 변경
전체 속도와 동기화시키기 위해 CUDA core의 속도를 줄였기
때문에 이전 속도를 유지하기 위해 더 많은 CUDA core, LD&ST,
SFU 등을 장착
Kepler의 SMX는 192개의 CUDA core, 64개의 DP (64-bit Double
Precision) 유닛, 32개의 LD&ST 유닛, 32개의 SFU로 구성됨
Kepler에서는 HPC (High Performance Computing)을 고려해 64bit
부동소수점 연산을 위한 전용 DP 유닛이 제공되었기 때문에 32bit,
64bit 부동소수점 연산이 동시에 실행될 수 있다고 함
https://89douner.tistory.com/159?category=913897
늘어난 core의 수를 잘 다루기 위해
warp scheduler의 수도 4개로 늘어났고,
Dispatch unit도 하나의 warp scheduler 당
1개에서 2개로 증가
그래서 SMX는 동시에 최대 8개의 명령을 처리
또한 Register file의 크기도 128KB로 4배가
늘어났고, L1 cache크기도 128KB로 늘어남
하나의 thread가 사용할 수 있는 register 수가
Fermi의 63개에서 255개로 늘어났는데 이러한 점은
Dispatch Unit의 증가와 더불어 그래픽 연산보다는
HPC응용분야의 성능 (ex:과학연산) 향상을 고려한
변화라고 볼 수 있다.
https://89douner.tistory.com/159?category=913897
MaxWell ( 2014 )
Kepler에서 Maxwell로 아키텍처가 변하는 과정에서 미세공정이
28nm에 머물로 있었기 때문에 획기적인 변화를 꾀하지 못할거라
생각한 NVIDIA는 모바일 버전의 GPU 구조를 춣시하고자 하면서
이전 Kepler 구조를 최적화함
https://89douner.tistory.com/159?category=913897
Pascal ( 2016 )
Pascal이라는 인공지능에 특화된 GPU 아키텍처 소개함
Pascal 부터는 HPC(High Performance Computing)분야 (GP104 GPU)와 그래픽 분야 (GP100 GPU) 두 가지 버전으로
나눠서 제품 출시함
https://89douner.tistory.com/159?category=913897
HPC 또는 딥러닝 분야에서는 64bit, 16bit 부동소수점연산
(FP64/FP16)을 지원하면서 하나의 thread가 많은 register를
사용하도록 했고, 그래픽 분야에서는 32bit(FP32)를 주로
사용하고 프로그램이 간단해 register개수를 굳이 늘리지
않도록 했다.
딥러닝 기반의 pascal구조의 가장 큰 특징은 16bit
부동소수점(FP16) 연산을 지원한다는 점
실제 딥러닝을 하다보면 weight bias, learning rate등의 값
등을 이용할 텐데, 다른 과학분야보다는 초정밀한 값을
요구하는건 아니기 때문에 32bit처리 방식보다는 16bit처리
방식으로 변경하도록 했다.
16bit 부동소수점 처리방식으로 바꾸면 32bit처리 방식에서
사용했던 것 보다 메모리 용량과 대역폭에 대한 부담이
줄어들게 됨
또한 GP100 Pascal의 CUDA core는 FP16 연산을 처리할 때
한 사이클에 두 명령어를 처리할 수 있기 때문에 FP16 연산
성능은 FP32 연산 성능의 두 배가 된다
그래서 다른 두 GPU를 사용할 때, A라는 GPU보다 메모리가
더 작은 B라는 GPU에서는 딥러닝이 잘 동작하는데, A
GPU에서는 작동이 안 된다고 하면 FP부분의 차이를
확인해야 함.
https://89douner.tistory.com/159?category=913897
Votal ( 2018 ) V100
Volta 아키텍처를 채택한 GV100은 TSMC의 12nm 공정으로
구현
기존에 사용된 CUDA core는 FP32코어로 이름이 바뀜
이전에 GPU가 “64FP -> 16FP”로 변환된 걸 봤듯이,
Votal에서는 8bit 단위의 INT(정수연산) 코어가 추가되었다.
이렇게 하여 inferencing을 가속화함
Volta에서 눈여겨 볼 부분은 INT32 연산과 tensor core를
제공하여 실제 학습 또는 inference 속도를 대폭 향상시킴
Deep Learning에서는 대부분 계산이 “D=A*B+C” 단위로
이뤄짐
(A:입력값, B:가중치(weight),C:bias,D:출력 값).
빠른계산처리를 위해, A,B 부분은 FP16단위(floating point
16bit, half precision)로 계산이되고, 더 정밀한 accuracy를
위해 C,D는 FP32(floating point 32bit, single-precision)으로
처리하는 mixed precision 연산을 수행하는 tensor core를
고안
https://89douner.tistory.com/159?category=913897
V100 GPU
V100 GPU에는 SM당 8개의 Tensor core가 장착되어
있으므로, 하나의 SM에서는 64*8*2 = 1024 번의
“곱셈+덧셈" floating point 연산이 한 사이클에 수행됩니다.
V100에는 80개의 SM이 장착되어 있으므로 80*1024번의
연산이 한 사이클에 수행됨
이전 파스칼 아키텍처기반의 P100보다
mixed-precision개념을 도입한 volta 아키텍처 기반의 V100
모델의 9~10배의 성능을 냄
cuDNN은 출시되는 최신 GPU모델에 맞게 업데이트 되는
경우가 있는데, 최신 GPU인 volta와 당시 최신 소프트웨어
플랫폼인 cuDNN이 결합되면 훨씬 더 좋은 성능을 냄
https://89douner.tistory.com/159?category=913897
Turing ( 2018.02 )
Turing기반 RTX Geforce20시리즈가 출시됨
Volta의 큰 골격은 유지하면서 규모를 절감한 마이너
파생상품으로 간주됨
눈에 띄는 부분은 RT core를 지원하는 것과 4bit정수
(INT) 연산도 가능
https://89douner.tistory.com/159?category=913897
RT core는 Ray Tracing을 위한 기술임
RT core는 Ray Tracing을 위한 기술임 HPC(High Performance Computing)을 위해 점점 발전해 나가고 있지만 그래픽
부분도 포기할 수 없기 때문에 RT(Ray Tracing)기술을 접목시킴
1) Ray Tracing ( RT ; 광원추적 )
RT란 그래픽으로 구성된 3D 공간에서 어떤 물체에 빛이 반사되거나, 어떤 물체에 의해 그림자가 생기거나, 빛의 굴절을
일으키는 모든 작용들을 고려햐여 화면에 표현해주는 기술임
RT core를 통해 실시간 ( Real-Time ) 으로 이러한 기능들을 가능하게 해준 것이 가장 큰 특징임
https://89douner.tistory.com/159?category=913897
Ampere ( 2020.03 ) A100
2020.03월 Votal 아키텍처의 후속작으로 Ampere라는 NVIDIA GPU 아키텍처가 소개됨.
Ampere 아키텍처는 작정하고 딥러닝을 위해 만든 GPU라고 봄
Ampere 아키텍처는 TSMC의 7nm 미세공정 적용
https://89douner.tistory.com/159?category=913897
Ampere에서 주목할 부분은 딥러닝에 최적화된 새로운 정밀도인 TensorFloat-32 (TF32)가 도입되었다는 것
Tensorflow 자료형을 보면 tf.float32를 볼 수 있음, tensor 자료구조에서 float을 제공해주는 것을 하드웨어적으로 support
그래서 정밀하게 계산을 하면서 속도는 빠르게 유지해줌
TF32는 FP32와 같이 작동하면서 코드 변경없이 딥러닝 모델을 최대 20배까지 가속한다고 함
(참고로 TF32형태가 FP32보다 6배는 빠르다)
또한 Mixed Precision이라는 연산기법을 지원하는 시도도 있는데, single-precision인 FP32와 half-single-precision인 FP16을
적절히 잘 섞어주면서 속도(speed)와 정확도(accuracy)를 모두 잡았다고 함
단적인 예로, FP16을 이용하기 때문에 딥러닝 모델에 대한 메모리 요구량도 줄어들어 더 큰 모델을 GPU에 로드할 수 있게
되었고, 더 큰 mini-batches (size) 도 가능하게 해 줌
https://89douner.tistory.com/159?category=913897
A100 Mixed Precision 사용하기
https://89douner.tistory.com/159?category=913897
Sparse connection
Sparse connection은 쉽게 말해 딥러닝에서 쓰이는
parameter 중에 불필요한 부분을 0으로 만들어 계산을 좀 더
빠르게 하거나, 차원 수를 줄여주어 overfiting을 피해주는
기법으로 사용됨
Ampere(A100) 아키텍처에서는 이러한 sparse model에
support해주는 기법을 제공해 줌
A100(Ampere)의 tensor 코어는 sparse model에 대해 최대
2배 높은 성능을 제공해 줌, inference 시간도 줄여줄 뿐만
아니라 학습성능 도 개선하는데 사용할 수 있음
Multi-Instance with Kubernetes
Ampere 아키텍처는 최대 7개의 sub-group gpu로 partitioning
예를들어, 40GB VRAM을 갖고 있는 ampere GPU는 각각 20GB VRAM을 갖는 2개의 sub-ampere GPU로 나눌 수 있음
최대 5GB의 sub-ampere gpu 7개를 생성할 수 있음, 이렇게 나눈 GPU들을 나중에 다시 merge할 수 있다.
사용사례를 보면, 낮에는 낮은 처리량 추론을 위해 7개의 sub-GPU를 사용하고, 밤에 퇴근할 때는 딥러닝 모델 학습을 위해
1개의 본래의 GPU인스턴스로 만들어 사용
각각의 sub-group을 형성하는 gpu들은 서로 독립적이기 때문에 서로 다른 프로그램을 실행시켜도 CUDA가 각각
인스턴스에 맞춰 실행
이러한 MIG ( Muiti-Instance GPU )기술은 컨테이너 또는 쿠버네티스와 같이 DevOps유저들에게 특히 유용함
https://89douner.tistory.com/159?category=913897

Contenu connexe

Tendances

[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화Jaeseung Ha
 
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013영욱 오
 
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기Kiheon Park
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11민웅 이
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
Ibm과 nvidia가 제안하는 딥러닝 플랫폼
Ibm과 nvidia가 제안하는 딥러닝 플랫폼Ibm과 nvidia가 제안하는 딥러닝 플랫폼
Ibm과 nvidia가 제안하는 딥러닝 플랫폼ibmrep
 
OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316기한 김
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화 tartist
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)khuhacker
 
이권일 Sse 를 이용한 최적화와 실제 사용 예
이권일 Sse 를 이용한 최적화와 실제 사용 예이권일 Sse 를 이용한 최적화와 실제 사용 예
이권일 Sse 를 이용한 최적화와 실제 사용 예zupet
 
게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPUYEONG-CHEON YOU
 
Compute shader
Compute shaderCompute shader
Compute shaderQooJuice
 
Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기
Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기
Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기Ki-Hwan Kim
 
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인Seunghwa Song
 
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스Seunghwa Song
 
GPU를 위한 병렬 음원 방향 추정 알고리즘
GPU를 위한 병렬 음원 방향 추정 알고리즘GPU를 위한 병렬 음원 방향 추정 알고리즘
GPU를 위한 병렬 음원 방향 추정 알고리즘Taewoo Lee
 
프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법중선 곽
 
Ndc2012 최지호 텍스쳐 압축 기법 소개
Ndc2012 최지호 텍스쳐 압축 기법 소개Ndc2012 최지호 텍스쳐 압축 기법 소개
Ndc2012 최지호 텍스쳐 압축 기법 소개Jiho Choi
 
CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기YEONG-CHEON YOU
 

Tendances (20)

[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
 
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
 
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
 
gv004 ver0.1
gv004 ver0.1gv004 ver0.1
gv004 ver0.1
 
Ibm과 nvidia가 제안하는 딥러닝 플랫폼
Ibm과 nvidia가 제안하는 딥러닝 플랫폼Ibm과 nvidia가 제안하는 딥러닝 플랫폼
Ibm과 nvidia가 제안하는 딥러닝 플랫폼
 
OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
 
이권일 Sse 를 이용한 최적화와 실제 사용 예
이권일 Sse 를 이용한 최적화와 실제 사용 예이권일 Sse 를 이용한 최적화와 실제 사용 예
이권일 Sse 를 이용한 최적화와 실제 사용 예
 
게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU
 
Compute shader
Compute shaderCompute shader
Compute shader
 
Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기
Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기
Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기
 
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
 
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
 
GPU를 위한 병렬 음원 방향 추정 알고리즘
GPU를 위한 병렬 음원 방향 추정 알고리즘GPU를 위한 병렬 음원 방향 추정 알고리즘
GPU를 위한 병렬 음원 방향 추정 알고리즘
 
프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법
 
Ndc2012 최지호 텍스쳐 압축 기법 소개
Ndc2012 최지호 텍스쳐 압축 기법 소개Ndc2012 최지호 텍스쳐 압축 기법 소개
Ndc2012 최지호 텍스쳐 압축 기법 소개
 
CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기
 

Similaire à Nvidia architecture

Exploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMsExploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMsTae Young Lee
 
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례(Joe), Sanghun Kim
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)Ubuntu Korea Community
 
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법NAVER D2
 
Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Gruter
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp진현 조
 
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)BoanLabDKU
 
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AITommy Lee
 
2017 tensor flow dev summit
2017 tensor flow dev summit2017 tensor flow dev summit
2017 tensor flow dev summitTae Young Lee
 
Power_780+(9179-MHD)표준제안서
Power_780+(9179-MHD)표준제안서Power_780+(9179-MHD)표준제안서
Power_780+(9179-MHD)표준제안서기한 김
 
Optimizing the graphics_pipeline_
Optimizing the graphics_pipeline_Optimizing the graphics_pipeline_
Optimizing the graphics_pipeline_ozlael ozlael
 
Visual C++10을 활용한 병렬 프로그래밍
Visual C++10을 활용한 병렬 프로그래밍Visual C++10을 활용한 병렬 프로그래밍
Visual C++10을 활용한 병렬 프로그래밍흥배 최
 
Ic922 ac922 e dm_202008
Ic922 ac922 e dm_202008Ic922 ac922 e dm_202008
Ic922 ac922 e dm_202008jiyoungkim158
 
TestBCD2017-1(answer)
TestBCD2017-1(answer)TestBCD2017-1(answer)
TestBCD2017-1(answer)Yong Heui Cho
 
Cloud tpu jae_180814
Cloud tpu jae_180814Cloud tpu jae_180814
Cloud tpu jae_180814Jaewook. Kang
 
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요NAVER D2
 
Linux Performan tuning Part I
Linux Performan tuning Part ILinux Performan tuning Part I
Linux Performan tuning Part Isprdd
 
Apache Tomcat ( 아파치 톰캣 ) 설치 가이드
Apache Tomcat ( 아파치 톰캣 ) 설치 가이드Apache Tomcat ( 아파치 톰캣 ) 설치 가이드
Apache Tomcat ( 아파치 톰캣 ) 설치 가이드Opennaru, inc.
 

Similaire à Nvidia architecture (20)

Exploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMsExploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMs
 
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
 
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
 
Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp
 
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
 
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI
 
2017 tensor flow dev summit
2017 tensor flow dev summit2017 tensor flow dev summit
2017 tensor flow dev summit
 
Power_780+(9179-MHD)표준제안서
Power_780+(9179-MHD)표준제안서Power_780+(9179-MHD)표준제안서
Power_780+(9179-MHD)표준제안서
 
Optimizing the graphics_pipeline_
Optimizing the graphics_pipeline_Optimizing the graphics_pipeline_
Optimizing the graphics_pipeline_
 
Nec 이비플러스
Nec 이비플러스Nec 이비플러스
Nec 이비플러스
 
Visual C++10을 활용한 병렬 프로그래밍
Visual C++10을 활용한 병렬 프로그래밍Visual C++10을 활용한 병렬 프로그래밍
Visual C++10을 활용한 병렬 프로그래밍
 
Ic922 ac922 e dm_202008
Ic922 ac922 e dm_202008Ic922 ac922 e dm_202008
Ic922 ac922 e dm_202008
 
TestBCD2017-1(answer)
TestBCD2017-1(answer)TestBCD2017-1(answer)
TestBCD2017-1(answer)
 
Cloud tpu jae_180814
Cloud tpu jae_180814Cloud tpu jae_180814
Cloud tpu jae_180814
 
Chapter2 ap group11
Chapter2 ap group11Chapter2 ap group11
Chapter2 ap group11
 
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
 
Linux Performan tuning Part I
Linux Performan tuning Part ILinux Performan tuning Part I
Linux Performan tuning Part I
 
Apache Tomcat ( 아파치 톰캣 ) 설치 가이드
Apache Tomcat ( 아파치 톰캣 ) 설치 가이드Apache Tomcat ( 아파치 톰캣 ) 설치 가이드
Apache Tomcat ( 아파치 톰캣 ) 설치 가이드
 

Plus de Tae Young Lee

LLMs Service that provides what users want to know
LLMs Service that provides what users want to knowLLMs Service that provides what users want to know
LLMs Service that provides what users want to knowTae Young Lee
 
LLM 모델 기반 서비스 실전 가이드
LLM 모델 기반 서비스 실전 가이드LLM 모델 기반 서비스 실전 가이드
LLM 모델 기반 서비스 실전 가이드Tae Young Lee
 
Recommendation System History
Recommendation System HistoryRecommendation System History
Recommendation System HistoryTae Young Lee
 
검색엔진에 적용된 ChatGPT
검색엔진에 적용된 ChatGPT검색엔진에 적용된 ChatGPT
검색엔진에 적용된 ChatGPTTae Young Lee
 
검색엔진에 적용된 딥러닝 모델 방법론
검색엔진에 적용된 딥러닝 모델 방법론검색엔진에 적용된 딥러닝 모델 방법론
검색엔진에 적용된 딥러닝 모델 방법론Tae Young Lee
 
The Deep Learning Compiler
The Deep Learning CompilerThe Deep Learning Compiler
The Deep Learning CompilerTae Young Lee
 
History of Vision AI
History of Vision AIHistory of Vision AI
History of Vision AITae Young Lee
 
Real estate trust solution
Real estate trust solutionReal estate trust solution
Real estate trust solutionTae Young Lee
 
Transfer learning usage
Transfer learning usageTransfer learning usage
Transfer learning usageTae Young Lee
 
Create a solution including deep learning models
Create a solution including deep learning modelsCreate a solution including deep learning models
Create a solution including deep learning modelsTae Young Lee
 
Infra as a model service
Infra as a model serviceInfra as a model service
Infra as a model serviceTae Young Lee
 
Deep learning financial product recommendation model
Deep learning financial product recommendation modelDeep learning financial product recommendation model
Deep learning financial product recommendation modelTae Young Lee
 
Deep Learning Through Various Processes
Deep Learning Through Various ProcessesDeep Learning Through Various Processes
Deep Learning Through Various ProcessesTae Young Lee
 
Reinforcement learning
Reinforcement learningReinforcement learning
Reinforcement learningTae Young Lee
 
금융분야 취업을 위한 커리어 설계
금융분야 취업을 위한 커리어 설계금융분야 취업을 위한 커리어 설계
금융분야 취업을 위한 커리어 설계Tae Young Lee
 

Plus de Tae Young Lee (20)

LLMs Service that provides what users want to know
LLMs Service that provides what users want to knowLLMs Service that provides what users want to know
LLMs Service that provides what users want to know
 
LLM 모델 기반 서비스 실전 가이드
LLM 모델 기반 서비스 실전 가이드LLM 모델 기반 서비스 실전 가이드
LLM 모델 기반 서비스 실전 가이드
 
Recommendation System History
Recommendation System HistoryRecommendation System History
Recommendation System History
 
검색엔진에 적용된 ChatGPT
검색엔진에 적용된 ChatGPT검색엔진에 적용된 ChatGPT
검색엔진에 적용된 ChatGPT
 
검색엔진에 적용된 딥러닝 모델 방법론
검색엔진에 적용된 딥러닝 모델 방법론검색엔진에 적용된 딥러닝 모델 방법론
검색엔진에 적용된 딥러닝 모델 방법론
 
PaLM Paper Review
PaLM Paper ReviewPaLM Paper Review
PaLM Paper Review
 
The Deep Learning Compiler
The Deep Learning CompilerThe Deep Learning Compiler
The Deep Learning Compiler
 
History of Vision AI
History of Vision AIHistory of Vision AI
History of Vision AI
 
Aws architecture
Aws architectureAws architecture
Aws architecture
 
Real estate trust solution
Real estate trust solutionReal estate trust solution
Real estate trust solution
 
Transfer learning usage
Transfer learning usageTransfer learning usage
Transfer learning usage
 
Create a solution including deep learning models
Create a solution including deep learning modelsCreate a solution including deep learning models
Create a solution including deep learning models
 
Infra as a model service
Infra as a model serviceInfra as a model service
Infra as a model service
 
Bayesian learning
Bayesian learningBayesian learning
Bayesian learning
 
Deep learning financial product recommendation model
Deep learning financial product recommendation modelDeep learning financial product recommendation model
Deep learning financial product recommendation model
 
Deep Learning Through Various Processes
Deep Learning Through Various ProcessesDeep Learning Through Various Processes
Deep Learning Through Various Processes
 
Reinforcement learning
Reinforcement learningReinforcement learning
Reinforcement learning
 
Jenkins in finance
Jenkins in financeJenkins in finance
Jenkins in finance
 
HistoryOfCNN
HistoryOfCNNHistoryOfCNN
HistoryOfCNN
 
금융분야 취업을 위한 커리어 설계
금융분야 취업을 위한 커리어 설계금융분야 취업을 위한 커리어 설계
금융분야 취업을 위한 커리어 설계
 

Nvidia architecture

  • 2. Tesla ( 2008년 NVIDIA에서 출시된 GPU Architecture ) Tesla GPU는 SM(Streaming Multiprocessor)의 집합으로 이뤄짐. Tesla 에서 SM은 8개의 SP(Stream Processor)와 2개의 SFU(Special Function Unit), Shared Memory등으로 이뤄짐 SP (Core)를 보통 CUDA core라고 하는데, GPU의 각 세대마다 SM, SP의 개수가 차이가 남 SP (Stream Processor) 는 core 역할을 하기 때문에 CPU의 core격인 ALU와 같이 논리, 수학 연산(with MAD(Multiply-add-Divide))을 수행함 SFU (Special Function Unit) 는 초월함수, 픽셀 attribute interpolation등의 연산에 사용되고 4개의 부동 소수점 곱셈기도 포함하고 있다. https://89douner.tistory.com/159?category=913897
  • 3. 초월함수는 일반적 다항식의 근으로 정의할 수 없는 함수 부동소수점 연산 고정 소수점 방식을 알아보자 CPU가 32bit 명령어 체계를 사용한다면 아래와 같이 부호 (+.-)와 정수부, 소수부로 나눌 수 있다. 문제는 정수, 소수부를 표현할 수 있는 경우가 제한적이다. https://89douner.tistory.com/159?category=913897
  • 4. 부동 소수점 방식은 유효숫자를 나타내는 가수와 소수점의 위치를 풀이하는 지수로 나누어 표현하는 방식이다. 부동소수점에서는 지수부(Exponent)는 기준값(Bias)를 중심으로 +,-값을 표현한다. 13.5를 32bit 부동소수점 (float : 32bit )로 표현 https://89douner.tistory.com/159?category=913897
  • 5. FLOPS (FLoat point Operations Per Second) FLOPS는 컴퓨터의 성능을 표현하는 데 굉장히 중요한 지표로 사용됨 말그대로 초당 부동소수점을 계산하는 능력을 의미 딥러닝에서는 대부분 계산들이 부동소수점 (실수형태 : float 자료형)으로 계산이 되는 것을 알 수 있다. 그렇기 때문에 FLOPS라는 지표가 딥러닝과 같이 소수점을 기반으로 한 과학연산에서 시간을 측정하는 중요한 지표가 될 수 있다. 만약 FLOPS 성능이 좋은 GPU를 사용한다고 하면 다른 FLOPS가 낮은 GPU보다 모델을 학습시키거나 inference하는 것이 더 빠름 VGG19를 돌리기 위해선 적어도 40G-Ops이상을 지원하는 GPU를 구매해야 함 1,000,000,000 FLOPS = 1 GFLOPS (giga FLOPS) 1000 GFLOPS = 1 TFLOPS (Tera FLOPS) https://89douner.tistory.com/159?category=913897
  • 6. SM (Streaming Multi-processor) 만약 8개의 SP와 2개의 SFU가 모두 사용될 경우 SM에서는 1 clock cycle당 최대 16(=8+4*2)회의 부동소수점 곱셈을 수행할 수 있음 Shared Memory는 SM내에서 실행되는 thread 사이의 data교환을 가능하게 해주는 곳이다. Tesla에서 Shared Memory는 16KB용량을 갖는다. SIMT (Single Instruction Multiple Threading) (GP)GPU로 넘어오면서 CUDA를 지원하자 SIMT방식을 고안함 CPU에서는 주로 SIMD (Single Instruction Multiple Data) 라는 용어를 사용. CPU의 성능을 최대로 활용하기 위해서 하나의 명령어로 여러개의 데이터를 처리하도록 하는 동작을 의미 CUDA가 등장하면서 하나의 명령어로 여러개의 Thread를 동작시키는 일이 필요해졌기 때문에 SIMT방식을 고안함 https://89douner.tistory.com/159?category=913897
  • 7. Fermi ( 2010년에 출시된 NVIDIA GPU 아키텍처) Tesla에서 각 SM마다 제공되던 16KB shared memory는 64KB로 용량이 늘었다. SM외부의 texture unit의 도움을 받아 실행되던 load/store 명령도 SM내에 Load/Store(LD&ST) 유닛이 추가됨으로써 SM 자체적으로 실행이 가능해짐 SM에 포함되어 있는 SP는 Tesla에 비해 4배가 늘어난 32개로 구성됨 Tesla의 SP는 32-bit 부동소수점을 지원 Fermi에서는 32-bit 부동소수점을 지원하는 CUDA core 2개를 동시에 사용할 수 있어 64bit 부동소수점 연산을 할 수 있게 됨 https://89douner.tistory.com/159?category=913897
  • 8. Kepler ( 2012 ) Fermi 구조에서는 CUDA core, LD&ST unit, SFU 등의 실행 유닛들이 다른 유닛들에 비해 두 배 빠른 속도로 동작했다면 Kepler 구조에서는 전체 유닛이 동일한 속도로 동작하도록 변경 ( Performance/Watt 문제로 이런식의 구조를 고안했다고 함 ) Kepler부터 SM이라는 용어가 SMX로 이름이 변경 전체 속도와 동기화시키기 위해 CUDA core의 속도를 줄였기 때문에 이전 속도를 유지하기 위해 더 많은 CUDA core, LD&ST, SFU 등을 장착 Kepler의 SMX는 192개의 CUDA core, 64개의 DP (64-bit Double Precision) 유닛, 32개의 LD&ST 유닛, 32개의 SFU로 구성됨 Kepler에서는 HPC (High Performance Computing)을 고려해 64bit 부동소수점 연산을 위한 전용 DP 유닛이 제공되었기 때문에 32bit, 64bit 부동소수점 연산이 동시에 실행될 수 있다고 함 https://89douner.tistory.com/159?category=913897
  • 9. 늘어난 core의 수를 잘 다루기 위해 warp scheduler의 수도 4개로 늘어났고, Dispatch unit도 하나의 warp scheduler 당 1개에서 2개로 증가 그래서 SMX는 동시에 최대 8개의 명령을 처리 또한 Register file의 크기도 128KB로 4배가 늘어났고, L1 cache크기도 128KB로 늘어남 하나의 thread가 사용할 수 있는 register 수가 Fermi의 63개에서 255개로 늘어났는데 이러한 점은 Dispatch Unit의 증가와 더불어 그래픽 연산보다는 HPC응용분야의 성능 (ex:과학연산) 향상을 고려한 변화라고 볼 수 있다. https://89douner.tistory.com/159?category=913897
  • 10. MaxWell ( 2014 ) Kepler에서 Maxwell로 아키텍처가 변하는 과정에서 미세공정이 28nm에 머물로 있었기 때문에 획기적인 변화를 꾀하지 못할거라 생각한 NVIDIA는 모바일 버전의 GPU 구조를 춣시하고자 하면서 이전 Kepler 구조를 최적화함 https://89douner.tistory.com/159?category=913897
  • 11. Pascal ( 2016 ) Pascal이라는 인공지능에 특화된 GPU 아키텍처 소개함 Pascal 부터는 HPC(High Performance Computing)분야 (GP104 GPU)와 그래픽 분야 (GP100 GPU) 두 가지 버전으로 나눠서 제품 출시함 https://89douner.tistory.com/159?category=913897
  • 12. HPC 또는 딥러닝 분야에서는 64bit, 16bit 부동소수점연산 (FP64/FP16)을 지원하면서 하나의 thread가 많은 register를 사용하도록 했고, 그래픽 분야에서는 32bit(FP32)를 주로 사용하고 프로그램이 간단해 register개수를 굳이 늘리지 않도록 했다. 딥러닝 기반의 pascal구조의 가장 큰 특징은 16bit 부동소수점(FP16) 연산을 지원한다는 점 실제 딥러닝을 하다보면 weight bias, learning rate등의 값 등을 이용할 텐데, 다른 과학분야보다는 초정밀한 값을 요구하는건 아니기 때문에 32bit처리 방식보다는 16bit처리 방식으로 변경하도록 했다. 16bit 부동소수점 처리방식으로 바꾸면 32bit처리 방식에서 사용했던 것 보다 메모리 용량과 대역폭에 대한 부담이 줄어들게 됨 또한 GP100 Pascal의 CUDA core는 FP16 연산을 처리할 때 한 사이클에 두 명령어를 처리할 수 있기 때문에 FP16 연산 성능은 FP32 연산 성능의 두 배가 된다 그래서 다른 두 GPU를 사용할 때, A라는 GPU보다 메모리가 더 작은 B라는 GPU에서는 딥러닝이 잘 동작하는데, A GPU에서는 작동이 안 된다고 하면 FP부분의 차이를 확인해야 함. https://89douner.tistory.com/159?category=913897
  • 13. Votal ( 2018 ) V100 Volta 아키텍처를 채택한 GV100은 TSMC의 12nm 공정으로 구현 기존에 사용된 CUDA core는 FP32코어로 이름이 바뀜 이전에 GPU가 “64FP -> 16FP”로 변환된 걸 봤듯이, Votal에서는 8bit 단위의 INT(정수연산) 코어가 추가되었다. 이렇게 하여 inferencing을 가속화함 Volta에서 눈여겨 볼 부분은 INT32 연산과 tensor core를 제공하여 실제 학습 또는 inference 속도를 대폭 향상시킴 Deep Learning에서는 대부분 계산이 “D=A*B+C” 단위로 이뤄짐 (A:입력값, B:가중치(weight),C:bias,D:출력 값). 빠른계산처리를 위해, A,B 부분은 FP16단위(floating point 16bit, half precision)로 계산이되고, 더 정밀한 accuracy를 위해 C,D는 FP32(floating point 32bit, single-precision)으로 처리하는 mixed precision 연산을 수행하는 tensor core를 고안 https://89douner.tistory.com/159?category=913897
  • 14. V100 GPU V100 GPU에는 SM당 8개의 Tensor core가 장착되어 있으므로, 하나의 SM에서는 64*8*2 = 1024 번의 “곱셈+덧셈" floating point 연산이 한 사이클에 수행됩니다. V100에는 80개의 SM이 장착되어 있으므로 80*1024번의 연산이 한 사이클에 수행됨 이전 파스칼 아키텍처기반의 P100보다 mixed-precision개념을 도입한 volta 아키텍처 기반의 V100 모델의 9~10배의 성능을 냄 cuDNN은 출시되는 최신 GPU모델에 맞게 업데이트 되는 경우가 있는데, 최신 GPU인 volta와 당시 최신 소프트웨어 플랫폼인 cuDNN이 결합되면 훨씬 더 좋은 성능을 냄 https://89douner.tistory.com/159?category=913897
  • 15. Turing ( 2018.02 ) Turing기반 RTX Geforce20시리즈가 출시됨 Volta의 큰 골격은 유지하면서 규모를 절감한 마이너 파생상품으로 간주됨 눈에 띄는 부분은 RT core를 지원하는 것과 4bit정수 (INT) 연산도 가능 https://89douner.tistory.com/159?category=913897
  • 16. RT core는 Ray Tracing을 위한 기술임 RT core는 Ray Tracing을 위한 기술임 HPC(High Performance Computing)을 위해 점점 발전해 나가고 있지만 그래픽 부분도 포기할 수 없기 때문에 RT(Ray Tracing)기술을 접목시킴 1) Ray Tracing ( RT ; 광원추적 ) RT란 그래픽으로 구성된 3D 공간에서 어떤 물체에 빛이 반사되거나, 어떤 물체에 의해 그림자가 생기거나, 빛의 굴절을 일으키는 모든 작용들을 고려햐여 화면에 표현해주는 기술임 RT core를 통해 실시간 ( Real-Time ) 으로 이러한 기능들을 가능하게 해준 것이 가장 큰 특징임 https://89douner.tistory.com/159?category=913897
  • 17. Ampere ( 2020.03 ) A100 2020.03월 Votal 아키텍처의 후속작으로 Ampere라는 NVIDIA GPU 아키텍처가 소개됨. Ampere 아키텍처는 작정하고 딥러닝을 위해 만든 GPU라고 봄 Ampere 아키텍처는 TSMC의 7nm 미세공정 적용 https://89douner.tistory.com/159?category=913897
  • 18. Ampere에서 주목할 부분은 딥러닝에 최적화된 새로운 정밀도인 TensorFloat-32 (TF32)가 도입되었다는 것 Tensorflow 자료형을 보면 tf.float32를 볼 수 있음, tensor 자료구조에서 float을 제공해주는 것을 하드웨어적으로 support 그래서 정밀하게 계산을 하면서 속도는 빠르게 유지해줌 TF32는 FP32와 같이 작동하면서 코드 변경없이 딥러닝 모델을 최대 20배까지 가속한다고 함 (참고로 TF32형태가 FP32보다 6배는 빠르다) 또한 Mixed Precision이라는 연산기법을 지원하는 시도도 있는데, single-precision인 FP32와 half-single-precision인 FP16을 적절히 잘 섞어주면서 속도(speed)와 정확도(accuracy)를 모두 잡았다고 함 단적인 예로, FP16을 이용하기 때문에 딥러닝 모델에 대한 메모리 요구량도 줄어들어 더 큰 모델을 GPU에 로드할 수 있게 되었고, 더 큰 mini-batches (size) 도 가능하게 해 줌 https://89douner.tistory.com/159?category=913897
  • 19. A100 Mixed Precision 사용하기 https://89douner.tistory.com/159?category=913897
  • 20. Sparse connection Sparse connection은 쉽게 말해 딥러닝에서 쓰이는 parameter 중에 불필요한 부분을 0으로 만들어 계산을 좀 더 빠르게 하거나, 차원 수를 줄여주어 overfiting을 피해주는 기법으로 사용됨 Ampere(A100) 아키텍처에서는 이러한 sparse model에 support해주는 기법을 제공해 줌 A100(Ampere)의 tensor 코어는 sparse model에 대해 최대 2배 높은 성능을 제공해 줌, inference 시간도 줄여줄 뿐만 아니라 학습성능 도 개선하는데 사용할 수 있음 Multi-Instance with Kubernetes Ampere 아키텍처는 최대 7개의 sub-group gpu로 partitioning 예를들어, 40GB VRAM을 갖고 있는 ampere GPU는 각각 20GB VRAM을 갖는 2개의 sub-ampere GPU로 나눌 수 있음 최대 5GB의 sub-ampere gpu 7개를 생성할 수 있음, 이렇게 나눈 GPU들을 나중에 다시 merge할 수 있다. 사용사례를 보면, 낮에는 낮은 처리량 추론을 위해 7개의 sub-GPU를 사용하고, 밤에 퇴근할 때는 딥러닝 모델 학습을 위해 1개의 본래의 GPU인스턴스로 만들어 사용 각각의 sub-group을 형성하는 gpu들은 서로 독립적이기 때문에 서로 다른 프로그램을 실행시켜도 CUDA가 각각 인스턴스에 맞춰 실행 이러한 MIG ( Muiti-Instance GPU )기술은 컨테이너 또는 쿠버네티스와 같이 DevOps유저들에게 특히 유용함 https://89douner.tistory.com/159?category=913897