ZINC — Zig로 작성된 LLM 추론 엔진, 550달러 AMD GPU에서 35B 모델 구동
ZINC — LLM inference engine written in Zig, running 35B models on $550 AMD GPUs
핵심 요약
AMD GPU 환경을 겨냥해 Zig로 개발 중인 새로운 LLM 추론 엔진 ZINC에 대한 소개와 커뮤니티의 반응.
- 기술 스택 — Zig 언어와 Vulkan API를 활용하여 AMD GPU에 최적화된 추론 엔진 구현
- 개발 배경 — 기존 ROCm 지원의 한계와 AMD 소비자용 GPU의 성능을 활용하기 위한 독자적 접근
- 현재 상태 — GGUF 모델 로드 및 35B 모델 구동 가능, 레이어 간 동기화 오버헤드 개선 작업 중
- 커뮤니티 반응 — ROCm 지원에 대한 잘못된 정보 지적과 기존 도구 대비 차별점에 대한 의구심 제기
레딧 가족 여러분 안녕! AMD GPU를 가지고 있고 로컬 LLM을 돌리려고 시도해 본 적이 있다면 그 고통을 알 거야. ROCm은 소비자용 카드를 지원하지 않아. vLLM도 안 돌아가지. llama.cpp는 Vulkan을 통해 어떻게든 돌아가긴 하지만 GPU를 뒷전으로 취급해. 범용 셰이더만 쓰고, 아키텍처 튜닝도 없고, 제대로 된 서빙 기능도 없지.
수백만 개의 AMD GPU가 이 일을 잘 해낼 수 있어야 해. 하드웨어는 대역폭과 연산 능력을 갖추고 있거든. 소프트웨어가 따라오지 못할 뿐이야. 그래서 Zig로 만들고 있어.
왜 Zig인가, 왜 지금인가:
Zig는 이 작업에 놀라울 정도로 잘 맞아. 핵심 경로는 Vulkan API 호출, GPU 메모리 관리, 커맨드 버퍼 기록인데, 이건 순수한 시스템 작업이거든. @cImport는 바인딩 생성기 없이 직접 Vulkan C ABI에 접근하게 해줘. comptime은 양자화별 디스패치 테이블을 처리하고, errdefer는 GPU 리소스 정리를 깔끔하게 유지해. 그리고 zig build는 GLSL 셰이더 컴파일을 빌드 단계에 포함해서 glslc가 자동으로 실행되고 SPIR-V가 zig-out/에 떨어지게 하지. 명령어 하나, 바이너리 하나.
지금이 적기인 이유는 오픈 모델들이 드디어 로컬에서 서빙할 만큼 좋아졌고, AMD의 RDNA4 하드웨어는 충분히 유능하며(640 GB/s 대역폭, 협력 행렬 코어), Zig/Vulkan 관점에서 이 GPU들을 위해 특별히 만드는 사람이 아무도 없기 때문이야. u/tinygrad가 AMD 소비자용 GPU가 학습 분야에서 경쟁할 수 있다는 걸 증명했지. 이건 같은 내기의 추론 측면이야.
현재 상태:
이 엔진은 GGUF 모델을 로드하고(Zig에서 네이티브로 파싱), 21GB의 가중치를 GPU VRAM에 메모리 매핑하며, MoE 전문가 라우팅과 SSM 레이어를 포함한 40개 레이어 하이브리드 트랜스포머를 실행해. Qwen3.5-35B에서 인식 가능한 정확한 출력을 생성하지. 현재 RDNA4에서 7.1 tok/s가 나오는데, GPU가 느려서가 아니라 레이어별 GPU 동기화 오버헤드(토큰당 120번의 왕복) 때문에 느린 거야. 해결책은 전체 디코드 그래프를 단일 커맨드 버퍼로 기록하는 건데, 이게 내가 작업 중인 핵심 문제야.
코드베이스는 Zig 약 5천 줄, GLSL 2천 줄 정도야. 직접 읽어볼 수 있을 만큼 작지.

