# llama_server

Compile llama.cpp (backend HIP/ROCm) et déploie le service **llama-server GPU** (`:1234`) sur gpu-01. Sert aussi les embeddings du RAG.

## Ce que fait le rôle

- Clone + build llama.cpp (cmake HIP, `gfx1030`) — build seulement si le binaire est absent
- Service systemd `llama-server` : modèle GGUF depuis `/mnt/models` (NFS), `:1234`
- Embeddings activés (`--embeddings`, pooling mean)
- Ouvre le port dans le firewall, désactive l'ancien service lm-studio

## Variables principales

| Variable | Défaut | Surcharge gpu-01 |
|---|---|---|
| `llama_server_port` | 1234 | — |
| `llama_model_path` | `""` | `/mnt/models/bartowski/Qwen3-8B-GGUF/Qwen3-8B-Q4_K_M.gguf` |
| `llama_model_alias` | `""` | `qwen3-8b` |
| `llama_ctx_size` | 32768 | 32768 |
| `llama_n_gpu_layers` | 99 | — |
| `hsa_override_gfx_version` | `10.3.0` | — |

## ⚠️ Gap IaC — instances CPU hors Ansible

Le rôle ne gère que l'instance **GPU** (`llama-server.service`). Les services suivants existent sur gpu-01 mais ont été créés **à la main** (non reproductibles par `make apply-gpu`) :

| Service | Port | Modèle | Usage |
|---|---|---|---|
| `llama-server-system.service` | 1236 | Qwen3-1.7B CPU | profil `system` |
| `llama-server-monitor.service` | 1237 | Qwen3-1.7B CPU | profil `monitor` |
| `llama-server-dev.service` | — | (non documenté, présent dans /etc/systemd/system) | ? |

**À faire** : templatiser ces instances dans le rôle (liste d'instances avec port/modèle/threads) pour qu'une réinstallation de gpu-01 restaure les 3 serveurs.

## Caveats

- Rebuild forcé : supprimer le binaire (`/opt/llama.cpp/build/bin/llama-server`) puis relancer le rôle
- Le modèle vient du NFS — voir caveat du rôle `nfs_client`
