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

NOTE

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=OFF

macOS (Apple Silicon)

Дополнительные предварительные требования:

MLX Metal требует наличия Metal toolchain. Сначала установите Xcode, затем:

shell
xcodebuild -downloadComponent MetalToolchain

Windows

Дополнительные предварительные требования:

  • 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

cmd
set 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 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 в стиле релиза и локального вывода dist
  • . для артефактов релиза macOS, где вспомогательные файлы находятся рядом с ollama
  • build/lib/ollama и dist/<platform>/lib/ollama для локальных сборок для разработки

Если библиотеки не найдены, Ollama не будет работать с какими-либо библиотеками ускорения.