Llama.cpp Runner | Przewodnik Linux

Profesjonalna automatyzacja klastra obliczeniowego Multi-GPU

Oparty na dynamicznym skrypcie powłoki Bash ze wsparciem RPC

ŚRODOWISKO: Linux (Bash) Jednostka Inferencyjna High-Performance

Centrum Pobierania

llama-run.py 17 KB

Główny skrypt Bash. Zarządza pamięcią, interfejsem wyboru backendu (CUDA/ROCm/Vulkan) i flagami serwera.

Pobierz Skrypt

Archiwum / Moduły Dodatkowe

llama-run_old.py 03.29 • 9.5 KB
Pobierz
llama-run-en.py 04.03 • 17 KB
Pobierz
mi50.py 03.29 • 8.2 KB
Pobierz
rtx.sh 03.29 • 4.2 KB
Pobierz
hostrpc.sh 03.29 • 2.9 KB
Pobierz

Automatyczne Wykrywanie VRAM

W systemach Linux skrypt oblicza dostępną pamięć w pełni autonomicznie. Wykorzystuje do tego natywne narzędzia dla każdego środowiska:

NVIDIA (CUDA): Bezpośredni odczyt z nvidia-smi.
AMD (ROCm): Bezpośredni odczyt z rocm-smi.

Zarządzanie RPC

Flaga serwera RPC jest automatycznie wstrzykiwana podczas uruchamiania. Ustaw poniższą zmienną, aby dodać dodatkowe węzły klastra.

# np. "127.0.0.1:50052,192.168.1.10:50052"
RPC_TARGETS=""

📡 Logika Monitorowania Statusu

Skrypt demonizuje proces serwera używając nohup, a następnie monitoruje jego rzeczywistą gotowość za pomocą protokołu HTTP, co gwarantuje pełne załadowanie modelu do VRAM przed zwolnieniem konsoli:

Brak Odpowiedzi (Oczekiwanie)
Serwer alokuje wagi i bufor K/V w locie. Pętla curl pozostaje aktywna.
HTTP 200 na Porcie
Model jest załadowany. Podgląd na żywo: ./llama-run.py logs<port>.
Zautomatyzowany Cykl Życia
Wybranie nowego modelu na tym samym porcie zamyka poprzednią instancję llama-server, zwalniając pamięć VRAM przed startem.

Konfiguracja Zmiennych (Plik skryptu)

Zmienna Wartość Domyślna / Opis
MODEL_PATH "/home/models/gguf" - Lokalizacja modeli na serwerze.
LLAMA_SERVER_PATH "/home/doman/llama.cpp/bin/llama-server" - Ścieżka do binariów.
CONTEXT "-c 4000" - Definiuje limit tokenów bufora kontekstu.
CACHE_TYPE_K / V "q4_0" - Sprzętowa kwantyzacja pamięci K/V.
OVERHEAD_MB 1536 - Ścisły margines bezpieczeństwa VRAM (bufor).
MAX_WAIT 120 - Czas oczekiwania przed ubiciem zawieszonego procesu.
BACKEND "" - Zostaw puste, aby wymusić pytanie w konsoli.
RPC_TARGETS "" - Puste wyłącza wstrzykiwanie flagi --rpc.

Struktura Ścieżek (Drzewo)

📂 /home/doman/                             # Katalog domowy użytkownika
  📂 llama.cpp/build-master/bin/
    🚀 llama-server                  # Skompilowane binarie serwera C++
  📂 start_llama/
    📜 llama-run.py                  # Skrypt automatyzacji Bash (+x)
  📝 server.log                         # Logi pracy pierwszej instancji
  📝 server8081.log                     # Logi pracy dla kolejnych portów

📂 /home/models/gguf/                        # Repozytorium plików wag
  📂 mmproj/                            # Folder dla bibliotek wizyjnych
    👁️ mmproj-FINAL-Bench_Darwin.gguf
  📦 Bielik-11B-v3.0-Instruct.Q4_K_M.gguf
  📦 FINAL-Bench_Darwin-35B-A3B-Q8_0.gguf

Bezpieczne Zamykanie Serwera

Aby zwolnić VRAM i bezpiecznie zamknąć karty klastra, wpisz w terminalu: ./llama-run.py stop (dla jednej instancji) lub ./llama-run.py stopall (aby wymusić zamknięcie wszystkich aktywnych procesów). Skrypt wyśle sygnał zakończenia (pkill) precyzyjnie w odpowiednie instancje serwera.

Aktualizacja 1: Obsługa wielu instancji, modeli Vision oraz dynamicznych portów

Nowe funkcje i zmiany

  • Wsparcie dla wielu instancji: Skrypt skanuje zdefiniowany zakres portów (domyślnie 8080-8085) i pozwala na uruchomienie wielu niezależnych serwerów llama.cpp w tym samym czasie.
  • Rozbudowany system logów: Pierwsza instancja tworzy domyślny plik server.log. Każda kolejna instancja generuje własny plik logów z numerem portu, np. server8081.log.
  • Wykrywanie modułów Vision (Multimodal): Skrypt automatycznie przeszukuje zasoby pod kątem bibliotek mmproj odpowiadających głównemu modelowi. Waga modułu wizyjnego jest dynamicznie doliczana do ogólnego zapotrzebowania na VRAM. Użytkownik decyduje o jego załadowaniu w interaktywnym monicie.

Nowe komendy sterujące

  • help - wyświetla polecenia oraz zmienne (w tym nową: PARALLEL).
  • stop - zamyka instancję (jeśli działa tylko 1) lub listuje aktywne.
  • stopall - awaryjnie zamyka wszystkie instancje i zwalnia VRAM.
  • stop<port> - (np. stop8080) zamyka precyzyjnie serwer na porcie.
  • logs<port> - (np. logs8081) podgląd logów na żywo dla wybranego serwera.

Wymagania dla modeli Vision (Ważne)

Aby skrypt mógł poprawnie wykryć i załadować moduł wizyjny, plik biblioteki musi znajdować się w dedykowanym podkatalogu mmproj wewnątrz Twojego głównego katalogu z modelami.

/home/models/gguf/ ➔ Główne modele
/home/models/gguf/mmproj/ ➔ Biblioteki wizyjne (np. mmproj-model.gguf)
doman@LianLi: ~/start_llama
doman@LianLi:~/start_llama$ ./llama-run.py
🔍 Checking ports (8080-8085)...
🌐 Found server on port(s): 8080

👉 Enter port to update server or start new [8081]: 8081
🔧 Wybierz środowisko (Backend):
  1) CUDA (NVIDIA)
  2) ROCm (AMD)
  3) Vulkan (Połączone GPU / Wszystkie dostępne w systemie)
👉 Twój wybór (1-3): 2

🧙‍♂️ Skanowanie katalogu /home/models/gguf...
📊 Całkowita zsumowana pamięć VRAM: 32752 MB
📊 Dostępna pamięć VRAM: 27430 MB (Zapas na kontekst: 1536 MB)

✅ Modele mieszczące się w aktualnie wolnej pamięci (VRAM):
------------------------------------------------------
   1) Bielik-11B-v3.0-Instruct.Q4_K_M.gguf               [ 6,3G] 
   3) Bielik-4.5B-v3.0-Instruct.Q8_0.gguf                 [ 4,8G] 
  11) NVIDIA-Nemotron3-Nano-4B-Q4_K_M.gguf                [ 2,7G] (Currently running on 8080)
  15) FINAL-Bench_Darwin-35B-A3B-Q8_0.gguf                [  16G] [vision ✔ 0.9GB]
   5) GLM-4.7-Flash-Q8_0.gguf                             [  30G] (Wymaga zwolnienia VRAM)
------------------------------------------------------

👉 Wybierz numer modelu (1-19) lub wciśnij CTRL+C aby anulować: 15

👉 VL library detected (mmproj-FINAL-Bench_Darwin.gguf). Load vision module? [Y/n]: Y
✅ Vision module will be loaded.

🧹 Zamykanie poprzednich instancji llama-server na porcie 8081...
🚀 Uruchamiam serwer z modelem: FINAL-Bench_Darwin-35B-A3B-Q8_0.gguf na porcie 8081
⏳ Oczekiwanie na załadowanie modelu i alokację bufora w VRAM...

> Sprawdzanie wielkości kontekstu...
✅ Serwer uruchomiony z modelem FINAL-Bench_Darwin-35B-A3B-Q8_0.gguf
✅ Serwer wystartował w tle na porcie 8081. Poprawnie ustawiono wielkość context tokenów.
📄 Logs saved to: /home/doman/server8081.log
doman@LianLi:~/start_llama$