Skip to content

التطوير

تثبيت المتطلبات الأساسية:

  • Go
  • CMake 3.24 أو أحدث
  • مترجم C/C++: Clang على أنظمة macOS، أدوات C++ لـ Visual Studio 2022 على أنظمة Windows، أو GCC/Clang على أنظمة Linux
  • Ninja في المسار PATH موصى به، خاصة على أنظمة Windows

لإجراء تكرارات على كود Go فقط مع حمولة أصلية موجودة مسبقاً، قم بتشغيل Ollama من جذر المستودع:

shell
go run . serve

NOTE

يتضمن Ollama كوداً أصلياً تم تجميعها باستخدام CGO. قد تتغير هذه الهياكل البيانات من وقت لآخر، وقد يخرج CGO عن المزامنة مما يؤدي إلى تعطلات غير متوقعة. يمكنك فرض إجراء بناء كامل للكود الأصلي عن طريق تشغيل go clean -cache أولاً.

نموذج البناء الأصلي

للاستنساخ الأولي للمستودع، أو بعد تعديل الكود الأصلي، قم بالبناء من جذر المستودع. على أنظمة macOS arm64، يقوم هذا ببناء استدلال Metal. على جميع المنصات الأخرى، يقوم هذا ببناء استدلال يعمل فقط على CPU. يقوم ببناء الثنائي الخاص بـ Go في جذر المستودع وتثبيت حمولة وقت التشغيل الأصلي تحت المسار build/lib/ollama.

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

لتثبيت التطبيق بتخطيط بادئة قياسي:

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

على جميع المنصات باستثناء macOS arm64، لبناء واجهات خلفية لوحدة معالجة الرسوميات (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.

استخدم تعديلات بنية CMake القياسية لتضييق عمليات بناء GPU لتتناسب مع العتاد المحلي:

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

يمكنك ضبط خيارات بناء GGML عن طريق تعيين قيم GGML_* أثناء مرحلة التكوين. على سبيل المثال، لتعطيل نوى انتباه فلاش CUDA لتصحيح الأخطاء المحلي:

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

macOS (سيليكون Apple)

متطلبات أساسية إضافية:

يتطلب MLX Metal سلسلة أدوات Metal. قم بتثبيت Xcode أولاً، ثم:

shell
xcodebuild -downloadComponent MetalToolchain

Windows

متطلبات أساسية إضافية:

  • Visual Studio 2022 يتضمن حمل عمل سطح المكتب الأصلي
  • (اختياري) دعم وحدات معالجة الرسوميات (GPU) من AMD
  • (اختياري) دعم وحدات معالجة الرسوميات (GPU) من NVIDIA
  • (اختياري) دعم وحدات معالجة الرسوميات (GPU) عبر Vulkan
    • Vulkan SDK - مفيد لوحدات معالجة الرسوميات من AMD/Intel
  • (اختياري) دعم محرك MLX

لعمليات البناء باستخدام Ninja، قم بتشغيل CMake من نافذة PowerShell للمطورين أو موجه الأوامر، أو من أي shell آخر يتوفر فيه مترجم Visual Studio.

يتطلب البناء لواجهة 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 - مفيد لوحدات معالجة الرسوميات من AMD/Intel
    • أو قم بالتثبيت عبر مدير الحزم: sudo apt install vulkan-sdk (لأوبونتو/ديبيان) أو sudo dnf install vulkan-sdk (لفيدورا/سنت أو إس)
  • (اختياري) دعم محرك MLX
    • CUDA 13+ SDK
    • cuDNN 9+
    • OpenBLAS/LAPACK: sudo apt install libopenblas-dev liblapack-dev liblapacke-dev (لأوبونتو/ديبيان)

IMPORTANT

تأكد من وجود المتطلبات الأساسية في المسار PATH قبل تشغيل CMake.

محرك MLX (اختياري)

يتيح محرك MLX تشغيل النماذج المعتمدة على صيغة 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

تعديلات مصدر MLX المحلي

للبناء بناءً على استنساخ محلي لـ 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 عن الثنائيات المساعدة الأصلية ومكتبات التسريع في تخطيطات التثبيت وتخطيطات التطوير المحلية:

  • ../lib/ollama للتثبيتات القياسية حيث يكون ollama تحت المسار bin/
  • ./lib/ollama لحملات إصدارات Windows ومخرجات التوزيع المحلية
  • . لملفات إصدارات macOS التي تحتوي على الأدوات المساعدة في نفس مسار ollama
  • build/lib/ollama و dist/<platform>/lib/ollama لعمليات بناء التطوير المحلية

إذا لم يتم العثور على المكتبات، لن يعمل Ollama مع أي مكتبات تسريع.