본문 바로가기

dev_AI_framework

GPU 구현, CPU 구현 비교

Standard/MinMax/Robust/Normalizer 작은 탭울러: CPU
큰 배치: GPU
전부 단순 산술. n·d가 크고 이미 GPU에 데이터가 있으면 GPU가 낫고, 아니면 PCIe 오버헤드 때문에 CPU가 더 빠름.
OneHotEncoder 일반: CPU /
초대규모·고카디널리티: GPU
gather/scatter가 많고 희소 출력. 카드inality 수천↑, 데이터가 이미 GPU에 있으면 GPU 고려.
PolynomialFeatures n·d
작음: CPU /
큼: GPU
조합 수가 급증. 생성→곱셈이 대량이면 GPU.
PCA/SVD (full/truncated) GPU 권장 BLAS3/SVD 핵심. cuBLAS/cuSOLVER로 큰 이득. Incremental PCA는 CPU도 합리적.
LinearRegression (OLS) 중·대규모: GPU /
소규모: CPU
QR/Cholesky/CG 모두 행렬연산 중심. n·d 크면 GPU, d≪n의 정규방정식도 GPU 유리. 아주 작으면 CPU가 더 빠름.
Ridge GPU 권장(중·대규모) (XTX+αI)w=XTy(XᵀX+αI)w=Xᵀy 한 번. BLAS3/선형해법.
Lasso/ElasticNet CPU(좌표하강) /
GPU는 FISTA/ISTA
좌표하강은 분기·메모리바운드→GPU 비효율. 대신 **prox-gradient(FISTA)**면 Xᵀ(Xw−y) + soft-threshold(엘리먼트와이즈)라 GPU 친화.
Logistic Regression (binary/softmax) 샘플
많음: GPU /
작음: CPU
반복마다 X@w, Xᵀ(p−y) → BLAS2/3. 반복 수가 있어 데이터를 GPU에 올려두면 이득.
Linear SVM (hinge + SGD/Pegasos) GPU 권장(대규모) 미니배치 벡터화 쉬움.
Kernel SVM (RBF) 보통 CPU/혼합 커널 행렬 O(n2)O(n^2) 메모리/대역폭 한계. n이 작으면 GPU도 가능하나 실전은 RFF(랜덤특성) + Linear SVM(GPU) 권장.
KNN Brute-force: GPU /
k-d/ball-tree: CPU
거리계산을 GEMM으로 바꾸면 GPU 폭발적. 트리탐색은 분기성 커서 CPU가 유리.
DecisionTree / RandomForest 기본: CPU 분기·불규칙 메모리. 히스토그램 기반(XGBoost/LightGBM류)은 GPU 가속 여지 있으나 구현 난이도 높음.
Gradient Boosting (histogram) 구현 난이도 높지만 GPU 가능 원핫 대신 binning 후 히스토그램 축적을 병렬화.
KMeans GPU 권장(중·대규모) 반복마다 거리 계산/할당/축소(리덕션) → GPU 친화.
GMM(EM) GPU 권장(중·대규모) E-step: 책임도 계산(대량), M-step: 리덕션.
Naive Bayes CPU로도 충분 카운트/평균·분산 집계 위주라 가벼움.
Calibration(Platt/Isotonic) 보통 CPU 소규모 최적화/단조회귀.
Metrics(ACC/F1/AUC/… ) 예측이 GPU에 있으면 GPU 리덕션, 아니면 CPU 왕복을 줄이는 쪽이 승.
CV/그리드서치 컨트롤: CPU / 모델 내부 연산: GPU 루프/분기/파이썬 레벨은 CPU, 각 fit/score 내부는 GPU가 돌도록.