Entwicklung
Voraussetzungen installieren:
- Go
- CMake 3.24 oder neuer
- C/C++-Compiler: Clang unter macOS, Visual Studio 2022 C++-Tools unter Windows oder GCC/Clang unter Linux
- Ninja wird empfohlen, insbesondere unter Windows, wenn er sich im
PATHbefindet
Für reine Go-Iterationen gegen einen vorhandenen nativen Payload führen Sie Ollama aus dem Stammverzeichnis des Repositorys aus:
shell
go run . serve[!HINWEIS] Ollama enthält mit CGO kompilierten nativen Code. Von Zeit zu Zeit können sich diese Datenstrukturen ändern, sodass CGO nicht mehr synchron ist und unerwartete Abstürze auftreten. Sie können einen vollständigen Build des nativen Codes erzwingen, indem Sie zuerst
go clean -cacheausführen.
Natives Build-Modell
Bei einem frischen Checkout oder nach Änderungen am nativen Code erstellen Sie das Projekt aus dem Stammverzeichnis des Repositorys. Unter macOS arm64 wird dadurch Metal-Inferenz erstellt. Auf allen anderen Plattformen wird nur CPU-Inferenz erstellt. Es erstellt die Go-Binärdatei im Stammverzeichnis des Repositorys und installiert den nativen Laufzeit-Payload unter build/lib/ollama.
shell
cmake -B build .
cmake --build build --parallel 8
./ollama serveZur Installation in einem Standard-Präfix-Layout:
shell
cmake --install build --prefix /path/to/installAuf allen Plattformen außer macOS arm64 wählen Sie die Backends explizit aus, um GPU-Backends zu erstellen:
shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS="cuda_v13;vulkan"
cmake --build build --parallel 8Unterstützte Backend-Werte sind cuda_v12, cuda_v13, rocm_v7_1, rocm_v7_2, vulkan, cuda_jetpack5 und cuda_jetpack6.
Verwenden Sie Standard-CMake-Architekturüberschreibungen, um GPU-Builds auf lokale Hardware einzuschränken:
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=gfx1100Sie können GGML-Build-Optionen anpassen, indem Sie während der Konfiguration GGML_*-Werte festlegen. Beispielsweise können Sie CUDA-Flash-Attention-Kernel für lokales Debugging deaktivieren:
shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS=cuda_v12 -DGGML_CUDA_FA=OFFmacOS (Apple Silicon)
Zusätzliche Voraussetzungen:
MLX Metal erfordert die Metal-Toolchain. Installieren Sie zuerst Xcode, dann:
shell
xcodebuild -downloadComponent MetalToolchainWindows
Zusätzliche Voraussetzungen:
- Visual Studio 2022 einschließlich der Native Desktop-Workload
- (Optional) AMD-GPU-Unterstützung
- (Optional) NVIDIA-GPU-Unterstützung
- (Optional) Vulkan-GPU-Unterstützung
- Vulkan SDK – nützlich für AMD-/Intel-GPUs
- (Optional) MLX-Engine-Unterstützung
Für Ninja-Builds führen Sie CMake aus einem Developer PowerShell/Command Prompt oder einer anderen Shell aus, in der der Visual Studio-Compiler verfügbar ist.
Für Vulkan-Builds wird die Umgebungsvariable
VULKAN_SDKbenötigt:PowerShell
powershell$env:VULKAN_SDK="C:\VulkanSDK\<version>"CMD
cmdset VULKAN_SDK=C:\VulkanSDK\<version>
Windows (ARM)
Windows ARM unterstützt derzeit keine zusätzlichen Beschleunigungsbibliotheken.
Linux
Zusätzliche Voraussetzungen:
- (Optional) AMD-GPU-Unterstützung
- (Optional) NVIDIA-GPU-Unterstützung
- (Optional) Vulkan-GPU-Unterstützung
- Vulkan SDK – nützlich für AMD-/Intel-GPUs
- Oder installieren Sie es über den Paketmanager:
sudo apt install vulkan-sdk(Ubuntu/Debian) odersudo dnf install vulkan-sdk(Fedora/CentOS)
- (Optional) MLX-Engine-Unterstützung
- CUDA 13+ SDK
- cuDNN 9+
- OpenBLAS/LAPACK:
sudo apt install libopenblas-dev liblapack-dev liblapacke-dev(Ubuntu/Debian)
[!WICHTIG] Stellen Sie sicher, dass sich alle Voraussetzungen im
PATHbefinden, bevor Sie CMake ausführen.
MLX-Engine (Optional)
Die MLX-Engine ermöglicht die Ausführung von auf Safetensor basierenden Modellen. Unter macOS arm64 ist MLX standardmäßig aktiviert. Auf anderen Plattformen werden MLX-Backends mit OLLAMA_MLX_BACKENDS ausgewählt.
CUDA
Erfordert CUDA 13+ und cuDNN 9+.
shell
cmake -B build . -DOLLAMA_MLX_BACKENDS=cuda_v13
cmake --build build --parallel 8Lokale MLX-Quellcode-Überschreibungen
Um gegen einen lokalen Checkout von MLX und/oder MLX-C zu erstellen (nützlich für die Entwicklung), legen Sie Umgebungsvariablen fest, bevor Sie CMake ausführen:
shell
export OLLAMA_MLX_SOURCE=/path/to/mlx
export OLLAMA_MLX_C_SOURCE=/path/to/mlx-cUnter macOS arm64:
shell
OLLAMA_MLX_SOURCE=../mlx OLLAMA_MLX_C_SOURCE=../mlx-c cmake -B build .
cmake --build build --parallel 8Für 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 .Tests ausführen
Um Tests auszuführen, verwenden Sie go test:
shell
go test ./...Bibliothekserkennung
Ollama sucht nach nativen Hilfsbinärdateien und Beschleunigungsbibliotheken in installierten und lokalen Entwicklungs-Layouts:
../lib/ollamafür Standardinstallationen, bei denen sichollamaunterbin/befindet./lib/ollamafür Windows-Release-Payloads und lokale Dist-Ausgaben.für macOS-Release-Artefakte, bei denen Hilfsprogramme zusammen mitollamaabgelegt sindbuild/lib/ollamaunddist/<platform>/lib/ollamafür lokale Entwicklungs-Builds
Wenn die Bibliotheken nicht gefunden werden, führt Ollama ohne Beschleunigungsbibliotheken aus.