開發
安裝先決條件:
- 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 . 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若要安裝到標準前綴佈局:
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,包含原生桌面工作負載
- (選用)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 預設為啟用。在其他平台上,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 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 輸出.,適用於將輔助程式與ollama放置在一起的 macOS 發行成品build/lib/ollama和dist/<platform>/lib/ollama,適用於本地開發建置
如果找不到這些程式庫,Ollama 將不會使用任何加速程式庫執行。