VibeTensor: AI가 딥러닝 프레임워크를 직접 만들 수 있을까?

최근 LLM이 코드를 작성하는 것은 흔한 일이 되었지만, 수만 줄에 달하는 딥러닝 시스템 소프트웨어 전체를 AI 에이전트가 작성한다면 어떨까요? NVIDIA 연구진이 공개한 VibeTensor는 바로 이 질문에 대한 답을 제시하는 오픈 소스 프로젝트입니다.
오늘은 AI 코딩 에이전트가 완전히 생성(fully generated)한 딥러닝 런타임인 VibeTensor의 구조와 개발 방식, 그리고 그 한계점에 대해 알아보겠습니다.
VibeTensor란 무엇인가?
VibeTensor는 인간의 고차원적인 가이드라인 아래, LLM 기반 코딩 에이전트들이 구현한 딥러닝 시스템 소프트웨어 스택입니다. 단순한 파이썬 바인딩 래퍼가 아니라, 텐서/스토리지 시스템, 스키마 없는 디스패처(dispatcher), 역전파 자동미분(autograd) 엔진, 그리고 CUDA 메모리 관리(스트림, 이벤트, 그래프)까지 포함하는 완전한 런타임을 갖추고 있습니다.
코드 규모
논문에 따르면 VibeTensor의 전체 코드베이스는 다음과 같습니다:
핵심 특징
- PyTorch 스타일의 Eager Execution: 코드가 즉시 실행되고 동적 그래프를 생성하는 방식을 따릅니다.
- 다중 언어 지원: C++20 코어를 기반으로 하며, nanobind를 통한 파이썬 인터페이스뿐만 아니라 실험적인 Node.js/TypeScript 인터페이스도 제공합니다.
- 확장성: DLPack을 통한 상호운용성, 동적 플러그인을 위한 안정적인 C ABI, 그리고 Triton이나 CUTLASS로 작성된 커스텀 커널을 위한 훅(hook)을 제공합니다.
AI가 시스템을 만드는 방법: Vibe-Coded
이 프로젝트에서 가장 흥미로운 점은 개발 방법론입니다. 연구진은 에이전트를 블랙박스로 취급하고 다음과 같은 워크플로우를 사용했습니다:
- 목표 설정: 인간이 범위와 불변식(invariants)을 지정합니다.
- 코드 생성: 에이전트가 변경 사항(diff)을 제안하고 적용합니다.
- 검증: 인간이 코드를 한 줄씩 리뷰하는 대신, 빌드, 테스트, 그리고 다른 구현체(PyTorch 등)와의 차분 검사(differential checks)를 통해 유효성을 검증했습니다.
즉, 테스트가 곧 명세(specification) 역할을 했으며, 에이전트들은 이 테스트를 통과하기 위해 코드를 작성하고 수정했습니다. 전체 개발 기간은 약 2개월이었습니다.
시스템 아키텍처
VibeTensor의 구조는 다음과 같습니다:
- Language Bindings: Python (nanobind), Node.js (N-API)
- Core: Dispatcher (Router) → Autograd Engine (Reverse Mode)
- Execution: Cache Allocator, CUDA Graph, Advanced Indexing
- Kernels: CPU/CUDA Operator Kernels + External Plugins
성능과 프랑켄슈타인 효과
VibeTensor는 NVIDIA H100 및 Blackwell GPU에서 CIFAR-10 ViT, miniGPT 등의 모델을 End-to-End로 학습시키는 데 성공했습니다. 하지만 성능 면에서는 PyTorch 대비 상당한 차이를 보였습니다.
End-to-End 학습 성능 (H100 기준)
Blackwell GPU에서는 워크로드에 따라 1.72×~6.15× 느린 성능을 보였습니다.
프랑켄슈타인 합성 효과 (Frankenstein Composition Effect)
연구진은 이러한 성능 저하의 원인을 프랑켄슈타인 합성 효과라고 명명했습니다:
- 각각의 하위 시스템(예: 텐서 연산, 자동미분 등)은 개별적으로는 정확하고 합리적으로 보입니다.
- 하지만 이들이 합쳐졌을 때, 전역적인 성능 목표가 고려되지 않아 비효율적인 병목 현상이 발생했습니다.
구체적인 기술적 원인으로는 비재진입(non-reentrant) 전역 backward 게이트가 있습니다. 이는 프로세스 전체에 걸친 try-locked 뮤텍스로, 안전성을 단순화하지만 독립적인 backward 작업을 직렬화합니다. 결과적으로 고성능 백엔드 커널들이 충분한 작업을 받지 못해 GPU 활용률이 저하됩니다.
병목 현상 흐름: User Script → Frontend (High Latency) → Autograd Engine → Global Lock (SERIALIZED, 병목 지점) → Backend Kernels (GPU 활용률 저하) → Result
커널 및 멀티 GPU 실험
성능 한계에도 불구하고, VibeTensor에는 주목할 만한 고성능 컴포넌트들이 포함되어 있습니다.
AI 생성 Triton 커널 성능
일부 커널은 PyTorch의 기본 구현보다 빠른 성능을 보였습니다:
다만, 소규모 배치의 GQA prefill 연산에서는 FlashAttention 대비 0.67× 속도로 뒤처지는 경우도 있었습니다.
멀티 GPU 지원
Blackwell GPU를 타겟으로 한 실험적인 Fabric 서브시스템과 링 올리듀스(Ring Allreduce) 플러그인이 포함되어 있습니다:
4개 GPU에서 1.69× 처리량 향상을 달성했습니다.
결론 및 시사점
VibeTensor는 프로덕션용 프레임워크가 아닌, AI 보조 소프트웨어 엔지니어링의 이정표(milestone)로서의 연구 프로토타입입니다.
이 프로젝트는 코딩 에이전트가 언어 바인딩부터 CUDA 메모리 관리까지 이르는 복잡한 시스템 소프트웨어를 일관성 있게 생성할 수 있음을 증명했습니다. 동시에, 개별적으로는 옳지만 전체적으로는 최적이 아닌 코드를 생성하는 AI 코딩의 구조적 한계를 명확히 보여줍니다.
핵심 교훈
- AI 에이전트는 6만 줄 이상의 복잡한 시스템 코드를 생성할 수 있습니다.
- 테스트 기반 검증만으로도 기능적으로 올바른 시스템을 만들 수 있습니다.
- 그러나 전역 최적화(global optimization)는 여전히 인간의 개입이 필요합니다.
- 개별 컴포넌트의 정확성이 전체 시스템의 효율성을 보장하지 않습니다.
리소스
- 논문: VibeTensor: System Software for Deep Learning, Fully Generated by AI Agents
- GitHub: https://github.com/NVLabs/vibetensor
주의: 이 프로젝트는 연구 목적으로 공개되었으며, 프로덕션 환경에서의 사용은 권장되지 않습니다.