Skip to content

開發

安裝先決條件:

  • Go
  • CMake 3.24 或更新版本
  • C/C++ 編譯器:macOS 使用 Clang,Windows 使用 Visual Studio 2022 C++ 工具,Linux 使用 GCC/Clang
  • 建議將 Ninja 加入 PATH,尤其在 Windows 上

若要針對現有的原生承載(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

若要安裝到標準前綴佈局:

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 預設為啟用。在其他平台上,MLX 後端透過 OLLAMA_MLX_BACKENDS 選擇。

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 輸出
  • .,適用於將輔助程式與 ollama 放置在一起的 macOS 發行成品
  • build/lib/ollamadist/<platform>/lib/ollama,適用於本地開發建置

如果找不到這些程式庫,Ollama 將不會使用任何加速程式庫執行。