دليل إعداد Ollama: تشغيل الـ LLMs المحلية كالمحترفين (إصدار 2026)
٢٢ فبراير ٢٠٢٦
ملخص
- Ollama يتيح لك تشغيل نماذج لغوية كبيرة (LLMs) مثل Llama 2 و Mistral و Phi 2 محلياً على أنظمة macOS و Linux و Windows.
- التثبيت يتم بأمر واحد، لكن الضبط الدقيق (fine-tuning) وتحسين أداء وحدة معالجة الرسومات (GPU) وإدارة النماذج يتطلب عناية.
- يمكنك تشغيل النماذج عبر واجهة سطر الأوامر (CLI) أو API REST، أو دمجها مع تطبيقات مثل VS Code و LangChain.
- يغطي الدليل ضبط الأداء، والأمان، والمراقبة، واستكشاف الأخطاء وإصلاحها للحصول على نتائج بمستوى الإنتاج الاحترافي.
- يتضمن أمثلة قابلة للتنفيذ وأفضل الممارسات الواقعية.
ما ستتعلمه
- ما هو Ollama وكيف يتناسب مع نظام النماذج اللغوية الكبيرة المحلية.
- كيفية تثبيت Ollama على macOS و Linux و Windows.
- كيفية سحب وتشغيل وإدارة النماذج بكفاءة.
- كيفية دمج Ollama مع تطبيقات Python أو JavaScript.
- كيفية مراقبة الأداء، وتأمين إعداداتك، وتصحيح المشكلات الشائعة.
المتطلبات الأساسية
قبل البدء:
- الأجهزة: وحدة معالجة مركزية (CPU) حديثة (Apple Silicon أو x86_64) ويفضل وحدة معالجة رسومات (GPU) بذاكرة VRAM لا تقل عن 8 جيجابايت.
- نظام التشغيل: macOS 12+، أو Ubuntu 22.04+، أو Windows 11 (يوصى بـ WSL2 للحصول على أفضل النتائج).
- مهارات أساسية في سطر الأوامر (CLI): الراحة في استخدام
bashأو PowerShell. - اختياري: الإلمام بـ Docker لعمليات النشر المعتمدة على الحاويات.
مقدمة: لماذا Ollama؟
Ollama هو بيئة تشغيل خفيفة للنماذج اللغوية الكبيرة المحلية. يوفر واجهة موحدة لتحميل وتشغيل وخدمة النماذج على جهازك الخاص — دون الحاجة للاعتماد على السحابة. فكر فيه كـ خادم LLM محلي يجرد تعقيدات أوزان النماذج، والترميز (tokenization)، وتسريع وحدة معالجة الرسومات (GPU).
على عكس واجهات برمجة التطبيقات السحابية التي تفرض رسوماً لكل رمز (token)، يتيح لك Ollama التجربة بحرية، مما يضمن الخصوصية وإمكانية العمل دون اتصال بالإنترنت. يحظى بانتشار واسع بين المطورين الذين يبنون مساعدين ذكاء اصطناعي شخصيين، وأدوات داخلية، ونماذج بحثية أولية.
Ollama مقابل واجهات برمجة تطبيقات LLM السحابية
| الميزة | Ollama (محلي) | واجهات السحابة (مثل OpenAI, Anthropic) |
|---|---|---|
| زمن الاستجابة (Latency) | منخفض (يعمل محلياً) | يعتمد على الشبكة |
| التكلفة | مجاني بعد الإعداد | دفع مقابل كل رمز (token) |
| الخصوصية | البيانات تبقى على الجهاز | البيانات تُرسل إلى الخوادم |
| الأجهزة | يتطلب موارد GPU/CPU | بنية تحتية مدارة |
| التخصيص | تحكم كامل، يمكن الضبط الدقيق | محدود أو غير موجود |
| سهولة الإعداد | متوسط | سهل جداً |
دليل الإعداد خطوة بخطوة
1. تثبيت Ollama
macOS
brew install ollama/tap/ollama
ollama serve
Linux (Debian/Ubuntu)
curl -fsSL https://ollama.com/install.sh | sh
sudo systemctl start ollama
Windows (عبر WSL2)
wsl --install Ubuntu
curl -fsSL https://ollama.com/install.sh | sh
نصيحة: يتم تثبيت Ollama تلقائياً كخدمة خلفية تستمع على المنفذ 11434.
2. التحقق من التثبيت
قم بتشغيل:
ollama --version
ollama list
المخرجات المتوقعة:
ollama version 0.1.30
NAME SIZE MODIFIED
إذا رأيت معلومات الإصدار ولا توجد أخطاء، فأنت جاهز للبدء.
3. سحب نموذج
يستضيف Ollama نماذج مختارة مثل Llama 2 و Mistral و Phi 2. اسحب واحداً:
ollama pull llama2
سترى تقدم التحميل والبيانات الوصفية للنموذج. يتم تخزين النماذج في ~/.ollama/models.
4. تشغيل أول نموذج لك
ollama run llama2
يمكنك الآن الدردشة بشكل تفاعلي:
>>> What is the capital of France?
Paris.
للخروج، اكتب Ctrl + D.
5. التكامل عبر API REST
يكشف Ollama عن API HTTP محلي على المنفذ 11434.
مثال: عميل Python
import requests
prompt = {"model": "llama2", "prompt": "Explain quantum computing in simple terms."}
response = requests.post("http://localhost:11434/API/generate", json=prompt, stream=True)
for line in response.iter_lines():
if line:
print(line.decode())
هذا يقوم ببث الرموز (tokens) فور توليدها — وهو أمر رائع لتطبيقات الدردشة.
مثال: عميل JavaScript
const res = await fetch('http://localhost:11434/API/generate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ model: 'llama2', prompt: 'Write a haiku about AI.' })
});
for await (const chunk of res.body) {
process.stdout.write(chunk.toString());
}
6. إنشاء نماذج مخصصة
يمكنك تحديد ملف .modelfile لتخصيص السلوك:
FROM llama2
PARAMETER temperature 0.7
PARAMETER top_p 0.9
SYSTEM "You are a helpful assistant specialized in Python."
البناء والتشغيل:
ollama create python-helper -f ./Modelfile
ollama run python-helper
7. نظرة عامة على البنية
إليك كيف يتناسب Ollama مع سير عملك:
graph TD
A[المستخدم / التطبيق] -->|HTTP / CLI| B[Ollama Daemon]
B --> C[Model Runtime]
C --> D[تسريع GPU / CPU]
B --> E[التخزين المحلي (~/.ollama)]
- B (Ollama Daemon): يعالج الطلبات ودورة حياة النموذج.
- C (Runtime): ينفذ استنتاج النموذج.
- E (Storage): يقوم بتخزين النماذج مؤقتاً للاستخدام دون اتصال.
متى تستخدم ومتى لا تستخدم Ollama
| استخدم Ollama عندما | تجنب Ollama عندما |
|---|---|
| تحتاج إلى خصوصية كاملة واستنتاج دون اتصال | تحتاج إلى قابلية توسع هائلة لمتعدد المستخدمين |
| تريد بناء نماذج أولية بسرعة دون تكاليف API | تفتقر إلى موارد GPU/CPU كافية |
| تبني أدوات داخلية أو مساعدين | تحتاج إلى ضمان وقت تشغيل واتفاقيات مستوى الخدمة (SLAs) |
| تريد ضبطاً دقيقاً أو تخصيصاً للنماذج | تفضل بساطة السحابة المدارة |
مثال واقعي: الذكاء الاصطناعي المحلي على نطاق واسع
يستخدم العديد من المطورين في المؤسسات الكبيرة Ollama داخلياً لـ أعباء العمل الحساسة للخصوصية، مثل تلخيص المستندات الداخلية أو بناء مساعدين برمجيين (copilots) لا تغادر الشبكة المؤسسية أبداً. على الرغم من عدم توثيقها علناً، إلا أن استراتيجيات LLM المحلية المماثلة شائعة في مختبرات البحث والتطوير في الشركات والصناعات المنظمة حيث تهم مكان إقامة البيانات.
أفضل الممارسات
- تسريع وحدة معالجة الرسومات (GPU): يكتشف Ollama تلقائياً خلفيات CUDA أو Metal1. بالنسبة لوحدات معالجة الرسومات NVIDIA، تأكد من تثبيت برامج التشغيل و CUDA 12+.
- التكميم (Quantization): يتم توزيع النماذج بتنسيقات مكممة (مثل Q4_K_M) لتقليل استهلاك الذاكرة.
- حجم الدفعة (Batch Size): اضبطه باستخدام أعلام
--num-threadأو--num-batchلضبط معدل النتاج (throughput). - الذاكرة: احتفظ بما لا يقل عن 1.5 ضعف حجم النموذج في ذاكرة الوصول العشوائي (RAM) أو VRAM المتاحة.
أمثلة على مخرجات اختبار الأداء:
Tokens/s: 22.4 (CPU)
Tokens/s: 95.7 (GPU)
اعتبارات أمنية
- تعرض الـ API المحلي: افتراضياً، يستمع Ollama على
localhost. تجنب تعريض المنفذ 11434 علناً. - عزل البيئة (Sandboxing): قم بالتشغيل داخل Docker أو جهاز افتراضي (VM) للعزل إذا كنت تستخدم نماذج غير موثوقة.
- أصالة النموذج: اسحب فقط من المصادر الموثوقة (سجل Ollama الرسمي).
- حقن الأوامر (Prompt Injection): قم بتنقية مدخلات المستخدم عند دمج Ollama في التطبيقات2.
قابلية التوسع والجاهزية للإنتاج
تم تصميم Ollama لـ الاستنتاج على عقدة واحدة، ولكن يمكنك التوسع أفقياً:
- استخدام Docker: قم بتشغيل عدة مثيلات خلف وكيل عكسي (reverse proxy).
مثال لـ Docker-compose:
version: '3'
services:
ollama1:
image: ollama/ollama:latest
ports: ["11434"]
ollama2:
image: ollama/ollama:latest
proxy:
image: nginx:latest
ports:
- "8080:80"
الاختبار ومعالجة الأخطاء
مثال لاختبار الوحدة (Unit Testing)
يمكنك محاكاة (Mock) الـ API الخاص بـ Ollama في الاختبارات:
import requests_mock
def test_prompt():
with requests_mock.Mocker() as m:
m.post('http://localhost:11434/API/generate', json={"response": "Hello!"})
res = requests.post('http://localhost:11434/API/generate', json={"prompt": "Hi"})
assert res.json()['response'] == 'Hello!'
نمط معالجة الأخطاء
try:
res = requests.post('http://localhost:11434/API/generate', timeout=30)
res.raise_for_status()
except requests.exceptions.Timeout:
print("Model took too long to respond.")
except requests.exceptions.ConnectionError:
print("Ollama service not running.")
المراقبة والقابلية للملاحظة
يمكنك مراقبة Ollama عبر:
- مقاييس النظام:
htop، أوnvidia-smi، أوActivity Monitor. - السجلات (Logs): يقوم Ollama بتسجيل السجلات في
~/.ollama/logs. - Prometheus: قم بتغليف استدعاءات API الخاصة بـ Ollama بمصدري مقاييس (metrics exporters).
مثال لمقياس Prometheus:
ollama_tokens_generated_total{model="llama2"} 12345
الأخطاء الشائعة والحلول
| المشكلة | السبب | الحل |
|---|---|---|
connection refused |
الخدمة (Daemon) لا تعمل | قم بتشغيل ollama serve |
out of memory |
النموذج كبير جداً على الـ GPU | استخدم نموذجاً أصغر مكمماً (quantized) |
invalid model |
صيغة Modelfile خاطئة | تحقق باستخدام ollama show |
slow inference |
وضع المعالج (CPU) فقط | قم بتفعيل الـ GPU أو تقليل طول السياق (context length) |
أخطاء شائعة يقع فيها الجميع
- تحميل نماذج ضخمة متعددة بدون مساحة قرص كافية.
- جعل الـ API متاحاً للعامة بدون مصادقة (authentication).
- تجاهل صيغ التكميم (quantization)، مما يؤدي إلى أخطاء في الذاكرة.
- تشغيل تعريفات قديمة تعطّل تسريع الـ GPU.
دليل استكشاف الأخطاء وإصلاحها
| العرض | التشخيص | الإصلاح |
|---|---|---|
| خدمة Ollama لا تبدأ | تعارض في المنافذ (Ports) | غيّر المنفذ باستخدام متغير البيئة OLLAMA_HOST |
| تحميل النموذج متوقف | مشكلة في الشبكة | أعد المحاولة باستخدام علامة --resume |
| الـ API يعيد خطأ 500 | تلف في التخزين المؤقت | احذف ~/.ollama/models وأعد التحميل |
| النموذج بطيء جداً | الاعتماد على المعالج (CPU fallback) | تحقق من تعريفات الـ GPU ومسار CUDA |
تحدي "جربها بنفسك"
- قم بإنشاء Modelfile يلخص النصوص في نقاط (bullet points).
- اجعله متاحاً عبر Flask أو FastAPI باستخدام REST API الخاص بـ Ollama.
- أضف تسجيلاً للطلبات (request logging) وقم بقياس سرعة معالجة الرموز (tokens/sec).
النقاط الرئيسية
- يوفر Ollama طريقة سريعة وخاصة ومرنة لتشغيل نماذج اللغة الكبيرة (LLMs) محلياً.
- التثبيت يستغرق دقائق؛ والتحسين يتطلب الفهم.
- استخدم تسريع الـ GPU والنماذج المكممة (quantized) للحصول على أفضل النتائج.
- قم بتأمين الـ API المحلي وراقب الأداء بانتظام.
- ممتاز للنماذج الأولية، والأبحاث، وأدوات الذكاء الاصطناعي الداخلية.
الخطوات التالية / قراءات إضافية
Footnotes
-
NVIDIA CUDA Toolkit Documentation – https://docs.nvidia.com/cuda/ ↩
-
OWASP Top 10 – Injection Risks – https://owasp.org/www-project-top-ten/ ↩