Notice
Recent Posts
Recent Comments
Link
Ssul's Blog
AI서비스를 위한 GPU이해하기 본문
#1. CPU와 GPU 비교
- core: core내부에 여러개 들어 있는 ALU(계산 전용도구)
- control(제어유닛): 계산을 언제할지 스케쥴, 배분 관리
- L1 cache: core연산에 사용하기 위한 가까운 메모리
- L2 cache: 약간 크지만 덜 가까운 메모리
- L3 cache: 약간 더 크지만 조금 더 먼 메모리
- DRAM: 외장 메모리, GPU DRAM은 비싼거 사용(코어가 많아서 빨라야함)
- CPU는 복잡하고 다양한 작업을 빠르게 수행 > 코어랑 제어유닛이 큼. 그리고 근처 cache가 커야함 > 트렌지스터 많아야 함
- GPU는 단순하고 많은 작업을 빠르게 수행 > 코어가 가변고, 단순작업 잘함 > 코어가 작은대신 엄청 많음
- CPU는 개별 코어의 성능을 높이는 방향으로 발전. GPU는 코어의 수를 증가시키는 방향으로 발전
- CPU는 제어(control)과 캐시유닛에 공간분배를 많이함. GPU는 연산유닛(코어)에 공간분배 많이
- 메모리는 GPU는 코어가 많아 빠른 DRAM(비싼거) 사용
실제 서버/데스크탑에서는 CPU-GPU간 데이터 전송이 필수 > 두 장치간의 전송속도도 중요하게 생각해야 함
#2. GPU상세 보기
- GPU는 코어는 많고, 제어유닛/캐시유닛은 작음
- 일반적인 연산흐름: CPU에서 데이터 전송 > GPU DRAM > GPU 코어 연산 > GPU DRAM > CPU
HBM용량이 DRAM이라고 보면 되고,
대역폭이 DRAM - Core간 데이터 전송 속도.
fp16 = float16 > 표현가능 최대최소값: E5, 유효자릿수: M10
bf16 = brain float16 > 표현가능 최대최소값: E8, 유효자릿수: M7
#3. 데이터 형식 정리
형식 | 비트 구성 | 특징 | 쓰임새 |
FP32 (float32) | 1 S / 8 E / 23 M = 32 bit | 넓은 범위·높은 정밀도 | 전통적 딥러닝 학습, 과학 계산 |
BF16 (bfloat16) | 1 S / 8 E / 7 M = 16 bit | FP32와 같은 범위·절반 용량 | TPU·Xeon·Ampere GPU 혼합정밀 학습 |
FP16 (half) | 1 S / 5 E / 10 M = 16 bit | 범위·정밀도 모두 FP32보다 작음 | GPU Tensor Core 학습·추론 |
FP8 (E4M3 등) | 1 S / 4 E / 3 M = 8 bit | 초저정밀·소형 모델용 | H100·B200 FP8 Transformer Engine |
INT8 | 8 bit 정수 (−128 ~ 127) | 지수·가수 없음, 스케일 계수로 실수 근사 | Post-training 양자화 추론, 모바일 AI |
INT4 | 4 bit 정수 (−8 ~ 7) | 가장 작은 일반 사용 형식, 메모리 ¼ | GPT-Q·AWQ 등 초경량 LLM 추론 |
'AI & ML > 학습하기' 카테고리의 다른 글
허깅페이스(huggingface) 토크나이저 사용해서 모델 추론하는 3가지 방법 (2) | 2025.06.12 |
---|---|
Gemma3 finetuning(파인튜닝)하기 (0) | 2025.03.25 |
Chat_template 구조 파인튜닝하기(feat. EXAONE-3.5-7B) (0) | 2025.03.07 |
DeepSeek-R1 정리(공부하기) + Open r1 (0) | 2025.02.04 |
패캠(패스트캠퍼스) "LLM 모델 파인튜닝을 위한 GPU 최적화" 후기 (2) | 2024.12.02 |