Skip to content

การพัฒนา

ติดตั้งข้อกำหนดเบื้องต้น:

  • Go
  • CMake รุ่น 3.24 หรือใหม่กว่า
  • คอมไพเลอร์ C/C++: ใช้ Clang บน macOS, เครื่องมือ C++ ของ Visual Studio 2022 บน Windows, หรือ GCC/Clang บน Linux
  • แนะนำให้ใช้ Ninja ที่อยู่ใน PATH โดยเฉพาะบน Windows

สำหรับการพัฒนาแบบ Go ล้วนๆ ที่ทำงานกับเพย์โหลด native ที่มีอยู่แล้ว ให้รัน Ollama จากรากของคลังเก็บโค้ด:

shell
go run . serve

NOTE

Ollama มีโค้ด native ที่คอมไพล์ด้วย CGO อยู่ บางครั้งโครงสร้างข้อมูลเหล่านี้อาจเปลี่ยนแปลง และ CGO อาจขาดการซิงค์ส่งผลให้เกิดการล้มเหลวที่ไม่คาดคิด คุณสามารถบังคับให้ builds โค้ด native ทั้งหมดได้โดยรัน go clean -cache ก่อน

โมเดลการ build native

สำหรับการ checkout ใหม่ หรือหลังจากแก้ไขโค้ด native ให้ build จากรากของคลังเก็บโค้ด บน macOS arm64 การ build นี้จะสร้างอินเฟอเรนซ์แบบ Metal บนแพลตฟอร์มอื่นทั้งหมดจะสร้างอินเฟอเรนซ์แบบ CPU ล้วนๆ มันจะสร้างไบนารี Go ที่รากของคลังเก็บโค้ด และติดตั้งเพย์โหลด native runtime ภายใต้ build/lib/ollama

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

เพื่อติดตั้งในเลย์เอาต์ prefix มาตรฐาน:

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

บนแพลตฟอร์มทั้งหมดยกเว้น macOS arm64 เพื่อ build 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

ใช้การ override สถาปัตยกรรมมาตรฐานของ CMake เพื่อจำกัดการ build GPU สำหรับฮาร์ดแวร์ท้องถิ่น:

shell
# CUDA
cmake -B build . -DOLLAMA_LLAMA_BACKENDS=cuda_v13 -DCMAKE_CUDA_ARCHITECTURES=native
shell
# ROCm / HIP
cmake -B build . -DOLLAMA_LLAMA_BACKENDS=rocm_v7_2 -DCMAKE_HIP_ARCHITECTURES=gfx1100

คุณสามารถปรับแต่งตัวเลือกการ build GGML ได้โดยตั้งค่า GGML_* ระหว่างขั้นตอน configure ตัวอย่าง เพื่อปิด CUDA flash attention kernels สำหรับการ debug ท้องถิ่น:

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

macOS (Apple Silicon)

ข้อกำหนดเบื้องต้นเพิ่มเติม:

MLX Metal ต้องการเครื่องมือชุด Metal ให้ติดตั้ง Xcode ก่อน จากนั้น:

shell
xcodebuild -downloadComponent MetalToolchain

Windows

ข้อกำหนดเบื้องต้นเพิ่มเติม:

  • Visual Studio 2022 ที่รวม Native Desktop Workload
  • (ไม่จำเป็น) การรองรับ GPU ของ AMD
  • (ไม่จำเป็น) การรองรับ GPU ของ NVIDIA
  • (ไม่จำเป็น) การรองรับ GPU ของ Vulkan
    • Vulkan SDK - มีประโยชน์สำหรับ GPU ของ AMD/Intel
  • (ไม่จำเป็น) การรองรับ MLX engine

สำหรับการ build ด้วย Ninja ให้รัน CMake จาก Developer PowerShell/Command Prompt หรือเชลล์อื่นที่มีคอมไพเลอร์ Visual Studio พร้อมใช้งาน

การ build สำหรับ 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 engine
    • CUDA 13+ SDK
    • cuDNN 9+
    • OpenBLAS/LAPACK: sudo apt install libopenblas-dev liblapack-dev liblapacke-dev (Ubuntu/Debian)

IMPORTANT

ตรวจสอบให้แน่ใจว่าข้อกำหนดเบื้องต้นอยู่ใน PATH ก่อนรัน CMake

MLX Engine (ไม่จำเป็น)

MLX Engine เปิดใช้งานการรันโมเดลที่อิงบน 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

การ override ซอร์ส MLX ท้องถิ่น

เพื่อ build อิงกับการ checkout ท้องถิ่นของ 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 จะค้นหาไบนารีช่วยเหลือ native และไลบรารีเร่งความเร็วในเลย์เอาต์ที่ติดตั้งแล้วและเลย์เอาต์การพัฒนาท้องถิ่น:

  • ../lib/ollama สำหรับการติดตั้งมาตรฐานที่ ollama อยู่ภายใต้ bin/
  • ./lib/ollama สำหรับเพย์โหลดแบบรุ่นเผยแพร่ของ Windows และเอาต์พุต dist ท้องถิ่น
  • . สำหรับ artifacts รุ่นเผยแพร่ของ macOS ที่วางไฟล์ช่วยเหลือไว้กับ ollama ในตำแหน่งเดียวกัน
  • build/lib/ollama และ dist/<platform>/lib/ollama สำหรับการ build การพัฒนาท้องถิ่น

หากไม่พบไลบรารีเหล่านี้ Ollama จะไม่รันด้วยไลบรารีเร่งความเร็วใดๆ