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
PATHest 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 . serveNOTE
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 servePour installer dans une structure de préfixe standard :
shell
cmake --install build --prefix /path/to/installSur 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 8Les 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=gfx1100Vous 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=OFFmacOS (Apple Silicon)
Prérequis supplémentaires :
MLX Metal nécessite la chaîne d'outils Metal. Installez Xcode d'abord, puis :
shell
xcodebuild -downloadComponent MetalToolchainWindows
Prérequis supplémentaires :
- Visual Studio 2022 incluant la charge de travail Bureau natif
- (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
- (Facultatif) Prise en charge du moteur MLX
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
cmdset 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) ousudo 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 8Substitutions 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-cSur macOS arm64 :
shell
OLLAMA_MLX_SOURCE=../mlx OLLAMA_MLX_C_SOURCE=../mlx-c cmake -B build .
cmake --build build --parallel 8Pour 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 .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/ollamapour les installations standard où le binaireollamase trouve sousbin/./lib/ollamapour les payloads de style release Windows et la sortie dist locale.pour les artefacts de release macOS qui colocalisent les assistants avec le binaireollamabuild/lib/ollamaetdist/<platform>/lib/ollamapour 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.