메시 LLM: Iroh 기반 분산 AI 컴퓨팅
메시 LLM(Mesh LLM)은 기존에 보유한 여러 대의 컴퓨터 GPU와 메모리를 묶어 하나의 거대한 GPU처럼 작동하게 만드는 분산 AI 인프라 기술입니다. 이를 통해 고비용의 클라우드 API에 의존하지 않고도, 사내에 방치된 GPU를 활용해 대규모 언어 모델(LLM)을 자체 운영하고 통제권을 확보할 수 있어 실무자들에게 매우 유용한 대안입니다.
사람들은 대규모 언어 모델(LLM)을 구동할 때를 떠올리면 보통 데이터 센터를 생각합니다. 타인의 소유인 수많은 GPU 랙, 사용량에 따라 요금이 부과되는 API, 그리고 서비스가 성공할수록 매달 불어나는 청구서를 상상하죠. 사용자는 프롬프트를 블랙박스에 던져 넣고, 가격과 모델, 개인정보처리방침이 가입할 때와 동일하게 유지되기를 바랄 뿐입니다. 하지만 많은 팀에게 이는 좋은 거래가 아닙니다. 모델이 언제 교체되는지, 데이터가 어디로 가는지, 어떤 하드웨어에서 작업이 처리되는지에 대한 통제권을 포기해야 하기 때문입니다. 사용량이 증가하면 청구 비용도 함께 증가하지만, 사용자가 당길 수 있는 통제 레버는 '돈을 더 지불하는 것'밖에 없습니다.
Mesh LLM은 다른 형태를 취합니다. 원하는 만큼 많은 머신을 추가하여 현재 보유한 GPU와 메모리를 하나로 묶고, 이 전체를 OpenAI 호환 API 단 하나로 노출합니다. 하나의 노드로 시작하고 나중에 더 추가할 수 있습니다. 모델이 지금 앞에 있는 컴퓨터에서 실행될지, 다른 피어로 전달될지, 아니면 여러 대의 머신에 분산될지 결정하는 것은 메시(Mesh)에 맡기면 됩니다.
문제: AI는 비싸고, 남의 소유다 유명한 모델들은 대부분 거대한 단일 구조(Monolith)입니다. 대부분의 사람들은 UI나 API 키를 통해 이 모델에 접근하며, 모든 것을 실행해 주는 대규모 공급자에게 비용을 지불합니다. 이는 편리하지만, 동시에 일종의 항복이기도 합니다. 모델이 언제 업데이트되는지, 어떤 메모리에서 실행되는지, 그리고 그 아래 어떤 하드웨어가 있는지 통제할 수 없습니다. 이러한 모델에 의존하는 수많은 기업과 서비스들은 정반대의 것을 원합니다. 더 많은 통제권, 더 높은 유연성(플러거빌리티), 더 낮은 비용을 원합니다. 사무실, 창고, 책상 아래 등에는 유휴 GPU가 방치되어 있습니다. 그들이 부족한 것은 이 컴퓨터들을 하나인 것처럼 작동하게 만들 방법뿐입니다.
Mesh LLM: 모델을 직접 실행하라 핵심 제안은 간단합니다. 더 큰 GPU를 구매하지 않고도 더 큰 모델을 실행하세요. 에이전트와 챗봇을 구동하기 위해 팀과 사적으로 컴퓨팅 파워를 공유하거나, 전 세계와 공개적으로 공유할 수 있습니다. 어떤 OpenAI 클라이언트든 http://localhost:9337/v1 만 가리키게 하면, 실제로 작업이 어디서 일어나는지 더 이상 신경 쓰지 않아도 됩니다.
내부적으로 Mesh LLM은 모델 연산을 iroh 엔드포인트들의 메시(Mesh) 네트워크로 분산합니다. 요청은 세 가지 방식으로 처리될 수 있습니다: 이 머신의 GPU에서 로컬로 실행합니다. 해당 모델을 이미 로드한 피어(Peer)로 요청을 라우팅합니다. 단일 머신에 담기엔 너무 큰 모델을 '파이프라인(Pipeline)' 형태로 여러 머신에 분할하여 실행합니다.
작동 방식 아키텍처는 플러그인(Pluggable) 방식입니다. 플러그인들은 매니페스트에 자신이 제공하는 기능을 선언하고, 런타임은 이를 시작하여 호출을 라우팅하며 MCP, HTTP, 추론(Inference) 및 메시 이벤트를 통해 해당 기능을 노출합니다. 기본 카탈로그에는 노트북에 탑재 가능한 5억 매개변수(Parameter) 모델부터 2,350억 매개변수 규모의 전문가 혼합(Mixture-of-Experts, MoE) 거인 모델까지 40개 이상의 모델이 함께 제공됩니다.
초대형 모델을 위해 Mesh LLM은 분할 모드(내부명 'Skippy')를 갖추고 있습니다. 모델은 레이어 범위별로 여러 스테이지로 파티셔닝 됩니다. 예를 들어 노드 1에는 015번 레이어를, 다음 노드에는 1631번 레이어를 할당하는 식으로 파이프라인을 구성합니다. 활성화 값(Activation)이 한 스테이지에서 다음 스테이지로 흘러가기 때문에, 여러 대의 평범한 머신이 단독으로는 감당할 수 없는 대형 모델을 함께 구동할 수 있습니다. OpenAI 클라이언트는 이러한 과정을 전혀 알지 못하며, 단지 평소처럼 localhost와 통신할 뿐입니다.
iroh의 활용 방법 모델을 서빙하든 요청만 보내든, 모든 노드는 iroh 엔드포인트를 부팅합니다. 이 엔드포인트는 해당 노드의 정체성인 공개 키(Public Key)이자 유일한 네트워크 인터페이스입니다. 중앙 서버는 존재하지 않습니다. iroh는 홀 펀칭(hole-punching), NAT 통과(NAT traversal), 릴레이 폴백(Relay fallback) 등을 처리하여, 위치에 상관없이 두 노드 간의 직접적이고 인증된 QUIC 연결을 엽니다. 이를 공용 인터넷 너머로도 유지하기 위해 Mesh LLM은 서로 다른 지역에서 두 개의 iroh 릴레이를 운영합니다. 따라서 직접 연결할 수 없는 노드들도 항상 가까운 대체 경로를 확보할 수 있습니다.
전체 프로토콜은 QUIC의 ALPN 협상을 기반으로 합니다. ALPN은 다음 세 가지가 있습니다:
ALPN | 전송 내용 mesh-llm/1 | 메인 메시: 가십(Gossip, 통신), 라우팅, HTTP 터널, 플러그인 채널 mesh-llm-control/1 | 소유자 제어 평면: 환경설정 동기화, 소유권 증명 skippy-stage/2 | 분할 모델을 위한 지연 시간에 민감한 활성화 값(Activation) 전송
메인 mesh-llm/1 연결 내부에서 모든 것은 스트림의 종류를 알려주는 단일 선행 바이트가 태그로 붙은 양방향 QUIC 스트림입니다. 하나의 연결이 가십, 추론, 경로 쿼리 및 피어 수명 주기 이벤트를 모두 운반하며, 이는 모두 첫 번째 바이트로 역다중화(Demux)됩니다:
Byte | 스트림 타입 | 설명 0x01 | GOSSIP | 피어 알림... (이하 원문 누락)