Skip to content

विकास

पूर्वावश्यकताएं स्थापित करें:

  • Go
  • CMake 3.24 या नया
  • C/C++ कंपाइलर: macOS पर Clang, Windows पर Visual Studio 2022 C++ टूल्स, या Linux पर GCC/Clang
  • 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

मानक prefix लेआउट में इंस्टॉल करने के लिए:

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 हैं।

स्थानीय हार्डवेयर के लिए GPU बिल्ड को सीमित करने के लिए मानक CMake आर्किटेक्चर ओवरराइड का उपयोग करें:

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 (एप्पल सिलिकॉन)

अतिरिक्त पूर्वावश्यकताएं:

MLX Metal को Metal टूलचेन की आवश्यकता होती है। पहले Xcode इंस्टॉल करें, फिर:

shell
xcodebuild -downloadComponent MetalToolchain

Windows

अतिरिक्त पूर्वावश्यकताएं:

  • Visual Studio 2022 जिसमें Native Desktop Workload शामिल हो
  • (वैकल्पिक) AMD GPU समर्थन
  • (वैकल्पिक) NVIDIA GPU समर्थन
  • (वैकल्पिक) Vulkan GPU समर्थन
    • Vulkan SDK - AMD/Intel GPUs के लिए उपयोगी
  • (वैकल्पिक) MLX इंजन समर्थन

Ninja बिल्ड के लिए, Developer PowerShell/Command Prompt या अन्य शैल से CMake चलाएं जहां 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

अतिरिक्त पूर्वावश्यकताएं:

  • (वैकल्पिक) AMD GPU समर्थन
  • (वैकल्पिक) NVIDIA GPU समर्थन
  • (वैकल्पिक) Vulkan GPU समर्थन
    • Vulkan SDK - AMD/Intel GPUs के लिए उपयोगी
    • या पैकेज मैनेजर के माध्यम से इंस्टॉल करें: sudo apt install vulkan-sdk (Ubuntu/Debian) या sudo dnf install vulkan-sdk (Fedora/CentOS)
  • (वैकल्पिक) MLX इंजन समर्थन
    • CUDA 13+ SDK
    • cuDNN 9+
    • OpenBLAS/LAPACK: sudo apt install libopenblas-dev liblapack-dev liblapacke-dev (Ubuntu/Debian)

IMPORTANT

CMake चलाने से पहले सुनिश्चित करें कि पूर्वावश्यकताएं PATH में हैं।

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/ के अंतर्गत हो
  • Windows रिलीज-स्टाइल पेलोड और स्थानीय dist आउटपुट के लिए ./lib/ollama
  • macOS रिलीज आर्टिफैक्ट के लिए . जो हेल्पर को ollama के साथ ही स्थित करते हैं
  • स्थानीय विकास बिल्ड के लिए build/lib/ollama और dist/<platform>/lib/ollama

यदि लाइब्रेरी नहीं मिलती हैं, तो Ollama किसी भी एक्सेलेरेशन लाइब्रेरी के साथ चलेंगे नहीं।