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.