본문 바로가기
Industries

[AI] ML/DL을 위한 GPU

by 올드뉴스 2024. 2. 16.

간단하게 GPU 와 ML 에 대해서 요약해 보았다. 관련해서 읽어 볼 만한 기사 링크를 걸어 두었다. 단, Intel 부분은 요약이 안되어 있다.

 

GPU 에 대해서

 

ML/DL 특히 DL을 위해서는 많은 배열(행렬)로 구성된 2차원 배열 수치 데이터의 연산을 해야 한다.

 

float16, float32 등의 실수형 수치에 대한 행렬 연산은 GPU 가 더 잘 수행할 수 있다.

 

GPU는 2차원인 디스플레이의 i x j 배열의 픽셀에 컬러 값을 뿌려주는데 특화된 기계다

 

컬러는 R, G, B 컬러와 A 채널을 실수 값으로 표현한다.

 

컴퓨터 디스플레이에 GPU는 컬러로 구성된 즉 i x j 행렬을 연산해서 i x j 개의 픽셀에 빨리 뿌리도록 준비된 장치이다.

 

NVIDIA는 1999년 부터 전용 GPU 를 선보이고 게임용 시장을 선도하고 있다.

 

GPU 에는 연산장치 core가 다수 배치되어 행렬연산을 병렬로 처리하게 되어 있다.

 

CPU 연산은 폰노이만 구조로 연산 안의 다수의 계산에서 하나의 계산을 위해서는 load - operation - store 의 단계를 거치게 된다.

 

그런데 GPU는 연산 안의 여러 계산을 다수의 core에 분산해 동시성을 가지고 계산한다 정도로 이해하면 좋겠다.

 

NVIDIA는 CPU와 다른 GPU 의 이런 연산 특성을 개발자들(특히 게임)이 사용하기 편하도록 CUDA 라는 라이브러리를 제공하고 있다.

 

CUDA 는 20여년 이상의 기간동안 신뢰성, 안전성과 성능을 인정받았다.

 

CUDA 같은 종류의 소프트웨어를 시스템 소프트웨어 (OS관련 소프트웨어로 이해) 분야에서는 그래픽스 라이브러리라고 한다.

 

2010년대 Deeper Network 라는 개념을 통해 AI가 이미지 인식, 분류가 가능함을 알게되었다.

 

이미지 파일은 모니터에 뿌려지는 화면과 구조적으로 같다. 2차원 구조에 RGB+A 값이 저장되어 있는 파일인 것이다. 

 

컬러 모니터 / 컬러 이미지는 R,G,B 각각의 컬러를 8비트로 256가지 색을 표현한다. 

 

컬러 1 픽셀을 표현하는데 8bit x 8bit x 8bit x alpha channel 의 계산이 필요하다. 그리고 모니터/이미지 크기 만큼의 픽셀 배열에 대한 연산을 잘하는 그래픽스 장치가 GPU 이고, GPU는 병렬 연산을 한다.

 

https://game116.synology.me/kbp_home/cg_edu/cg1_data/5week_3.htm

 

참고: 1픽셀은 몇 바이트인가요?

 

 

그래픽스로 화면에 움직이는 물체를 프로그래밍 하려면 픽셀의 변화된 값을 CPU/GPU에서 계산해 디스플레이 장치에 뿌리기 위해서 2차원 행렬 연산을 해야 한다.

 

AI의 데이터는 여러 피처(컬럼)으로 구성되어 i x j 같은 2차원 구조이다. 행렬 계산과 병렬연산이 필요하다.

 

학교에서 배웠던 벡터의 연산을 생각하면 된다. 벡터는 X, Y 좌표의 값(스칼라 값)라는 고정 값 + 방향을 표현해서 실수 값이 사용된다.

 

2차원 행렬과 행렬 연산은 GPU 가 특화되어 있고 프로그래머 들이 사용할 수 있도록 CUDA 로 잘 제공어 왔고, AI 알고리즘 개발자 들이 CUDA 를 지원하는 NVIDIA 그래픽스 카드를 사용하는 것이다.

 

그래픽스 카드를 직접 접근하는 그래픽스 라이브러리를 이용해 프로그래밍하는 것을 GPGPU 프로그래밍이라고 한다. 

 

NVIDIA 의 GPGPU 프로그래밍은 CUDA 라고 한다. NVIDIA의 모든 GPU는 CUDA를 지원하고 있다. 

 

AMD 는 GPGPU 프로그래밍으로 ROCm 이라고 한다.  대부분 AMD 공식 라이브러리 이외에 리눅스용으로  OpenMP, OpenACC 에서 지원한다.

 

Intel 은 GPGPU 프로그램으로 openAPI 를 지원한다. 역시 OpenMP, SYLC 에서 지원한다.

 

Khronos 는 OpenGL 같은 3D 표준 주도 단체로  OpenCL이 있다.

 

OpenCL™ (Open Computing Language) is a low-level API for heterogeneous computing that runs on CUDA-powered GPUs.

 

 

OpenCL이 표준화된 GPGPU 프로그래밍 인터페이스 이다.

 

OpenCL 지원

NVIDIA 는 extensions 을 지원하는 OpenCL 1.2 를 제공

AMD 는 OpenCL 1.2 지원, OpenCL 2.x 구현 제공

Intel 은 Intel GPU 를 위한 OpenCL 3.0 제공

OpenCL 1.2는 Apple Silicon을 포함, macOS에서도 지원하긴 하지만 문서는 deprecate됨.

 

 

Microsoft

 

C++ AMP는 죽은 것처럼 보임. Vendor-independent이면서 Visual C++의 지원을 받았지만 D3D11 후로 업데이트된 적이 없음. 오래된 ROCm 버전 또한 지원됐었음.

Apple

 

Metal 연산은 macOS/iOS/…를 위한 것일 뿐. GPGPU 분야에서는 매력이 상당히 떨어짐, 특히나 GPU 연산 성능에선 더욱 그러함.

 

자료:

 

AMD GPGPU

NVIDIA 가 GPU를 잘 만드는데 AMD 와 Intel GPU는 왜? AI/ML/DL 에 폭 넓게 사용되지 않나?

 

일단 CUDA 가 문제다. 기존 Tensorflow, PyTorch 등등의 알고리즘 엔진이 하드웨어 친화적으로 NVIDIA 의 CUDA 라이브러리를 의존하기 때문이다.

 

그러나 최신 Keras, PyTorch 등은  사용자를 기본 GPU 아키텍처로부터 격리시켜 AMD GPU 등에서 GPGPU를 사용할 수 있도록 노력하고 있다.

 

AMD ROCm  6.x

https://community.amd.com/t5/ai/amd-expands-ai-offering-for-machine-learning-development-with/ba-p/662026

 

 

또한 AMD 는 ROCm 기반에서 CUDA 에 접근할 수 있도록 노력을 기울여 왔다.

 

 

Intel, AMD 에서 CUDA 를 쓰려는 노력도 있어 왔다.

 

 

 

Intel GPGPU ?

공사중...

 

GPU 를 골라 보자

 

https://news.hada.io/topic?id=8303

 

딥러닝을 위해 어떤 GPU를 골라야 할까? | GeekNews

GPU는 어떻게 동작하는가 ?딥러닝 처리속도를 위해 가장 중요한 GPU스펙텐서 코어메모리 대역폭L2 캐시 / 공유 메모리 / L1 캐시 / 레지스터Ada / Hopper 딥러닝 성능 추정RTX40 / RTX30 시리즈의 장점 및

news.hada.io

 

 

 

https://n.news.naver.com/article/032/0003285574?sid=101

 

엔비디아가 ‘넘사벽’인 이유...“다들 ‘쿠다’만 찾아” [세상의 모든 기업: 엔비디아②]

마이크로소프트·메타·오픈AI 등 글로벌 빅테크들이 AI(인공지능) 반도체 개발에 나서고 있지만, 이 분야에서 엔비디아의 독주는 상당 기간 이어질 전망이다. AI 반도체로 쓰이는 엔비디아의 ‘

n.news.naver.com

 

728x90

댓글