การพัฒนา
ติดตั้งข้อกำหนดเบื้องต้น:
- 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 . serveNOTE
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=nativeshell
# 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=OFFmacOS (Apple Silicon)
ข้อกำหนดเบื้องต้นเพิ่มเติม:
MLX Metal ต้องการเครื่องมือชุด Metal ให้ติดตั้ง Xcode ก่อน จากนั้น:
shell
xcodebuild -downloadComponent MetalToolchainWindows
ข้อกำหนดเบื้องต้นเพิ่มเติม:
- 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
cmdset 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 8Docker
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 จะไม่รันด้วยไลบรารีเร่งความเร็วใดๆ