이런 독자에게 맞습니다

PyTorch를 이미 사용하고 있지만, 파이썬 API 아래에서 실제로 무슨 일이 일어나는지 알고 싶은 ML 엔지니어와 시스템 지향 개발자.

선수 지식

기본적인 PyTorch 학습 경험, 파이썬 숙련도, 그리고 텐서와 역전파에 대한 기초 이해.

이 시리즈에서 얻을 수 있는 것

  • 텐서 저장 방식, autograd 흐름, 커스텀 오퍼레이터 경계를 이해하게 됩니다
  • PyTorch와 커스텀 CUDA 커널이 어떻게 연결되는지 알게 됩니다
  • fused operator와 extension 설계를 덜 감으로 판단하게 됩니다

전체 글

  1. 1

    PyTorch 내부 구조 01 - 왜 PyTorch internals를 알아야 하는가

    PyTorch를 단순한 파이썬 라이브러리가 아니라 런타임으로 이해해야 성능과 확장 문제를 제대로 다룰 수 있다

  2. 2

    PyTorch 내부 구조 02 - Tensor는 storage, size, stride 위에서 동작한다

    텐서를 다차원 배열로만 보면 view와 layout 문제를 잘못 이해하게 된다

  3. 3

    PyTorch 내부 구조 03 - Contiguous, Memory Format, Hidden Copy

    shape가 같아도 memory layout이 다르면 operator 선택과 성능이 달라지고 때로는 보이지 않는 복사가 생긴다

  4. 4

    PyTorch 내부 구조 04 - Dispatcher와 Operator Registry는 무엇을 하는가

    같은 operator 이름 아래 여러 backend와 여러 역할의 구현을 연결해 주는 중심 계층이 dispatcher다

  5. 5

    PyTorch 내부 구조 05 - Autograd Graph와 Engine은 어떻게 동작하는가

    autograd는 단순 미분 기능이 아니라 연산 그래프와 gradient propagation을 조직하는 런타임이다

  6. 6

    PyTorch 내부 구조 06 - Custom Autograd Function을 언제 어떻게 써야 하는가

    custom autograd function은 빠른 실험 도구이기도 하지만 backward 책임을 직접 지는 계층이기도 하다

  7. 7

    PyTorch 내부 구조 07 - Tensor Lifetime, Caching Allocator, 메모리 재사용

    PyTorch의 CUDA 메모리는 단순 malloc/free가 아니라 caching allocator 위에서 재사용된다

  8. 8

    PyTorch 내부 구조 08 - CUDA Stream, Event, Asynchronous Execution

    PyTorch의 CUDA 연산은 기본적으로 비동기이기 때문에 실제 병목을 읽으려면 stream semantics를 알아야 한다

  9. 9

    PyTorch 내부 구조 09 - C++ Extension의 기본 경로

    C++ extension은 PyTorch runtime과 사용자 정의 연산을 연결하는 첫 번째 실전 관문이다

  10. 10

    PyTorch 내부 구조 10 - CUDA Extension으로 Custom Kernel 연결하기

    CUDA kernel을 PyTorch operator로 만들려면 kernel 코드뿐 아니라 tensor contract와 runtime semantics를 함께 맞춰야 한다

  11. 11

    PyTorch 내부 구조 11 - Operator Schema, Dispatch Key, Meta 함수

    custom op를 제대로 등록하려면 구현 이전에 schema와 dispatch 구조를 먼저 분명히 해야 한다

  12. 12

    PyTorch 내부 구조 12 - Backward 구현 패턴과 저장 전략

    backward는 forward의 덧붙임이 아니라 어떤 중간값을 저장하고 어떤 계산을 다시 할지 결정하는 설계 문제다

  13. 13

    PyTorch 내부 구조 13 - Fused Operator는 언제 가치가 있는가

    fused op는 launch overhead 감소뿐 아니라 메모리 접근과 intermediate materialization을 줄이기 위해 설계된다

  14. 14

    PyTorch 내부 구조 14 - AMP, Autocast, Numerical Stability

    custom op가 실제 학습에 들어가려면 mixed precision 환경에서의 dtype 규칙과 안정성까지 고려해야 한다

  15. 15

    PyTorch 내부 구조 15 - PyTorch Profiling으로 Operator 병목 읽기

    internals를 이해하는 목적은 결국 profile에서 시간을 어디서 잃는지 읽고 바꿀 수 있게 되는 데 있다

  16. 16

    PyTorch 내부 구조 16 - FX, torch.compile, Inductor의 큰 그림

    최근 PyTorch internals를 이해하려면 eager 실행 경로뿐 아니라 compile 경로도 함께 봐야 한다

  17. 17

    PyTorch 내부 구조 17 - Triton은 PyTorch 안에서 어떤 역할을 하는가

    Triton은 별도 장난감 언어가 아니라 PyTorch의 modern kernel story와 직접 연결되는 계층이다

  18. 18

    PyTorch 내부 구조 18 - Autograd와 Distributed Runtime은 어디서 만나는가

    DDP와 FSDP는 autograd 바깥의 마법이 아니라 gradient readiness와 tensor state를 runtime 차원에서 가로채는 구조다

  19. 19

    PyTorch 내부 구조 19 - Extension Packaging, Testing, ABI 안정성

    custom op는 로컬 실험에서 끝나지 않고 배포와 테스트, 버전 호환성까지 고려해야 비로소 실전 코드가 된다

  20. 20

    PyTorch 내부 구조 20 - 실제로 PyTorch internals를 실력으로 연결하는 순서

    internals 공부의 목적은 trivia 수집이 아니라 custom operator, kernel optimization, distributed runtime으로 자연스럽게 이어지는 감각을 만드는 데 있다