이 카테고리는 국비지원 과정으로 [계룡건설] 빅데이터 기반 GreenTech SW개발자 과정에서 학습하는 내용을 정리하는 공간입니다.
PyTorch: 딥러닝 프레임워크 완벽 정리
PyTorch란?
PyTorch는 Facebook AI Research(FAIR)에서 개발한 오픈 소스 딥러닝 프레임워크다. Python 기반으로 설계되어 있어 사용하기 쉽고, 직관적인 코드 작성이 가능하며, 특히 연구 및 프로토타이핑에 매우 적합하다. 최근에는 대규모 생산 환경에서도 많이 사용되고 있다.
PyTorch의 주요 특징
1. 동적 계산 그래프 (Dynamic Computational Graph)
PyTorch는 동적 계산 그래프를 지원한다. 이는 모델을 실행하면서 그래프가 생성되기 때문에, 복잡한 모델 구조나 입력이 매번 달라지는 작업에 유리하다. TensorFlow 1.x와 같은 정적 그래프(static graph) 방식보다 직관적인 디버깅과 코드 작성이 가능하다.
2. Pythonic
PyTorch는 Python스럽게(pythonic) 설계되어 있어서, Python 코드를 작성하는 것처럼 자연스럽게 딥러닝 모델을 구축하고 학습시킬 수 있다.
3. 강력한 GPU 가속
PyTorch는 CUDA를 기반으로 하여 GPU 가속을 지원한다. 간단히 .to('cuda') 한 줄만 추가하면 손쉽게 모델과 데이터를 GPU로 옮겨 고속 연산이 가능하다.
4. 풍부한 생태계
- TorchVision: 컴퓨터 비전용 데이터셋, 모델, 이미지 변환 도구 제공
- TorchText: 자연어처리(NLP)용 데이터셋과 전처리 기능 제공
- TorchAudio: 오디오 관련 데이터셋과 전처리 기능 제공
- TorchServe: PyTorch 모델 서빙을 위한 툴킷
5. PyTorch Lightning, Hugging Face와의 궁합
코드를 더 깔끔하고 관리하기 쉽게 해주는 PyTorch Lightning, 대규모 사전학습 모델을 쉽게 사용할 수 있게 해주는 Hugging Face Transformers와도 잘 연동된다.
PyTorch 핵심 개념
Tensor
PyTorch에서 데이터는 기본적으로 Tensor라는 자료구조에 저장된다. Tensor는 Numpy 배열과 비슷하지만 GPU를 활용할 수 있다는 차별점이 있다.
import torch
a = torch.tensor([1, 2, 3])
print(a)
# Tensor 기본 연산
b = torch.ones(3)
print(a + b) # 요소별 덧셈
print(a * b) # 요소별 곱셈
Autograd
PyTorch의 자동 미분 엔진인 Autograd를 통해, 모델의 매개변수에 대해 손쉽게 gradient를 계산할 수 있다.
x = torch.randn(1, requires_grad=True)
y = x ** 2
z = 2 * y
z.backward()
print(x.grad) # dz/dx 계산
nn.Module
모델을 구성할 때 PyTorch에서는 nn.Module을 상속하여 Layer를 정의한다.
import torch.nn as nn
class SimpleModel(nn.Module):
def __init__(self):
super(SimpleModel, self).__init__()
self.fc = nn.Linear(10, 1)
def forward(self, x):
return self.fc(x)
# 모델 인스턴스 생성
model = SimpleModel()
print(model)
Optimizer
PyTorch는 다양한 최적화 알고리즘을 torch.optim 모듈에서 제공한다. 대표적으로 SGD, Adam 등이 있다.
import torch.optim as optim
model = SimpleModel()
optimizer = optim.Adam(model.parameters(), lr=0.001)
Loss Function
손실 함수(Loss function)는 모델이 얼마나 잘 학습하고 있는지 측정하는 지표다.
criterion = nn.MSELoss()
output = model(torch.randn(10))
target = torch.randn(1)
loss = criterion(output, target)
print(loss.item())
PyTorch의 학습 Loop 기본 구조
for epoch in range(num_epochs):
for data, target in dataloader:
data, target = data.to(device), target.to(device)
optimizer.zero_grad()
output = model(data)
loss = criterion(output, target)
loss.backward()
optimizer.step()
print(f"Epoch {epoch+1}, Loss: {loss.item()}")
PyTorch vs TensorFlow
항목 PyTorch TensorFlow
계산 그래프 | 동적 그래프(Dynamic) | 정적 그래프(Static) + Eager 실행 가능 |
학습 곡선 | 빠름, 직관적 | 초기 진입 장벽 높음 |
생산 환경 | 최근 매우 강력해짐(ONNX, TorchServe) | 안정적, 대규모 서비스 검증됨 |
커뮤니티 | 활발 | 매우 방대 |
마치며
PyTorch는 연구용, 프로덕션용 모두에서 빠르게 성장하고 있는 딥러닝 프레임워크다.
- 처음 딥러닝을 배우는 사람
- 복잡한 모델을 빠르게 실험하고 싶은 사람
- 직관적인 코드 작성과 디버깅을 원하는 사람
에게 특히 추천할 수 있는 도구다.
추후에는 PyTorch의 심화 내용(모델 서빙, 커스텀 Dataset 작성법 등)도 다루어 볼 예정이다. 감사합니다!
'국비지원교육 > [계룡건설] 빅데이터 기반 GreenTech SW개발자' 카테고리의 다른 글
**[계룡건설] GreenTech SW개발자 - Python 학습 노트 .14** (0) | 2025.03.21 |
---|---|
**[계룡건설] GreenTech SW개발자 - Python 학습 노트 .13** (0) | 2025.03.21 |
**[계룡건설] GreenTech SW개발자 - Python 학습 노트 .12** (0) | 2025.03.21 |
**[계룡건설] GreenTech SW개발자 - Python 학습 노트 .11** (0) | 2025.03.05 |
**[계룡건설] GreenTech SW개발자 - SQL 학습 노트** (0) | 2025.02.17 |