Profesjonalna automatyzacja klastra obliczeniowego Multi-GPU
Oparty na dynamicznym skrypcie powłoki Bash ze wsparciem RPC
Główny skrypt Bash. Zarządza pamięcią, interfejsem wyboru backendu (CUDA/ROCm/Vulkan) i flagami serwera.
Pobierz Skrypt
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.
Flaga serwera RPC jest automatycznie wstrzykiwana podczas uruchamiania. Ustaw poniższą zmienną, aby dodać dodatkowe węzły klastra.
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:
./llama-run.py logs<port>.
llama-server, zwalniając pamięć VRAM przed startem.
| 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. |
📂 /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
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.
llama.cpp w tym samym czasie.server.log. Każda kolejna instancja generuje własny plik logów z numerem portu, np. server8081.log.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.PARALLEL).stop8080) zamyka precyzyjnie serwer na porcie.logs8081) podgląd logów na żywo dla wybranego serwera.
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.
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$