Files
LM-Gambit/packaging/GPU-ACCELERATION.md
T
Netherwarlord d63319bc9a
tests / python (3.10) (push) Successful in 13s
tests-macos / macos (push) Successful in 18s
tests / python (3.11) (push) Successful in 13s
tests / web (push) Successful in 38s
feat: enhance GPU support detection and user feedback in the engine interface
2026-07-29 15:35:03 -04:00

85 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# GPU acceleration
The first run installs `llama-cpp-python` from PyPI, which is a **CPU build**.
It works everywhere and needs no setup, but it is many times slower than your
GPU.
This is not something the download could have decided for you. `llama-cpp-python`
compiles its backend in, so a CPU wheel stays CPU-only no matter what hardware
it later finds — there is no runtime switch. Getting GPU speed means installing
a different wheel, once.
Run the matching command from **inside this folder**, after the first launch has
created `.venv`.
## NVIDIA (CUDA)
```bash
# Windows
.venv\Scripts\python -m pip install --force-reinstall --no-cache-dir \
llama-cpp-python --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu124
# Linux
.venv/bin/python -m pip install --force-reinstall --no-cache-dir \
llama-cpp-python --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu124
```
Use `cu124` unless you have a reason not to. It and `cu125` carry current
builds; `cu121` through `cu123` stopped at 0.3.4 and are far behind. You do
**not** need to match your driver's CUDA version exactly — CUDA drivers are
backward compatible, so a 13.x driver runs a cu124 build without complaint.
Older than CUDA 12.4 is the only case where dropping back helps.
## Apple Silicon (Metal)
The PyPI wheel already includes Metal support on arm64 Macs, so there is
usually nothing to do. To force a rebuild against the local SDK:
```bash
CMAKE_ARGS="-DGGML_METAL=on" .venv/bin/python -m pip install \
--force-reinstall --no-cache-dir llama-cpp-python
```
MLX is used automatically for MLX-format models if `mlx-lm` is installed; the
requirements file pulls it in on Apple Silicon.
## AMD (ROCm)
No prebuilt wheels are published, so this compiles from source and needs the
ROCm toolkit installed:
```bash
CMAKE_ARGS="-DGGML_HIPBLAS=on" .venv/bin/python -m pip install \
--force-reinstall --no-cache-dir llama-cpp-python
```
## Confirming it worked
Start LM-Gambit and open **Settings → Engine**. The row that answers this is
**GPU offload**:
- *Supported by this build* — the installed binary can drive your GPU.
- *Not in this build (CPU only)* — it cannot, whatever the architecture says.
The **Architecture** row above it is detected from your *hardware* and will
happily read `cuda` on any machine with an NVIDIA driver, including one running
an entirely CPU-only build. It is not evidence of anything. When the two
disagree the sidebar also shows a warning, and the Engine chip appends
`· CPU build`.
Then run one question and watch the numbers. On CPU you should expect roughly
10–13 tok/s for a mid-size quantised model; a discrete GPU is several times
that. If throughput did not move after installing a GPU wheel, the install did
not take — check for an error in the pip output, since a failed
`--force-reinstall` leaves the previous build in place.
The blunt external check, run while a question is generating:
```bash
nvidia-smi
```
Your Python process should appear in the process list holding VRAM. If the list
shows only desktop software and utilisation sits at 0%, nothing is reaching the
card.