Разработка
Установите предварительные требования:
- Go
- CMake версии 3.24 или новее
- C/C++ компилятор: Clang на macOS, инструменты Visual Studio 2022 C++ на Windows, или GCC/Clang на Linux
- Рекомендуется наличие Ninja в
PATH, особенно на Windows
Для итерации на чистом Go против существующего нативного полезного груза запустите Ollama из корня репозитория:
shell
go run . serveNOTE
Ollama включает нативный код, скомпилированный с использованием CGO. Время от времени эти структуры данных могут меняться, и CGO может выходить из синхронизации, что приводит к неожиданным сбоям. Вы можете принудительно выполнить полную сборку нативного кода, сначала запустив go clean -cache.
Нативная сборка
Для свежего чек-аута или после изменения нативного кода выполните сборку из корня репозитория. На macOS arm64 это собирает инференс на Metal. На всех остальных платформах собирается инференс только для CPU. При этом собирается Go-бинарный файл в корне репозитория, а нативный runtime полезный груз устанавливается в 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 toolchain. Сначала установите Xcode, затем:
shell
xcodebuild -downloadComponent MetalToolchainWindows
Дополнительные предварительные требования:
- Visual Studio 2022 включая рабочую нагрузку Native Desktop Workload
- (Опционально) Поддержка GPU AMD
- (Опционально) Поддержка GPU NVIDIA
- (Опционально) Поддержка GPU Vulkan
- Vulkan SDK — полезен для GPU AMD/Intel
- (Опционально) Поддержка движка 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
Дополнительные предварительные требования:
- (Опционально) Поддержка GPU AMD
- (Опционально) Поддержка GPU NVIDIA
- (Опционально) Поддержка GPU Vulkan
- Vulkan SDK — полезен для GPU AMD/Intel
- Или установите через менеджер пакетов:
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)
IMPORTANT
Убедитесь, что предварительные требования находятся в PATH перед запуском CMake.
Движок MLX (опционально)
Движок 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 в стиле релиза и локального вывода dist.для артефактов релиза macOS, где вспомогательные файлы находятся рядом сollamabuild/lib/ollamaиdist/<platform>/lib/ollamaдля локальных сборок для разработки
Если библиотеки не найдены, Ollama не будет работать с какими-либо библиотеками ускорения.