Docker
前置条件
- 系统必须已安装并运行 Docker
- 创建一个文件夹用于存储大型模型和中间文件(例如 /llama/models)
镜像说明
项目提供三种主要的 Docker 镜像:
ghcr.io/ggml-org/llama.cpp:full:完整版镜像,包含主执行文件和用于将 LLaMA 模型转换为 ggml 格式以及进行 4 位量化的工具。(支持平台:linux/amd64、linux/arm64)ghcr.io/ggml-org/llama.cpp:light:轻量版镜像,仅包含主执行文件。(支持平台:linux/amd64、linux/arm64)ghcr.io/ggml-org/llama.cpp:server:服务器版镜像,仅包含服务器执行文件。(支持平台:linux/amd64、linux/arm64)
此外,还提供以下特殊版本的镜像:
ghcr.io/ggml-org/llama.cpp:full-cuda:与full版本相同,但编译时包含 CUDA 支持。(支持平台:linux/amd64)ghcr.io/ggml-org/llama.cpp:light-cuda:与light版本相同,但编译时包含 CUDA 支持。(支持平台:linux/amd64)ghcr.io/ggml-org/llama.cpp:server-cuda:与server版本相同,但编译时包含 CUDA 支持。(支持平台:linux/amd64)ghcr.io/ggml-org/llama.cpp:full-rocm:与full版本相同,但编译时包含 ROCm 支持。(支持平台:linux/amd64、linux/arm64)ghcr.io/ggml-org/llama.cpp:light-rocm:与light版本相同,但编译时包含 ROCm 支持。(支持平台:linux/amd64、linux/arm64)ghcr.io/ggml-org/llama.cpp:server-rocm:与server版本相同,但编译时包含 ROCm 支持。(支持平台:linux/amd64、linux/arm64)ghcr.io/ggml-org/llama.cpp:full-musa:与full版本相同,但编译时包含 MUSA 支持。(支持平台:linux/amd64)ghcr.io/ggml-org/llama.cpp:light-musa:与light版本相同,但编译时包含 MUSA 支持。(支持平台:linux/amd64)ghcr.io/ggml-org/llama.cpp:server-musa:与server版本相同,但编译时包含 MUSA 支持。(支持平台:linux/amd64)ghcr.io/ggml-org/llama.cpp:full-intel:与full版本相同,但编译时包含 SYCL 支持。(支持平台:linux/amd64)ghcr.io/ggml-org/llama.cpp:light-intel:与light版本相同,但编译时包含 SYCL 支持。(支持平台:linux/amd64)ghcr.io/ggml-org/llama.cpp:server-intel:与server版本相同,但编译时包含 SYCL 支持。(支持平台:linux/amd64)
注意: GPU 加速版本的镜像目前仅在构建阶段经过 CI 测试,它们严格按照 .devops/ 目录中定义的 Dockerfile 和 .github/workflows/docker.yml 中定义的 GitHub Action 进行构建。如果您需要不同的设置(例如不同版本的 CUDA、ROCm 或 MUSA 库),目前需要在本地构建镜像。
基本使用方法
下载模型、转换为 ggml 格式并进行优化的最简单方法是使用 --all-in-one 命令配合完整版 Docker 镜像。
请将下面的 /path/to/models 替换为您实际下载模型的路径。
docker run -v /path/to/models:/models ghcr.io/ggml-org/llama.cpp:full --all-in-one "/models/" 7B
完成后,您就可以开始使用了!
docker run -v /path/to/models:/models ghcr.io/ggml-org/llama.cpp:full --run -m /models/7B/ggml-model-q4_0.gguf -p "建设网站可以通过10个简单步骤完成:" -n 512
或者使用轻量版镜像:
docker run -v /path/to/models:/models ghcr.io/ggml-org/llama.cpp:light -m /models/7B/ggml-model-q4_0.gguf -p "建设网站可以通过10个简单步骤完成:" -n 512
或者使用服务器版镜像:
docker run -v /path/to/models:/models -p 8000:8000 ghcr.io/ggml-org/llama.cpp:server -m /models/7B/ggml-model-q4_0.gguf --port 8000 --host 0.0.0.0 -n 512
使用 CUDA 的 Docker
假设您已经在 Linux 系统上正确安装了 nvidia-container-toolkit,或者使用支持 GPU 的云服务,那么容器内应该可以访问 cuBLAS。
本地构建 Docker 镜像
docker build -t local/llama.cpp:full-cuda --target full -f .devops/cuda.Dockerfile .
docker build -t local/llama.cpp:light-cuda --target light -f .devops/cuda.Dockerfile .
docker build -t local/llama.cpp:server-cuda --target server -f .devops/cuda.Dockerfile .
根据您的容器主机支持的 CUDA 环境以及 GPU 架构,您可能需要传入不同的 ARGS 参数。
默认设置为:
CUDA_VERSION设置为12.4.0CUDA_DOCKER_ARCH设置为 cmake 构建默认值,包含所有支持的架构
构建后的镜像本质上与非 CUDA 镜像相同:
local/llama.cpp:full-cuda:包含主执行文件和用于将 LLaMA 模型转换为 ggml 格式以及进行 4 位量化的工具。local/llama.cpp:light-cuda:仅包含主执行文件。local/llama.cpp:server-cuda:仅包含服务器执行文件。
CUDA 使用方法
本地构建完成后,使用方法与非 CUDA 示例类似,但需要添加 --gpus 标志。您还需要使用 --n-gpu-layers 标志来指定使用 GPU 的层数。
docker run --gpus all -v /path/to/models:/models local/llama.cpp:full-cuda --run -m /models/7B/ggml-model-q4_0.gguf -p "建设网站可以通过10个简单步骤完成:" -n 512 --n-gpu-layers 1
docker run --gpus all -v /path/to/models:/models local/llama.cpp:light-cuda -m /models/7B/ggml-model-q4_0.gguf -p "建设网站可以通过10个简单步骤完成:" -n 512 --n-gpu-layers 1
docker run --gpus all -v /path/to/models:/models local/llama.cpp:server-cuda -m /models/7B/ggml-model-q4_0.gguf --port 8000 --host 0.0.0.0 -n 512 --n-gpu-layers 1
使用 MUSA 的 Docker
假设您已经在 Linux 系统上正确安装了 mt-container-toolkit,那么容器内应该可以访问 muBLAS。
本地构建 MUSA Docker 镜像
docker build -t local/llama.cpp:full-musa --target full -f .devops/musa.Dockerfile .
docker build -t local/llama.cpp:light-musa --target light -f .devops/musa.Dockerfile .
docker build -t local/llama.cpp:server-musa --target server -f .devops/musa.Dockerfile .
根据您的容器主机支持的 MUSA 环境以及 GPU 架构,您可能需要传入不同的 ARGS 参数。
默认设置为:
MUSA_VERSION设置为rc4.0.1
构建后的镜像本质上与非 MUSA 镜像相同:
local/llama.cpp:full-musa:包含主执行文件和用于将 LLaMA 模型转换为 ggml 格式以及进行 4 位量化的工具。local/llama.cpp:light-musa:仅包含主执行文件。local/llama.cpp:server-musa:仅包含服务器执行文件。
MUSA 使用方法
本地构建完成后,使用方法与非 MUSA 示例类似,但需要将 mthreads 设置为默认的 Docker 运行时。可以通过执行 (cd /usr/bin/musa && sudo ./docker setup $PWD) 来完成此设置,并通过在主机上执行 docker info | grep mthreads 来验证更改。您还需要使用 --n-gpu-layers 标志来指定使用 GPU 的层数。
docker run -v /path/to/models:/models local/llama.cpp:full-musa --run -m /models/7B/ggml-model-q4_0.gguf -p "建设网站可以通过10个简单步骤完成:" -n 512 --n-gpu-layers 1
docker run -v /path/to/models:/models local/llama.cpp:light-musa -m /models/7B/ggml-model-q4_0.gguf -p "建设网站可以通过10个简单步骤完成:" -n 512 --n-gpu-layers 1
docker run -v /path/to/models:/models local/llama.cpp:server-musa -m /models/7B/ggml-model-q4_0.gguf --port 8000 --host 0.0.0.0 -n 512 --n-gpu-layers 1