# GPU/CUDA 가속 설정 가이드 ## 개요 이 프로그램은 이제 NVIDIA GPU의 CUDA를 활용하여 이미지 번역 작업을 가속화할 수 있습니다. CUDA를 사용하면 CPU 대비 상당한 성능 향상과 메모리 효율성을 얻을 수 있습니다. ## 지원되는 모듈 ### 1. MIGAN 인페인팅 모듈 - **기능**: 텍스트 영역 제거 및 배경 복원 - **CUDA 효과**: 인페인팅 속도 2-5배 향상 - **메모리 효율성**: GPU VRAM 활용으로 시스템 RAM 절약 ### 2. RemoveBG (rembg) 모듈 - **기능**: 배경 제거 - **CUDA 효과**: 배경 제거 속도 3-10배 향상 - **지원 모델**: 모든 rembg 모델 (birefnet, u2net, sam 등) ### 3. PaddleOCR 모듈 - **기능**: 텍스트 감지 및 인식 - **CUDA 효과**: OCR 처리 속도 향상 - **메모리 효율성**: 대량 이미지 처리 시 안정성 개선 ## 시스템 요구사항 ### 하드웨어 - **GPU**: NVIDIA GPU (RTX 시리즈 권장) - **VRAM**: 최소 4GB (8GB 이상 권장) - **시스템 RAM**: 8GB 이상 ### 소프트웨어 - **OS**: Windows 10/11 (현재 지원) - **CUDA Toolkit**: 11.0 이상 (12.1 권장) - **NVIDIA Driver**: 최신 버전 권장 ## 설정 방법 ### 1. toggle_states 설정 ```python toggle_states = { # CUDA 전역 활성화 "use_cuda": True, # 기존 설정들... "migan_onnx_path": "path/to/migan/model.onnx", "request_rembg_server_url": "http://localhost:35756", # ... 기타 설정 } ``` ### 2. 설정 키 설명 | 키 | 타입 | 기본값 | 설명 | |---|------|--------|------| | `use_cuda` | bool | False | CUDA 전역 활성화 여부 | | `migan_use_cuda` | bool | auto | MIGAN CUDA 사용 (자동 설정됨) | | `migan_intra_threads` | int | 0 | MIGAN 내부 스레드 수 | | `migan_inter_threads` | int | 0 | MIGAN 간 스레드 수 | ## 동작 과정 ### 1. 초기화 단계 ``` 1. GPU 하드웨어 감지 (nvidia-smi) 2. CUDA 설치 확인 (nvcc --version) 3. ML 프레임워크 CUDA 지원 확인 4. 전역 상태 설정 ``` ### 2. 런타임 동작 ``` - CUDA 사용 가능 → GPU 가속 모드 - CUDA 실패 → CPU 폴백 (자동) - 매 작업마다 GPU 메모리 사용량 모니터링 ``` ## 로그 예시 ### CUDA 활성화 성공 ``` [INFO] === GPU 상태 초기화 시작 === [INFO] 사용자 CUDA 사용 요청: True [INFO] GPU 하드웨어 감지됨: 1개 [INFO] gpu_0: NVIDIA GeForce RTX 3050 (8192MB, 드라이버 565.90) [INFO] CUDA 컴파일러 감지됨 [INFO] CUDA 버전: release 12.1, V12.1.66 [INFO] ✅ ONNXRuntime CUDA 지원 확인됨 [INFO] ✅ PyTorch CUDA 지원 확인됨 (1개 디바이스, 현재: NVIDIA GeForce RTX 3050) [INFO] ✅ CUDA 사용 가능 - GPU 가속 모드로 동작 [INFO] === GPU 상태 초기화 완료 === ``` ### 모듈별 CUDA 활성화 ``` [INFO] MIGAN CUDA 사용 설정: True [INFO] [MIGAN] 세션 준비 완료. providers=['CUDAExecutionProvider', 'CPUExecutionProvider'] [INFO] ✅ rembg birefnet-general-lite CUDA 가속 활성화 [INFO] OCR 모듈 CUDA 모드 활성화 [INFO] ✅ PaddleOCR 초기화 성공 (CUDA 모드) ``` ### 성능 모니터링 ``` [INFO] ✅ 배경 제거 성공: birefnet-general-lite (CUDA, 0.85초) [INFO] GPU 0 메모리 사용량: 2847MB/8192MB (34.7%) [INFO] MIGAN 인페인팅 시작 [INFO] MIGAN 인페인팅 완료 [INFO] GPU 0 메모리 사용량: 3124MB/8192MB (38.1%) ``` ## 메모리 효율성 개선 ### CUDA 사용 시 장점 1. **시스템 RAM 절약**: GPU VRAM 활용으로 시스템 메모리 압박 완화 2. **병렬 처리**: 여러 작업 동시 수행 가능 3. **재시작 빈도 감소**: 메모리 부족으로 인한 이미지워커 재시작 빈도 감소 ### 성능 비교 (예상) | 작업 | CPU 모드 | CUDA 모드 | 개선 효과 | |------|----------|-----------|-----------| | 배경 제거 | 3-5초 | 0.5-1초 | 3-5배 빠름 | | 인페인팅 | 2-4초 | 0.3-0.8초 | 5-10배 빠름 | | OCR 처리 | 1-2초 | 0.5-1초 | 2배 빠름 | ### 메모리 사용량 - **CPU 모드**: 시스템 RAM 85% → 재시작 트리거 - **CUDA 모드**: 시스템 RAM 60-70% + GPU VRAM 30-40% ## 문제 해결 ### 1. CUDA 감지 실패 ``` # 확인 명령어 nvidia-smi nvcc --version # 해결 방법 - NVIDIA 드라이버 최신 업데이트 - CUDA Toolkit 재설치 - 시스템 재부팅 ``` ### 2. 메모리 부족 ``` [ERROR] CUDA out of memory # 해결 방법 - GPU VRAM 용량 확인 - 다른 GPU 사용 프로그램 종료 - 배치 크기 조정 ``` ### 3. 성능 저하 ``` # 확인 사항 - GPU 온도 및 클럭 속도 - 전력 설정 (고성능 모드) - 백그라운드 프로세스 확인 ``` ## 향후 개선 계획 1. **더 많은 모델 지원** - Tesseract OCR CUDA 지원 - 추가 인페인팅 모델 지원 2. **멀티 GPU 지원** - 여러 GPU 사용 시 로드 밸런싱 - GPU별 작업 분산 3. **메모리 최적화** - 동적 배치 크기 조정 - 메모리 풀링 구현 4. **실시간 모니터링** - GPU 온도/클럭 모니터링 - 성능 메트릭 대시보드 ## 참고 자료 - [NVIDIA CUDA 설치 가이드](https://developer.nvidia.com/cuda-downloads) - [ONNXRuntime CUDA Provider](https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html) - [PaddleOCR GPU 지원](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_en/installation_en.md)