Skip to content

开发

安装前提条件:

  • 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 . serve

NOTE

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_v12cuda_v13rocm_v7_1rocm_v7_2vulkancuda_jetpack5cuda_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=OFF

macOS (Apple Silicon)

额外的前提条件:

MLX Metal 需要 Metal 工具链。请先安装 Xcode,然后执行:

shell
xcodebuild -downloadComponent MetalToolchain

Windows

额外的前提条件:

对于 Ninja 构建,请从开发者 PowerShell/命令提示符或任何可使用 Visual Studio 编译器的 Shell 中运行 CMake。

为 Vulkan 进行构建需要 VULKAN_SDK 环境变量:

PowerShell

powershell
$env:VULKAN_SDK="C:\VulkanSDK\<version>"

CMD

cmd
set 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 8

Docker

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/ollamadist/<platform>/lib/ollama 用于本地开发构建

如果找不到这些库,Ollama 将无法使用任何加速库运行。