커스텀 WGSL GPU 커널을 사용하여 Rust 기반 LLM 추론 엔진을 구축하며 배운 점들
요약
Rust와 WGPU를 활용하여 GGUF 모델을 실행할 수 있는 LLM 추론 엔진 'aether' 개발 과정을 다룹니다. 커스텀 WGSL 커널을 통해 역양자화와 행렬 곱셈을 융합하여 GPU 가속을 구현한 기술적 경험을 공유합니다.
핵심 포인트
- Rust 기반의 순수 구현으로 Python 의존성 제거
- WGSL을 이용한 커스텀 융합(fused) GPU 커널 작성
- WGPU를 통한 Metal, Vulkan, DX12 백엔드 지원
- OpenAI 호환 API 서버 및 동시 요청 풀 구현
저는 GGUF 모델을 로드하고 WGPU GPU 가속을 통해 실행할 수 있는 Rust 기반 LLM 추론 엔진인 aether라는 사이드 프로젝트를 작업해 왔습니다.
이 프로젝트는 LLM이 내부적으로 실제로 어떻게 작동하는지 이해하기 위한 방법으로 시작되었습니다. 그러다 보니 하나가 다른 하나로 이어졌고, 현재는 다음과 같은 기능을 갖추게 되었습니다:
- GGUF 모델 로드 (Llama/Mistral/Phi/Qwen)
- WGPU GPU 백엔드 (Metal/Vulkan/DX12)
- Q8_0 및 Q4_K 양자화된 행렬 곱셈 (matmul)을 위한 커스텀 융합(fused) WGSL 연산 셰이더 (별도의 패스 대신 인라인으로 역양자화 수행)
- 여러 사용자를 서비스하기 위한 동시 요청 풀 (Concurrent request pool)
- OpenAI 호환 API 서버 (axum)
- 순수 Rust 구현, 핫 패스(hot path) 내 Python 의존성 없음
GPU 경로는 아직 실험적인 단계입니다 (CPU 모드가 안전한 기본값입니다). 하지만 역양자화(dequant) 셰이더와 융합된 행렬 곱셈(fused matmul) 커널을 작성하는 것이 솔직히 가장 재미있는 부분이었습니다.
저는 llama.cpp나 MLX와 경쟁하려는 것이 아닙니다. 이것은 기본적으로 학습 프로젝트였으나 실제로 유용한 무언가로 성장한 것입니다. 질문이나 피드백은 언제든 환영합니다.
스택: Rust, WGPU, WGSL, GGUF, axum, Tokio
https://github.com/theoxfaber/aether
(완전한 투명성을 위해 말씀드리자면, 이 코드와 포스트의 대부분은 AI의 도움을 받아 작성되었습니다. 저는 설계 결정, 아키텍처 및 테스트를 주도했고, AI가 구현의 많은 부분을 처리했습니다. 이를 고려하여 참고해 주시기 바랍니다.)
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기