Sviluppo
Installa i prerequisiti:
- Go
- CMake 3.24 o successivo
- Compilatore C/C++: Clang su macOS, strumenti C++ di Visual Studio 2022 su Windows, o GCC/Clang su Linux
- Ninja nel
PATHè consigliato, soprattutto su Windows
Per iterazioni pure in Go su un payload nativo esistente, esegui Ollama dalla radice del repository:
shell
go run . serveNOTE
Ollama include codice nativo compilato con CGO. Di tanto in tanto queste strutture dati possono cambiare e CGO può andare fuori sincronia causando crash imprevisti. Puoi forzare una compilazione completa del codice nativo eseguendo prima go clean -cache.
Modello di compilazione nativa
Per un checkout nuovo, o dopo aver modificato codice nativo, esegui la compilazione dalla radice del repository. Su macOS arm64, questa compilazione genera l'inferenza Metal. Su tutte le altre piattaforme genera un'inferenza solo CPU. Compila il binario Go nella radice del repository e installa il payload di runtime nativo in build/lib/ollama.
shell
cmake -B build .
cmake --build build --parallel 8
./ollama servePer installare in un layout di prefisso standard:
shell
cmake --install build --prefix /path/to/installSu tutte le piattaforme tranne macOS arm64, per compilare i backend GPU selezionali esplicitamente:
shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS="cuda_v13;vulkan"
cmake --build build --parallel 8I valori di backend supportati sono cuda_v12, cuda_v13, rocm_v7_1, rocm_v7_2, vulkan, cuda_jetpack5 e cuda_jetpack6.
Usa gli override di architettura standard di CMake per restringere le compilazioni GPU per l'hardware locale:
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=gfx1100Puoi regolare le opzioni di compilazione di GGML impostando i valori GGML_* durante la configurazione. Ad esempio, per disabilitare i kernel CUDA flash attention per il debug locale:
shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS=cuda_v12 -DGGML_CUDA_FA=OFFmacOS (Apple Silicon)
Prerequisiti aggiuntivi:
MLX Metal richiede la toolchain Metal. Installa prima Xcode, poi:
shell
xcodebuild -downloadComponent MetalToolchainWindows
Prerequisiti aggiuntivi:
- Visual Studio 2022 incluso il carico di lavoro Native Desktop
- (Opzionale) Supporto GPU AMD
- (Opzionale) Supporto GPU NVIDIA
- (Opzionale) Supporto GPU Vulkan
- Vulkan SDK - utile per GPU AMD/Intel
- (Opzionale) Supporto motore MLX
Per le compilazioni con Ninja, esegui CMake da un Prompt di PowerShell/Command Prompt per sviluppatori o da un'altra shell in cui il compilatore Visual Studio è disponibile.
La build per Vulkan richiede la variabile d'ambiente VULKAN_SDK:
PowerShell
powershell$env:VULKAN_SDK="C:\VulkanSDK\<version>"CMD
cmdset VULKAN_SDK=C:\VulkanSDK\<version>
Windows (ARM)
Al momento, Windows ARM non supporta librerie di accelerazione aggiuntive.
Linux
Prerequisiti aggiuntivi:
- (Opzionale) Supporto GPU AMD
- (Opzionale) Supporto GPU NVIDIA
- (Opzionale) Supporto GPU Vulkan
- Vulkan SDK - utile per GPU AMD/Intel
- Oppure installa tramite gestore di pacchetti:
sudo apt install vulkan-sdk(Ubuntu/Debian) osudo dnf install vulkan-sdk(Fedora/CentOS)
- (Opzionale) Supporto motore MLX
- CUDA 13+ SDK
- cuDNN 9+
- OpenBLAS/LAPACK:
sudo apt install libopenblas-dev liblapack-dev liblapacke-dev(Ubuntu/Debian)
IMPORTANT
Assicurati che i prerequisiti siano nel PATH prima di eseguire CMake.
Motore MLX (Opzionale)
Il motore MLX consente l'esecuzione di modelli basati su safetensor. Su macOS arm64, MLX è abilitato per impostazione predefinita. Su altre piattaforme, i backend MLX sono selezionati con OLLAMA_MLX_BACKENDS.
CUDA
Richiede CUDA 13+ e cuDNN 9+.
shell
cmake -B build . -DOLLAMA_MLX_BACKENDS=cuda_v13
cmake --build build --parallel 8Override del sorgente MLX locale
Per compilare rispetto a un checkout locale di MLX e/o MLX-C (utile per lo sviluppo), imposta le variabili d'ambiente prima di eseguire CMake:
shell
export OLLAMA_MLX_SOURCE=/path/to/mlx
export OLLAMA_MLX_C_SOURCE=/path/to/mlx-cSu macOS arm64:
shell
OLLAMA_MLX_SOURCE=../mlx OLLAMA_MLX_C_SOURCE=../mlx-c cmake -B build .
cmake --build build --parallel 8Per 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 .Esecuzione dei test
Per eseguire i test, usa go test:
shell
go test ./...Rilevamento delle librerie
Ollama cerca i binari helper nativi e le librerie di accelerazione nei layout di installazione e di sviluppo locale:
../lib/ollamaper le installazioni standard in cuiollamasi trova inbin/./lib/ollamaper i payload in stile release di Windows e l'output dist locale.per gli artifact di release di macOS che affiancano gli helper aollamabuild/lib/ollamaedist/<platform>/lib/ollamaper le compilazioni di sviluppo locale
Se le librerie non vengono trovate, Ollama non verrà eseguito con nessuna libreria di accelerazione.