Using a GPU for the models
Optional, and off by default on every installation. SkyKeep ships CPU-only because that is the configuration that runs on any machine you install it on; a GPU is a speed-up you opt into on the hosts that have one. Turning it on is a single setting here and a one-time root-level change to the host, in that order of importance.
This page quotes no timings on purpose. What a model costs depends on your hardware, and this deployment measures its own rather than inheriting a figure from the machine SkyKeep was built on — see the model page in the administration console.
What this changes, and what it does not
Only where the answering and embedding models run. SkyKeep itself never learns what a GPU is: it speaks to the model runtime over HTTP, and the runtime does its own hardware detection. Nothing about compartments, encryption, audit or retrieval behaves differently — the same question returns the same answer from the same evidence, sooner. If you have no GPU, you need nothing on this page: the shipped default is CPU and it is a supported configuration, not a degraded one.
Step 1 — confirm the host can actually do this
Two separate things must be true and they are commonly confused. The first is a working NVIDIA driver on the host, which is what the first command reports. The second is that the Docker daemon has NVIDIA's container runtime, which is a different piece of software and is what the second command reports. A host can pass the first and fail the second — that is the usual case on a fresh machine, and it is the case this page exists for.
nvidia-smidocker info --format '{{range $k, $v := .Runtimes}}{{$k}} {{end}}'Step 2 — install the container runtime (needs root, once)
If the second command above did not list 'nvidia', install NVIDIA's container toolkit and register it with Docker. This is a one-time change to the HOST, not to SkyKeep, and it needs root and outbound network access to NVIDIA's package repository — so on an air-gapped installation it must be done from your own mirror, or not at all. These are NVIDIA's published steps for an apt-based distribution; check their current installation guide if your distribution differs, because this is their software and not ours.
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpgcurl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.listsudo apt-get update && sudo apt-get install -y nvidia-container-toolkitsudo nvidia-ctk runtime configure --runtime=dockersudo systemctl restart dockerStep 3 — prove it before changing SkyKeep
Run the model runtime's own image against the GPU with no SkyKeep involved. If this prints your card, the host is ready and any later failure is SkyKeep's configuration rather than the driver — which is a much shorter thing to debug. If it fails, stop here: enabling the setting below will only move the same failure into your vault's startup.
docker run --rm --runtime=nvidia --gpus all --entrypoint nvidia-smi ollama/ollama:0.32.14Step 4 — tell the deployment to use it
One setting in your environment file. 'runc' is the default and means CPU; 'nvidia' hands the model service the host's GPUs. Nothing else changes — the same compose file, the same services, the same ports, the same data volumes. Then restart the deployment; your documents and audit history are untouched, because only the model service's runtime changed.
SKYKEEP_OLLAMA_RUNTIME=nvidiascripts/skykeep.sh restartIf the runtime is missing, SkyKeep refuses to start
Deliberately, and it is worth saying why, because refusing to start looks unhelpful. The failure being prevented is not a crash — it is a vault that comes up healthy, answers every question, and does it all on the CPU while the configuration says otherwise. Nobody notices that for weeks. A performance setting that silently does nothing is the same class of defect as a scanner that silently passes, so this one says so and stops. The message names the runtimes your daemon does have, and setting SKYKEEP_OLLAMA_RUNTIME back to 'runc' always starts.
What a GPU does not fix
Two things, and both matter more than the speed-up. A question whose evidence is large can still take longer than the front door will wait, on any hardware — a faster machine moves that boundary rather than removing it. And the amount of memory on the card is a real ceiling: a model larger than the card holds is served partly from system memory and can be SLOWER than the CPU path. Choose the answering model against the card you have, on the administration console's model page, which states each model's cost against this deployment's own measurements rather than against anyone else's.