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

종합 — 코드 읽기 연습 ★★

배운 것을 한꺼번에 써서 아래 코드의 결과를 따라가 보세요. GPU가 없는 컴퓨터에서 실행했다고 가정해요.

device = 'cuda' if torch.cuda.is_available() else 'cpu' a = torch.ones(2, 3) b = torch.ones(2, 3, device=device) a.to(device) c = a + b print(a.device) print(c.shape)
cpu torch.Size([2, 3])
코드 줄무슨 뜻
device = ...GPU가 없으니 'cpu'
a = torch.ones(2, 3)(2, 3) 크기의 1로 찬 Tensor. 기본 위치는 CPU
b = torch.ones(2, 3, device=device)device가 cpu라서 b도 CPU에 생겨요
a.to(device)다시 저장하지 않아서 a에는 변화가 없어요(어차피 옮길 곳도 CPU)
c = a + b둘 다 CPU에 있고 shape이 같아서 계산돼요. 모든 값이 2
print(a.device)cpu
print(c.shape)torch.Size([2, 3])

같은 코드를 GPU 있는 환경(Colab)에서 실행하면 달라져요. device가 'cuda'가 되어 b는 GPU에 생기고, a.to(device)는 저장하지 않아 a는 CPU에 남아요. 그러면 a + b에서 device가 달라 에러가 나요. 같은 코드인데 환경에 따라 결과가 갈리는 대표적인 예예요.

외우기 팁

"옮기면 다시 저장, 계산하려면 같은 곳". 두 문장이면 device 문제는 거의 다 풀려요.

시험엔 이렇게 써요 — 이렇게 고르세요

코드에 .to(device)가 보이면 먼저 "다시 저장했는가?"를 확인하세요. 저장하지 않았으면 Tensor는 원래 자리에 그대로예요. 그다음 "계산에 참여하는 Tensor가 전부 같은 device인가?"를 확인하면 돼요.

잠깐 확인 — x = x.to(device) 대신 x.to(device)만 썼을 때 생기는 문제를 한 문장으로 말해 보세요.

.to()는 이동한 새 Tensor를 돌려줄 뿐 원본을 바꾸지 않아서, 저장하지 않으면 x는 계속 원래 device에 남아요.

다음 카드 → 이 장 3줄 요약

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