Skip to content

Розробка

Встановіть необхідні залежності:

  • Go
  • CMake версії 3.24 або новішої
  • Компілятор C/C++: Clang на macOS, інструменти Visual Studio 2022 для C++ на Windows, або GCC/Clang на Linux
  • Ninja у змінній PATH рекомендується, особливо на Windows

Для ітерацій розробки на чистому Go з існуючим нативним компонентом запустіть Ollama з кореня репозиторію:

shell
go run . serve

[!ПРИМІТКА] Ollama містить нативний код, скомпільований за допомогою CGO. Час від часу ці структури даних можуть змінюватися, і CGO може вийти з синхронізації, що призводить до неочікуваних збоїв. Ви можете примусово запустити повну збірку нативного коду, попередньо виконавши команду go clean -cache.

Нативна модель збірки

Для нового клону репозиторію або після зміни нативного коду виконуйте збірку з кореня репозиторію. На macOS arm64 ця збірка компілює інференс для Metal. На всіх інших платформах збирається інференс, що використовує лише CPU. Вона збирає Go-бінарний файл у корені репозиторію та встановлює нативний компонент виконання у каталозі build/lib/ollama.

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

Для встановлення за стандартною схемою префіксів:

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

На всіх платформах, крім macOS arm64, для збірки GPU-бекендів виберіть їх явним чином:

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

Підтримувані значення бекендів: cuda_v12, cuda_v13, rocm_v7_1, rocm_v7_2, vulkan, cuda_jetpack5 та cuda_jetpack6.

Використовуйте стандартні параметри перевизначення архітектури CMake, щоб обмежити збірку під GPU для локального обладнання:

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

Ви можете налаштовувати параметри збірки GGML, встановлюючи значення GGML_* під час конфігурації. Наприклад, щоб вимкнути ядра flash attention CUDA для локальної налагодження:

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

macOS (Apple Silicon)

Додаткові необхідні залежності:

MLX Metal вимагає наявності інструментарію Metal. Спочатку встановіть Xcode, потім:

shell
xcodebuild -downloadComponent MetalToolchain

Windows

Додаткові необхідні залежності:

  • Visual Studio 2022 з компонентом Native Desktop Workload
  • (Опціонально) Підтримка AMD GPU
  • (Опціонально) Підтримка NVIDIA GPU
  • (Опціонально) Підтримка Vulkan GPU
    • Vulkan SDK - корисний для AMD/Intel GPU
  • (Опціонально) Підтримка рушія MLX

Для збірок за допомогою Ninja запускайте CMake з Developer PowerShell/Command Prompt або іншої оболонки, де доступний компілятор Visual Studio.

Для збірки під Vulkan потрібна змінна середовища VULKAN_SDK:

PowerShell

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

CMD

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

Windows (ARM)

На даний момент Windows ARM не підтримує додаткові бібліотеки прискорення.

Linux

Додаткові необхідні залежності:

  • (Опціонально) Підтримка AMD GPU
  • (Опціонально) Підтримка NVIDIA GPU
  • (Опціонально) Підтримка Vulkan GPU
    • Vulkan SDK - корисний для AMD/Intel GPU
    • Або встановіть через менеджер пакетів: sudo apt install vulkan-sdk (Ubuntu/Debian) або sudo dnf install vulkan-sdk (Fedora/CentOS)
  • (Опціонально) Підтримка рушія MLX
    • CUDA 13+ SDK
    • cuDNN 9+
    • OpenBLAS/LAPACK: sudo apt install libopenblas-dev liblapack-dev liblapacke-dev (Ubuntu/Debian)

[!ВАЖЛИВО] Переконайтеся, що необхідні залежності додані до PATH перед запуском CMake.

MLX Engine (опціонально)

Рушій MLX дозволяє запускати моделі на основі safetensor. На macOS arm64 MLX увімкнено за замовчуванням. На інших платформах бекенди MLX вибираються за допомогою змінної OLLAMA_MLX_BACKENDS.

CUDA

Вимагає CUDA версії 13+ та cuDNN версії 9+.

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

Локальні перевизначення джерела MLX

Для збірки з використанням локального клону MLX та/або MLX-C (корисно для розробки) встановіть змінні середовища перед запуском CMake:

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

На macOS arm64:

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

Для 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 .

Запуск тестів

Для запуску тестів використовуйте go test:

shell
go test ./...

Виявлення бібліотек

Ollama шукає нативні допоміжні бінарні файли та бібліотеки прискорення у встановлених та локальних конфігураціях для розробки:

  • ../lib/ollama для стандартних встановлень, де ollama знаходиться у каталозі bin/
  • ./lib/ollama для вихідних компонентів релізних збірок Windows та локального виводу дистрибутива
  • . для релізних артефактів macOS, в яких допоміжні компоненти розташовані разом з ollama
  • build/lib/ollama та dist/<platform>/lib/ollama для локальних збірок для розробки

Якщо бібліотеки не знайдено, Ollama не запуститься з жодними бібліотеками прискорення.