•
GPU를 활용해서 AI를 돌릴려고 하는데, A5000을 선택해서 지금 쓰고 있다. (A6000이였으면 좋았을…)
•
시중에 있는 모델을 돌리기 위해서 GPU를 고르는 기준으로 처리속도도 당연히 중요하지만,GPU 메모리를 사실 중점적으로 보는 편이다.
•
Top-Tier 컨퍼런스의 논문의 AI를 선택하고 구동하려고 보니 통상 20gb 정도 잡아 먹는데, 그걸 A5000에 올리고 내리는 과정속에 에러가 나와서 확인 해보니 cpu이슈로 확인을 하였다.
CUDA를 활용하여 GPU에서 AI 모델을 학습 및 추론할 때, CPU는 다양한 중요한 역할을 수행함. GPU가 높은 연산 성능을 제공하는 반면, CPU는 데이터 준비, 모델 관리, 시스템 자원 분배 등에서 중요한 역할을 함. 주요 내용은 다음과 같음:
CPU의 주요 역할
1.
데이터 준비 및 전처리
•
데이터 로딩, 전처리, 증강 등을 수행하며 GPU로 데이터를 전달.
•
일반적으로 DataLoader에서 다수의 CPU 코어를 활용해 병렬 처리로 GPU의 데이터 병목 현상을 방지.
2.
모델 로드 및 초기화
•
학습 또는 추론 전에 모델 파일(.pt, .onnx 등)을 디스크에서 메모리로 로드.
•
모델 초기화, 파라미터 설정 등 메모리 관리 작업 수행.
3.
GPU와의 데이터 전송
•
CPU에서 데이터를 준비한 후 torch.Tensor.to('cuda')와 같은 작업으로 GPU 메모리로 전송.
•
GPU와의 데이터 전송 속도가 최적화되지 않으면 성능 병목 발생 가능.
4.
추론 및 학습 관리
•
GPU가 모델 연산을 수행하는 동안 스케줄링, 연산 흐름 제어, 결과 관리 수행.
•
GPU 작업이 끝난 결과를 수집 및 정리하여 사용자 애플리케이션에 전달.
5.
IO 및 파일 관리
•
데이터셋 디스크 로딩, 로그 기록, 체크포인트 저장 등 파일 입출력 작업을 수행.
•
GPU는 메모리와 연산에 집중하고, CPU가 IO 작업을 처리함으로써 전체 작업의 효율성 증가.
6.
모델 관리
•
GPU 메모리가 제한적이기 때문에, 대형 모델 학습 시 모델을 올리고 내리는 작업 수행.
•
Ex) 체크포인트를 GPU에 로드하거나, 학습 중간에 GPU 메모리를 비우고 새로운 데이터 배치를 준비.
7.
CPU 연산 활용
•
GPU만큼 높은 병렬 연산 성능이 필요하지 않은 연산은 CPU에서 처리.
•
예: 간단한 수치 연산, 모델의 특정 연산(특히 torch의 CPU 전용 연산).
CPU가 중요한 이유
1.
데이터 준비 속도와 효율성
•
데이터 준비 속도가 느리면 GPU가 대기 상태로 전환됨(Under-utilization).
•
CPU가 데이터를 효율적으로 준비해야 GPU를 최대한 활용 가능.
2.
메모리 관리 및 작업 스케줄링
•
GPU 메모리가 제한적일 경우, CPU를 통해 모델 및 데이터를 교체하며 최적화 가능.
3.
시스템 자원 분배
•
여러 GPU가 연결된 환경에서, CPU가 각 GPU의 작업을 조율.
4.
멀티태스킹
•
AI 작업과 병렬로 실행되는 시스템 작업(OS, 디스크 관리 등)에 CPU가 관여.
최적화 팁
1.
병렬 데이터 로딩
•
PyTorch의 DataLoader에서 num_workers를 늘려 병렬 로딩 활용.
•
데이터 로딩과 GPU 연산을 비동기 처리로 병목 제거.
2.
Pinned Memory 활용
•
CUDA에서 pinned_memory=True 옵션을 활용해 CPU-GPU 데이터 전송 속도 향상.
3.
CPU/GPU 균형 조정
•
CPU와 GPU가 서로 대기하지 않도록 작업량을 조정하고 병렬화.
4.
멀티 GPU 및 CPU 활용
•
PyTorch의 torch.distributed 등을 사용하여 CPU와 GPU 간 작업을 분산.
그럼 정답을 보자
•
예를 들어 gpu에 모델을 올려놓고 배포를 하려고 하는데, gpu 비디오 램이 20기가 정도 먹는 큰 규모 ai 모델을 활용할때에 적합한 cpu를 고르기 위해서 cpu 성능의 어떤 수치를 보고 결정을 해야할까?
GPU에 큰 규모의 AI 모델을 올려 배포하려고 할 때, 적합한 CPU를 선택하려면 데이터 준비, 모델 관리, IO 처리, GPU와의 통신을 효율적으로 처리할 수 있는 CPU가 필요함. CPU 성능을 결정할 때 다음 주요 지표를 확인해야 함:
1. 코어 개수 (Cores)
•
데이터 로딩 및 전처리를 병렬로 수행해야 하므로 멀티코어 CPU가 필수적.
•
코어 수가 많을수록 PyTorch DataLoader의 num_workers를 늘려 병렬 데이터 로딩 속도를 향상 가능.
•
권장: 최소 8코어/16스레드 이상, 고급 작업의 경우 16코어 이상 추천 (예: AMD Ryzen 9, Intel i9 시리즈).
2. 스레드 수 (Threads)
•
다중 작업 병렬 처리에서 중요한 지표.
•
데이터 준비, IO 작업, GPU와의 데이터 전송 작업이 동시에 이루어지므로 고스레드 CPU가 유리.
•
권장: 스레드 수가 코어 수의 2배 (Hyper-threading 지원 CPU).
3. 클럭 속도 (Clock Speed)
•
단일 스레드 작업(예: GPU로 데이터 전송, 모델 로드 등)에 중요한 요소.
•
데이터 로드와 GPU 연산의 속도를 맞추기 위해 클럭 속도가 높을수록 좋음.
•
권장: 기본 클럭 3.5GHz 이상, 부스트 클럭 4.5GHz 이상.
4. 캐시 크기 (Cache Size)
•
데이터 전처리와 모델 로딩 시 캐시 메모리에서 자주 접근하는 데이터를 빠르게 처리 가능.
•
L3 캐시가 클수록 CPU 성능 향상.
•
권장: L3 캐시 16MB 이상.
5. 메모리 채널 수 (Memory Channels)
•
GPU 메모리로 대량 데이터를 빠르게 전송하려면 CPU의 메모리 대역폭이 중요.
•
메모리 채널이 많을수록 고대역폭 처리에 유리.
•
권장: 듀얼 채널 이상, 고급 작업에서는 쿼드 채널 CPU 플랫폼(예: 서버용 AMD Threadripper, Intel Xeon) 고려.
6. PCIe 레인 수 및 버전
•
GPU와 데이터 통신에 중요한 요소.
•
PCIe 4.0 또는 5.0 지원으로 대역폭 최적화 필요.
•
GPU가 여러 개 사용되거나 데이터 IO 작업이 많은 경우 PCIe 레인 수가 많은 CPU를 선택.
7. 전력 소비 및 발열 관리
•
AI 배포 환경에서 안정적인 작업을 위해 발열 관리가 중요.
•
고성능 CPU는 전력 소비가 높아질 수 있으므로, 쿨링 솔루션과 PSU 용량 고려.
추천 CPU 목록 (대규모 AI 모델에 적합한 옵션)
1.
고성능 데스크톱 CPU
•
AMD Ryzen 9 7950X
◦
16코어 / 32스레드, 기본 클럭 4.5GHz, 부스트 5.7GHz, L3 캐시 64MB.
•
Intel Core i9-13900K
◦
24코어 (8P + 16E) / 32스레드, 기본 클럭 3.0GHz, 부스트 5.8GHz, L3 캐시 36MB.
2.
워크스테이션 및 서버 CPU
•
AMD Threadripper PRO 5955WX
◦
16코어 / 32스레드, 기본 클럭 4.0GHz, L3 캐시 64MB, 쿼드 채널 메모리.
•
Intel Xeon W-3335
◦
12코어 / 24스레드, 기본 클럭 3.4GHz, 부스트 4.0GHz, 쿼드 채널 메모리.
최종 고려사항
1.
작업 부하 분석
•
데이터 준비가 많은 작업: 코어와 스레드 수가 중요.
•
GPU와의 데이터 전송이 많은 작업: 메모리 대역폭과 PCIe 버전/레인 수 중요.
2.
GPU 수와 모델 크기
•
다중 GPU 사용 시 CPU가 모든 GPU에 데이터를 효율적으로 전송해야 하므로 고성능 CPU 필수.
3.
메모리 용량
•
CPU가 충분한 메모리(RAM)를 활용해야 GPU 메모리 활용 최적화 가능.
•
권장: 32GB 이상, 대규모 모델의 경우 64GB~128GB.
결론적으로, 대규모 AI 모델 배포에는 멀티코어/멀티스레드 CPU, 높은 클럭 속도, 대용량 캐시, PCIe 4.0 이상 지원 CPU를 선택하는 것이 중요함. 작업 부하와 예산에 따라 워크스테이션급과 데스크톱급 중 적합한 CPU를 선택.
안녕하세요
•
한국전자기술연구원 김영광입니다.
•
관련 기술 문의와 R&D 공동 연구 사업 관련 문의는 “glory@keti.re.kr”로 연락 부탁드립니다.
Hello 
•
I'm Yeonggwang Kim from the Korea Electronics Research Institute.
•
For technical and business inquiries, please contact me at “glory@keti.re.kr”