Mesh-LLM – rozproszone uruchamianie modeli językowych LLM

Czym jest i do czego służy Mesh-LLM?

Uruchamianie naprawdę potężnych modeli językowych (takich jak wielomiliardowe wersje DeepSeek, Qwen czy Llama) w domowym labie lub firmowej infrastrukturze często napotyka na jeden brutalny problem: brak wystarczającej ilości pamięci VRAM na pojedynczej maszynie. Tutaj na scenę wkracza Mesh-LLM.

Mesh-LLM to otwartoźródłowy projekt napisany w języku Rust, który działa jako rozproszony silnik sztucznej inteligencji. Pozwala on połączyć zasoby obliczeniowe (Karty GPU, pamięć RAM/VRAM) z wielu różnych komputerów w jedną wspólną sieć (mesh). Zamiast wydawać dziesiątki tysięcy złotych na potężny serwer z kilkoma kartami graficznymi, możesz spiąć ze sobą kilka tańszych maszyn, laptopy, a nawet stacje robocze, tworząc jeden potężny klaster do inferencji modeli LLM. Sieć sama decyduje, czy dany model zostanie uruchomiony lokalnie, czy też zapytanie zostanie przekierowane do innego węzła, lub co najważniejsze czy model zostanie podzielony na mniejsze fragmenty (warstwy) i przetworzony rozproszenie.

Co istotne z punktu widzenia integracji, cały klaster wystawia jedno, w 100% kompatybilne z OpenAI API (domyślnie na porcie 9337). Oznacza to, że podepniesz pod to dowolne narzędzie AI, aż po własne skrypty i aplikacje.

Kluczowe funkcjonalności

Rozwiązanie to oferuje kilka mechanizmów, które sprawiają, że wyróżnia się na tle standardowych lokalnych serwerów takich jak Ollama czy vLLM:

  • Pule zasobów i podział modeli (Skippy Stage Splits): Jeśli model jest zbyt duży na jedną maszynę (np. DeepSeek V3/R1), Mesh-LLM potrafi podzielić go na tzw. warstwy (layers) i rozrzucić po kilku węzłach. Zapytanie przechodzi wtedy płynnie przez sieć maszyn.
  • Kompatybilność wsteczna z API OpenAI: Dla aplikacji klienckiej rozproszony klaster wygląda jak jeden, standardowy serwer OpenAI. Nie musisz przepisywać swoich aplikacji klienckich.
  • Mixture-of-Agents (MoA): Sieć potrafi przyjąć zapytanie wysłane do specjalnego modelu model: „mesh”, rozesłać je równolegle do wielu różnych modeli dostępnych w klastrze, a następnie samodzielnie przeanalizować ich odpowiedzi i zwrócić Ci jedną, najbardziej optymalną.
  • Elastyczne środowiska uruchomieniowe (Native Runtimes): Wspiera silniki sprzętowe dla CUDA (Nvidia), ROCm (AMD), Metal (Apple Silicon), Vulkan oraz zwykłe CPU. Działa bezproblemowo na Linuksie, macOS i Windowsie.
  • Łatwość klastrowania: Węzły mogą działać w bezpiecznej, prywatnej sieci, lub zostać wpięte do globalnego, publicznego mesha (wykorzystując protokół Nostr do mechanizmu discovery).

Instrukcja instalacji za pomocą docker compose (Linux, macOS, Windows)

Najwygodniejszym sposobem na uruchomienie własnego węzła Mesh-LLM, szczególnie jeśli chcemy utrzymać porządek w systemie i łatwo zarządzać usługami, jest użycie stosu kontenerowego.

Poniżej przygotowałem uniwersalny plik docker-compose.yml. Tworzy on węzeł udostępniający konsolę webową (port 3131) oraz API (port 9337).

services:
  mesh-llm:
    # Wykorzystujemy oficjalne repozytorium obrazów OCI projektu Mesh-LLM
    image: ghcr.io/mesh-llm/mesh-llm:latest
    container_name: mesh-llm-node
    restart: unless-stopped
    ports:
      - "9337:9337" # API OpenAI
      - "3131:3131" # Web UI Console
    volumes:
      - mesh_data:/root/.mesh-llm  # Konfiguracja i tożsamość węzła
      - ./models:/models           # Ścieżka, w której trzymamy pobrane pliki GGUF
    command: serve --auto --listen-all
    
    # -------------------------------------------------------------
    # Zależnie od systemu i akceleracji sprzętowej, odkomentuj
    # odpowiednią sekcję 'deploy', aby udostępnić GPU dla kontenera.
    # -------------------------------------------------------------

    # [1] LINUX / WINDOWS (WSL2) + NVIDIA CUDA:
    # deploy:
    #   resources:
    #     reservations:
    #       devices:
    #         - driver: nvidia
    #           count: all
    #           capabilities: [gpu]
    # environment:
    #   - MESH_LLM_FLAVOR=cuda

    # [2] LINUX + AMD ROCm:
    # devices:
    #   - "/dev/kfd:/dev/kfd"
    #   - "/dev/dri:/dev/dri"
    # environment:
    #   - MESH_LLM_FLAVOR=rocm
    
    # [3] macOS (APPLE SILICON - METAL) używając np. OrbStack / Docker Desktop:
    # Zazwyczaj wystarczy podstawowa konfiguracja, jeśli silnik dockera ma dostęp do zasobów Maca.
    # Można ew. wymusić użycie silnika dla Apple:
    # environment:
    #   - MESH_LLM_FLAVOR=metal

volumes:
  mesh_data:

Konsola zarządzania będzie dostępna pod adresem: http://localhost:3131, a API pod http://localhost:9337/v1.

Linki do projektu

Jeśli chcesz zajrzeć pod maskę lub zgłosić się jako węzeł do publicznej sieci Mesh, wszystkie zasoby znajdziesz poniżej: