كيف تثبت Ollama وتشغّل نموذج AI محلياً على Ubuntu 22.04

تريد نموذج لغة يعمل على خادمك أنت: لتلخيص نصوص، أو تصنيف رسائل، أو تجربة تطبيق. ولا تريد أن تخرج بياناتك إلى خدمة خارجية، ولا أن تدفع مقابل كل طلب. Ollama يثبّت النماذج المفتوحة ويشغّلها بأمر واحد، ويعطيك API على الخادم نفسه.
قبل البدء: هل يتحمّل خادمك؟#
النموذج يُحمَّل في الذاكرة كاملاً، فالذاكرة هي ما يحدّد ما تستطيع تشغيله. توثيق Ollama يذكر حتى كتابة هذا المقال:
- ٨ جيجابايت على الأقل لنماذج 7B.
- ١٦ جيجابايت لنماذج 13B.
- ٣٢ جيجابايت لنماذج 33B.
ما يعني B: عدد معاملات النموذج بالمليارات. الأكبر أذكى وأبطأ وأثقل.
- بطاقة رسومية: اختيارية. بدونها يعمل النموذج على المعالج، لكن الإجابة أبطأ بوضوح. ومع بطاقة NVIDIA وتعريفاتها يستعملها Ollama تلقائياً.
- القرص: كل نموذج يأخذ من بضعة جيجابايت إلى عشرات، وحجم كل نموذج مكتوب في صفحته على مكتبة Ollama. انظر المساحة المتاحة بـ
df -h. - النظام: Ubuntu 22.04 أو 24.04، أو أيّ توزيعة Linux حديثة تعمل بـsystemd.
على خادم صغير بذاكرة ٢ أو ٤ جيجابايت، ابدأ بنموذج صغير (1B إلى 3B). النموذج الذي لا تتّسع له الذاكرة إمّا يرفض العمل، وإمّا يدفع الخادم إلى Swap فيبطؤ كل شيء عليه.
التثبيت#
السكربت الرسمي يثبّت البرنامج، وينشئ له مستخدماً اسمه ollama، ويشغّله خدمة دائمة:
curl -fsSL https://ollama.com/install.sh | sh
تشغيل سكربت من الإنترنت مباشرة يعني أنك تثق بمصدره. إن أردت قراءته قبل تشغيله فنزّله إلى ملف أولاً:
curl -fsSL https://ollama.com/install.sh -o install-ollama.sh
less install-ollama.sh
sh install-ollama.sh
تأكّد أنه يعمل#
ollama --version
systemctl status ollama
curl http://localhost:11434
- الأمر الأخير يجب أن يردّ بعبارة
Ollama is running. - في ناتج
systemctl statusابحث عنactive (running).
تنزيل نموذج وتشغيله#
تصفّح النماذج في مكتبة Ollama. لكل نموذج اسم، وأحجام تُكتب بعد نقطتين، مثل llama3.2:1b. الأمر run ينزّل النموذج إن لم يكن موجوداً، ثم يفتح محادثة في الطرفية:
ollama run llama3.2
اكتب سؤالك واضغط Enter. للخروج اكتب /bye. وإن أردت التنزيل وحده دون محادثة، كما في سكربت إعداد مثلاً:
ollama pull llama3.2
إدارة النماذج#
ollama list # النماذج المنزّلة وأحجامها
ollama ps # النماذج المحمّلة في الذاكرة الآن
ollama show llama3.2 # تفاصيل نموذج
ollama rm llama3.2 # حذف نموذج من القرص
النموذج يبقى في الذاكرة بعد آخر طلب مدّة قصيرة، ثم يُفرَّغ منها تلقائياً. ollama ps يعرض ما هو محمّل الآن.
نموذج بتعليمات ثابتة: Modelfile#
إن كنت تستعمل النموذج لمهمّة واحدة متكرّرة، كتلخيص الأخبار بالعربية مثلاً، فلا تكرّر التعليمات في كل طلب. اكتبها مرة واحدة في ملف اسمه Modelfile:
FROM llama3.2
SYSTEM "أنت مساعد يلخّص النصوص بالعربية الفصحى في ثلاث جمل على الأكثر."
ثم أنشئ منه نموذجاً باسمك، واستعمله كأيّ نموذج آخر:
ollama create summarizer -f Modelfile
ollama run summarizer
النموذج الجديد لا يكرّر ملفات النموذج الأصلي على القرص، بل يضيف إليه تعليماتك فقط. والخيارات الأخرى التي يقبلها الملف في توثيق Modelfile الرسمي.
الاستعمال من برامجك: API#
الخدمة تستمع على المنفذ 11434، وعلى الخادم نفسه فقط افتراضياً. هذا طلب إجابة واحدة كاملة، بلا بثّ كلمة كلمة:
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "لخّص في جملة: ما فائدة النسخ الاحتياطي؟",
"stream": false
}'
وللمحادثة برسائل متتالية، كما تفعل تطبيقات الدردشة، استعمل /api/chat. شكل الطلبين وخياراتهما في توثيق API الرسمي.
الوصول من جهازك دون فتحه للإنترنت#
ما يستمع على الخادم وحده لا يصل إليه أحد من الخارج، وهذا جيّد. لتستعمله من جهازك، افتح نفق SSH. اكتب هذا الأمر على جهازك أنت:
ssh -L 11434:localhost:11434 root@192.0.2.10
ما دامت هذه الجلسة مفتوحة، فإن http://localhost:11434 على جهازك يصل إلى Ollama على الخادم، عبر اتصال SSH مشفّر.
وإن احتجت فعلاً أن يستمع على كل الواجهات، لخادم آخر في شبكتك مثلاً، فالإعداد في خدمة systemd:
sudo systemctl edit ollama
أضف في الملف الذي يُفتح:
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
ثم:
sudo systemctl daemon-reload
sudo systemctl restart ollama
Ollama لا يطلب كلمة مرور ولا مفتاحاً. إن استمع على 0.0.0.0 وكان المنفذ 11434 مفتوحاً للإنترنت، فأيّ أحد يستطيع تشغيل نماذجك على حساب معالجك وذاكرتك، ويرى ما فيها. افتح المنفذ في الجدار الناري لعنوان الخادم الذي يحتاجه فقط، أو استعمل نفق SSH أعلاه.
أين تُحفظ النماذج#
في التثبيت بالسكربت تُحفظ النماذج في /usr/share/ollama/.ollama/models. إن كان القرص الأساسي صغيراً، فانقلها إلى قرص آخر بالمتغيّر OLLAMA_MODELS. أضفه بـsystemctl edit ollama كما في المثال السابق، وتأكّد أن المستخدم ollama يملك المجلّد الجديد.
التحديث والإزالة#
للتحديث، أعد تشغيل سكربت التثبيت نفسه. وللإزالة الكاملة:
الأوامر التالية تحذف البرنامج وكل النماذج المنزّلة. إعادة تنزيلها تأخذ وقتاً وسعة إنترنت.
sudo systemctl stop ollama
sudo systemctl disable ollama
sudo rm /etc/systemd/system/ollama.service
sudo rm $(which ollama)
sudo rm -r /usr/share/ollama
sudo userdel ollama
sudo groupdel ollama
مشاكل شائعة وحلولها#
«Error: could not connect to ollama app, is it running?»#
الخدمة متوقفة. شغّلها وانظر في سجلّها لتعرف لماذا توقّفت:
sudo systemctl start ollama
journalctl -e -u ollama
الإجابة بطيئة جداً#
النموذج يعمل على المعالج، أو أكبر من الذاكرة. جرّب حجماً أصغر من النموذج نفسه. وإن كانت لديك بطاقة NVIDIA، فتأكّد أن تعريفها يعمل بالأمر nvidia-smi. ثم ابحث في سجلّ الخدمة عن سطر يذكر البطاقة.
النموذج يرفض التحميل أو يتوقف الخادم#
الذاكرة لا تتّسع له. تحقّق بـfree -h قبل التشغيل وأثناءه. الحلّ نموذج أصغر، أو خادم بذاكرة أكبر. أما Swap فلا يحلّ هذا، لأن نموذجاً يُقرأ من القرص أبطأ من أن يُستعمل.
امتلأ القرص#
ollama list يعرض حجم كل نموذج. احذف ما لا تستعمله بـollama rm.



التعليقات