Desenvolvimento
Instale os pré-requisitos:
- Go
- CMake 3.24 ou mais novo
- Compilador C/C++: Clang no macOS, ferramentas C++ do Visual Studio 2022 no Windows, ou GCC/Clang no Linux
- Ninja no
PATHé recomendado, especialmente no Windows
Para iteração pura em Go contra um payload nativo existente, execute o Ollama a partir da raiz do repositório:
shell
go run . serveNOTE
O Ollama inclui código nativo compilado com CGO. De tempos em tempos, essas estruturas de dados podem mudar e o CGO pode ficar dessincronizado, resultando em falhas inesperadas. Você pode forçar uma compilação completa do código nativo executando go clean -cache primeiro.
Modelo de compilação nativa
Para um checkout novo, ou após alterar código nativo, compile a partir da raiz do repositório. No macOS arm64, isso compila a inferência Metal. Em todas as outras plataformas, isso compila apenas inferência por CPU. Ele compila o binário Go na raiz do repositório e instala o payload de tempo de execução nativo em build/lib/ollama.
shell
cmake -B build .
cmake --build build --parallel 8
./ollama servePara instalar em um layout de prefixo padrão:
shell
cmake --install build --prefix /path/to/installEm todas as plataformas exceto macOS arm64, para compilar backends de GPU, selecione os backends explicitamente:
shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS="cuda_v13;vulkan"
cmake --build build --parallel 8Os valores de backend suportados são cuda_v12, cuda_v13, rocm_v7_1, rocm_v7_2, vulkan, cuda_jetpack5 e cuda_jetpack6.
Use substituições de arquitetura padrão do CMake para limitar as compilações de GPU ao hardware local:
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=gfx1100Você pode ajustar as opções de compilação do GGML definindo valores GGML_* durante a configuração. Por exemplo, para desativar os kernels de flash attention CUDA para depuração local:
shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS=cuda_v12 -DGGML_CUDA_FA=OFFmacOS (Apple Silicon)
Pré-requisitos adicionais:
O MLX Metal requer o conjunto de ferramentas Metal. Instale o Xcode primeiro, depois:
shell
xcodebuild -downloadComponent MetalToolchainWindows
Pré-requisitos adicionais:
- Visual Studio 2022 incluindo a carga de trabalho Native Desktop Workload
- (Opcional) Suporte a GPU AMD
- (Opcional) Suporte a GPU NVIDIA
- (Opcional) Suporte a GPU Vulkan
- Vulkan SDK - útil para GPUs AMD/Intel
- (Opcional) Suporte ao motor MLX
Para compilações com Ninja, execute o CMake a partir de um PowerShell/Command Prompt de Desenvolvedor ou outro shell onde o compilador do Visual Studio esteja disponível.
A compilação para Vulkan requer a variável de ambiente VULKAN_SDK:
PowerShell
powershell$env:VULKAN_SDK="C:\VulkanSDK\<version>"CMD
cmdset VULKAN_SDK=C:\VulkanSDK\<version>
Windows (ARM)
O Windows ARM não suporta bibliotecas de aceleração adicionais no momento.
Linux
Pré-requisitos adicionais:
- (Opcional) Suporte a GPU AMD
- (Opcional) Suporte a GPU NVIDIA
- (Opcional) Suporte a GPU Vulkan
- Vulkan SDK - útil para GPUs AMD/Intel
- Ou instale via gerenciador de pacotes:
sudo apt install vulkan-sdk(Ubuntu/Debian) ousudo dnf install vulkan-sdk(Fedora/CentOS)
- (Opcional) Suporte ao motor MLX
- CUDA 13+ SDK
- cuDNN 9+
- OpenBLAS/LAPACK:
sudo apt install libopenblas-dev liblapack-dev liblapacke-dev(Ubuntu/Debian)
IMPORTANT
Certifique-se de que os pré-requisitos estão no PATH antes de executar o CMake.
Motor MLX (Opcional)
O motor MLX permite executar modelos baseados em safetensor. No macOS arm64, o MLX é habilitado por padrão. Em outras plataformas, os backends do MLX são selecionados com OLLAMA_MLX_BACKENDS.
CUDA
Requer CUDA 13+ e cuDNN 9+.
shell
cmake -B build . -DOLLAMA_MLX_BACKENDS=cuda_v13
cmake --build build --parallel 8Substituições de fonte local do MLX
Para compilar usando um checkout local do MLX e/ou MLX-C (útil para desenvolvimento), defina as variáveis de ambiente antes de executar o CMake:
shell
export OLLAMA_MLX_SOURCE=/path/to/mlx
export OLLAMA_MLX_C_SOURCE=/path/to/mlx-cNo macOS arm64:
shell
OLLAMA_MLX_SOURCE=../mlx OLLAMA_MLX_C_SOURCE=../mlx-c cmake -B build .
cmake --build build --parallel 8Para 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 .Execução de testes
Para executar os testes, use go test:
shell
go test ./...Detecção de bibliotecas
O Ollama procura por binários auxiliares nativos e bibliotecas de aceleração em layouts de instalação e de desenvolvimento local:
../lib/ollamapara instalações padrão onde oollamaestá embin/./lib/ollamapara payloads de estilo de release do Windows e saída de distribuição local.para artefatos de release do macOS que colocam os auxiliares junto com oollamabuild/lib/ollamaedist/<platform>/lib/ollamapara compilações de desenvolvimento local
Se as bibliotecas não forem encontradas, o Ollama não será executado com nenhuma biblioteca de aceleração.