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 не запуститься з жодними бібліотеками прискорення.