Skip to content

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

NOTE

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 serve

Aby zainstalować w standardowym układzie z prefiksem:

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

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

Obsł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=gfx1100

Moż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=OFF

macOS (Apple Silicon) ​

Dodatkowe wymagania wstępne:

MLX Metal wymaga łańcucha narzędzi Metal. Najpierw zainstaluj Xcode, a następnie:

shell
xcodebuild -downloadComponent MetalToolchain

Windows ​

Dodatkowe wymagania wstępne:

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

cmd
set 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) lub sudo 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 8

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

Na macOS arm64:

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

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

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/ollama dla standardowych instalizacji, gdzie ollama znajduje się w katalogu bin/
  • ./lib/ollama dla 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 co ollama
  • build/lib/ollama oraz dist/<platform>/lib/ollama dla lokalnych kompilacji deweloperskich

Jeśli biblioteki nie zostaną znalezione, Ollama nie uruchomi się z żadnymi bibliotekami akceleracyjnymi.