LLM-Server: ausführbares Projekt in die Hauptverzeichnisse host/, llm/ und encoding/ aufgeteilt.
Grundkonfiguration des Servers liegt nun unter llm-server/host/ansible/ (vorher llm-server/ansible/), der LLM-Stack-Platzhalter unter llm-server/llm/ und der Encoding-Workload unter llm-server/encoding/. Dokumentation und Pfadverweise (ansible.cfg roles_path, .venv-Tiefe, Markdown-Links) angepasst; Linkvalidator meldet broken_local_links=0. Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
@@ -46,7 +46,8 @@ Der [Dokumentationsindex](docs/GNAI-000-DOC_Index.md) enthält die datierten Que
|
||||
| [Plattform-Dokumentation](docs/platform/README.md) | Hostbasis, Zugriffsmodell, Reverse Proxy und VPN |
|
||||
| [KI-Dokumentation](docs/platform/llm-server/ai/README.md) | KI-Zielarchitektur, Ansible-Planung, Modellbewertung und technische `llama.cpp`-Sollkonfiguration |
|
||||
| [Video-Encoding](docs/platform/llm-server/encoding/GNENC-000-DOC_Index.md) | getrennter Planungs- und späterer SOP-Bereich für den CPU-Encoding-Workload |
|
||||
| [LLM-Server-Automation](llm-server/ansible/README.md) | Host-Baseline, Podman, Workload-Konten, AMD-GPU-Zugriff und rootless ROCm-Probe |
|
||||
| [LLM-Server-Host-Automation](llm-server/host/ansible/README.md) | Host-Baseline, Podman, Workload-Konten, AMD-GPU-Zugriff und rootless ROCm-Probe |
|
||||
| [Encoding-Automation](llm-server/encoding/ansible/README.md) | CPU-Encoding-Grundzustand für `gn-encoding` auf dem KI-Server |
|
||||
| [Keycloak-CT-102-Automation](proxmox/lxc/ct-102-keycloak/ansible/README.md) | Inventare, Rollen, Restore- und Produktionsverifikation für CT 102 |
|
||||
|
||||
## Arbeiten mit dem Repository
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
| 2026-09-21 | 0.14 | spektr / Codex | Unsloth UD-Q6_K als zweites installiertes 128k-Profil und A/B-Kandidat festgelegt |
|
||||
| 2026-09-21 | 0.15 | spektr / Codex | je Modell ein festes, gegenseitig ausgeschlossenes Quadlet vorgesehen und dynamischen llama.cpp-Router zurückgestellt |
|
||||
| 2026-09-21 | 0.16 | spektr / Codex | überholten Phasen- und Dokumentenbacklog konsolidiert, Umsetzungsreihenfolge an GNAI-001 delegiert und privilegierten Runner nach Recovery verschoben |
|
||||
| 2026-10-19 | 0.17 | spektr / Mistral Vibe | LLM-Server-Projekt in die fachlichen Hauptverzeichnisse `host/`, `llm/` und `encoding/` aufgeteilt; Abschnitte 6 und 7.4 an die neue Struktur angepasst |
|
||||
|
||||
---
|
||||
|
||||
@@ -190,25 +191,34 @@ Laufzeitumgebungen und die zugehörigen Workflows besitzen. Damit verändern
|
||||
nicht mehrere unabhängige Deployment-Repositories denselben Host.
|
||||
|
||||
Die ursprünglich vorgesehene Struktur wurde am 14.10.2026 unter einen eigenen
|
||||
Host-Root verschoben. Innerhalb des LLM-Server-Projekts bleibt die bewährte
|
||||
Ansible-Gliederung erhalten:
|
||||
Host-Root verschoben und am 19.10.2026 fachlich in ein Hauptverzeichnis pro
|
||||
Aufgabe aufgeteilt (analog zu `docs/platform/llm-server/`):
|
||||
|
||||
```text
|
||||
llm-server/ansible/
|
||||
├── ansible.cfg
|
||||
├── collections/
|
||||
│ └── requirements.yml
|
||||
├── inventories/
|
||||
│ ├── production/
|
||||
│ └── testing/
|
||||
├── playbooks/
|
||||
│ ├── host.yml
|
||||
│ ├── environment.yml
|
||||
│ └── verify.yml
|
||||
└── roles/
|
||||
├── host_baseline/
|
||||
├── environment_stack/
|
||||
└── weitere_fachrollen/
|
||||
llm-server/
|
||||
├── host/ansible/ # gemeinsame Plattform des physischen Servers
|
||||
│ ├── ansible.cfg
|
||||
│ ├── inventories/
|
||||
│ │ ├── bootstrap/
|
||||
│ │ ├── host/
|
||||
│ │ └── testing/
|
||||
│ ├── playbooks/
|
||||
│ │ ├── host.yml
|
||||
│ │ ├── preflight.yml
|
||||
│ │ ├── bootstrap-deploy-account.yml
|
||||
│ │ ├── verify-deploy-access.yml
|
||||
│ │ └── verify-rocm-container.yml
|
||||
│ └── roles/
|
||||
│ ├── host_baseline/
|
||||
│ ├── workload_accounts/
|
||||
│ ├── amd_gpu_access/
|
||||
│ └── rocm_container_probe/
|
||||
├── llm/ # LLM-Stack; entsteht mit dem AI-Vertical-Slice
|
||||
└── encoding/ansible/ # CPU-Encoding-Workload
|
||||
├── playbooks/
|
||||
│ └── video-encoding.yml
|
||||
└── roles/
|
||||
└── video_encoding/
|
||||
|
||||
.gitea/workflows/
|
||||
├── validate.yml
|
||||
@@ -216,11 +226,12 @@ llm-server/ansible/
|
||||
└── deploy-production.yml
|
||||
```
|
||||
|
||||
Innerhalb jedes Projekts bleibt die bewährte Ansible-Gliederung erhalten.
|
||||
Diese Struktur ist ein Ausgangspunkt und noch keine Festlegung aller Rollen.
|
||||
`host.yml` und `environment.yml` sollen gemeinsam den unterstützten
|
||||
Gesamtzustand herstellen. Ansible-Tags können Diagnose und gezielte Wartung
|
||||
unterstützen, dürfen aber nicht zu ungetesteten alternativen Installationswegen
|
||||
führen.
|
||||
`host.yml` und ein künftiges `ai.yml` im `llm/`-Projekt sollen gemeinsam den
|
||||
unterstützten Gesamtzustand herstellen. Ansible-Tags können Diagnose und
|
||||
gezielte Wartung unterstützen, dürfen aber nicht zu ungetesteten alternativen
|
||||
Installationswegen führen.
|
||||
|
||||
Unveränderte Drittanbieterkomponenten wie `llama.cpp`, LiteLLM oder OpenWebUI
|
||||
erhalten derzeit kein eigenes Repository. Ihre freigegebenen Versionen oder
|
||||
@@ -351,22 +362,32 @@ ein allgemeines Hostwartungsfenster kann weiterhin alle Workloads stoppen.
|
||||
### 7.4 Vorgesehene Ansible-Abbildung
|
||||
|
||||
Gemeinsame Hostaufgaben und umgebungsspezifische Anwendungsaufgaben werden
|
||||
getrennt:
|
||||
getrennt. Seit dem 19.10.2026 liegt pro fachlicher Aufgabe ein Hauptverzeichnis
|
||||
unter `llm-server/`:
|
||||
|
||||
```text
|
||||
llm-server/ansible/
|
||||
├── playbooks/
|
||||
│ ├── host.yml
|
||||
│ ├── ai.yml
|
||||
│ ├── video-encoding.yml
|
||||
│ └── site.yml
|
||||
└── roles/
|
||||
├── host_baseline/
|
||||
├── podman_runtime/
|
||||
├── workload_accounts/
|
||||
├── ai_stack/
|
||||
├── ai_environment_switch/
|
||||
└── video_encoding/
|
||||
llm-server/
|
||||
├── host/ansible/
|
||||
│ ├── playbooks/
|
||||
│ │ ├── host.yml
|
||||
│ │ └── verify-rocm-container.yml
|
||||
│ └── roles/
|
||||
│ ├── host_baseline/
|
||||
│ ├── workload_accounts/
|
||||
│ └── amd_gpu_access/
|
||||
├── llm/ansible/ # geplant; entsteht mit dem AI-Vertical-Slice
|
||||
│ ├── playbooks/
|
||||
│ │ ├── ai.yml
|
||||
│ │ └── site.yml
|
||||
│ └── roles/
|
||||
│ ├── ai_stack/
|
||||
│ ├── ai_environment_switch/
|
||||
│ └── llama_cpp/
|
||||
└── encoding/ansible/
|
||||
├── playbooks/
|
||||
│ └── video-encoding.yml
|
||||
└── roles/
|
||||
└── video_encoding/
|
||||
```
|
||||
|
||||
`host.yml` verwaltet gemeinsame Pakete, Treiber, Benutzer und
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
**Titel:** `llama.cpp`-Serving mit ROCm und rootless Podman
|
||||
**Stand:** 2026-09-21
|
||||
**Status:** Technische Sollkonfiguration für Testing; noch nicht implementiert
|
||||
**Referenzen:** [Modellbewertung](GNAI-009-PLAN_Llama-Model-Evaluation.md), [Ansible-Deployment](GNAI-008-PLAN_Ansible-Deployment.md), [Zielarchitektur](GNAI-004-INFRA_Architecture.md), [Ansible-Anleitung](../../../../llm-server/ansible/README.md)
|
||||
**Referenzen:** [Modellbewertung](GNAI-009-PLAN_Llama-Model-Evaluation.md), [Ansible-Deployment](GNAI-008-PLAN_Ansible-Deployment.md), [Zielarchitektur](GNAI-004-INFRA_Architecture.md), [Ansible-Anleitung](../../../../llm-server/host/ansible/README.md)
|
||||
|
||||
> Dieses Dokument beschreibt den vorgesehenen technischen Sollzustand. Es ist
|
||||
> keine Betriebs-SOP und kein Nachweis, dass Modell, Quadlet oder Inferenz
|
||||
|
||||
+1
-1
@@ -133,7 +133,7 @@ shared/ansible/
|
||||
├── requirements-control.txt
|
||||
└── roles/podman_runtime/
|
||||
|
||||
llm-server/ansible/ # physischer KI-Server, getrennt von CT 102
|
||||
llm-server/host/ansible/ # physischer KI-Server, getrennt von CT 102
|
||||
```
|
||||
|
||||
Eine eigene Ansible Collection wird erst eingeführt, wenn dieselben Rollen in
|
||||
|
||||
+13
-5
@@ -1,9 +1,17 @@
|
||||
# LLM server `ghostnet-ki`
|
||||
|
||||
This host root contains executable infrastructure for the physical server at
|
||||
`10.0.0.90`. Host-specific Ansible inventories, playbooks and roles live under
|
||||
[`ansible/`](ansible/README.md). Reusable roles that are also consumed by
|
||||
other host projects live under [`../shared/ansible/`](../shared/ansible/).
|
||||
This host root contains the executable infrastructure for the physical server at
|
||||
`10.0.0.90`, split into one main directory per task area:
|
||||
|
||||
| Directory | Purpose |
|
||||
| --- | --- |
|
||||
| [`host/`](host/README.md) | shared server baseline: Ansible control project, host roles and inventories |
|
||||
| [`llm/`](llm/README.md) | LLM serving stack (created with the internal AI vertical slice) |
|
||||
| [`encoding/`](encoding/README.md) | CPU-based video encoding workload and its Ansible control project |
|
||||
|
||||
Reusable roles that are also consumed by other host projects live under
|
||||
[`../shared/ansible/`](../shared/ansible/).
|
||||
|
||||
The versioned architecture and operating documentation remains under
|
||||
[`../docs/platform/llm-server/`](../docs/platform/llm-server/README.md).
|
||||
[`../docs/platform/llm-server/`](../docs/platform/llm-server/README.md) and
|
||||
mirrors the same task areas (`host/`, `ai/`, `encoding/`).
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
# Host baseline `ghostnet-ki`
|
||||
|
||||
Shared platform configuration of the physical LLM server at `10.0.0.90`:
|
||||
host identity, Podman runtime, locked workload accounts and AMD GPU device
|
||||
access. This area is common to all workloads on the server.
|
||||
|
||||
The executable Ansible control project lives under
|
||||
[`ansible/`](ansible/README.md). The operating documentation for this area is
|
||||
under
|
||||
[`../../docs/platform/llm-server/host/`](../../docs/platform/llm-server/host/).
|
||||
@@ -1,6 +1,9 @@
|
||||
# LLM server Ansible control project
|
||||
# LLM server host Ansible control project
|
||||
|
||||
This directory contains the reproducible control project for `ghostnet-ki`.
|
||||
This directory contains the reproducible control project for the shared host
|
||||
baseline of `ghostnet-ki`. The LLM-Server host root is split into one main
|
||||
directory per task area: `host/` (this project), `llm/` and `encoding/`; see
|
||||
[../../README.md](../../README.md).
|
||||
The read-only `playbooks/preflight.yml` verifies the documented host identity
|
||||
and hardware. The shared `playbooks/host.yml` applies the host baseline,
|
||||
Podman runtime, workload identities and narrowly scoped AMD device access
|
||||
@@ -33,15 +36,15 @@ continuing.
|
||||
Run the commands from the host project directory:
|
||||
|
||||
```bash
|
||||
cd llm-server/ansible
|
||||
../../.venv/bin/ansible-inventory \
|
||||
cd llm-server/host/ansible
|
||||
../../../.venv/bin/ansible-inventory \
|
||||
--inventory inventories/testing/hosts.yml \
|
||||
--graph
|
||||
../../.venv/bin/ansible-playbook \
|
||||
../../../.venv/bin/ansible-playbook \
|
||||
--inventory inventories/testing/hosts.yml \
|
||||
playbooks/preflight.yml \
|
||||
--syntax-check
|
||||
../../.venv/bin/ansible-playbook \
|
||||
../../../.venv/bin/ansible-playbook \
|
||||
--inventory inventories/testing/hosts.yml \
|
||||
playbooks/preflight.yml
|
||||
```
|
||||
@@ -85,12 +88,12 @@ nevertheless grant root-equivalent deployment access; rotate it when moving the
|
||||
deployment identity to the runner or after any suspected disclosure.
|
||||
|
||||
Load the existing personal administrator key into an SSH agent, then run the
|
||||
bootstrap interactively from `llm-server/ansible/`. Ansible will ask for the
|
||||
personal administrator's existing sudo password:
|
||||
bootstrap interactively from `llm-server/host/ansible/`. Ansible will ask for
|
||||
the personal administrator's existing sudo password:
|
||||
|
||||
```bash
|
||||
ssh-add /path/to/personal-ghost-private-key
|
||||
../../.venv/bin/ansible-playbook \
|
||||
../../../.venv/bin/ansible-playbook \
|
||||
--inventory inventories/bootstrap/hosts.yml \
|
||||
playbooks/bootstrap-deploy-account.yml \
|
||||
--ask-become-pass
|
||||
@@ -103,7 +106,7 @@ changes.
|
||||
After a successful bootstrap, verify the new account independently:
|
||||
|
||||
```bash
|
||||
../../.venv/bin/ansible-playbook \
|
||||
../../../.venv/bin/ansible-playbook \
|
||||
--inventory inventories/host/hosts.yml \
|
||||
playbooks/verify-deploy-access.yml \
|
||||
--extra-vars ansible_user=ansible-deploy \
|
||||
@@ -129,18 +132,18 @@ It does not install software or start services. Use the dedicated host
|
||||
inventory and supply the private deployment key outside the repository:
|
||||
|
||||
```bash
|
||||
../../.venv/bin/ansible-playbook \
|
||||
../../../.venv/bin/ansible-playbook \
|
||||
--inventory inventories/host/hosts.yml \
|
||||
playbooks/host.yml \
|
||||
--syntax-check
|
||||
|
||||
../../.venv/bin/ansible-playbook \
|
||||
../../../.venv/bin/ansible-playbook \
|
||||
--inventory inventories/host/hosts.yml \
|
||||
playbooks/host.yml \
|
||||
--check --diff \
|
||||
--private-key ~/.ssh/id_ed25519_ghostnet_ai_ansible_deploy
|
||||
|
||||
../../.venv/bin/ansible-playbook \
|
||||
../../../.venv/bin/ansible-playbook \
|
||||
--inventory inventories/host/hosts.yml \
|
||||
playbooks/host.yml \
|
||||
--private-key ~/.ssh/id_ed25519_ghostnet_ai_ansible_deploy
|
||||
@@ -211,21 +214,21 @@ It passes `/dev/kfd` and both discovered render nodes with
|
||||
and `llama-server --list-devices` must expose exactly two ROCm devices. No
|
||||
architecture override is set.
|
||||
|
||||
Run the probe from `llm-server/ansible/`:
|
||||
Run the probe from `llm-server/host/ansible/`:
|
||||
|
||||
```bash
|
||||
../../.venv/bin/ansible-playbook \
|
||||
../../../.venv/bin/ansible-playbook \
|
||||
--inventory inventories/host/hosts.yml \
|
||||
playbooks/verify-rocm-container.yml \
|
||||
--syntax-check
|
||||
|
||||
../../.venv/bin/ansible-playbook \
|
||||
../../../.venv/bin/ansible-playbook \
|
||||
--inventory inventories/host/hosts.yml \
|
||||
playbooks/verify-rocm-container.yml \
|
||||
--check \
|
||||
--private-key ~/.ssh/id_ed25519_ghostnet_ai_ansible_deploy
|
||||
|
||||
../../.venv/bin/ansible-playbook \
|
||||
../../../.venv/bin/ansible-playbook \
|
||||
--inventory inventories/host/hosts.yml \
|
||||
playbooks/verify-rocm-container.yml \
|
||||
--private-key ~/.ssh/id_ed25519_ghostnet_ai_ansible_deploy
|
||||
@@ -4,7 +4,7 @@ host_key_checking = True
|
||||
interpreter_python = auto_silent
|
||||
local_tmp = .ansible/tmp
|
||||
retry_files_enabled = False
|
||||
roles_path = roles:../../shared/ansible/roles
|
||||
roles_path = roles:../../../shared/ansible/roles
|
||||
timeout = 15
|
||||
|
||||
[ssh_connection]
|
||||
@@ -0,0 +1,10 @@
|
||||
# LLM serving stack
|
||||
|
||||
This directory will hold the executable infrastructure for the LLM serving
|
||||
stack on `ghostnet-ki`: rootless `llama.cpp` with ROCm, separated into
|
||||
Production and Testing environments.
|
||||
|
||||
It is created with the internal LLM vertical slice (roadmap milestone 2 in
|
||||
[GNAI-001](../../docs/GNAI-001-PLAN_Project-Roadmap.md)). The planned
|
||||
architecture, deployment and serving configuration are documented under
|
||||
[`../../docs/platform/llm-server/ai/`](../../docs/platform/llm-server/ai/README.md).
|
||||
Reference in New Issue
Block a user