Skip to content

Développement

Installez les prérequis :

  • Go
  • CMake 3.24 ou une version plus récente
  • Compilateur C/C++ : Clang sur macOS, outils C++ Visual Studio 2022 sur Windows, ou GCC/Clang sur Linux
  • Ninja dans le PATH est recommandé, en particulier sur Windows

Pour itérer en pur Go contre un payload natif existant, exécutez Ollama depuis la racine du dépôt :

shell
go run . serve

NOTE

Ollama inclut du code natif compilé avec CGO. De temps à autre, ces structures de données peuvent changer et CGO peut se désynchroniser, entraînant des plantages inattendus. Vous pouvez forcer une reconstruction complète du code natif en exécutant d'abord go clean -cache.

Modèle de build natif

Pour une nouvelle extraction de dépôt, ou après modification de code natif, construisez depuis la racine du dépôt. Sur macOS arm64, cela construit l'inférence Metal. Sur toutes les autres plateformes, cela construit une inférence exclusivement CPU. Cela construit le binaire Go à la racine du dépôt et installe le payload d'exécution natif sous build/lib/ollama.

shell
cmake -B build .
cmake --build build --parallel 8
./ollama serve

Pour installer dans une structure de préfixe standard :

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

Sur toutes les plateformes excepté macOS arm64, pour construire les backends GPU, sélectionnez-les explicitement :

shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS="cuda_v13;vulkan"
cmake --build build --parallel 8

Les valeurs de backend prises en charge sont cuda_v12, cuda_v13, rocm_v7_1, rocm_v7_2, vulkan, cuda_jetpack5 et cuda_jetpack6.

Utilisez les surcharges d'architecture CMake standard pour restreindre les builds GPU à votre matériel local :

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

Vous pouvez ajuster les options de build GGML en définissant les valeurs GGML_* lors de la configuration. Par exemple, pour désactiver les noyaux d'attention flash CUDA pour le débogage local :

shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS=cuda_v12 -DGGML_CUDA_FA=OFF

macOS (Apple Silicon)

Prérequis supplémentaires :

MLX Metal nécessite la chaîne d'outils Metal. Installez Xcode d'abord, puis :

shell
xcodebuild -downloadComponent MetalToolchain

Windows

Prérequis supplémentaires :

Pour les builds avec Ninja, exécutez CMake depuis un PowerShell développeur / Invite de commandes développeur ou un autre shell où le compilateur Visual Studio est disponible.

La construction pour Vulkan nécessite la variable d'environnement VULKAN_SDK :

PowerShell

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

CMD

cmd
set VULKAN_SDK=C:\VulkanSDK\<version>

Windows (ARM)

Windows ARM ne prend pas en charge les bibliothèques d'accélération supplémentaires pour le moment.

Linux

Prérequis supplémentaires :

  • (Facultatif) Prise en charge GPU AMD
  • (Facultatif) Prise en charge GPU NVIDIA
  • (Facultatif) Prise en charge GPU Vulkan
    • Vulkan SDK - utile pour les GPU AMD/Intel
    • Ou installation via le gestionnaire de paquets : sudo apt install vulkan-sdk (Ubuntu/Debian) ou sudo dnf install vulkan-sdk (Fedora/CentOS)
  • (Facultatif) Prise en charge du moteur MLX
    • CUDA 13+ SDK
    • cuDNN 9+
    • OpenBLAS/LAPACK : sudo apt install libopenblas-dev liblapack-dev liblapacke-dev (Ubuntu/Debian)

IMPORTANT

Assurez-vous que les prérequis sont présents dans le PATH avant d'exécuter CMake.

Moteur MLX (facultatif)

Le moteur MLX permet d'exécuter des modèles basés sur safetensor. Sur macOS arm64, MLX est activé par défaut. Sur les autres plateformes, les backends MLX sont sélectionnés via la variable OLLAMA_MLX_BACKENDS.

CUDA

Nécessite CUDA 13+ et cuDNN 9+.

shell
cmake -B build . -DOLLAMA_MLX_BACKENDS=cuda_v13
cmake --build build --parallel 8

Substitutions de source MLX locale

Pour construire contre une extraction locale de MLX et/ou MLX-C (utile pour le développement), définissez les variables d'environnement avant d'exécuter CMake :

shell
export OLLAMA_MLX_SOURCE=/path/to/mlx
export OLLAMA_MLX_C_SOURCE=/path/to/mlx-c

Sur macOS arm64 :

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

Pour 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 .

Exécution des tests

Pour exécuter les tests, utilisez go test :

shell
go test ./...

Détection des bibliothèques

Ollama recherche les binaires d'aide natifs et les bibliothèques d'accélération dans les dispositions installées et de développement local :

  • ../lib/ollama pour les installations standard où le binaire ollama se trouve sous bin/
  • ./lib/ollama pour les payloads de style release Windows et la sortie dist locale
  • . pour les artefacts de release macOS qui colocalisent les assistants avec le binaire ollama
  • build/lib/ollama et dist/<platform>/lib/ollama pour les builds de développement local

Si les bibliothèques ne sont pas trouvées, Ollama ne s'exécutera avec aucune bibliothèque d'accélération.