Skip to content

Geliştirme

Ön koşulları yükleyin:

  • Go
  • CMake 3.24 veya daha yeni
  • C/C++ derleyicisi: macOS'ta Clang, Windows'ta Visual Studio 2022 C++ araçları veya Linux'ta GCC/Clang
  • Ninja PATH değişkeninde olması önerilir, özellikle Windows'ta

Mevcut bir yerel yük için saf Go yinelemesi yapmak için Ollama'ı depo kökünden çalıştırın:

shell
go run . serve

NOTE

Ollama, CGO ile derlenmiş yerel kod içerir. Zaman zaman bu veri yapıları değişebilir ve CGO eşitliğini kaybederek beklenmeyen çökmelere neden olabilir. Yerel kodun tam bir derlemesini zorlamak için önce go clean -cache komutunu çalıştırabilirsiniz.

Yerel derleme modeli

Yeni bir kontrol için veya yerel kodu değiştirdikten sonra, depo kökünden derleme yapın. macOS arm64'te bu, Metal çıkarımı derler. Tüm diğer platformlarda ise yalnızca CPU çıkarımı derler. Depo kökünde Go ikili dosyasını derler ve yerel çalışma zamanı yükünü build/lib/ollama altına yükler.

shell
cmake -B build .
cmake --build build --parallel 8
./ollama serve

Standart bir ön ek düzenine yüklemek için:

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

macOS arm64 dışındaki tüm platformlarda, GPU arka uçlarını derlemek için arka uçları açıkça seçin:

shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS="cuda_v13;vulkan"
cmake --build build --parallel 8

Desteklenen arka uç değerleri cuda_v12, cuda_v13, rocm_v7_1, rocm_v7_2, vulkan, cuda_jetpack5 ve cuda_jetpack6'dır.

Yerel donanımınız için GPU derlemelerini daraltmak için standart CMake mimari geçersiz kılmalarını kullanın:

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

Yapılandırma sırasında GGML_* değerlerini ayarlayarak GGML derleme seçeneklerini ayarlayabilirsiniz. Örneğin, yerel hata ayıklama için CUDA flash attention çekirdeklerini devre dışı bırakmak üzere:

shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS=cuda_v12 -DGGML_CUDA_FA=OFF

macOS (Apple Silicon)

Ek ön koşullar:

MLX Metal, Metal araç zincirini gerektirir. Önce Xcode'u yükleyin, ardından:

shell
xcodebuild -downloadComponent MetalToolchain

Windows

Ek ön koşullar:

Ninja derlemeleri için CMake'ı Geliştirici PowerShell/Komut İstemi'nden veya Visual Studio derleyicisinin kullanılabilir olduğu başka bir kabuktan çalıştırın.

Vulkan için derleme VULKAN_SDK ortam değişkenini gerektirir:

PowerShell

powershell
$env:VULKAN_SDK="C:\VulkanSDK\<version>"

CMD

cmd
set VULKAN_SDK=C:\VulkanSDK\<version>

Windows (ARM)

Windows ARM şu anda ek hızlandırma kütüphanelerini desteklemiyor.

Linux

Ek ön koşullar:

  • (İsteğe bağlı) AMD GPU desteği
  • (İsteğe bağlı) NVIDIA GPU desteği
  • (İsteğe bağlı) Vulkan GPU desteği
    • Vulkan SDK - AMD/Intel GPU'lar için kullanışlıdır
    • Veya paket yöneticisi ile yükleyin: sudo apt install vulkan-sdk (Ubuntu/Debian) veya sudo dnf install vulkan-sdk (Fedora/CentOS)
  • (İsteğe bağlı) MLX motoru desteği
    • CUDA 13+ SDK
    • cuDNN 9+
    • OpenBLAS/LAPACK: sudo apt install libopenblas-dev liblapack-dev liblapacke-dev (Ubuntu/Debian)

IMPORTANT

CMake'ı çalıştırmadan önce ön koşulların PATH değişkeninde olduğundan emin olun.

MLX Motoru (İsteğe Bağlı)

MLX motoru, safetensor tabanlı modelleri çalıştırmayı sağlar. macOS arm64'te MLX varsayılan olarak etkinleştirilidir. Diğer platformlarda MLX arka uçları OLLAMA_MLX_BACKENDS ile seçilir.

CUDA

CUDA 13+ ve cuDNN 9+ gerektirir.

shell
cmake -B build . -DOLLAMA_MLX_BACKENDS=cuda_v13
cmake --build build --parallel 8

Yerel MLX kaynak geçersiz kılmaları

Geliştirme için faydalı olan MLX ve/veya MLX-C yerel kontrollerine göre derlemek için, CMake'ı çalıştırmadan önce ortam değişkenlerini ayarlayın:

shell
export OLLAMA_MLX_SOURCE=/path/to/mlx
export OLLAMA_MLX_C_SOURCE=/path/to/mlx-c

macOS arm64'te:

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

CUDA için:

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 .

Testleri çalıştırma

Testleri çalıştırmak için go test kullanın:

shell
go test ./...

Kütüphane algılama

Ollama, yüklü ve yerel geliştirme düzenlerinde yerel yardımcı ikili dosyaları ve hızlandırma kütüphanelerini arar:

  • ../lib/ollama, ollama bin/ altında olan standart yüklemeler için
  • ./lib/ollama, Windows sürümü tarzı yükler ve yerel dist çıktısı için
  • ., yardımcıları ollama ile aynı konumda bulunan macOS sürümü artefaktları için
  • build/lib/ollama ve dist/<platform>/lib/ollama, yerel geliştirme derlemeleri için

Kütüphaneler bulunamazsa, Ollama hiçbir hızlandırma kütüphanesi ile çalışmaz.