Rozwój
Zainstaluj wymagania wstępne:
- Go
- CMake w wersji 3.24 lub nowszej
- Kompilator C/C++: Clang na macOS, narzędzia C++ z Visual Studio 2022 na Windows lub GCC/Clang na Linux
- Zaleca się umieszczenie Ninja w zmiennej środowiskowej
PATH, szczególnie na systemie Windows
Do iteracji w czystym Go na istniejącym natywnym payload uruchom Ollama z katalogu głównego repozytorium:
shell
go run . serveNOTE
Ollama zawiera natywny kod skompilowany za pomocą CGO. Co jakiś czas te struktury danych mogą ulec zmianie, a CGO może wyjść z synchronizacji, co powoduje nieoczekiwane awarie. Możesz wymusić pełną kompilację kodu natywnego, uruchamiając najpierw polecenie go clean -cache.
Natywna kompilacja
W przypadku świeżo sklonowanego repozytorium lub po zmianie kodu natywnego kompiluj z katalogu głównego repozytorium. Na macOS arm64 kompilacja ta generuje inferencję Metal. Na wszystkich innych platformach generuje ona inferencję wyłącznie na CPU. Kompiluje binarny plik Go w katalogu głównym repozytorium oraz instaluje natywny payload runtime w katalogu build/lib/ollama.
shell
cmake -B build .
cmake --build build --parallel 8
./ollama serveAby zainstalować w standardowym układzie z prefiksem:
shell
cmake --install build --prefix /path/to/installNa wszystkich platformach z wyjątkiem macOS arm64, aby skompilować backendy GPU, wybierz je jawnie:
shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS="cuda_v13;vulkan"
cmake --build build --parallel 8Obsługiwane wartości backendów to cuda_v12, cuda_v13, rocm_v7_1, rocm_v7_2, vulkan, cuda_jetpack5 oraz cuda_jetpack6.
Użyj standardowych nadpisów architektury CMake, aby zawęzić kompilacje GPU do lokalnego sprzętu:
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=gfx1100Możesz dostosować opcje kompilacji GGML, ustawiając wartości GGML_* podczas konfiguracji. Na przykład, aby wyłączyć jądra flash attention CUDA do debugowania lokalnego:
shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS=cuda_v12 -DGGML_CUDA_FA=OFFmacOS (Apple Silicon)
Dodatkowe wymagania wstępne:
MLX Metal wymaga łańcucha narzędzi Metal. Najpierw zainstaluj Xcode, a następnie:
shell
xcodebuild -downloadComponent MetalToolchainWindows
Dodatkowe wymagania wstępne:
- Visual Studio 2022 w tym obciążenie Native Desktop Workload
- (Opcjonalnie) Obsługa GPU AMD
- (Opcjonalnie) Obsługa GPU NVIDIA
- (Opcjonalnie) Obsługa GPU Vulkan
- Vulkan SDK - przydatne dla GPU AMD/Intel
- (Opcjonalnie) Obsługa silnika MLX
Podczas kompilacji za pomocą Ninja uruchamiaj CMake z okna Developer PowerShell/Command Prompt lub innej powłoki, w której dostępny jest kompilator Visual Studio.
Kompilacja dla Vulkan wymaga zmiennej środowiskowej VULKAN_SDK:
PowerShell
powershell$env:VULKAN_SDK="C:\VulkanSDK\<version>"CMD
cmdset VULKAN_SDK=C:\VulkanSDK\<version>
Windows (ARM)
System Windows ARM obecnie nie obsługuje dodatkowych bibliotek akceleracyjnych.
Linux
Dodatkowe wymagania wstępne:
- (Opcjonalnie) Obsługa GPU AMD
- (Opcjonalnie) Obsługa GPU NVIDIA
- (Opcjonalnie) Obsługa GPU Vulkan
- Vulkan SDK - przydatne dla GPU AMD/Intel
- Lub zainstaluj za pomocą menedżera pakietów:
sudo apt install vulkan-sdk(Ubuntu/Debian) lubsudo dnf install vulkan-sdk(Fedora/CentOS)
- (Opcjonalnie) Obsługa silnika MLX
- CUDA 13+ SDK
- cuDNN 9+
- OpenBLAS/LAPACK:
sudo apt install libopenblas-dev liblapack-dev liblapacke-dev(Ubuntu/Debian)
IMPORTANT
Upewnij się, że wymagania wstępne znajdują się w zmiennej PATH przed uruchomieniem CMake.
Silnik MLX (opcjonalnie)
Silnik MLX umożliwia uruchamianie modeli opartych na safetensor. Na macOS arm64 MLX jest włączony domyślnie. Na innych platformach backendy MLX są wybierane za pomocą zmiennej OLLAMA_MLX_BACKENDS.
CUDA
Wymaga CUDA w wersji 13 lub nowszej oraz cuDNN w wersji 9 lub nowszej.
shell
cmake -B build . -DOLLAMA_MLX_BACKENDS=cuda_v13
cmake --build build --parallel 8Lokalne nadpisania źródła MLX
Aby kompilować z użyciem lokalnego sklonowanego repozytorium MLX i/lub MLX-C (przydatne do celów deweloperskich), ustaw zmienne środowiskowe przed uruchomieniem CMake:
shell
export OLLAMA_MLX_SOURCE=/path/to/mlx
export OLLAMA_MLX_C_SOURCE=/path/to/mlx-cNa macOS arm64:
shell
OLLAMA_MLX_SOURCE=../mlx OLLAMA_MLX_C_SOURCE=../mlx-c cmake -B build .
cmake --build build --parallel 8Dla 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 .Uruchamianie testów
Aby uruchomić testy, użyj polecenia go test:
shell
go test ./...Wykrywanie bibliotek
Ollama szuka natywnych binarnych plików pomocniczych oraz bibliotek akceleracyjnych w zainstalowanych i lokalnych układach deweloperskich:
../lib/ollamadla standardowych instalizacji, gdzieollamaznajduje się w katalogubin/./lib/ollamadla pakietów payload w stylu wydań Windows oraz lokalnego wyniku dystrybucji.dla artefaktów wydań macOS, w których narzędzia pomocnicze są umieszczone w tym samym katalogu coollamabuild/lib/ollamaorazdist/<platform>/lib/ollamadla lokalnych kompilacji deweloperskich
Jeśli biblioteki nie zostaną znalezione, Ollama nie uruchomi się z żadnymi bibliotekami akceleracyjnymi.