Desarrollo
Instalar prerequisitos:
- Go
- CMake 3.24 o superior
- Compilador de C/C++: Clang en macOS, herramientas de C++ de Visual Studio 2022 en Windows, o GCC/Clang en Linux
- Se recomienda tener Ninja en la variable
PATH, especialmente en Windows
Para iterar únicamente con Go contra un payload nativo existente, ejecuta Ollama desde la raíz del repositorio:
shell
go run . serveNOTE
Ollama incluye código nativo compilado con CGO. De vez en cuando estas estructuras de datos pueden cambiar y CGO puede desincronizarse, lo que provoca fallos inesperados. Puedes forzar una compilación completa del código nativo ejecutando primero go clean -cache.
Modelo de compilación nativa
Para una clonación nueva, o después de modificar código nativo, compila desde la raíz del repositorio. En macOS arm64, esto compila la inferencia Metal. En todas las demás plataformas, compila una inferencia solo para CPU. Genera el binario de Go en la raíz del repositorio e instala el payload de runtime nativo en build/lib/ollama.
shell
cmake -B build .
cmake --build build --parallel 8
./ollama servePara instalar en un esquema de prefijo estándar:
shell
cmake --install build --prefix /path/to/installEn todas las plataformas excepto macOS arm64, para compilar backends de GPU selecciónalos explícitamente:
shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS="cuda_v13;vulkan"
cmake --build build --parallel 8Los valores de backend compatibles son cuda_v12, cuda_v13, rocm_v7_1, rocm_v7_2, vulkan, cuda_jetpack5 y cuda_jetpack6.
Usa las anulaciones de arquitectura estándar de CMake para limitar las compilaciones de GPU al 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=gfx1100Puedes ajustar las opciones de compilación de GGML estableciendo valores GGML_* durante la configuración. Por ejemplo, para deshabilitar los kernels de flash attention de CUDA para depuración local:
shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS=cuda_v12 -DGGML_CUDA_FA=OFFmacOS (Apple Silicon)
Prerequisitos adicionales:
MLX Metal requiere la cadena de herramientas Metal. Instala primero Xcode y luego:
shell
xcodebuild -downloadComponent MetalToolchainWindows
Prerequisitos adicionales:
- Visual Studio 2022 incluyendo la carga de trabajo de Escritorio Nativo
- (Opcional) Soporte para GPU AMD
- (Opcional) Soporte para GPU NVIDIA
- (Opcional) Soporte para GPU Vulkan
- Vulkan SDK - útil para GPUs AMD/Intel
- (Opcional) Soporte para el motor MLX
Para compilaciones con Ninja, ejecuta CMake desde un PowerShell de Desarrollador o Símbolo del sistema de Desarrollador, o desde otra terminal donde el compilador de Visual Studio esté disponible.
La compilación para Vulkan requiere la variable de entorno VULKAN_SDK:
PowerShell
powershell$env:VULKAN_SDK="C:\VulkanSDK\<version>"CMD
cmdset VULKAN_SDK=C:\VulkanSDK\<version>
Windows (ARM)
Windows ARM no admite bibliotecas de aceleración adicionales en este momento.
Linux
Prerequisitos adicionales:
- (Opcional) Soporte para GPU AMD
- (Opcional) Soporte para GPU NVIDIA
- (Opcional) Soporte para GPU Vulkan
- Vulkan SDK - útil para GPUs AMD/Intel
- O instálalo mediante el gestor de paquetes:
sudo apt install vulkan-sdk(Ubuntu/Debian) osudo dnf install vulkan-sdk(Fedora/CentOS)
- (Opcional) Soporte para el motor MLX
- CUDA 13+ SDK
- cuDNN 9+
- OpenBLAS/LAPACK:
sudo apt install libopenblas-dev liblapack-dev liblapacke-dev(Ubuntu/Debian)
IMPORTANT
Asegúrate de que los prerequisitos estén en la variable PATH antes de ejecutar CMake.
Motor MLX (Opcional)
El motor MLX permite ejecutar modelos basados en safetensor. En macOS arm64, MLX está habilitado de forma predeterminada. En otras plataformas, los backends de MLX se seleccionan con OLLAMA_MLX_BACKENDS.
CUDA
Requiere CUDA 13+ y cuDNN 9+.
shell
cmake -B build . -DOLLAMA_MLX_BACKENDS=cuda_v13
cmake --build build --parallel 8Anulaciones de fuente local de MLX
Para compilar contra una clonación local de MLX y/o MLX-C (útil para desarrollo), establece variables de entorno antes de ejecutar CMake:
shell
export OLLAMA_MLX_SOURCE=/path/to/mlx
export OLLAMA_MLX_C_SOURCE=/path/to/mlx-cEn 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 .Ejecución de pruebas
Para ejecutar las pruebas, usa go test:
shell
go test ./...Detección de bibliotecas
Ollama busca binarios de ayuda nativos y bibliotecas de aceleración en instalaciones y esquemas de desarrollo local:
../lib/ollamapara instalaciones estándar dondeollamaestá enbin/./lib/ollamapara payloads de estilo release de Windows y salida de dist local.para artefactos de release de macOS que colocan los ayudantes junto aollamabuild/lib/ollamaydist/<platform>/lib/ollamapara compilaciones de desarrollo local
Si no se encuentran las bibliotecas, Ollama no se ejecutará con ninguna biblioteca de aceleración.