diff --git a/modules/ollama.nix b/modules/ollama.nix index e031953..bfc32a6 100644 --- a/modules/ollama.nix +++ b/modules/ollama.nix @@ -7,10 +7,25 @@ rocmOverrideGfx = "11.5.1"; # gfx1151, Krackan Point RDNA 3.5 host = "127.0.0.1"; port = 11434; + # Model store on plain-ext4 /mnt/data: model blobs are public data, so + # they don't need to occupy the 512G LUKS root or pay dm-crypt on reads. + # Static user instead of the default DynamicUser — a random dynamic UID + # can't own a persistent store outside /var/lib. + user = "ollama"; + group = "ollama"; + home = "/mnt/data/ollama"; environmentVariables = { HSA_OVERRIDE_GFX_VERSION = "11.5.1"; + # gfx1151 (RDNA 3.5) lacks tuned hipBLASLt kernels in current ROCm; force + # the stable rocBLAS GEMM path to avoid crashes/garbage output on this iGPU. + ROCBLAS_USE_HIPBLASLT = "0"; OLLAMA_FLASH_ATTENTION = "1"; OLLAMA_KV_CACHE_TYPE = "q8_0"; + # Keep the loaded model resident: every eviction re-pays a multi-minute + # 20+ GiB disk read (client keep_alive can still override per-request). + OLLAMA_KEEP_ALIVE = "-1"; + # Default 5m load timeout kills large-model loads under memory pressure. + OLLAMA_LOAD_TIMEOUT = "15m"; }; loadModels = [ "qwen3:14b" ]; };