텐서 코어, Triton, 잔차 네트워크, 그리고 비전 트랜스포머

2015년부터 오늘날까지 딥러닝은 손으로 튜닝한 C++ GPU 코드와 합성곱 신경망에서 하드웨어 가속 행렬 엔진과 트랜스포머 아키텍처로 진화했다. 이 세 가지 이정표가 현대 AI 모델이 설계되고 확장되는 방식을 규정한다.
1. 현대 CUDA의 진화: 텐서 코어와 OpenAI Triton
2012년에 Alex Krizhevsky는 표준 CUDA 코어에서 개별 부동소수점 연산을 계산하기 위해 저수준 CUDA C++(cuda-convnet)를 작성했다. 오늘날 딥러닝은 특수 목적의 행렬 하드웨어와 고수준 컴파일러에 의존한다.
- CUDA 코어에서 텐서 코어로. 전통적인 CUDA 코어는 클록 사이클마다 스칼라 곱셈과 덧셈을 한 번씩 수행한다. Volta 아키텍처(2017)부터 NVIDIA는 4×4 또는 16×16 블록 같은 작은 행렬 전체를 한 클록 사이클에 곱하는 텐서 코어를 도입했다. 현대의 텐서 코어는 FP16, BF16, FP8 같은 혼합 정밀도 형식을 사용하며, 행렬 곱셈에서 자릿수 단위의 속도 향상을 제공한다.
- cuDNN과 자동 커널 선택. 연구자가 직접 C++ 합성곱을 작성하는 대신, 이제 NVIDIA의 cuDNN 라이브러리에는 미리 컴파일된 어셈블리 커널이 수백 개 들어 있다. 런타임에 PyTorch 같은 프레임워크는 사용자의 정확한 텐서 형태에 맞춰 여러 알고리즘을 벤치마크하고, 가장 빠른 텐서 코어 루틴을 자동으로 선택한다.
- OpenAI Triton(파이썬 기반 GPU 프로그래밍). 순수 CUDA C++로 작성하려면 스레드 인덱싱, 공유 메모리 뱅크 충돌, 워프 동기화를 직접 관리해야 한다. OpenAI가 공개한 Triton을 쓰면 연구자는 고성능 GPU 커널을 파이썬으로 바로 작성할 수 있다. 데이터 타일 단위의 블록 수준에서 연산을 정의하면, Triton 컴파일러가 메모리 코얼레싱, 공유 메모리 타일링, 텐서 코어 스케줄링을 자동으로 처리하며, 손으로 튜닝한 CUDA C++와 대등하거나 더 나은 성능을 내는 경우가 많다.
2. ResNet의 스킵 연결과 역전파 흐름
ResNet(2015) 이전에는 합성곱 레이어를 약 20개 넘게 쌓으면 학습 오류가 급증했다. 그래디언트가 수십 번의 곱셈 단계를 거쳐 역방향으로 전달되면서 0에 가깝게 줄어들거나(그래디언트 소실) 불안정해졌기 때문이다.
- 원시 출력 대신 잔차 학습. 일반적인 네트워크 블록에서는 쌓인 레이어들이 입력 x로부터 직접 매핑 H(x)를 학습하려 한다. ResNet은 원래 입력 x를 블록의 출력에 곧바로 더하는 스킵 연결(항등 지름길)을 도입한다:
y=F(x)+x
여기서 F(x)는 쌓인 합성곱 레이어를 나타낸다. 레이어들은 표현 전체를 처음부터 다시 만드는 대신 잔차(작은 조정값 F(x) = y - x)만 학습하면 된다. 어떤 레이어가 필요 없다면 네트워크는 F(x)를 쉽게 0으로 밀어 깨끗한 항등 통과를 남길 수 있다.
- 끊기지 않는 그래디언트 고속도로. 역전파 중에 연쇄 법칙은 입력 x에 대한 손실(L)의 그래디언트를 계산한다:
(∂ L)/(∂ x)=(∂ L)/(∂ y)((∂ F(x))/(∂ x)+1)
항등 지름길이 만들어내는 + 1 항 덕분에, 상위 그래디언트((∂ L)/(∂ y))는 (∂ F(x))/(∂ x)의 작은 가중치 행렬에 의해 줄어들지 않고 앞쪽 레이어로 곧바로 역방향 전달된다. 이 덕분에 그래디언트는 100개 이상, 심지어 1,000개 이상의 레이어를 깨끗하게 통과해 전파될 수 있다.
3. CNN에서 비전 트랜스포머(ViT)로의 전환
AlexNet 이후 거의 10년 동안 합성곱 신경망(CNN)은 작은 국소 필터를 이미지 위로 미끄러뜨리며 컴퓨터 비전을 지배했다. 2020년 Google은 자연어 처리의 트랜스포머 아키텍처를 이미지에 적용한 비전 트랜스포머(ViT)를 발표했다.
| 특징 | 합성곱 신경망(CNN) | 비전 트랜스포머(ViT) |
|---|---|---|
| 입력 처리 | 슬라이딩 필터(예: 3×3)를 사용해 전체 2D 이미지 격자를 처리한다. | 이미지를 고정 크기 패치(예: 16×16 픽셀)로 나누고 이를 평탄화해 토큰 시퀀스로 만든다. |
| 수용 영역 | 국소 우선. 초기 레이어는 이웃한 픽셀만 보며, 전역 맥락은 깊은 레이어에서 서서히 쌓인다. | 즉시 전역. 셀프 어텐션은 1번 레이어부터 모든 이미지 패치를 다른 모든 패치와 연결한다. |
| 귀납적 편향 | 높음. 평행 이동 불변성과 2D 공간 국소성에 대한 내장된 가정 덕분에 CNN은 더 작은 데이터셋에서도 잘 학습한다. | 낮음. 내장된 2D 공간 규칙이 없어(위치 임베딩에 의존) 시각적 구조를 학습하려면 방대한 데이터셋이 필요하다. |
| 하드웨어 확장성 | 특수한 합성곱 커널과 복잡한 메모리 접근 패턴에 의존한다. | 밀집 행렬 곱셈(GEMM)에 거의 전적으로 의존하며, 이는 현대 GPU 텐서 코어를 최고 효율로 포화시킨다. |
- ViT가 현대 AI를 장악한 이유. CNN은 가벼운 모바일 및 엣지 기기에서는 여전히 효율적이지만, 비전 트랜스포머는 수억 장의 이미지로 학습할 때 훨씬 더 잘 확장된다. 게다가 ViT는 이미지를 텍스트와 오디오에 쓰이는 것과 똑같은 형식인 토큰 시퀀스로 표현하기 때문에, GPT-4o나 Gemini 같은 현대의 멀티모달 AI 모델이 하나의 통합 아키텍처 안에서 시각과 언어를 처리할 수 있게 되었다.