直通算力linux
【容器模式】容器绕不开内核模块,宿主内核回退LTS
容器与宿主共用内核(实测:容器内 uname -r = 宿主 6.18.54)
nvidia 驱动分两半:nvidia.ko 由宿主内核加载,对内核版本有限制;容器里那份只是用户态库 libcuda
Ubuntu 基础镜像只能满足用户态 → 容器里跑 llama.cpp 用 4060,在宿主最新内核上不可行
【虚拟机模式】
宿主系统不加载 nvidia,改用 vfio-pci 绑定直通,内核版本不受限制
虚拟机磁盘文件估算:Vulkan 3GB,CUDA 8GB
Guest 系统(Ubuntu 24.04 minimal,云镜像下载 252 MiB):约 1.2-1.5 GB
Guest 内 NVIDIA 驱动(用户态,只做算力):约 0.3-0.6 GB
docker 引擎 + containerd:约 0.2-0.3 GB
llama.cpp 镜像:Vulkan 路线约 0.7 GB / CUDA 路线约 5.8 GB ← 主要差异
建议分配(qcow2 稀疏,按用量增长,不实占):Vulkan 8 GB / CUDA 16 GB
docker镜像体积
ghcr.io/ggml-org/llama.cpp:server-cuda 2473 MiB 压缩 / 13 层 / 展开约 5.8 GiB
ghcr.io/ggml-org/llama.cpp:server-vulkan 294 MiB 压缩 / 6 层 / 展开约 0.7 GiB
ghcr.io/ggml-org/llama.cpp:server 297 MiB 压缩 / 5 层 / 展开约 0.7 GiB
ghcr.io/ggml-org/llama.cpp:full-cuda 3412 MiB 压缩 / 14 层 / 展开约 8.0 GiB
nvidia/cuda:12.6.3-runtime-ubuntu24.04 1459 MiB 压缩(展开约 3.4 GiB)
nvidia/cuda:12.6.3-base-ubuntu24.04 87 MiB 压缩
nvidia/cuda:12.6.3-devel-ubuntu24.04 3894 MiB 压缩(展开约 9.1 GiB)
ubuntu:24.04 28 MiB / debian:12-slim 27 MiB / alpine:3.21 3 MiB
base (87 MiB):CUDA 运行时核心(cudart),提供基础 GPU 调用能力。
runtime (1459 MiB):base + CUDA 数学库(含 cuBLAS 等),llama.cpp 最低运行需求。
devel (3894 MiB):runtime + nvcc 编译工具链,仅供编译期使用。
ubuntu/debian/alpine (28/27/3 MiB):极简操作系统底包。
核心结论:llama.cpp 运行必须依赖 runtime(因需 cuBLAS 算子支持),多阶段构建时 devel 负责编译,产物放入 runtime 即可。
虚拟内存:8GB
7B Q4/Q5 全量可跑
14B Q4 需部分 offload
32B 放不下
模型文件映射
+--------------+-----------------------+--------------+------------------+------------------------------------+
| 技术名称 | 宿主机形态 | 映射方式 | 虚拟机形态 | 性能与特点 |
+--------------+-----------------------+--------------+------------------+------------------------------------+
| virtiofs | 宿主机目录 | Virtio-FS | Guest挂载点 | 首选,近原生,支持mmap |
| 9p/virtfs | 宿主机目录 | 9P协议 | Guest挂载点 | 省事,mmap慢(需 --no-mmap) |
| 块设备直通 | 宿主机分区(禁挂载) | 裸盘直通 | Guest裸设备 | 最快同本地,mmap完美 |
| NFS/SMB | 网络存储 | 网络挂载 | Guest网络目录 | 需维护服务,延迟高(不推荐) |
| Docker卷引用 | Guest目录 | 只读卷(-v:ro)| 容器内只读 | 禁双写,共享必须只读 |
+--------------+-----------------------+--------------+------------------+------------------------------------+