
GPU 셰이더에서 직접 뉴럴 네트워크를 돌린다고?
그래픽스 프로그래밍을 해보신 분이라면 셰이더(shader)라는 걸 아실 거예요. 화면에 픽셀 하나하나를 어떻게 그릴지 결정하는 작은 프로그램인데요. 그동안 이 셰이더 안에서 뉴럴 네트워크 같은 AI 모델을 돌리려면 꽤 불편했어요. GPU가 병렬 처리에 특화되어 있긴 하지만, 셰이더의 실행 모델이 행렬 연산에 최적화되어 있지 않았거든요.
Cooperative Vectors는 이 문제를 해결하려고 나온 새로운 GPU 기능이에요. Vulkan과 DirectX에 추가된 확장(extension)으로, 셰이더 코드 안에서 직접 행렬 곱셈(matrix multiply)과 뉴럴 네트워크 추론을 할 수 있게 해주는 거예요.
기존 방식의 문제점
기존에 셰이더에서 뉴럴 네트워크를 돌리려면 어떻게 했을까요? 보통 두 가지 방법이 있었어요.
첫 번째는 컴퓨트 셰이더를 별도로 돌리는 방법이에요. 렌더링 파이프라인 밖에서 따로 AI 추론을 실행하고, 그 결과를 다시 그래픽스 파이프라인에 넘기는 거죠. 이러면 동기화 오버헤드가 생기고, 데이터를 왔다갔다 하면서 시간이 낭비돼요.
두 번째는 셰이더 안에서 직접 행렬 연산을 수동으로 구현하는 방법인데요. 이게 뭐냐면, for 루프를 돌면서 가중치를 하나하나 곱하고 더하는 코드를 직접 짜는 거예요. GPU의 텐서 코어(Tensor Core) 같은 특수 하드웨어를 전혀 활용하지 못하니까 성능이 처참했어요.
Cooperative Vectors는 어떻게 다른가
Cooperative Vectors의 핵심 아이디어는 간단해요. 여러 스레드가 "협력해서" 하나의 행렬 연산을 수행하는 거예요. 이게 뭐냐면, GPU에서 셰이더를 실행할 때 보통 32개 또는 64개의 스레드가 한 묶음(warp 또는 wavefront)으로 움직이거든요. Cooperative Vectors는 이 스레드 묶음이 함께 행렬 곱셈을 수행하도록 만들어서, GPU의 텐서 코어를 직접 활용할 수 있게 해줘요.
구체적으로 두 가지 핵심 연산을 제공해요:
CooperativeVectorMatrixMultiply — 벡터와 행렬의 곱을 수행해요. 뉴럴 네트워크의 한 레이어를 통과시키는 것과 같은 연산이에요.
CooperativeVectorOuterProductAccumulate — 학습(training)에 필요한 외적 연산을 지원해요. 추론뿐 아니라 온디바이스 학습도 가능하게 하려는 의도가 보여요.
이걸 활용하면 프래그먼트 셰이더 안에서 바로 작은 뉴럴 네트워크를 실행할 수 있어요. 예를 들어 Neural Radiance Field(NeRF) 렌더링에서 각 레이(ray)마다 작은 MLP를 돌려야 하는데, 이걸 별도 패스 없이 렌더링 파이프라인 안에서 바로 할 수 있게 되는 거죠.
실제 활용 사례가 뭐가 있을까
가장 직접적인 활용처는 실시간 렌더링에서의 뉴럴 텍스처나 뉴럴 머티리얼이에요. NVIDIA가 연구해온 Neural Texture Compression처럼, 텍스처를 작은 뉴럴 네트워크로 압축해두고 셰이더에서 실시간으로 디코딩하는 거예요. 기존 블록 압축(BC7 등) 대비 훨씬 높은 압축률을 얻으면서도 품질을 유지할 수 있어요.
NeRF나 3D Gaussian Splatting 같은 뉴럴 렌더링 기법도 마찬가지예요. 각 픽셀을 렌더링할 때 작은 네트워크 추론이 필요한데, 이걸 그래픽스 파이프라인 안에서 자연스럽게 처리할 수 있게 돼요.
게임 분야에서는 AI 기반 업스케일링(DLSS 같은)이나 디노이징을 더 유연하게 커스터마이징할 수 있는 가능성도 열려요.
업계 맥락: NVIDIA vs AMD vs 표준화
NVIDIA는 이미 자체적으로 CUDA의 Tensor Core API를 통해 이런 기능을 제공하고 있었어요. 하지만 그건 CUDA 전용이라 Vulkan이나 DirectX를 쓰는 일반 그래픽스 파이프라인에선 활용이 어려웠죠.
Cooperative Vectors가 중요한 이유는 이게 표준 API로 들어왔다는 점이에요. Vulkan 확장(VK_NV_cooperative_vector)으로 먼저 나왔고, DirectX의 Shader Model 6.9에도 포함될 예정이에요. 이렇게 되면 특정 벤더에 종속되지 않고 크로스 플랫폼으로 사용할 수 있게 돼요.
다만 현재는 NVIDIA GPU에서만 지원되고, AMD나 Intel에서의 지원은 아직 미정이에요. 하드웨어에 텐서 코어 같은 전용 유닛이 필요하기 때문에, 지원 범위가 넓어지려면 시간이 좀 걸릴 수 있어요.
한국 개발자에게 주는 시사점
그래픽스 프로그래머라면 주목할 가치가 충분해요. 특히 게임 엔진이나 렌더러를 개발하는 분들은 향후 뉴럴 렌더링 기법을 통합할 때 이 API를 쓰게 될 가능성이 높아요.
AI/ML 엔지니어 입장에서도 흥미로운데요, 추론을 그래픽스 파이프라인에 직접 통합할 수 있다는 건 레이턴시에 민감한 실시간 애플리케이션에서 큰 이점이거든요.
당장 실무에 적용하기엔 아직 이른 감이 있지만, 뉴럴 렌더링이 게임과 그래픽스의 미래라면 이 개념을 이해해두는 건 분명 도움이 돼요.
한줄 정리
Cooperative Vectors는 GPU 셰이더 안에서 직접 뉴럴 네트워크를 돌릴 수 있게 해주는 새로운 하드웨어 가속 기능으로, 실시간 뉴럴 렌더링의 문을 여는 열쇠예요.
여러분은 앞으로 게임이나 실시간 그래픽스에서 AI가 어떤 역할을 하게 될 거라고 생각하시나요?
🔗 출처: Hacker News
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공