LLM Orchestrator Microservices
System do uruchamiania i testowania modeli językowych (LLM) w architekturze mikrousług z wykorzystaniem Docker.
Funkcjonalności
- Architektura mikrousług - model-service i api-gateway
- Optymalizacja wydajności - cachowanie pakietów i modeli
- Łatwe testowanie - środowisko testowe z noVNC i przeglądarką
- Monitorowanie - dashboard Traefik do monitorowania mikrousług
- Skalowalność - możliwość uruchomienia wielu instancji model-service
Wymagania
- MicroK8s (zalecane) lub inny klaster Kubernetes
- kubectl (lub microk8s kubectl)
- Minimum 4GB RAM dla podu modelu LLM
- Dostęp do internetu (do pobierania obrazów i modeli)
Szybki start
1. Instalacja MicroK8s i wymaganych narzędzi
sudo snap install microk8s --classic
sudo microk8s enable dns storage
2. Budowa obrazu model-service i import do MicroK8s
# Buduj obraz Docker lokalnie
cd microservices/model-service
sudo docker build -t llm-model-service:latest .
# Zapisz i zaimportuj do MicroK8s
sudo docker save llm-model-service:latest | sudo microk8s ctr image import -
3. Uruchomienie usług na Kubernetes
cd ../../k8s
sudo microk8s kubectl apply -f model-service-deployment.yaml
sudo microk8s kubectl apply -f novnc-deployment.yaml
4. Testowanie systemu
- Otwórz przeglądarkę i przejdź do adresu:
http://<IP_NODES>:30080(Użyj polecenia
sudo microk8s kubectl get nodes -o wideaby znaleźć IP) - Zaloguj się do noVNC używając hasła:
password - W przeglądarce Firefox wewnątrz noVNC, otwórz:
file:///config/test_llm.html
5. Monitorowanie systemu
Aby monitorować stan usług i postęp ładowania modelu LLM:
sudo microk8s kubectl get pods,pvc,svc
Możesz sprawdzić logi podów:
sudo microk8s kubectl logs <nazwa-poda>
./monitor.sh --live- monitorowanie w czasie rzeczywistym (aktualizacja co 5 sekund)./monitor.sh --summary- wyświetlenie tylko podsumowania statusu./monitor.sh --model- monitorowanie procesu ładowania modelu./monitor.sh --api- monitorowanie statusu API./monitor.sh --help- wyświetlenie wszystkich dostępnych opcji
4. Zatrzymanie systemu
./stop.sh
Rozwiązywanie problemów
Jeśli występują problemy z uruchomieniem kontenerów za pomocą run.sh, użyj alternatywnego skryptu:
./reset_and_run.sh
Ten skrypt całkowicie resetuje środowisko Docker i uruchamia kontenery ręcznie, co pomaga rozwiązać problemy z kompatybilnością Docker/docker-compose.
Problem z ładowaniem modelu
Jeśli model-service nie działa lub API zwraca “Service Unavailable”, użyj skryptu naprawczego:
sudo ./fix_model_service.sh
Ten skrypt automatycznie pobiera niezbędne pliki modelu i ponownie uruchamia kontener model-service.
Dokumentacja
Szczegółowa dokumentacja jest dostępna w katalogu docs:
- Testowanie z noVNC - instrukcje dotyczące testowania systemu z przeglądarką i noVNC
- Migracja do mikrousług - informacje o migracji do architektury mikrousług
- Monitorowanie - instrukcje dotyczące monitorowania systemu
Struktura projektu
llm-orchestrator-min/
├── k8s/
│ ├── model-service-deployment.yaml # Manifesty Kubernetes dla model-service i cache
│ └── novnc-deployment.yaml # Manifesty Kubernetes dla noVNC
├── microservices/ # Katalog z mikrousługami
│ ├── api-gateway/ # Brama API (Traefik)
│ └── model-service/ # Usługa modelu LLM
├── models/ # Katalog na pliki modeli
├── .cache/ # Katalog cache
│ ├── pip/ # Cache pakietów pip
│ └── models/ # Cache pobranych modeli
└── docs/ # Dokumentacja
Konfiguracja
Główne parametry konfiguracyjne są dostępne w plikach manifestów Kubernetes (k8s/model-service-deployment.yaml):
- MODEL_PATH: Ścieżka do plików modelu
- USE_INT8: Flaga włączająca kwantyzację INT8
- MODEL_SERVICE_PORT: Port, na którym nasłuchuje usługa modelu
Licencja
Ten projekt jest udostępniany na licencji MIT.