Розробка
Встановіть необхідні залежності:
- 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=OFFmacOS (Apple Silicon)
Додаткові необхідні залежності:
MLX Metal вимагає наявності інструментарію Metal. Спочатку встановіть Xcode, потім:
shell
xcodebuild -downloadComponent MetalToolchainWindows
Додаткові необхідні залежності:
- 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
cmdset 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 8Docker
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, в яких допоміжні компоненти розташовані разом зollamabuild/lib/ollamaтаdist/<platform>/lib/ollamaдля локальних збірок для розробки
Якщо бібліотеки не знайдено, Ollama не запуститься з жодними бібліотеками прискорення.