본문 바로가기
C.W.K.
Stream
Lesson 01 of 08 · published

PyTorch의 사고방식

~22 min · pytorch, mental-model, modules

Level 0호기심
0 XP0/73 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

실전에서 쓰는 PyTorch 기본 요소 4개

  • 텐서 — 장치에 올라가는 n차원 배열이야. dtype과 형태를 가지며, 선택적으로 기울기도 추적해. PyTorch의 최소 단위야.
  • Module — 매개변수를 보관하고 순전파를 정의하는 상태 있는 신경망 구성 요소야. 속성으로 조립하며(self.conv = nn.Conv2d(...)), state_dict()parameters()가 구성 요소를 자동으로 찾아내.
  • 옵티마이저 — 매개변수 목록을 알고 있으며, 주어진 기울기에 따라 해당 매개변수를 갱신해.
  • Autograd 엔진 — 순전파 중에 연산 그래프를 만들고, 기울기를 계산할 때 그래프를 역방향으로 따라가.

어떤 PyTorch 프로그램을 읽어도 핵심 흐름은 같아. Module을 정의하고, Module에 텐서를 통과시키고, 스칼라 손실을 계산한 다음 .backward()opt.step()을 호출해. 이 반복 구조를 몸에 익히면 나머지는 라이브러리 사용법에 가까워.

팁: PyTorch는 numpy와 자동 미분 위에 얹힌 얇은 관례 계층이야. 프레임워크 자체는 작지만 생태계(torchvision, transformers, lightning)는 거대해. 핵심은 깊이 배우고, 생태계의 구성 요소는 필요할 때 골라 써.

Module은 Lego처럼 조립된다

Module은 다른 Module을 포함할 수 있어. state_dict()는 모든 매개변수를 재귀적으로 찾아 평탄화하고, to(device)는 구성 요소 전체를 재귀적으로 옮겨. 이 계층 구조 자체가 API다. 속성에 할당하기만 하면 매개변수를 직접 등록할 필요가 없어.

2026년 torch.compile 세부 사항

어떤 Module이든 torch.compile(model)로 감싸면 PyTorch가 순전파를 추적해 현대 가속기에서 훨씬 빠르게 실행되는 융합 그래프로 만들어. 첫 호출은 컴파일 때문에 느리지만, 이후 호출은 1.3-3x 빨라져. CUDA에서는 확실한 이점이 있고, CPU/MPS에서는 이점이 작아.

원칙: PyTorch는 2026년 딥러닝 분야의 공용어야. PyTorch를 능숙하게 읽고 쓰는 능력이 이 퀘스트에서 가장 큰 효과를 내는 단 하나의 기술이야.

Code

모듈 조합과 매개변수 자동 탐색·python
import torch
import torch.nn as nn

class Block(nn.Module):
    def __init__(self, dim):
        super().__init__()
        self.fc = nn.Linear(dim, dim)
        self.norm = nn.LayerNorm(dim)
    def forward(self, x):
        return self.norm(torch.relu(self.fc(x)))

class Net(nn.Module):
    def __init__(self, dim, depth):
        super().__init__()
        self.blocks = nn.ModuleList([Block(dim) for _ in range(depth)])
        self.head = nn.Linear(dim, 10)
    def forward(self, x):
        for blk in self.blocks:
            x = x + blk(x)            # residual
        return self.head(x)

m = Net(dim=128, depth=4)
print(sum(p.numel() for p in m.parameters()))
m.to("cuda" if torch.cuda.is_available() else "cpu")
torch.compile로 손쉽게 1.3~3배 가속·python
import torch
model = MyModel().to("cuda")
compiled = torch.compile(model, mode="reduce-overhead")
# Use compiled exactly like model — same API
out = compiled(x)

External links

Exercise

동일한 sub-module을 담은 ModuleList를 가진 작은 Module을 만들어. list(m.parameters())가 모든 매개변수를 자동으로 순회하는지 확인해. 그런 다음 torch.compile로 감싸고, 한 번의 순전파 실행 시간을 적용 전후로 측정해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.