Kafila는 신뢰하는 이기종 소비자 PC들을 묶어 LLM을 서빙한다
Kafila: Serving Large Language Models on a Trusted Set of Heterogeneous Commodity Machines
무엇인가
연구실이나 친구 모임이 각자 가진 노트북·데스크톱·워크스테이션은 하나하나로는 쓸 만한 LLM을 돌리지 못한다. 기존 해법(Petals, SWARM, Parallax)은 누구나 참여할 수 있는 개방형 스웜으로 이 용량을 모은다. 그런 스웜은 같은 블록을 여러 피어가 들고 있어 느린 참여자를 우회할 수 있다는 점에 기대는데, 신뢰하는 기기만 받는 그룹은 그 전제를 쓸 수 없다. 멤버십을 제한하는 순간 우회할 여분이 사라지고, 인정한 기기는 아무리 느려도 전부 써야 하며, 파이프라인은 가장 느린 스테이지 속도로 진행된다. 즉 서빙을 시작하기 전에 분할을 정확히 끝내야 한다. 여기에 더해 기기들은 각자 다른 가정용·기관용 NAT 뒤에 있어 서로 연결되는 방법을 알려주기 전에는 통신할 수 없고, 인접한 한 쌍이 연결되지 않으면 세션 자체가 만들어지지 않는다.
어떻게 동작하나
Kafila는 이 상황을 프로토콜과 플래너 두 부분으로 나눠 해결한다. 항상 켜져 있는 랜데부 서비스는 세션 등록과 NAT 통과용 시그널링만 담당하며 모델 가중치도, 추론도 갖지 않는다. 호스트가 세션을 만들고 멤버는 세션 코드로 참여한다. 멤버들은 링으로 배치되고, 임베딩·언임베딩·샘플러를 담은 헤드는 누가 세션을 열었는지가 아니라 플래너가 정한다. 모든 멤버는 랜데부와 STUN 서버를 상대로 O(m)번만 프로브해 자신의 NAT 동작을 분류하고, 그로부터 모든 쌍의 연결 가능성을 O(m²) 산술 연산(패킷 없음)으로 예측한 뒤, 실제로 계획이 쓰는 엣지만 O(m)번 검증한다. 데이터 평면은 QUIC 위에서 돌고, 모든 엣지에 홀 펀칭 직결을 먼저 시도하며 실패한 곳만 랜데부를 경유해 릴레이한다. 각 엣지의 QUIC 세션은 TLS 1.3으로 종단간 암호화되어 랜데부는 릴레이하는 경우에도 암호문만 본다.
무엇과 다른가
플래너의 비용 모델은 관측값에 맞춰 튜닝한 것이 아니라 유도한 것이다. 요청 하나의 토큰당 회로 시간은 각 멤버의 연산 스테이지 비용의 합과 링 엣지 지연의 합이고, 스테이지 비용은 고정 디스패치 오버헤드에 블록 수 곱하기 블록 바이트 크기 나누기 측정된 메모리 대역폭을 더한 값이며, 헤드인 기기에는 임베딩·언임베딩 크기 나누기 대역폭이 추가로 붙는다. 배치 크기 1 디코딩은 메모리 대역폭에 묶이기 때문이다. 링 순서는 먼저 RFC 4787의 NAT 동작 분류(permissive/restrictive/ordinary)에 대한 계수 논증으로 정하고, 이어서 릴레이 엣지 비용을 양쪽 멤버의 랜데부 왕복시간 합으로, 직결 엣지를 삼각부등식 하한 |r_A − r_B|로 같은 단위로 값을 매겨 최저 비용 순서를 전수 탐색한다. 모든 엣지가 릴레이여야 하는 경우 점수가 동일해지는 맹점은 링 분리도로 동점을 깬다. 순서를 먼저 고정하면 블록 배치는 체인-온-체인 분할이 되어 다항 시간에 정확히 풀린다. 플래너는 O(k·m)개의 후보 병목값을 정렬해 이분 탐색하고, 좌에서 우로 각 기기에 한도 내 최대 블록을 주는 탐욕 패스로 실현 가능성을 판정하며, 전체 복잡도는 O(km log km)다. 헤드 배치는 링을 m번 회전시켜 각각 정확히 한 번씩 풀어 가장 낮은 병목을 주는 회전을 고른다. 어떤 배치도 들어맞지 않으면 세션을 거절한다.
어떻게 쓰나
평가는 세 개의 플릿에서 이뤄졌다. 하나의 공유 LAN, 미국 중부, 두 대륙에 걸친 5대 기기이며 모델은 Qwen3-8b, 14b, 32b다. 비교 대상은 GPipe식 균등 분할과 exo식 메모리 비례 분할이다. Kafila의 가장 느린 스테이지는 균등 분할보다 최대 5.2배, 메모리 비례 분할보다 최대 3.0배 짧았고, 투입된 기기 시간 중 실제로 연산하는 비율은 75~87%로 두 휴리스틱이 절반 아래로 떨어지는 것과 대비됐다. 두 휴리스틱 모두 메모리는 중간인데 읽기 속도가 가장 빠른 카드보다 10배 느린 노트북에 감당 못 할 몫을 몰아주는 것이 원인이다. 대륙 간 플릿에서는 18GB 노트북에 동시 요청 4개용 캐시를 예약한 뒤에는 Qwen3-32b를 균등 분할로는 아예 올릴 수 없지만, 플래너는 불균등 분할로 서빙에 성공한다. 네트워크 오버헤드는 LAN 12%에서 대륙 간 94%까지 변했고, LAN에서는 같은 분할이 균등 대비 1.56배, 메모리 비례 대비 1.25배 처리량을 냈다.
전제와 한계
동시 사용자 4명 조건에서 이 우위는 줄어들지 않고 커진다. LAN에서 플래너의 분할은 전체 처리량을 4.0배로 올린 반면 메모리 비례는 2.5배, 균등은 2.0배에 그쳤고, 단일 사용자에서 1.6배였던 균등 대비 우위가 4명에서는 3.2배로 벌어졌다. 불균형 분할은 이미 한 명으로도 포화된 과부하 스테이지에 요청이 쌓이는 반면, 균형 잡힌 분할만 여유를 갖기 때문이다. 네트워크가 느린 플릿에서는 네트워크가 유휴를 제공해 모든 분할이 3.5~4.0배로 수렴한다. NAT 실측에서는 미국 중부 5개 멤버가 서로 다른 공용망에 있어 모든 링 엣지가 중앙값 1.29초에 직결됐고, 대륙 간 플릿에서는 같은 장소의 두 멤버만 2.24초에 직결되고 나머지 네 엣지는 중앙값 20.8초로 릴레이되어 토큰당 활성값 바이트의 약 5분의 4가 암호문으로 랜데부를 건넜다. 9개 NAT 클래스 쌍 에뮬레이션에서 예측은 7개를 맞혔고 2개는 틀렸는데, 두 오류 모두 실제로는 직결되는 것을 릴레이로 예측한 안전한 방향의 오류였다. 비용 모델은 아무것도 피팅하지 않았는데도 165개 스테이지에서 스테이지별 연산 시간을 중앙값 18% 오차로 예측했다.
개발자 입장에서 이 논문이 주는 실무적 신호는 명확하다. 여러 대의 이기종 기기로 사설 추론을 돌릴 때 균등 분할이나 메모리 비례 분할은 메모리 순위와 속도 순위가 일치한다는 가정에 기대는데, 소비자 기기에서는 그 가정이 자주 깨진다. 메모리 대역폭과 디스패치 오버헤드를 먼저 측정하고, 그 측정값으로 분할과 헤드 위치를 함께 결정하는 편이 낫다. 또한 기기 간 연결성은 사전에 알 수 없으므로 링 순서를 측정된 도달성에서 뽑고, 릴레이 비용을 직결 비용과 같은 단위로 계산해야 한다. 캐시 예약과 동시 요청 수가 분할 가능성 자체를 좌우한다는 점, 즉 분할이 성능 문제이자 수용 가능성 문제라는 점도 실무에서 확인해야 할 부분이다.
저자들이 밝힌 한계와 전제도 분명하다. 세션은 개방형 스웜이 가진 이중화를 포기하는 대신 멤버십·성능·연결성이 서빙 전에 알려진 그룹을 얻는다. 평가에서 가정용 업링크는 재현하지 않았고, 이는 모델 가져오기 시간에 영향을 줄 뿐 보고한 서빙 속도에는 영향이 없다고 밝힌다. 기기 간 간헐성과 이탈(churn)은 이 논문의 범위 밖이다. 세션 중간에 멤버십이 바뀌면 재계획과 캐시 복구가 필요하고, 모바일 멤버는 플래너가 조건으로 삼는 두 속성을 바꾸므로 얼마나 자주 재계획할지가 남은 문제다. 또한 도착하지 않은 프롬프트를 위해 예약된 캐시를 멤버 간 공유하는 방향도 미해결 과제로 남겨두었다.