Python DeepLearning

PyTorch란? 설치 및 기본 사용법

PyExplorer 2025. 4. 5. 08:52
728x90

PyTorch란? 설치 및 기본 사용법

1. PyTorch란?

PyTorch는 Facebook(현 Meta)에서 개발한 오픈소스 딥러닝 프레임워크로, 유연한 동적 계산 그래프(dynamic computation graph)와 직관적인 사용성을 제공하여 연구 및 실무에서 널리 사용되고 있습니다. 특히, PyTorch는 연구자와 개발자에게 친숙한 Pythonic한 API를 제공하며, Tensor 연산을 GPU에서 가속할 수 있도록 지원합니다.

PyTorch는 다음과 같은 특징을 갖고 있습니다:

  • 동적 계산 그래프(Dynamic Computation Graph): 그래프를 실행 시점에서 구성할 수 있어 디버깅과 실험이 용이합니다.
  • 자동 미분(Autograd): 역전파(Backpropagation)를 자동으로 수행하여 딥러닝 모델 학습을 간편하게 만듭니다.
  • GPU 가속 지원: CUDA를 통해 GPU 연산을 지원하여 대규모 데이터 처리를 효율적으로 수행할 수 있습니다.
  • 직관적인 텐서 연산: NumPy와 유사한 API를 제공하여 수학적 연산을 쉽게 수행할 수 있습니다.
  • 강력한 커뮤니티 및 생태계: 다양한 라이브러리(Torchvision, Torchtext, Torchaudio 등)와 활발한 커뮤니티가 지원됩니다.

2. PyTorch 설치 방법

PyTorch는 다양한 환경에서 실행할 수 있으며, CPU 및 GPU를 지원합니다. 공식 웹사이트에서 제공하는 설치 명령어를 참고하여 설치할 수 있습니다.

2.1 공식 설치 가이드 확인

PyTorch 공식 홈페이지(https://pytorch.org)에서는 사용자의 환경에 맞는 설치 명령어를 제공합니다.

2.2 기본 설치 (CPU 버전)

PyTorch의 기본 설치는 CPU 버전으로 진행됩니다. 다음 명령어를 실행하여 설치할 수 있습니다:

pip install torch torchvision torchaudio

2.3 CUDA 지원 버전 설치 (GPU 사용)

GPU를 활용하기 위해서는 CUDA 지원 버전을 설치해야 합니다. 사용 중인 CUDA 버전에 따라 설치 명령어가 달라질 수 있으며, 아래 예제는 CUDA 11.8 버전을 기준으로 합니다:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

사용자의 CUDA 버전에 맞게 PyTorch 공식 사이트에서 제공하는 명령어를 확인하는 것이 중요합니다.

2.4 설치 확인

설치가 완료되면, 다음 Python 코드로 정상적으로 설치되었는지 확인할 수 있습니다:

import torch
print(torch.__version__)
print(torch.cuda.is_available())  # GPU 사용 가능 여부 확인

위 코드를 실행했을 때 PyTorch 버전이 출력되고, torch.cuda.is_available()True를 반환하면 GPU가 정상적으로 인식된 것입니다.

3. PyTorch 기본 사용법

3.1 텐서(Tensor) 생성

PyTorch의 핵심 데이터 구조는 텐서(Tensor)이며, 이는 NumPy 배열과 유사하지만 GPU에서 실행이 가능하다는 점이 특징입니다.

import torch

# 스칼라(0차원) 텐서
scalar = torch.tensor(3.14)

# 벡터(1차원) 텐서
vector = torch.tensor([1, 2, 3, 4])

# 행렬(2차원) 텐서
matrix = torch.tensor([[1, 2], [3, 4]])

# 3차원 텐서
tensor3d = torch.rand((2, 3, 4))  # 2x3x4 크기의 랜덤 텐서

print(f"스칼라: {scalar}")
print(f"벡터: {vector}")
print(f"행렬: {matrix}")
print(f"3차원 텐서: {tensor3d}")

3.2 텐서 연산

PyTorch는 다양한 텐서 연산을 지원합니다.

x = torch.tensor([2.0, 3.0])
y = torch.tensor([1.0, 5.0])

# 기본 연산
add_result = x + y  # 덧셈
mul_result = x * y  # 곱셈
matmul_result = torch.matmul(torch.tensor([[1, 2], [3, 4]]), torch.tensor([[5, 6], [7, 8]]))  # 행렬 곱

print(f"덧셈 결과: {add_result}")
print(f"곱셈 결과: {mul_result}")
print(f"행렬 곱 결과: {matmul_result}")

3.3 Autograd를 활용한 자동 미분

PyTorch는 requires_grad=True로 설정된 텐서에 대해 자동으로 미분을 계산할 수 있습니다.

x = torch.tensor(2.0, requires_grad=True)
y = x ** 3 + 4 * x

y.backward()  # y를 x에 대해 미분
print(f"dy/dx: {x.grad}")  # 3x^2 + 4의 값이 출력됨

3.4 간단한 신경망 모델 정의 및 학습

PyTorch를 활용하여 간단한 선형 회귀 모델을 구현할 수 있습니다.

import torch.nn as nn
import torch.optim as optim

# 데이터 정의
X = torch.tensor([[1.0], [2.0], [3.0]], dtype=torch.float32)
y = torch.tensor([[2.0], [4.0], [6.0]], dtype=torch.float32)

# 선형 회귀 모델 정의
model = nn.Linear(1, 1)

# 손실 함수 및 옵티마이저 설정
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)

# 모델 학습
for epoch in range(1000):
    optimizer.zero_grad()
    y_pred = model(X)
    loss = criterion(y_pred, y)
    loss.backward()
    optimizer.step()

    if epoch % 100 == 0:
        print(f"Epoch [{epoch}/1000], Loss: {loss.item():.4f}")

# 학습된 모델의 가중치 확인
print(f"학습된 가중치: {model.weight.item()}, 편향: {model.bias.item()}")

4. 결론

이 글에서는 PyTorch의 개념과 특징, 설치 방법, 기본적인 사용법을 설명했습니다. PyTorch는 유연한 동적 계산 그래프, 자동 미분 기능, GPU 가속 등을 제공하여 연구 및 실무에서 강력한 도구로 활용됩니다.

728x90