시험공부빅데이터분석
← 보드GPU와 Colab · 4/8

같은 device에 있어야 계산돼요 ★★★

연산에 참여하는 모든 Tensor와 모델은 같은 device에 있어야 해요. CPU의 Tensor와 GPU의 Tensor를 더하거나 곱하면 "device가 다르다"는 RuntimeError가 나요.

비유 — 집 냉장고와 식당 주방

한 재료는 집 냉장고에, 다른 재료는 식당 주방에 있다면 한 요리로 합칠 수 없어요. 한쪽으로 옮겨 와야 해요. CPU 메모리와 GPU 메모리는 따로 분리되어 있어서(교수님 설명) 서로 다른 곳에 있는 Tensor끼리는 바로 계산할 수 없어요.

상황결과고치는 법
CPU Tensor + GPU Tensordevice가 달라서 에러한쪽을 x = x.to(device)로 같은 곳에 옮기기
GPU의 모델에 CPU 입력을 넣기에러입력도 .to(device)
CPU의 모델에 GPU 입력을 넣기에러모델도 .to(device)

그래서 실제 학습 코드는 보통 아래 순서를 따라요. 모델을 device에 올리고, 데이터를 꺼낼 때마다 batch도 같은 device로 보내요.

device = 'cuda' if torch.cuda.is_available() else 'cpu' model = model.to(device) for batch_x, batch_y in loader: batch_x = batch_x.to(device) batch_y = batch_y.to(device) prediction = model(batch_x)
코드 줄무슨 뜻
model = model.to(device)학습 시작 전에 모델을 한 번만 옮겨요
for batch_x, batch_y in loader:데이터를 batch 단위로 꺼내요(0장에서 본 짝 받기)
batch_x = batch_x.to(device)꺼낸 입력을 모델과 같은 device로. 다시 저장해야 해요
batch_y = batch_y.to(device)정답도 같은 곳으로. 나중에 loss를 계산할 때 필요해요
시험엔 이렇게 써요 — 이렇게 고르세요

연산에 참여하는 모든 Tensor는 같은 device에 있어야 하며 모델과 입력도 마찬가지이다. device가 다르면 연산할 수 없다. 오류가 나면 "shape, dtype, device" 순서로 확인하라는 교수님의 말씀을 떠올리세요.

잠깐 확인 — 모델은 GPU로 보냈는데 입력 x는 CPU 그대로 넣었습니다. 어떻게 되나요?

device가 달라서 에러가 나요. x = x.to(device)로 입력도 GPU로 보내야 해요.

다음 카드 → GPU Tensor를 NumPy로 바꾸기

자료: 2주차(+1·3주차) · Week02_Tensor_and_GPU, 구글 Colab GPU 환경 사용법.pdf · 빅분01(1주차)·빅분02(2주차)·빅데이터03(3주차) 녹취