Skip to content

Pengembangan

Instal prasyarat:

  • Go
  • CMake 3.24 atau lebih baru
  • Kompiler C/C++: Clang di macOS, Visual Studio 2022 C++ tools di Windows, atau GCC/Clang di Linux
  • Ninja yang ada di PATH disarankan, terutama di Windows

Untuk iterasi murni Go terhadap payload native yang sudah ada, jalankan Ollama dari akar repositori:

shell
go run . serve

[!CATATAN] Ollama menyertakan kode native yang dikompilasi dengan CGO. Dari waktu ke waktu struktur data ini dapat berubah dan CGO bisa menjadi tidak sinkron yang mengakibatkan crash yang tidak diharapkan. Anda bisa memaksa build penuh kode native dengan menjalankan go clean -cache terlebih dahulu.

Model build native

Untuk checkout baru, atau setelah mengubah kode native, build dari akar repositori. Di macOS arm64, ini akan membangun inferensi Metal. Di semua platform lainnya ini akan membangun inferensi hanya CPU. Ini akan membangun biner Go di akar repositori dan menginstal payload runtime native di bawah build/lib/ollama.

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

Untuk menginstal ke dalam layout prefix standar:

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

Di semua platform kecuali macOS arm64, untuk membangun backend GPU pilih backend secara eksplisit:

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

Nilai backend yang didukung adalah cuda_v12, cuda_v13, rocm_v7_1, rocm_v7_2, vulkan, cuda_jetpack5, dan cuda_jetpack6.

Gunakan override arsitektur CMake standar untuk menyempitkan build GPU untuk perangkat keras lokal:

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

Anda bisa menyesuaikan opsi build GGML dengan mengatur nilai GGML_* selama konfigurasi. Sebagai contoh, untuk menonaktifkan kernel CUDA flash attention untuk debugging lokal:

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

macOS (Apple Silicon)

Prasyarat tambahan:

MLX Metal memerlukan toolchain Metal. Instal Xcode terlebih dahulu, kemudian:

shell
xcodebuild -downloadComponent MetalToolchain

Windows

Prasyarat tambahan:

Untuk build dengan Ninja, jalankan CMake dari Developer PowerShell/Command Prompt atau shell lain tempat kompiler Visual Studio tersedia.

Membangun untuk Vulkan memerlukan variabel lingkungan VULKAN_SDK:

PowerShell

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

CMD

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

Windows (ARM)

Windows ARM saat ini tidak mendukung pustaka akselerasi tambahan.

Linux

Prasyarat tambahan:

  • (Opsional) Dukungan GPU AMD
  • (Opsional) Dukungan GPU NVIDIA
  • (Opsional) Dukungan GPU Vulkan
    • Vulkan SDK - berguna untuk GPU AMD/Intel
    • Atau instal melalui manajer paket: sudo apt install vulkan-sdk (Ubuntu/Debian) atau sudo dnf install vulkan-sdk (Fedora/CentOS)
  • (Opsional) Dukungan mesin MLX
    • CUDA 13+ SDK
    • cuDNN 9+
    • OpenBLAS/LAPACK: sudo apt install libopenblas-dev liblapack-dev liblapacke-dev (Ubuntu/Debian)

[!PENTING] Pastikan prasyarat ada di PATH sebelum menjalankan CMake.

Mesin MLX (Opsional)

Mesin MLX memungkinkan menjalankan model berbasis safetensor. Di macOS arm64, MLX diaktifkan secara default. Di platform lainnya, backend MLX dipilih dengan OLLAMA_MLX_BACKENDS.

CUDA

Memerlukan CUDA 13+ dan cuDNN 9+.

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

Override sumber MLX lokal

Untuk membangun berdasarkan checkout lokal MLX dan/atau MLX-C (berguna untuk pengembangan), atur variabel lingkungan sebelum menjalankan CMake:

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

Di macOS arm64:

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

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

Menjalankan uji

Untuk menjalankan uji, gunakan go test:

shell
go test ./...

Deteksi pustaka

Ollama mencari biner pembantu native dan pustaka akselerasi di layout pengembangan terinstal dan lokal:

  • ../lib/ollama untuk instalasi standar di mana ollama berada di bawah bin/
  • ./lib/ollama untuk payload gaya rilis Windows dan output dist lokal
  • . untuk artefak rilis macOS yang menempatkan pembantu bersama dengan ollama
  • build/lib/ollama dan dist/<platform>/lib/ollama untuk build pengembangan lokal

Jika pustaka tidak ditemukan, Ollama tidak akan berjalan dengan pustaka akselerasi apa pun.