Skip to content

Phát triển

Cài đặt các điều kiện tiên quyết:

  • Go
  • CMake 3.24 hoặc mới hơn
  • Trình biên dịch C/C++: Clang trên macOS, bộ công cụ C++ Visual Studio 2022 trên Windows, hoặc GCC/Clang trên Linux
  • Ninja có trong PATH được khuyến nghị, đặc biệt trên Windows

Để lặp mã thuần Go với một native payload đã tồn tại, chạy Ollama từ thư mục gốc của kho lưu trữ:

shell
go run . serve

NOTE

Ollama bao gồm mã native được biên dịch với CGO. Thỉnh thoảng các cấu trúc dữ liệu này có thể thay đổi và CGO có thể bị lệch phiên bản dẫn đến sự cố không mong muốn. Bạn có thể buộc thực hiện bản build đầy đủ của mã native bằng cách chạy lệnh go clean -cache trước.

Mô hình xây dựng native

Đối với kho lưu trữ mới tải về, hoặc sau khi thay đổi mã native, hãy xây dựng từ thư mục gốc của kho lưu trữ. Trên macOS arm64, bản xây dựng này sẽ tạo ra bản suy luận Metal. Trên tất cả các nền tảng khác, bản xây dựng này chỉ tạo bản suy luận chạy CPU. Nó sẽ xây dựng binary Go tại thư mục gốc của kho lưu trữ và cài đặt native runtime payload vào thư mục build/lib/ollama.

shell
cmake -B build .
cmake --build build --parallel 8
./ollama serve

Để cài đặt theo bố cục tiền tố chuẩn:

shell
cmake --install build --prefix /path/to/install

Trên tất cả các nền tảng ngoại trừ macOS arm64, để xây dựng các backend GPU, hãy chọn rõ ràng các backend:

shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS="cuda_v13;vulkan"
cmake --build build --parallel 8

Các giá trị backend được hỗ trợ là cuda_v12, cuda_v13, rocm_v7_1, rocm_v7_2, vulkan, cuda_jetpack5, và cuda_jetpack6.

Sử dụng các ghi đè kiến trúc CMake chuẩn để thu hẹp các bản xây dựng GPU cho phần cứng cục bộ:

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

Bạn có thể điều chỉnh các tùy chọn xây dựng GGML bằng cách đặt các giá trị GGML_* trong quá trình cấu hình. Ví dụ, để tắt các nhân flash attention CUDA cho việc gỡ lỗi cục bộ:

shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS=cuda_v12 -DGGML_CUDA_FA=OFF

macOS (Apple Silicon)

Các điều kiện tiên quyết bổ sung:

MLX Metal yêu cầu bộ công cụ Metal. Cài đặt Xcode trước, sau đó:

shell
xcodebuild -downloadComponent MetalToolchain

Windows

Các điều kiện tiên quyết bổ sung:

Đối với các bản xây dựng dùng Ninja, hãy chạy CMake từ Developer PowerShell/Command Prompt hoặc một shell khác có trình biên dịch Visual Studio khả dụng.

Xây dựng cho Vulkan yêu cầu biến môi trường VULKAN_SDK:

PowerShell

powershell
$env:VULKAN_SDK="C:\VulkanSDK\<version>"

CMD

cmd
set VULKAN_SDK=C:\VulkanSDK\<version>

Windows (ARM)

Windows ARM hiện tại không hỗ trợ các thư viện tăng tốc bổ sung.

Linux

Các điều kiện tiên quyết bổ sung:

  • (Tùy chọn) Hỗ trợ GPU AMD
  • (Tùy chọn) Hỗ trợ GPU NVIDIA
  • (Tùy chọn) Hỗ trợ GPU Vulkan
    • Vulkan SDK - hữu ích cho các GPU AMD/Intel
    • Hoặc cài đặt qua trình quản lý gói: sudo apt install vulkan-sdk (Ubuntu/Debian) hoặc sudo dnf install vulkan-sdk (Fedora/CentOS)
  • (Tùy chọn) Hỗ trợ engine MLX
    • CUDA 13+ SDK
    • cuDNN 9+
    • OpenBLAS/LAPACK: sudo apt install libopenblas-dev liblapack-dev liblapacke-dev (Ubuntu/Debian)

IMPORTANT

Đảm bảo các điều kiện tiên quyết nằm trong PATH trước khi chạy CMake.

Engine MLX (Tùy chọn)

Engine MLX cho phép chạy các mô hình dựa trên safetensor. Trên macOS arm64, MLX được bật theo mặc định. Trên các nền tảng khác, các backend MLX được chọn bằng biến OLLAMA_MLX_BACKENDS.

CUDA

Yêu cầu CUDA 13+ và cuDNN 9+.

shell
cmake -B build . -DOLLAMA_MLX_BACKENDS=cuda_v13
cmake --build build --parallel 8

Ghi đè nguồn MLX cục bộ

Để xây dựng dựa trên bản checkout cục bộ của MLX và/hoặc MLX-C (hữu ích cho phát triển), hãy đặt các biến môi trường trước khi chạy CMake:

shell
export OLLAMA_MLX_SOURCE=/path/to/mlx
export OLLAMA_MLX_C_SOURCE=/path/to/mlx-c

Trên macOS arm64:

shell
OLLAMA_MLX_SOURCE=../mlx OLLAMA_MLX_C_SOURCE=../mlx-c cmake -B build .
cmake --build build --parallel 8

Đối với 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 .

Chạy kiểm thử

Để chạy kiểm thử, sử dụng lệnh go test:

shell
go test ./...

Phát hiện thư viện

Ollama tìm kiếm các binary trợ giúp native và thư viện tăng tốc trong các bố cục cài đặt và phát triển cục bộ:

  • ../lib/ollama cho các bản cài đặt chuẩn nơi ollama nằm trong thư mục bin/
  • ./lib/ollama cho các payload kiểu bản phát hành Windows và đầu ra dist cục bộ
  • . cho các artifact bản phát hành macOS mà đặt các trợ giúp cùng vị trí với ollama
  • build/lib/ollamadist/<platform>/lib/ollama cho các bản xây dựng phát triển cục bộ

Nếu không tìm thấy các thư viện, Ollama sẽ không chạy với bất kỳ thư viện tăng tốc nào.