실행 프로그램과 확장
NVIDIA GPU가 있는데 PyTorch가 CPU로 도는 것 같을 때
GPU가 보여도 PyTorch가 CPU로 실행된다면, 같은 환경에서 한 단계씩 확인하세요.
NVIDIA GPU1가 보이는데 답변이 느리다면, 먼저 모델을 실행한 것과 같은 터미널이나 노트북에서 nvidia-smi로 드라이버가 GPU를 보는지 확인하세요. 다음으로 아래의 읽기 전용 Python 진단을 같은 환경에서 실행해 PyTorch2가 GPU를 사용할 수 있는지 살핍니다. 이 진단은 모델을 실행하거나 파일을 바꾸지 않습니다. CUDA3 사용 가능 결과가 나와도 모델이 실제로 GPU에서 계산한다는 뜻은 아니므로, 마지막으로 모델 설정과 앱 로그를 확인하세요. nvidia-smi, torch.version.cuda, nvcc --version은 각각 다른 정보를 보여 줍니다.
GPU가 보여도 PyTorch는 CPU로 실행될 수 있습니다
IDE의 노트북에서 문서 요약 모델을 돌렸는데 응답이 느리고 CPU4 사용량만 높다고 해 보겠습니다. 같은 노트북에서 nvidia-smi는 NVIDIA GPU를 표시합니다. 이때 시스템 모니터만 보고 원인을 정하지 말고, 드라이버가 GPU를 보는지, 노트북이 어떤 PyTorch를 불러왔는지, 모델이 어느 장치에서 계산하는지 순서대로 확인합니다.
터미널과 IDE가 서로 다른 Python을 쓸 수 있습니다. 예를 들어 터미널은 GPU를 보고도 노트북은 CPU 전용 PyTorch를 불러올 수 있습니다. nvcc가 설치되어 있다는 사실만으로 IDE가 같은 환경을 쓴다고 볼 수는 없습니다. 그래서 이후 진단은 모델을 실행한 바로 그 노트북에서 진행합니다.
먼저 드라이버가 GPU를 보는지 확인합니다
명령줄에서 nvidia-smi를 실행합니다. 이 도구는 NVIDIA 드라이버가 GPU를 인식하는지, 드라이버 버전과 현재 보이는 GPU·메모리 사용 정보를 확인하게 해 줍니다. 명령이 없거나 장치를 찾지 못하면 PyTorch 패키지를 바꾸기 전에 운영체제와 드라이버 상태부터 살핍니다. Windows에서 WSL2를 쓴다면 CUDA GPU 드라이버는 Windows 호스트가 제공합니다. NVIDIA 안내에 따라 WSL 안에 Linux NVIDIA 드라이버를 설치하지 마세요.
출력에 CUDA Version이 있어도 이를 설치한 툴킷의 버전으로 읽지 마세요. 드라이버가 지원하는 CUDA 수준을 가리키는 정보입니다. 설치된 개발 툴킷의 컴파일러는 nvcc --version으로 확인합니다. nvcc가 없어도 GPU 실행이 불가능하다는 뜻은 아닙니다. PyTorch 사전 빌드 패키지에 CUDA 런타임5 구성요소가 포함될 수 있지만 드라이버 호환성은 여전히 필요합니다.

실패한 환경과 같은 Python에서 진단합니다
이제 모델이 실패한 바로 그 터미널이나 노트북에서 다음 코드를 실행합니다. 실행 경로와 PyTorch 빌드, 현재 프로세스에서의 CUDA 가용성을 출력합니다. 텐서를 만들거나 모델을 연산하지 않고 파일도 변경하지 않는 읽기 전용 진단입니다.
출력에서 먼저 Python 경로가 모델을 실행한 환경인지 확인합니다. 예상한 가상환경6이 아니라면 IDE의 인터프리터를 바로잡고 진단을 다시 실행하세요. PyTorch CUDA build가 None이면 현재 불러온 PyTorch는 CUDA 빌드가 아닐 가능성이 큽니다. torch.version.cuda는 이 PyTorch 빌드의 CUDA 버전을, torch.cuda.is_available()은 이 Python 프로세스가 CUDA를 사용할 수 있는지를 보여 줍니다.
nvidia-smi에 표시된 CUDA 지원 수준과 PyTorch 빌드 버전은 달라도 됩니다. CUDA 11 이후에는 최소 드라이버 조건을 충족하면 같은 주 버전 안에서 일부 기능 제한과 함께 마이너 버전 호환성이 제공됩니다. 다만 새 기능, GPU 아키텍처, PTX 컴파일, 라이브러리 조합은 별도 조건을 가질 수 있습니다. 진단에서 False가 나오거나 오류가 드라이버를 지목할 때만 PyTorch 설치 안내와 NVIDIA 호환성 표에서 해당 조합을 확인하세요.
import sys
import torch
print("Python:", sys.executable)
print("PyTorch:", torch.__version__)
print("PyTorch CUDA build:", torch.version.cuda)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
print("Device count:", torch.cuda.device_count())
모델 파라미터가 어느 장치에 있는지 확인합니다
CUDA available: True와 GPU 이름은 이 Python에서 CUDA 장치를 찾았다는 결과입니다. 이제 실제 모델 파라미터가 어느 장치에 있는지 확인합니다. 단일 GPU 모델의 파라미터 장치는 next(model.parameters()).device로 볼 수 있습니다. 코드가 CPU를 지정했거나 모델과 텐서 장치가 달라서 CPU에서 처리될 수도 있습니다. PyTorch의 일반 nn.Module에는 공통 .device 속성이 없으므로, 분산 배치된 모델은 첫 파라미터만 보지 말고 앱 로그와 분산 설정을 확인하세요.
같은 문서 요약을 다시 실행하면서 앱 로그에 GPU가 선택됐는지, 오류나 CPU 대체 실행이 기록됐는지 봅니다. 요청이 짧으면 시스템 모니터의 GPU 사용률이 낮게 잡힐 수 있습니다. VRAM7 사용량은 모델이 올라갔다는 단서일 뿐 계산 중이라는 증거는 아니므로, 파라미터 장치와 앱 로그를 함께 확인합니다.
PyTorch의 ROCm8 빌드도 torch.cuda.* 네임스페이스 API9를 호환 인터페이스로 사용합니다. AMD GPU 여부는 torch.version.hip10과 현재 PyTorch/ROCm 설치 안내로 구분합니다. CUDA 전용 라이브러리나 커스텀 연산이 있으면 다른 빌드에서 작동하지 않을 수 있습니다. 프레임워크가 장치를 인식하는 일과 프로젝트 기능이 모두 지원되는 일은 다릅니다.

결과에 맞춰 한 가지만 바꿉니다
nvidia-smi가 장치를 보지 못하면 카드가 시스템에 연결되어 있는지, 운영체제 드라이버가 해당 GPU와 OS를 지원하는지 확인합니다. Windows 호스트에서 WSL2를 쓴다면 호스트 드라이버와 게스트 환경을 함께 확인합니다. 이 문제가 해결되기 전에 PyTorch를 여러 번 바꾸면 새 오류가 겹쳐 원래 원인을 놓치기 쉽습니다.
GPU와 드라이버는 보이는데 torch.cuda.is_available()이 False라면 실패한 프로세스의 Python 경로와 PyTorch 빌드를 확인합니다. 프로젝트가 요구하는 버전과 CUDA 플랫폼을 살피고 PyTorch 공식 설치 선택기에서 OS·패키지 관리자·Python·컴퓨팅 플랫폼을 선택해 현재 환경에 맞는 명령을 얻습니다. 프로젝트 가상환경 안에서 안내된 절차를 적용한 뒤 같은 코드를 다시 실행합니다. 오래된 CUDA 휠 주소나 전역 패키지 일괄 삭제에 의존하지 마세요.
CUDA가 True인데 모델이 CPU에 머문다면 프레임워크를 반복 설치하지 말고 모델과 앱의 장치 설정을 봅니다. 앱이 CUDA 백엔드를 포함하는지, GPU 오프로딩11이 켜져 있는지, 모델과 문맥 길이가 VRAM과 실행 여유에 들어가는지 확인합니다. VRAM이 모자라면 일부 연산이 CPU로 가거나 실행이 실패할 수 있습니다. 조치와 옵션 이름은 앱 또는 모델 저장소의 현재 안내를 따릅니다.
같은 요약을 다시 실행하고, 실패하면 이 값을 기록합니다
드라이버나 PyTorch 설정을 하나 바꿨다면, 같은 IDE 노트북에서 같은 문서를 다시 요약해 봅니다. 앱 로그에서 GPU와 백엔드가 선택됐는지, 처리 중 오류가 났는지 확인하세요. 문제가 해결됐다면 그 설정을 유지하면 됩니다. 같은 실패가 이어질 때만 다음 진단 정보를 모아 도움을 요청합니다.
공유할 값은 GPU 모델과 운영체제, nvidia-smi의 드라이버 버전·CUDA 표시, 실패한 노트북의 Python 경로, PyTorch 버전, torch.version.cuda, is_available() 결과, 앱에서 선택한 장치와 오류 메시지입니다. Python 경로에 개인 디렉터리 이름이 있으면 가린 뒤 공유하세요. 전체 환경변수나 다른 Python 세션의 성공 기록은 현재 오류를 설명하는 데 필요하지 않습니다.
용어 각주
GPU — 많은 계산을 병렬로 처리하는 프로세서입니다. AI 모델 실행에서는 모델 계산을 맡습니다.
본문으로 돌아가기PyTorch — AI 모델을 만들고 실행하는 소프트웨어 프레임워크입니다. 모델과 함께 호환되는 PyTorch 버전 및 하드웨어 지원도 확인해야 합니다.
본문으로 돌아가기CUDA — NVIDIA GPU에서 범용 계산을 실행하기 위한 소프트웨어 플랫폼입니다. CUDA용으로 만든 프로그램은 다른 GPU에서 그대로 동작한다고 보장되지 않습니다.
본문으로 돌아가기CPU — 컴퓨터에서 일반적인 프로그램 명령을 실행하는 중앙 처리 장치입니다. AI 작업에서는 GPU 등 다른 프로세서와 역할을 나누기도 합니다.
본문으로 돌아가기런타임 — 프로그램이 실행될 때 필요한 기능을 제공하는 소프트웨어 환경입니다. 로컬 AI에서는 모델을 실행하는 엔진을 가리키기도 하며, GPU 런타임 라이브러리와 완성된 서빙 앱은 서로 다른 구성요소입니다.
본문으로 돌아가기Python 가상환경 — 프로젝트별로 Python 패키지를 분리해 설치하는 공간입니다. 패키지 버전 충돌을 줄이며 가상 머신과는 다릅니다.
본문으로 돌아가기VRAM — 그래픽카드의 GPU가 사용하는 메모리입니다. 모델 가중치와 계산 중간값을 저장하며 시스템 RAM과 구분됩니다.
본문으로 돌아가기ROCm — AMD GPU에서 AI와 고성능 계산을 실행하는 소프트웨어 플랫폼입니다. 지원 여부는 GPU 모델뿐 아니라 운영체제·드라이버·프레임워크 버전의 조합으로 확인합니다.
본문으로 돌아가기API — 프로그램의 기능을 다른 코드에서 호출하기 위한 약속된 인터페이스입니다. API라는 말만으로 외부 서버 전송을 뜻하지는 않습니다.
본문으로 돌아가기HIP — GPU용 C++ 코드를 여러 플랫폼으로 옮기는 데 쓰는 API와 실행 환경입니다. CUDA 코드 이식을 돕지만, 모든 라이브러리·연산의 호환성이나 같은 속도를 보장하지 않습니다.
본문으로 돌아가기오프로딩 — 메모리가 부족할 때 모델 데이터 일부를 GPU 메모리에서 시스템 RAM이나 저장장치로 옮겨 처리하는 방식입니다. 데이터 이동이 추가됩니다.
본문으로 돌아가기