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 จะไม่รันด้วยไลบรารีเร่งความเร็วใดๆ