Skip to content

Commit 924d5e3

Browse files
update
1 parent b29d7ba commit 924d5e3

25 files changed

Lines changed: 3519 additions & 449 deletions
Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
1-
__pycache__/
2-
*.pyc
3-
.git/
4-
.gitignore
5-
.DS_Store
6-
*.log
7-
*.tmp
8-
.env
9-
*.pyo
10-
*.pyd
11-
*.db
12-
*.sqlite3
13-
*.md
14-
tests/
15-
test-examples/
16-
node_modules/
17-
*.egg-info
1+
**/.git
2+
**/.gitignore
3+
**/.vscode
4+
**/__pycache__
5+
**/*.pyc
6+
**/*.pyo
7+
**/*.pyd
8+
**/.Python
9+
**/env
10+
**/venv
11+
**/.env
12+
**/.venv
13+
**/.idea
14+
**/.coverage
15+
**/.pytest_cache
16+
**/.tox
17+
**/.eggs
18+
**/*.egg-info
19+
**/*.egg
20+
!.cache/pip
21+
!.cache/models
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
# LLM Orchestrator Microservices
2+
3+
System do uruchamiania i testowania modeli językowych (LLM) w architekturze mikrousług z wykorzystaniem Docker.
4+
5+
## Funkcjonalności
6+
7+
- **Architektura mikrousług** - model-service i api-gateway
8+
- **Optymalizacja wydajności** - cachowanie pakietów i modeli
9+
- **Łatwe testowanie** - środowisko testowe z noVNC i przeglądarką
10+
- **Monitorowanie** - dashboard Traefik do monitorowania mikrousług
11+
- **Skalowalność** - możliwość uruchomienia wielu instancji model-service
12+
13+
## Wymagania
14+
15+
- Docker
16+
- docker-compose
17+
- Minimum 4GB RAM dla kontenera modelu LLM
18+
- Dostęp do internetu (do pobierania obrazów Docker i modeli)
19+
20+
## Szybki start
21+
22+
### 1. Uruchomienie systemu
23+
24+
```bash
25+
./run.sh
26+
```
27+
28+
Ten skrypt automatycznie:
29+
- Sprawdza wymagania systemowe
30+
- Wykonuje migrację do mikrousług (jeśli potrzebna)
31+
- Buduje i uruchamia wszystkie kontenery
32+
- Konfiguruje środowisko testowe
33+
34+
### 2. Testowanie systemu
35+
36+
Po uruchomieniu systemu:
37+
38+
1. Otwórz przeglądarkę i przejdź do adresu:
39+
```
40+
http://localhost:6080
41+
```
42+
43+
2. Zaloguj się do noVNC używając hasła:
44+
```
45+
password
46+
```
47+
48+
3. W przeglądarce Firefox wewnątrz noVNC, otwórz:
49+
```
50+
file:///config/test_llm.html
51+
```
52+
53+
### 3. Zatrzymanie systemu
54+
55+
```bash
56+
./stop.sh
57+
```
58+
59+
## Rozwiązywanie problemów
60+
61+
Jeśli występują problemy z uruchomieniem kontenerów za pomocą `run.sh`, użyj alternatywnego skryptu:
62+
63+
```bash
64+
./reset_and_run.sh
65+
```
66+
67+
Ten skrypt całkowicie resetuje środowisko Docker i uruchamia kontenery ręcznie, co pomaga rozwiązać problemy z kompatybilnością Docker/docker-compose.
68+
69+
## Dokumentacja
70+
71+
Szczegółowa dokumentacja jest dostępna w katalogu `docs`:
72+
73+
- [Testowanie z noVNC](docs/NOVNC_TESTING.md) - instrukcje dotyczące testowania systemu z przeglądarką i noVNC
74+
- [Migracja do mikrousług](docs/MICROSERVICES.md) - informacje o migracji do architektury mikrousług
75+
- [Monitorowanie](docs/MONITORING.md) - instrukcje dotyczące monitorowania systemu
76+
77+
## Struktura projektu
78+
79+
```
80+
llm-orchestrator-min/
81+
├── docker-compose.yml # Konfiguracja mikrousług
82+
├── run.sh # Skrypt do standardowego uruchomienia
83+
├── reset_and_run.sh # Skrypt do resetowania i ręcznego uruchomienia
84+
├── stop.sh # Skrypt do zatrzymania systemu
85+
├── setup_novnc_test.sh # Skrypt do konfiguracji środowiska testowego
86+
├── microservices/ # Katalog z mikrousługami
87+
│ ├── api-gateway/ # Brama API (Traefik)
88+
│ └── model-service/ # Usługa modelu LLM
89+
├── models/ # Katalog na pliki modeli
90+
├── .cache/ # Katalog cache
91+
│ ├── pip/ # Cache pakietów pip
92+
│ └── models/ # Cache pobranych modeli
93+
└── docs/ # Dokumentacja
94+
```
95+
96+
## Konfiguracja
97+
98+
Główne parametry konfiguracyjne są dostępne w pliku `docker-compose.yml`:
99+
100+
- **MODEL_PATH**: Ścieżka do plików modelu
101+
- **USE_INT8**: Flaga włączająca kwantyzację INT8
102+
- **MODEL_SERVICE_PORT**: Port, na którym nasłuchuje usługa modelu
103+
104+
## Licencja
105+
106+
Ten projekt jest udostępniany na licencji MIT.

containers/llm-orchestrator-min/docker-compose.yml

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,18 @@ services:
1818

1919
# Model Service
2020
model-service:
21-
build: ./microservices/model-service
21+
build:
22+
context: ./microservices/model-service
23+
dockerfile: Dockerfile
2224
container_name: llm-model-service
2325
environment:
2426
- MODEL_PATH=/app/models/tinyllama
2527
- USE_INT8=true
2628
- MODEL_SERVICE_PORT=5000
2729
volumes:
28-
- model-data:/app/models
30+
- ./models:/app/models
31+
- ./.cache/pip:/root/.cache/pip
32+
- ./.cache/models:/app/.cache/models
2933
networks:
3034
- llm-network
3135
restart: unless-stopped
@@ -34,26 +38,6 @@ services:
3438
limits:
3539
memory: 4G
3640

37-
# Cache Service (można dodać w przyszłości)
38-
# cache-service:
39-
# build: ./microservices/cache-service
40-
# container_name: llm-cache-service
41-
# networks:
42-
# - llm-network
43-
# restart: unless-stopped
44-
45-
# Monitoring Service (można dodać w przyszłości)
46-
# monitoring-service:
47-
# build: ./microservices/monitoring-service
48-
# container_name: llm-monitoring-service
49-
# networks:
50-
# - llm-network
51-
# restart: unless-stopped
52-
5341
networks:
5442
llm-network:
5543
driver: bridge
56-
57-
volumes:
58-
model-data:
59-
driver: local
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
# Testowanie systemu LLM z przeglądarką i noVNC
2+
3+
Ten dokument opisuje procedurę testowania systemu LLM z wykorzystaniem przeglądarki internetowej i noVNC. Pozwala to na wygodne testowanie API i generowanie tekstu bez konieczności instalowania dodatkowych narzędzi na komputerze lokalnym.
4+
5+
## Wymagania
6+
7+
- Docker
8+
- Dostęp do internetu (do pobierania obrazów Docker)
9+
- Minimum 4GB RAM dla kontenera modelu LLM
10+
11+
## Szybki start
12+
13+
System można uruchomić na trzy różne sposoby, w zależności od potrzeb:
14+
15+
### 1. Standardowe uruchomienie (zalecane)
16+
17+
```bash
18+
./run.sh
19+
```
20+
21+
Ten skrypt automatycznie:
22+
- Sprawdza wymagania systemowe (Docker, docker-compose)
23+
- Wykonuje migrację do mikrousług, jeśli nie została jeszcze wykonana
24+
- Tworzy sieć Docker dla komunikacji między kontenerami
25+
- Buduje i uruchamia mikrousługi (model-service i api-gateway)
26+
- Konfiguruje środowisko testowe z noVNC i przeglądarką Firefox
27+
- Przeprowadza testy API, aby upewnić się, że system działa poprawnie
28+
- Wyświetla instrukcje dla użytkownika
29+
30+
### 2. Resetowanie i ręczne uruchomienie (w przypadku problemów)
31+
32+
```bash
33+
./reset_and_run.sh
34+
```
35+
36+
Ten skrypt jest przydatny, gdy występują problemy z uruchomieniem standardowym:
37+
- Całkowicie resetuje środowisko Docker (usuwa wszystkie kontenery, obrazy i sieci związane z projektem)
38+
- Ręcznie buduje i uruchamia kontenery, pomijając docker-compose
39+
- Jest bardziej niezawodny w przypadku problemów z kompatybilnością Docker/docker-compose
40+
41+
### 3. Konfiguracja tylko środowiska testowego
42+
43+
```bash
44+
./setup_novnc_test.sh
45+
```
46+
47+
Ten skrypt konfiguruje tylko środowisko testowe z noVNC i przeglądarką, zakładając że mikrousługi są już uruchomione.
48+
49+
## Zatrzymanie systemu
50+
51+
Aby zatrzymać i usunąć wszystkie kontenery:
52+
53+
```bash
54+
./stop.sh
55+
```
56+
57+
Ten skrypt:
58+
- Zatrzymuje i usuwa wszystkie kontenery mikrousług
59+
- Zatrzymuje i usuwa kontenery środowiska testowego (noVNC, przeglądarka)
60+
- Usuwa sieć Docker
61+
- Pyta użytkownika, czy chce usunąć katalog cache i wolumeny
62+
63+
## Dostęp do środowiska testowego
64+
65+
Po uruchomieniu systemu:
66+
67+
1. Otwórz przeglądarkę i przejdź do adresu:
68+
```
69+
http://localhost:6080
70+
```
71+
72+
2. Zaloguj się do noVNC używając hasła:
73+
```
74+
password
75+
```
76+
77+
3. W przeglądarce Firefox wewnątrz noVNC, otwórz plik:
78+
```
79+
file:///config/test_llm.html
80+
```
81+
82+
4. Możesz teraz testować API LLM:
83+
- Wprowadź prompt w polu tekstowym
84+
- Dostosuj parametry (temperatura, maksymalna długość)
85+
- Kliknij "Generuj tekst"
86+
87+
## Testowanie API bezpośrednio
88+
89+
Możesz również testować API bezpośrednio:
90+
91+
1. Sprawdzenie statusu API:
92+
```bash
93+
curl http://localhost/api/health
94+
```
95+
96+
2. Generowanie tekstu:
97+
```bash
98+
curl -X POST http://localhost/api/generate \
99+
-H "Content-Type: application/json" \
100+
-d '{"prompt":"Opowiedz mi krótką historię o kocie.", "max_length":256, "temperature":0.7}'
101+
```
102+
103+
## Monitorowanie
104+
105+
Dashboard Traefik jest dostępny pod adresem:
106+
```
107+
http://localhost:8080
108+
```
109+
110+
Pozwala on na monitorowanie statusu mikrousług i ruchu sieciowego.
111+
112+
## Rozwiązywanie problemów
113+
114+
### Problem z uruchomieniem kontenerów
115+
116+
Jeśli występują problemy z uruchomieniem kontenerów za pomocą `run.sh`, spróbuj użyć skryptu `reset_and_run.sh`, który całkowicie resetuje środowisko Docker i uruchamia kontenery ręcznie.
117+
118+
### Błąd "ContainerConfig"
119+
120+
Jeśli pojawia się błąd `KeyError: 'ContainerConfig'`, jest to problem z kompatybilnością między wersjami Docker i docker-compose. Użyj skryptu `reset_and_run.sh`, który omija ten problem.
121+
122+
### API zwraca "Service Unavailable"
123+
124+
Po uruchomieniu systemu, model LLM potrzebuje czasu na załadowanie (zwykle kilka minut). W tym czasie API może zwracać "Service Unavailable". Poczekaj kilka minut i spróbuj ponownie.
125+
126+
### Problemy z pamięcią
127+
128+
Model LLM wymaga minimum 4GB RAM. Jeśli kontener model-service ulega awarii, sprawdź dostępną pamięć i w razie potrzeby zwiększ limit w pliku `docker-compose.yml`.
129+
130+
## Struktura katalogów
131+
132+
```
133+
llm-orchestrator-min/
134+
├── docker-compose.yml # Konfiguracja mikrousług
135+
├── run.sh # Skrypt do standardowego uruchomienia
136+
├── reset_and_run.sh # Skrypt do resetowania i ręcznego uruchomienia
137+
├── stop.sh # Skrypt do zatrzymania systemu
138+
├── setup_novnc_test.sh # Skrypt do konfiguracji środowiska testowego
139+
├── microservices/ # Katalog z mikrousługami
140+
│ ├── api-gateway/ # Brama API (Traefik)
141+
│ └── model-service/ # Usługa modelu LLM
142+
├── models/ # Katalog na pliki modeli
143+
└── .cache/ # Katalog cache
144+
├── pip/ # Cache pakietów pip
145+
└── models/ # Cache pobranych modeli
146+
```
147+
148+
## Architektura systemu
149+
150+
System składa się z następujących komponentów:
151+
152+
1. **model-service**: Mikrousługa odpowiedzialna za ładowanie modelu LLM i generowanie tekstu
153+
2. **api-gateway**: Brama API (Traefik) odpowiedzialna za routing żądań
154+
3. **noVNC**: Serwer VNC dostępny przez przeglądarkę
155+
4. **browser**: Kontener z przeglądarką Firefox
156+
157+
Komunikacja między komponentami odbywa się przez sieć Docker `llm-network`.
158+
159+
## Konfiguracja
160+
161+
Główne parametry konfiguracyjne:
162+
163+
- **MODEL_PATH**: Ścieżka do plików modelu (domyślnie: `/app/models/tinyllama`)
164+
- **USE_INT8**: Flaga włączająca kwantyzację INT8 (domyślnie: `true`)
165+
- **MODEL_SERVICE_PORT**: Port, na którym nasłuchuje usługa modelu (domyślnie: `5000`)

0 commit comments

Comments
 (0)