refactor: start-single.sh → start-coding-server.sh, stop-servers.sh → stop-coding-server.sh
Konsistente Benennung: Server-Skripte beschreiben ihre Funktion (coding-server), nicht das spezifische Modell oder die Architektur. Alle Referenzen in Extension, Tests, README und BEDIENUNGSANLEITUNG aktualisiert. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
2b0ca79dca
commit
3f66d4a387
6 changed files with 40 additions and 40 deletions
|
|
@ -52,7 +52,7 @@ der Judge kritisiert direkt und konkret, der Coder repariert ohne Widerspruch.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/pi_coder
|
cd ~/pi_coder
|
||||||
./start-single.sh
|
./start-coding-server.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Ausgabe bei Erfolg:
|
Ausgabe bei Erfolg:
|
||||||
|
|
@ -95,8 +95,8 @@ pi
|
||||||
Der Server läuft standardmäßig auf **GPU 1** (überschreibbar):
|
Der Server läuft standardmäßig auf **GPU 1** (überschreibbar):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./start-single.sh # GPU 1 (Standard)
|
./start-coding-server.sh # GPU 1 (Standard)
|
||||||
GPU_DEVICE=0 ./start-single.sh # GPU 0
|
GPU_DEVICE=0 ./start-coding-server.sh # GPU 0
|
||||||
```
|
```
|
||||||
|
|
||||||
Auf einem System mit mehreren GPUs empfiehlt es sich, GPU 0 (Display) freizuhalten
|
Auf einem System mit mehreren GPUs empfiehlt es sich, GPU 0 (Display) freizuhalten
|
||||||
|
|
@ -112,7 +112,7 @@ nvidia-smi --query-gpu=index,name,memory.used,memory.free --format=csv
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/pi_coder
|
cd ~/pi_coder
|
||||||
./start-single.sh
|
./start-coding-server.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Erwartete Ausgabe:
|
Erwartete Ausgabe:
|
||||||
|
|
@ -127,7 +127,7 @@ Dauer: bis zu 5 Minuten. Danach ist das Modell im VRAM und sofort antwortbereit.
|
||||||
### Server stoppen
|
### Server stoppen
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./stop-servers.sh
|
./stop-coding-server.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
### Status prüfen
|
### Status prüfen
|
||||||
|
|
@ -141,7 +141,7 @@ Dauer: bis zu 5 Minuten. Danach ist das Modell im VRAM und sofort antwortbereit.
|
||||||
Falls die GGUF-Datei an einem anderen Ort liegt:
|
Falls die GGUF-Datei an einem anderen Ort liegt:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
HF_HOME=/mnt/daten/huggingface ./start-single.sh
|
HF_HOME=/mnt/daten/huggingface ./start-coding-server.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
@ -856,7 +856,7 @@ Die Checkboxen werden automatisch abgehakt:
|
||||||
ls $HF_HOME/models/qwen3/
|
ls $HF_HOME/models/qwen3/
|
||||||
|
|
||||||
# Oder mit explizitem Pfad starten:
|
# Oder mit explizitem Pfad starten:
|
||||||
HF_HOME=/korrekter/pfad ./start-single.sh
|
HF_HOME=/korrekter/pfad ./start-coding-server.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
### Server startet nicht / HTTP nicht erreichbar
|
### Server startet nicht / HTTP nicht erreichbar
|
||||||
|
|
@ -872,7 +872,7 @@ HF_HOME=/korrekter/pfad ./start-single.sh
|
||||||
docker logs coding_model | tail -50
|
docker logs coding_model | tail -50
|
||||||
# Suche nach: "CUDA out of memory" oder "failed to allocate"
|
# Suche nach: "CUDA out of memory" oder "failed to allocate"
|
||||||
```
|
```
|
||||||
→ Kontext reduzieren: `-c 65536` statt `-c 262144` in `start-single.sh`
|
→ Kontext reduzieren: `-c 65536` statt `-c 262144` in `start-coding-server.sh`
|
||||||
|
|
||||||
2. GPU nicht verfügbar:
|
2. GPU nicht verfügbar:
|
||||||
```bash
|
```bash
|
||||||
|
|
@ -880,15 +880,15 @@ HF_HOME=/korrekter/pfad ./start-single.sh
|
||||||
# GPU 1 testen:
|
# GPU 1 testen:
|
||||||
docker run --gpus '"device=1"' --rm nvidia/cuda:12.0-base nvidia-smi
|
docker run --gpus '"device=1"' --rm nvidia/cuda:12.0-base nvidia-smi
|
||||||
# Andere GPU testen:
|
# Andere GPU testen:
|
||||||
GPU_DEVICE=0 ./start-single.sh
|
GPU_DEVICE=0 ./start-coding-server.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Port 8001 bereits belegt:
|
3. Port 8001 bereits belegt:
|
||||||
```bash
|
```bash
|
||||||
ss -tlnp | grep 8001
|
ss -tlnp | grep 8001
|
||||||
docker ps -a # alter Container noch vorhanden?
|
docker ps -a # alter Container noch vorhanden?
|
||||||
./stop-servers.sh
|
./stop-coding-server.sh
|
||||||
./start-single.sh
|
./start-coding-server.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
### "Agent is already processing a prompt"
|
### "Agent is already processing a prompt"
|
||||||
|
|
|
||||||
28
README.md
28
README.md
|
|
@ -63,11 +63,11 @@ dasselbe Modell, derselbe Container, unterschiedliche Persona.
|
||||||
sudo systemctl restart docker
|
sudo systemctl restart docker
|
||||||
```
|
```
|
||||||
- NVIDIA-GPU: empfohlen RTX 3090 (24 GB VRAM). Standard: GPU 1. Überschreibbar mit
|
- NVIDIA-GPU: empfohlen RTX 3090 (24 GB VRAM). Standard: GPU 1. Überschreibbar mit
|
||||||
`GPU_DEVICE=0 ./start-single.sh`. Bei 3 GPUs: GPU 0 für Display reservieren.
|
`GPU_DEVICE=0 ./start-coding-server.sh`. Bei 3 GPUs: GPU 0 für Display reservieren.
|
||||||
- GGUF-Modell vorhanden unter:
|
- GGUF-Modell vorhanden unter:
|
||||||
`$HF_HOME/models/qwen3/Qwen3.6-27B-Uncensored-HauhauCS-Aggressive-IQ4_XS.gguf`
|
`$HF_HOME/models/qwen3/Qwen3.6-27B-Uncensored-HauhauCS-Aggressive-IQ4_XS.gguf`
|
||||||
- Standard-Pfad: `HF_HOME=/home/dschlueter/nvme2n1p7_home/huggingface`
|
- Standard-Pfad: `HF_HOME=/home/dschlueter/nvme2n1p7_home/huggingface`
|
||||||
- Überschreibbar: `HF_HOME=/anderer/pfad ./start-single.sh`
|
- Überschreibbar: `HF_HOME=/anderer/pfad ./start-coding-server.sh`
|
||||||
- [pi agent](https://github.com/earendil-works/pi) installiert (`~/.pi/`)
|
- [pi agent](https://github.com/earendil-works/pi) installiert (`~/.pi/`)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
@ -86,7 +86,7 @@ cd ~/pi_coder
|
||||||
# /reload
|
# /reload
|
||||||
|
|
||||||
# 4. Server starten
|
# 4. Server starten
|
||||||
./start-single.sh
|
./start-coding-server.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Das Install-Skript sichert eine vorhandene `~/.pi/agent/settings.json` als `.bak` und
|
Das Install-Skript sichert eine vorhandene `~/.pi/agent/settings.json` als `.bak` und
|
||||||
|
|
@ -105,23 +105,23 @@ Nach späteren Änderungen an `pi-coder-judge-extension.ts` oder `models.json`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Server starten (empfohlen — dauert 1–3 Minuten)
|
# Server starten (empfohlen — dauert 1–3 Minuten)
|
||||||
./start-single.sh
|
./start-coding-server.sh
|
||||||
|
|
||||||
# Server auf anderer GPU starten
|
# Server auf anderer GPU starten
|
||||||
GPU_DEVICE=0 ./start-single.sh
|
GPU_DEVICE=0 ./start-coding-server.sh
|
||||||
|
|
||||||
# Stoppen
|
# Stoppen
|
||||||
./stop-servers.sh
|
./stop-coding-server.sh
|
||||||
|
|
||||||
# Status prüfen
|
# Status prüfen
|
||||||
./status.sh
|
./status.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
`start-single.sh` startet den Container und wartet bis HTTP-ready (max. 5 Minuten — die
|
`start-coding-server.sh` startet den Container und wartet bis HTTP-ready (max. 5 Minuten — die
|
||||||
neue llama.cpp-Version prüft beim Start, ob Modell + KV-Cache in den VRAM passen, was
|
neue llama.cpp-Version prüft beim Start, ob Modell + KV-Cache in den VRAM passen, was
|
||||||
zusätzliche Zeit kostet).
|
zusätzliche Zeit kostet).
|
||||||
|
|
||||||
Wenn der Server bereits läuft und du `start-single.sh` aufrufst, wird der laufende
|
Wenn der Server bereits läuft und du `start-coding-server.sh` aufrufst, wird der laufende
|
||||||
Container zuerst per `docker rm -f` gestoppt und dann neu gestartet — ein laufender
|
Container zuerst per `docker rm -f` gestoppt und dann neu gestartet — ein laufender
|
||||||
Inference-Request wird dabei abgebrochen.
|
Inference-Request wird dabei abgebrochen.
|
||||||
|
|
||||||
|
|
@ -149,7 +149,7 @@ Inference-Request wird dabei abgebrochen.
|
||||||
| `-n 16384` | 16K | Maximale Ausgabelänge. |
|
| `-n 16384` | 16K | Maximale Ausgabelänge. |
|
||||||
| `--temp 0.2` | — | Deterministisch — Coder-Rolle. Der Judge-System-Prompt gleicht die etwas höhere Temperatur aus. |
|
| `--temp 0.2` | — | Deterministisch — Coder-Rolle. Der Judge-System-Prompt gleicht die etwas höhere Temperatur aus. |
|
||||||
| `--parallel 2` | — | 2 Slots, damit pi agent Folgeanfragen schnell hintereinander stellen kann. |
|
| `--parallel 2` | — | 2 Slots, damit pi agent Folgeanfragen schnell hintereinander stellen kann. |
|
||||||
| `--gpus '"device=1"'` | — | Standard: GPU 1. Überschreibbar: `GPU_DEVICE=0 ./start-single.sh`. |
|
| `--gpus '"device=1"'` | — | Standard: GPU 1. Überschreibbar: `GPU_DEVICE=0 ./start-coding-server.sh`. |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -184,16 +184,16 @@ dürfen nennenswert VRAM belegen (z. B. TTS-Dienste, Ollama). Prüfen mit:
|
||||||
nvidia-smi --query-gpu=index,memory.used,memory.free --format=csv
|
nvidia-smi --query-gpu=index,memory.used,memory.free --format=csv
|
||||||
```
|
```
|
||||||
|
|
||||||
Falls der VRAM nicht reicht: Kontext in `start-single.sh` auf `131072` oder `65536` reduzieren.
|
Falls der VRAM nicht reicht: Kontext in `start-coding-server.sh` auf `131072` oder `65536` reduzieren.
|
||||||
|
|
||||||
### Anpassung für andere GPU-Konfigurationen
|
### Anpassung für andere GPU-Konfigurationen
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Andere GPU verwenden:
|
# Andere GPU verwenden:
|
||||||
GPU_DEVICE=0 ./start-single.sh
|
GPU_DEVICE=0 ./start-coding-server.sh
|
||||||
|
|
||||||
# 2 GPUs für einen Server (sehr großer Kontext):
|
# 2 GPUs für einen Server (sehr großer Kontext):
|
||||||
# start-single.sh anpassen:
|
# start-coding-server.sh anpassen:
|
||||||
--gpus '"device=0,1"' \
|
--gpus '"device=0,1"' \
|
||||||
--tensor-split 0.5,0.5 \
|
--tensor-split 0.5,0.5 \
|
||||||
--main-gpu 0 \
|
--main-gpu 0 \
|
||||||
|
|
@ -253,8 +253,8 @@ und Extension-Guards gegen Regressionen.
|
||||||
| `settings.json` | pi-agent-Settings (Default-Modell, aktivierte Modelle) — wird von Install-Skript deployt |
|
| `settings.json` | pi-agent-Settings (Default-Modell, aktivierte Modelle) — wird von Install-Skript deployt |
|
||||||
| `run-tests.sh` | Tests ausführen |
|
| `run-tests.sh` | Tests ausführen |
|
||||||
| `tests/` | Testdateien (pure-logic, config, extension-guards, scripts) |
|
| `tests/` | Testdateien (pure-logic, config, extension-guards, scripts) |
|
||||||
| `start-single.sh` | Single-Server starten (Port 8001, Coder + Judge) |
|
| `start-coding-server.sh` | Single-Server starten (Port 8001, Coder + Judge) |
|
||||||
| `stop-servers.sh` | Container stoppen |
|
| `stop-coding-server.sh` | Container stoppen |
|
||||||
| `status.sh` | Laufstatus anzeigen |
|
| `status.sh` | Laufstatus anzeigen |
|
||||||
| `install_servers_and_pi_coder_extension.sh` | Extension + models.json + settings.json nach `~/.pi/agent/` deployen |
|
| `install_servers_and_pi_coder_extension.sh` | Extension + models.json + settings.json nach `~/.pi/agent/` deployen |
|
||||||
| `examples/` | Demo-Projekte (Python, Rust, Go, C, Bash, HTML/JS) für Live-Demos |
|
| `examples/` | Demo-Projekte (Python, Rust, Go, C, Bash, HTML/JS) für Live-Demos |
|
||||||
|
|
|
||||||
|
|
@ -1072,7 +1072,7 @@ export default function (pi: ExtensionAPI) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!await waitUntilModelReady(pi, ctx, 8001, "coding_model")) {
|
if (!await waitUntilModelReady(pi, ctx, 8001, "coding_model")) {
|
||||||
ctx.ui.notify("Server nicht bereit (Port 8001) — start-single.sh ausführen", "error");
|
ctx.ui.notify("Server nicht bereit (Port 8001) — start-coding-server.sh ausführen", "error");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await writeTaskMd(pi, ctx, task);
|
await writeTaskMd(pi, ctx, task);
|
||||||
|
|
@ -1086,7 +1086,7 @@ export default function (pi: ExtensionAPI) {
|
||||||
description: "Review gegen TASK.md + git show HEAD → Judge-Rolle (:8001).",
|
description: "Review gegen TASK.md + git show HEAD → Judge-Rolle (:8001).",
|
||||||
handler: async function (args: string, ctx: ExtensionCommandContext) {
|
handler: async function (args: string, ctx: ExtensionCommandContext) {
|
||||||
if (!await waitUntilModelReady(pi, ctx, 8001, "coding_model")) {
|
if (!await waitUntilModelReady(pi, ctx, 8001, "coding_model")) {
|
||||||
ctx.ui.notify("Server nicht bereit (Port 8001) — start-single.sh ausführen", "error");
|
ctx.ui.notify("Server nicht bereit (Port 8001) — start-coding-server.sh ausführen", "error");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await selectRole(pi, ctx, "judge");
|
await selectRole(pi, ctx, "judge");
|
||||||
|
|
@ -1099,7 +1099,7 @@ export default function (pi: ExtensionAPI) {
|
||||||
description: "Fixt Judge-Kritik, committet Ergebnis → Coder-Rolle (:8001).",
|
description: "Fixt Judge-Kritik, committet Ergebnis → Coder-Rolle (:8001).",
|
||||||
handler: async function (args: string, ctx: ExtensionCommandContext) {
|
handler: async function (args: string, ctx: ExtensionCommandContext) {
|
||||||
if (!await waitUntilModelReady(pi, ctx, 8001, "coding_model")) {
|
if (!await waitUntilModelReady(pi, ctx, 8001, "coding_model")) {
|
||||||
ctx.ui.notify("Server nicht bereit (Port 8001) — start-single.sh ausführen", "error");
|
ctx.ui.notify("Server nicht bereit (Port 8001) — start-coding-server.sh ausführen", "error");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await selectRole(pi, ctx, "coder");
|
await selectRole(pi, ctx, "coder");
|
||||||
|
|
@ -1112,7 +1112,7 @@ export default function (pi: ExtensionAPI) {
|
||||||
description: "Finale Freigabe gegen TASK.md + git log → Judge-Rolle (:8001).",
|
description: "Finale Freigabe gegen TASK.md + git log → Judge-Rolle (:8001).",
|
||||||
handler: async function (args: string, ctx: ExtensionCommandContext) {
|
handler: async function (args: string, ctx: ExtensionCommandContext) {
|
||||||
if (!await waitUntilModelReady(pi, ctx, 8001, "coding_model")) {
|
if (!await waitUntilModelReady(pi, ctx, 8001, "coding_model")) {
|
||||||
ctx.ui.notify("Server nicht bereit (Port 8001) — start-single.sh ausführen", "error");
|
ctx.ui.notify("Server nicht bereit (Port 8001) — start-coding-server.sh ausführen", "error");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await selectRole(pi, ctx, "judge");
|
await selectRole(pi, ctx, "judge");
|
||||||
|
|
@ -1178,7 +1178,7 @@ export default function (pi: ExtensionAPI) {
|
||||||
ctx.ui.setStatus("optimize", "Single-Server wird geprüft (Port 8001)…");
|
ctx.ui.setStatus("optimize", "Single-Server wird geprüft (Port 8001)…");
|
||||||
const serverReady = await waitUntilModelReady(pi, ctx, 8001, "coding_model");
|
const serverReady = await waitUntilModelReady(pi, ctx, 8001, "coding_model");
|
||||||
if (!serverReady) {
|
if (!serverReady) {
|
||||||
finalNotify(ctx, "⛔ Server nicht erreichbar", "Port 8001 — kein HTTP 200 nach 3 min. start-single.sh ausführen");
|
finalNotify(ctx, "⛔ Server nicht erreichbar", "Port 8001 — kein HTTP 200 nach 3 min. start-coding-server.sh ausführen");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1203,7 +1203,7 @@ export default function (pi: ExtensionAPI) {
|
||||||
// echten Completion-Request bedeutet: Modell ist im VRAM und bereit.
|
// echten Completion-Request bedeutet: Modell ist im VRAM und bereit.
|
||||||
ctx.ui.setStatus("optimize", "Single-Server wird geprüft…");
|
ctx.ui.setStatus("optimize", "Single-Server wird geprüft…");
|
||||||
if (!await waitUntilModelReady(pi, ctx, 8001, "coding_model")) {
|
if (!await waitUntilModelReady(pi, ctx, 8001, "coding_model")) {
|
||||||
finalNotify(ctx, "⛔ Server nicht erreichbar", "Port 8001 — kein HTTP 200 nach 3 min. start-single.sh ausführen");
|
finalNotify(ctx, "⛔ Server nicht erreichbar", "Port 8001 — kein HTTP 200 nach 3 min. start-coding-server.sh ausführen");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1409,7 +1409,7 @@ export default function (pi: ExtensionAPI) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!await waitUntilModelReady(pi, ctx, 8001, "coding_model")) {
|
if (!await waitUntilModelReady(pi, ctx, 8001, "coding_model")) {
|
||||||
ctx.ui.notify("Server nicht bereit (Port 8001) — start-single.sh ausführen", "error");
|
ctx.ui.notify("Server nicht bereit (Port 8001) — start-coding-server.sh ausführen", "error");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await selectRole(pi, ctx, "coder");
|
await selectRole(pi, ctx, "coder");
|
||||||
|
|
@ -1422,7 +1422,7 @@ export default function (pi: ExtensionAPI) {
|
||||||
description: "Schnelle OK/PROBLEM-Prüfung einer kleinen Codeänderung → Judge-Rolle (:8001).",
|
description: "Schnelle OK/PROBLEM-Prüfung einer kleinen Codeänderung → Judge-Rolle (:8001).",
|
||||||
handler: async function (args: string, ctx: ExtensionCommandContext) {
|
handler: async function (args: string, ctx: ExtensionCommandContext) {
|
||||||
if (!await waitUntilModelReady(pi, ctx, 8001, "coding_model")) {
|
if (!await waitUntilModelReady(pi, ctx, 8001, "coding_model")) {
|
||||||
ctx.ui.notify("Server nicht bereit (Port 8001) — start-single.sh ausführen", "error");
|
ctx.ui.notify("Server nicht bereit (Port 8001) — start-coding-server.sh ausführen", "error");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await selectRole(pi, ctx, "judge");
|
await selectRole(pi, ctx, "judge");
|
||||||
|
|
@ -1490,7 +1490,7 @@ export default function (pi: ExtensionAPI) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!await waitUntilModelReady(pi, ctx, 8001, "coding_model")) {
|
if (!await waitUntilModelReady(pi, ctx, 8001, "coding_model")) {
|
||||||
ctx.ui.notify("Server nicht bereit (Port 8001) — start-single.sh ausführen", "error");
|
ctx.ui.notify("Server nicht bereit (Port 8001) — start-coding-server.sh ausführen", "error");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await writeTaskMd(pi, ctx, task);
|
await writeTaskMd(pi, ctx, task);
|
||||||
|
|
@ -1572,7 +1572,7 @@ export default function (pi: ExtensionAPI) {
|
||||||
|
|
||||||
// Standard-Verhalten: unterbrochenen Prozess wieder aufnehmen
|
// Standard-Verhalten: unterbrochenen Prozess wieder aufnehmen
|
||||||
if (!await waitUntilModelReady(pi, ctx, 8001, "coding_model")) {
|
if (!await waitUntilModelReady(pi, ctx, 8001, "coding_model")) {
|
||||||
ctx.ui.notify("Server nicht bereit (Port 8001) — start-single.sh ausführen", "error");
|
ctx.ui.notify("Server nicht bereit (Port 8001) — start-coding-server.sh ausführen", "error");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await selectRole(pi, ctx, "coder");
|
await selectRole(pi, ctx, "coder");
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ MODEL_ALIAS="coding_model"
|
||||||
GPU_DEVICE="${GPU_DEVICE:-1}"
|
GPU_DEVICE="${GPU_DEVICE:-1}"
|
||||||
|
|
||||||
echo "[*] Verwende HF_HOME = $HF_HOME"
|
echo "[*] Verwende HF_HOME = $HF_HOME"
|
||||||
echo "[*] GPU device = $GPU_DEVICE (überschreibbar: GPU_DEVICE=2 ./start-single.sh)"
|
echo "[*] GPU device = $GPU_DEVICE (überschreibbar: GPU_DEVICE=2 ./start-coding-server.sh)"
|
||||||
if [ ! -f "$HF_HOME/$MODEL_REL_PATH" ]; then
|
if [ ! -f "$HF_HOME/$MODEL_REL_PATH" ]; then
|
||||||
echo "[!] Modell-Datei nicht gefunden: $HF_HOME/$MODEL_REL_PATH" >&2
|
echo "[!] Modell-Datei nicht gefunden: $HF_HOME/$MODEL_REL_PATH" >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
|
@ -22,15 +22,15 @@ test("Dual-GPU-Skripte sind entfernt", () => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
test("start-single.sh nutzt eine GPU und registriert Alias coding_model", () => {
|
test("start-coding-server.sh nutzt eine GPU und registriert Alias coding_model", () => {
|
||||||
const s = readRepoFile("start-single.sh");
|
const s = readRepoFile("start-coding-server.sh");
|
||||||
assert.match(s, /--alias\s+"\$\{MODEL_ALIAS\}"/);
|
assert.match(s, /--alias\s+"\$\{MODEL_ALIAS\}"/);
|
||||||
assert.match(s, /MODEL_ALIAS="coding_model"/);
|
assert.match(s, /MODEL_ALIAS="coding_model"/);
|
||||||
assert.match(s, /device=\$\{GPU_DEVICE\}/, "GPU muss konfigurierbar/einzeln sein");
|
assert.match(s, /device=\$\{GPU_DEVICE\}/, "GPU muss konfigurierbar/einzeln sein");
|
||||||
});
|
});
|
||||||
|
|
||||||
test("stop-servers.sh stoppt den Single-Container", () => {
|
test("stop-coding-server.sh stoppt den Single-Container", () => {
|
||||||
assert.match(readRepoFile("stop-servers.sh"), /coding_model/);
|
assert.match(readRepoFile("stop-coding-server.sh"), /coding_model/);
|
||||||
});
|
});
|
||||||
|
|
||||||
test("status.sh prüft den Single-Container", () => {
|
test("status.sh prüft den Single-Container", () => {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue