Mesh LLM - iroh 기반 분산 AI 컴퓨팅

6 hours ago 4
  • 여러 머신에 흩어진 GPU와 메모리를 하나의 컴퓨팅 자원으로 묶어, 로컬 실행·피어 전달·분할 실행을 OpenAI 호환 API 하나로 제공함
  • 요청은 로컬 GPU나 모델을 적재한 피어에서 처리되며, 한 머신에 들어가지 않는 모델은 여러 노드에 파이프라인 단계로 나눠 실행할 수 있음
  • 플러그인 기반 카탈로그에는 노트북용 5억 파라미터 모델부터 235B MoE 모델까지 40개 이상이 포함되며, 클라이언트는 내부 배치와 관계없이 localhost:9337/v1만 호출함
  • 각 노드는 공개키를 ID이자 유일한 네트워크 표면으로 쓰는 iroh 엔드포인트를 실행하고, 중앙 서버 없이 NAT 통과·홀 펀칭·릴레이 대체 경로를 거쳐 인증된 QUIC 연결을 구성함
  • 18MB 소프트웨어로 공개 메시나 사설 배포를 구성할 수 있으며, 향후 iroh Swift SDK와 ACP를 지원하는 모바일 앱을 통해 폐쇄형 서버 의존도를 낮출 계획임

외부 데이터센터 대신 기존 하드웨어 활용

  • 일반적인 LLM 이용 방식은 외부 사업자의 GPU 데이터센터와 사용량 기반 API에 의존하므로, 사용량이 늘수록 비용도 커짐
  • 외부 서비스로 프롬프트를 보내면 사용자가 다음 요소를 직접 통제하기 어려움
    • 모델 업데이트 시점
    • 데이터가 전달되는 위치
    • 모델이 사용하는 메모리와 기반 하드웨어
    • 가격과 개인정보 처리 정책의 변경
  • 사무실·창고·책상 아래에 이미 GPU를 보유한 기업과 서비스에는 여러 머신을 하나의 컴퓨팅 자원처럼 활용할 수단이 필요함
  • Mesh LLM은 보유한 GPU와 메모리를 원하는 수의 머신에 걸쳐 묶어 더 큰 모델을 실행하고, 연산 자원을 팀 내부에서 비공개로 또는 외부와 공개적으로 공유하도록 설계됨

요청을 처리하는 세 가지 경로

  • 표준 OpenAI 클라이언트에서 http://localhost:9337/v1을 호출하면 메시가 요청의 실제 실행 위치를 결정함
  • 요청은 다음 세 경로 가운데 하나로 처리됨
    • 현재 머신의 로컬 GPU에서 모델 실행
    • 필요한 모델을 이미 적재한 피어로 요청 전달
    • 한 머신에 들어가지 않는 모델을 여러 머신에 걸쳐 파이프라인 방식으로 분할
  • 사용자는 노드 하나로 시작해 필요할 때 더 추가할 수 있으며, OpenAI 클라이언트는 내부 라우팅이나 분할 실행 방식을 알 필요가 없음

플러그인 구조와 모델 카탈로그

  • 플러그인은 매니페스트에서 제공 기능을 선언하고, 런타임은 이를 시작해 호출을 라우팅함
  • 각 플러그인의 기능은 MCP·HTTP·추론·메시 이벤트를 통해 노출됨
  • 기본 카탈로그에는 40개 이상의 모델이 포함됨
    • 노트북에서 실행할 수 있는 약 5억 파라미터 모델
    • 최대 235B 규모의 전문가 혼합(Mixture-of-Experts) 모델

Skippy 분할 실행

  • 대형 모델을 위한 분할 모드는 내부적으로 Skippy라고 부름
  • 모델의 계층 범위를 단계별로 나눠 각 노드에 배치함
    • 한 노드가 계층 0~15를 담당
    • 다음 노드가 계층 16~31을 담당
    • 이후 계층도 같은 방식으로 파이프라인 끝까지 분배
  • 한 단계에서 생성된 활성값(activation) 이 다음 단계로 전달되므로, 개별 머신에는 들어가지 않는 모델도 여러 중간급 머신을 결합해 실행할 수 있음
  • 분할 과정은 OpenAI 클라이언트에 드러나지 않으며, 클라이언트는 계속 로컬 엔드포인트만 호출함

iroh 기반 P2P 네트워크

  • 모델을 제공하는 노드와 요청만 보내는 노드 모두 iroh 엔드포인트를 시작함
  • 엔드포인트는 세 가지 역할을 맡음
    • 노드의 ID
    • 공개키
    • 노드가 외부에 노출하는 유일한 네트워크 표면
  • iroh는 중앙 서버 없이 홀 펀칭, NAT 통과, 릴레이 대체 경로를 처리해 서로 다른 위치의 노드 사이에 직접적이고 인증된 QUIC 연결을 구성함
  • 직접 연결할 수 없는 노드를 위해 서로 다른 지역에서 iroh 릴레이 2개를 운영하며 가까운 대체 경로를 제공함
  • 공개키로 머신을 지정하고 인증된 NAT 통과 QUIC를 사용할 수 있어, 피어로 요청을 전달하거나 다음 파이프라인 단계로 활성값을 보내는 작업이 엔드포인트 ID만 다른 동일한 통신 기본 요소로 처리됨

QUIC ALPN으로 프로토콜 구분

  • 전체 프로토콜은 QUIC의 ALPN 협상을 사용하며 용도에 따라 세 가지로 나뉨
    • mesh-llm/1: 가십, 라우팅, HTTP 터널, 플러그인 채널을 포함한 기본 메시
    • mesh-llm-control/1: 설정 동기화와 소유권 증명을 담당하는 소유자 제어 평면
    • skippy-stage/2: 분할 모델에서 지연 시간에 민감한 활성값 전송
  • mesh-llm/1 연결에서는 모든 작업이 양방향 QUIC 스트림으로 전달되며, 스트림의 첫 번째 바이트가 유형을 식별함
    • 0x01 GOSSIP: 모델, GPU, RTT, 기능을 포함한 피어 공지
    • 0x04 TUNNEL_HTTP: 피어로 프록시되는 추론 요청
    • 0x05 ROUTE_REQUEST: 피어가 호스팅하는 모델 조회
    • 0x06 PEER_DOWN: 연결이 끊긴 피어 알림
    • 0x07 PEER_LEAVING: 정상 종료 알림
    • 0x08 PLUGIN_CHANNEL: 플러그인 RPC
    • 0x0e DIRECT_PATH_REQUEST: NAT 통과를 위한 직접 주소 공유
  • 하나의 연결에서 가십, 추론, 경로 조회, 피어 수명주기 이벤트를 처리하고, 선행 바이트로 각 스트림을 역다중화함

보안 전송과 메시 제어의 분리

  • iroh는 머신 사이의 보안 전송 계층을 제공함
  • Mesh LLM은 그 위에 자체 가십 계층을 구축해 다음 정책을 직접 통제함
    • 메시 참여를 허용할 대상
    • 호환 가능한 버전
    • 신뢰할 피어

설치와 향후 지원

  • 18MB의 경량 소프트웨어를 설치해 공개 메시에 참여하거나 사설 배포를 구성할 수 있음
  • 표준 OpenAI 클라이언트에는 localhost:9337/v1 엔드포인트로 노출됨
  • iroh Swift SDK로 모바일 앱을 개발할 계획이며, 다른 클라이언트도 메시에 참여할 수 있도록 새로운 에이전트 표준인 ACP 지원을 준비함
  • 프로젝트는 P2P 활용을 늘리고 폐쇄형 서버와 종속성을 줄이는 것을 지향함
  • 소스 코드Mesh LLM 웹사이트에서 프로젝트를 확인할 수 있음

iroh 네트워킹 라이브러리

  • iroh는 장치 간 연결을 제공하는 오픈소스 네트워킹 라이브러리로, 준비된 프로토콜을 조합하거나 단순한 통신 추상화 위에 사용자 정의 프로토콜을 구성할 수 있음
  • 이미 프로덕션 환경의 수십만 대 장치에서 실행되고 있음
  • 문서, 소스 코드, Discord 채널을 제공함
Read Entire Article