开发
安装前提条件:
- Go
- CMake 3.24 或更高版本
- C/C++ 编译器:macOS 上的 Clang,Windows 上的 Visual Studio 2022 C++ tools,或 Linux 上的 GCC/Clang
- 建议将
PATH中的 Ninja 加入环境变量,尤其是在 Windows 上
对于现有的原生负载(native payload),进行纯 Go 迭代时,请从仓库根目录运行 Ollama:
shell
go run . serveNOTE
Ollama 包含使用 CGO 编译的底层代码。有时这些数据结构可能会发生变化,导致 CGO 不同步并产生意外崩溃。您可以通过先运行 go clean -cache 来强制进行完整的原生代码构建。
原生构建模型
对于新检出的仓库或在修改原生代码后,请从仓库根目录进行构建。在 macOS arm64 上,这将构建 Metal 推理;在所有其他平台上,这将构建仅限 CPU 的推理。它将在仓库根目录生成 Go 二进制文件,并将原生运行时负载安装到 build/lib/ollama 下。
shell
cmake -B build .
cmake --build build --parallel 8
./ollama serve若要安装到标准前缀布局(standard prefix layout)中:
shell
cmake --install build --prefix /path/to/install除了 macOS arm64 之外,在所有平台上若要构建 GPU 后端,请明确选择后端:
shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS="cuda_v13;vulkan"
cmake --build build --parallel 8支持的后端值包括 cuda_v12、cuda_v13、rocm_v7_1、rocm_v7_2、vulkan、cuda_jetpack5 和 cuda_jetpack6。
使用标准的 CMake 架构覆盖选项来针对本地硬件缩小 GPU 构建范围:
shell
# CUDA
cmake -B build . -DOLLAMA_LLAMA_BACKENDS=cuda_v13 -DCMAKE_CUDA_ARCHITECTURES=native
# ROCm / HIP
cmake -B build . -DOLLAMA_LLAMA_BACKENDS=rocm_v7_2 -DCMAKE_HIP_ARCHITECTURES=gfx1100您可以通过在配置期间设置 GGML_* 值来调整 GGML 构建选项。例如,为了本地调试而禁用 CUDA flash attention 内核:
shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS=cuda_v12 -DGGML_CUDA_FA=OFFmacOS (Apple Silicon)
额外的前提条件:
MLX Metal 需要 Metal 工具链。请先安装 Xcode,然后执行:
shell
xcodebuild -downloadComponent MetalToolchainWindows
额外的前提条件:
- Visual Studio 2022 包括 Native Desktop Workload
- (可选) AMD GPU 支持
- (可选) NVIDIA GPU 支持
- (可选) Vulkan GPU 支持
- Vulkan SDK - 用于 AMD/Intel GPU
- (可选) MLX 引擎支持
对于 Ninja 构建,请从开发者 PowerShell/命令提示符或任何可使用 Visual Studio 编译器的 Shell 中运行 CMake。
为 Vulkan 进行构建需要
VULKAN_SDK环境变量:PowerShell
powershell$env:VULKAN_SDK="C:\VulkanSDK\<version>"CMD
cmdset VULKAN_SDK=C:\VulkanSDK\<version>
Windows (ARM)
Windows ARM 目前不支持额外的加速库。
Linux
额外的前提条件:
- (可选) AMD GPU 支持
- (可选) NVIDIA GPU 支持
- (可选) Vulkan GPU 支持
- Vulkan SDK - 用于 AMD/Intel GPU
- 或者通过包管理器安装:
sudo apt install vulkan-sdk(Ubuntu/Debian) 或sudo dnf install vulkan-sdk(Fedora/CentOS)
- (可选) MLX 引擎支持
- CUDA 13+ SDK
- cuDNN 9+
- OpenBLAS/LAPACK:
sudo apt install libopenblas-dev liblapack-dev liblapacke-dev(Ubuntu/Debian)
IMPORTANT
在运行 CMake 之前,请确保前提条件已包含在 PATH 中。
MLX 引擎 (可选)
MLX 引擎支持运行基于 safetensor 的模型。在 macOS arm64 上,默认启用 MLX。在其他平台上,通过 OLLAMA_MLX_BACKENDS 选择 MLX 后端。
CUDA
需要 CUDA 13+ 和 cuDNN 9+。
shell
cmake -B build . -DOLLAMA_MLX_BACKENDS=cuda_v13
cmake --build build --parallel 8本地 MLX 源覆盖
若要针对本地检出的 MLX 和/或 MLX-C 进行构建(适用于开发),请在运行 CMake 前设置环境变量:
shell
export OLLAMA_MLX_SOURCE=/path/to/mlx
export OLLAMA_MLX_C_SOURCE=/path/to/mlx-c在 macOS arm64 上:
shell
OLLAMA_MLX_SOURCE=../mlx OLLAMA_MLX_C_SOURCE=../mlx-c cmake -B build .
cmake --build build --parallel 8对于 CUDA:
powershell
$env:OLLAMA_MLX_SOURCE="../mlx"
$env:OLLAMA_MLX_C_SOURCE="../mlx-c"
cmake -B build . -DOLLAMA_MLX_BACKENDS=cuda_v13
cmake --build build --parallel 8Docker
shell
docker build .ROCm
shell
docker build --build-arg FLAVOR=rocm .运行测试
要运行测试,请使用 go test:
shell
go test ./...库检测
Ollama 会在已安装和本地开发布局中查找原生辅助二进制文件和加速库:
../lib/ollama用于ollama位于bin/下的标准安装./lib/ollama用于 Windows 发布风格的负载和本地 dist 输出.用于 macOS 发布产物,其中辅助程序与ollama同地存放build/lib/ollama和dist/<platform>/lib/ollama用于本地开发构建
如果找不到这些库,Ollama 将无法使用任何加速库运行。