Show GN: Fable5는 비싸지고, 로컬 GPU는 부족하다: LLM 하나를 Mac & CUDA로 나눠 돌리는 DRIFT
(github.com/TaewoooPark)LLM이 개인에게서 멀어지고 있고, DRIFT는 LLM 하나를 여러 개인 기기로 나눠 돌려 이에 맞섭니다.
DRIFT는 하나의 LLM을 여러 개인 기기에 레이어 단위로 나눠 실행하는 오픈소스 프로젝트입니다.
요즘 개인 개발자가 AI를 직접 다뤄보려 하면 양쪽 모두 쉽지 않습니다. Fable5 같은 최상위 모델은 접근이 점점 제한되고, 로컬 모델은 “내 컴퓨터에서 돌릴 수 있다”는 말과 달리 실제로는 꽤 높은 GPU 메모리와 세팅을 요구합니다. 모델은 열려 있어도, 그 모델을 충분히 큰 규모로 실행하는 능력은 여전히 일부 하드웨어와 플랫폼에 집중되어 있습니다. 결국 이는 AI의 중앙집권적 환경을 조성하며 개인이 최신 기술에 접근할 수 있는 수준에 큰 한계를 유발합니다.
DRIFT가 던지는 질문은 단순합니다.
한 대의 머신이 모델 전체를 감당하지 못한다면, 여러 개인 기기가 하나의 모델을 같이 돌릴 수 없을까?
DRIFT는 Mac의 Apple GPU(MPS)와 Windows/Linux PC의 NVIDIA GPU(CUDA)를 함께 써서 하나의 모델을 실행합니다. 모델을 디코더 레이어 단위로 쪼개고, 노드 사이에는 모델 전체나 KV 캐시가 아니라 hidden state만 보냅니다. 통신은 PyTorch 객체나 CUDA 핸들이 아니라 TCP + msgpack 기반의 중립적인 바이트 프로토콜로 처리합니다.
주요 기능은 이렇습니다.
- 하나의 LLM을 디코더 레이어 단위로 자동 분할
- Mac MPS와 NVIDIA CUDA 혼합 실행
- 노드 간 통신에 TCP + msgpack 사용
- P2P 체인 모드로 head 노드의 대역폭 병목 완화
- X25519, ChaCha20-Poly1305 기반 암호화 와이어
- Ed25519 서명 영수증으로 각 노드의 작업 검증
- 노드가 중간에 죽었을 때 re-split + replay 기반 failover
- OpenAI 호환 HTTP API 제공
- 이론적으로 디코더 레이어 수만큼 분할 가능. 기본 Qwen 기준 최대 28대, Gemma 기준 최대 35대까지 한 모델을 나눠 실행할 수 있고, 현재 현실적인 스위트 스팟은 2~4대 수준
비슷한 문제를 푸는 프로젝트로는 Exo와 llama.cpp RPC가 있습니다. Exo는 Apple Silicon끼리 묶어 로컬 클러스터처럼 쓸 수 있지만, 노드 간 통신이 MLX 쪽에 묶여 있어 Apple 생태계를 벗어나기 어렵습니다. llama.cpp RPC는 여러 백엔드를 활용할 수 있지만, ggml/llama.cpp 런타임에 붙어 있는 RPC 방식입니다. DRIFT의 차별점은 노드 사이의 경계를 특정 ML 런타임이 아니라 중립적인 바이트 프로토콜로 끌어올렸다는 점입니다. 그래서 Apple MPS와 NVIDIA CUDA처럼 원래 같은 분산 런타임에 넣기 어려운 조합을 하나의 모델 실행 안에 넣는 쪽에 초점이 있습니다.
DRIFT의 구현은 Python과 PyTorch 위에 있지만, 노드 사이의 계약은 PyTorch에 의존하지 않는 방식으로 잡혀 있습니다. 모델 로딩과 실행은 Hugging Face Transformers, safetensors, PyTorch MPS/CUDA를 활용하고, 바깥으로는 Starlette/Uvicorn 기반의 OpenAI 호환 API를 제공합니다. 내부 통신은 msgpack 프레이밍과 암호화 계층으로 감싸져 있어서, “어떤 모델을 어떤 디바이스에서 돌리느냐”와 “노드들이 어떤 바이트를 주고받느냐”를 분리하려는 설계입니다.
개인적으로 이 프로젝트가 흥미로운 이유는 “AI 탈중앙화”를 토큰 경제나 거대한 네트워크 이야기에서 바로 시작하지 않는다는 점입니다. 먼저 필요한 것은 실제로 개인 기기들이 하나의 모델 실행에 참여할 수 있는 실행 계층입니다. 누가 어떤 레이어를 계산했는지 검증할 수 있고, 노드가 빠져도 복구할 수 있고, 특정 벤더나 데이터센터에 묶이지 않는 구조가 있어야 그 위에 더 큰 네트워크를 만들 수 있습니다.
DRIFT가 속도를 앞세우는 프로젝트는 아닙니다. 오히려 우선순위는 정확성입니다. 분산해서 돌렸을 때 단일 머신에서 돌린 결과와 같은 답이 나오는지 검증하는 쪽에 무게를 둡니다. README 기준으로 Qwen2.5-1.5B-Instruct에서 여러 패리티 게이트를 통과했고, Mac MPS와 NVIDIA CUDA를 섞은 실험도 포함되어 있습니다.
최상위 AI 모델은 점점 닫히고, 로컬 AI는 여전히 비싼 하드웨어를 요구하는 상황에서, DRIFT는 꽤 현실적인 질문을 던집니다.
프론티어 모델들이 개인 고객에서 멀어질 때, 개인의 리소스를 뭉쳐 그 힘을 키울 수 있을까?
댓글과 토론
DRIFT는 속도 경쟁보다는 이종 개인 기기에서 하나의 LLM을 정확하게 나눠 돌릴 수 있는가를 먼저 보는 프로젝트입니다!
특히 Exo / llama.cpp RPC / Petals 쪽과 비교했을 때 차별점이 충분히 설득력 있는지, 그리고 MPS↔CUDA 혼합 실행 상에서 현업에서 요구되는 추가적인 지점들에 대한 많은 분들의 고견과 피드백을 여쭙고 싶습니다.