Skip to content

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 PATH befindet

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 -cache ausfü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 serve

Zur Installation in einem Standard-Präfix-Layout:

shell
cmake --install build --prefix /path/to/install

Auf 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 8

Unterstü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=gfx1100

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

macOS (Apple Silicon)

Zusätzliche Voraussetzungen:

MLX Metal erfordert die Metal-Toolchain. Installieren Sie zuerst Xcode, dann:

shell
xcodebuild -downloadComponent MetalToolchain

Windows

Zusätzliche Voraussetzungen:

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_SDK benötigt:

PowerShell

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

CMD

cmd
set 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) oder sudo 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 PATH befinden, 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 8

Lokale 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-c

Unter macOS arm64:

shell
OLLAMA_MLX_SOURCE=../mlx OLLAMA_MLX_C_SOURCE=../mlx-c cmake -B build .
cmake --build build --parallel 8

Fü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 8

Docker

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/ollama für Standardinstallationen, bei denen sich ollama unter bin/ befindet
  • ./lib/ollama für Windows-Release-Payloads und lokale Dist-Ausgaben
  • . für macOS-Release-Artefakte, bei denen Hilfsprogramme zusammen mit ollama abgelegt sind
  • build/lib/ollama und dist/<platform>/lib/ollama für lokale Entwicklungs-Builds

Wenn die Bibliotheken nicht gefunden werden, führt Ollama ohne Beschleunigungsbibliotheken aus.