Proxmox Ortamında Ollama AI Modelleri
Yerel Cihazlarda LLM’ler
Özet
Proxmox sanallaştırma sistemi üzerinde Ubuntu bir sunucunun kurulması. Nvidia ekran kartı için ihtiyaç duyulan sürücülerin yüklenip yapay zeka modellerini Ollama ile sunucumuza çekerek ihtiyaçlarımız doğrusunda kullanabilmek.
Ollama Nedir?
Ollama LLM (Large Language Model) modellerini kolaylıkla çalıştırmanızı sağlayan açık kaynak kodlu bir platformdur. Docker benzeri bir kullanıcı deneyimi sunmaktadır. Piyasadaki büyük şirketlerin sahip olduğu LLM modellerine kıyasla özelleştirilebilir ve yerel ağda (yada cihazınızda) kolaylıkla çalıştırılabilir modelleri hizmetinize sunar.
Ollamanın en büyük avantajları ise;
- Kolay kurulum ve kullanım.
- API desteği.
- Model çeşitliliği.
Bunun dışında WebUI gibi çeşitli eklentilerle de verimliliğinizi arttırabilirsiniz.
Kurulum
Kurulum Öncesi
Ollama belirli ekran kartlarında çalışabilmekte. Ekran kartınızın Ollama tarafından desteği olup olmadığını bu linkten inceleyebilirsiniz.
https://github.com/ollama/ollama/blob/main/docs/gpu.md
Ollama destekli GPU’lar (Sadece popüler GPU’lar);
| İşlem Yeteneği | Aile | Kartlar |
|---|---|---|
| 9.0 | NVIDIA | H100 |
| 8.9 | GeForce RTX 40xx | RTX 4090 RTX 4080 RTX 4070 Ti RTX 4060 Ti |
| 8.6 | GeForce RTX 30xx | RTX 3090 Ti RTX 3090 RTX 3080 Ti RTX 3080 RTX 3070 Ti RTX 3070 RTX 3060 Ti RTX 3060 |
| 7.5 | GeForce GTX/RTX | GTX 1650 Ti TITAN RTX RTX 2080 Ti RTX 2080 RTX 2070 RTX 2060 |
| Quadro | RTX 8000 RTX 6000 RTX 5000 RTX 4000 | |
| GeForce GTX | GTX 1080 Ti GTX 1080 GTX 1070 Ti GTX 1070 GTX 1060 GTX 1050 | |
| 6.0 | NVIDIA | Tesla P100 Quadro GP100 |
| 5.2 | GeForce GTX | GTX TITAN X GTX 980 Ti GTX 980 GTX 970 GTX 960 GTX 950 |
| 5.0 | GeForce GTX | GTX 750 Ti GTX 750 NVS 810 |
Tercihler
Ollamanın çalışabileceği platformlar Mac, Linux ve Windows olmak üzere temelde üç çeşit diyebiliriz. Bunun haricinde Docker üzerinde veya VM olarak da sanal ortamlarda rahatlıkla kullanılabilmektedir. Burada dikkat edilmesi gerek en önemli noktalardan biri Ollamanın ekran kartını verimli bir şekilde kullanabilmesidir.
Günümüzde RTX ekran kartlarının ve üzerilerinde barındırdıkları CUDA teknolojisinin faydaları saymakla bitmemekte. Bu teknolojilerin etkili olduğu alanlardan biri de yapay zeka. Ollama üzerinde çalıştırdığı modelleri ekran kartının işlem gücüyle ayağa kaldırmakta. Ekran kartınızın işlem hacmi ve VRAM kapasitesi ne kadar fazlaysa kullandığınız modelin verimliliği de o kadar artmakta. Alternatif olarak ekran kartı olmayan kullanıcılar için Ollama bilgisayarın işlemci ve belleğini kullanarak da modelleri çalıştırabilmekte.
Proxmox ve Ubuntu Server VM
Bu örnekte üzerinde RTX 3060 8GB VRAM ekran kartı olan bir masaüstü bilgisayar tercih edeceğim. İçerisinde Proxmox 8.1.3 kurulu. VM olarak Ubuntu server üzerine Ollamayı kuracağım.
Sanal Makinenin Hazırlanması
Ubuntu sanal makinemizin ekran kartı ayarlarının tam olarak yapılabilmesi için bazı ön ayarları yapmamız gerekmekte.
- Guest Agent özelliğini aktif edin. Proxmox üzerinde sanal makinanızda temel bir takım işlemleri yapabilmek için agent servisine ihtiyacınız var. Sonrasında bu özelliği kullanabilmek için kurulum yapacağız.
- Planladığınız kadarıyla disk ayarlayın. Ortalama bir modelin boyutu 10GB denebilir. İşletim sistemi ve Swap alanıyla birlikte 40-50GB’lık bir disk işinizi görecektir.
- CPU ayarları kısmında CPU tipini host olarak seçmeniz gerekmekte. Bu sayede Ollama modelleri çalıştırırken GPU kartınızdan faydalanacak.
- Bellek konusunda bonkör olmaya çalışın. Minimum 8GB bir belleğin yeterli olacağına inanıyorum fakat ne kadar çok bellek koyarsanız o kadar rahat edersiniz.
Sanal Makinenin Ayağa Kaldırılması
Ubuntu Server Güncellemeleri ve Qemu Agent
Ubuntu sanal makinemizi oluşturduktan sonra sırasıyla paketleri güncelliyoruz. Güncellemeler bittikten sonra Qemu Guest Agent servisini kuruyoruz. Servis bazında gerekli aktivasyonları yaptıktan sonra agent servisini devreye sokuyoruz. Ollama kurulumundan önce Nvidia için ekran kartı ve CUDA sürücülerini kurmamız gerekiyor. Bu kısımda güncel dokümanlardan faydalanarak kurulum yapmak sizin açınızdan daha mantıklı olacaktır.
Paketlerin güncellenmesi;
$ sudo apt update && sudo apt upgrade -yQemu agent kurulumu;
$ sudo apt install qemu-guest-agent -yQemu agent servisinin çalıştırılması;
$ sudo systemctl enable qemu-guest-agent
$ sudo systemctl start qemu-guest-agentNvidia ve CUDA Sürücüleri
Öncelikle sanal makinamızı kapatıyoruz ve Proxmox’un sanal makine arayüzünden hardware sayfasına gidiyoruz. Burada donanım olarak PCI kartını seçip ekran kartımızı ekliyoruz. Ek ayar olarak all functions ve primary gpu seçeneklerini seçiyoruz. Sonrasında Nvidia’nın web sayfasından gerekli sürücüleri indiriyoruz. Sadece ekran kartı sürücüleri yetmemekte, CUDA Toolkitini de sunucunuza kurmanız gerekmektedir. Aksi takdirde Ollama işlemlerini tam anlamıyla gerçekleştiremeyecektir. Bunun için sırayla ekran kartı ve CUDA sürücüsünün kurulum adımlarını izliyoruz;
Güncel kodlara bu sayfadan ulaşabilirsiniz: https://developer.nvidia.com/cuda-downloads
Önce CUDA Toolkitini kuruyoruz
$ wget <https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb>
$ sudo dpkg -i cuda-keyring_1.1-1_all.deb
$ sudo apt update
$ sudo apt install cuda-toolkit-12-5Sonrasında CUDA sürücülerini kuruyoruz
$ sudo apt install cuda-drivers -ySon olarak kernel modüllerini kurarak işlemi tamamlıyoruz
$ sudo apt install nvidia-driver-555-open -y
$ sudo apt install cuda-drivers-555 -yEkran kartı ve CUDA sürücü kurulumları tamamlandıktan sonra nvidia-smi komutu ile ekran kartımızın performansını kontrol edebiliriz. Bu sayede biraz da olsa çalışıp çalışmadığı hakkında fikir sahibi olacağız.
$ nvidia-smiEğer sürekli olarak performans takibi yapmak isterseniz aşağıdaki iki komuttan birini tercih edebilirsiniz, kişisel tavsiyem ilk komuttan yana;
$ watch -n 1 nvidia-smi
$ nvidia-smi -l 1Ollama Kurulumu ve Ayarlar
Ollama kurulumu için Ollamanın kendi web sayfasındaki kurulum kodunu kopyalayıp yapıştırıyoruz. Kurulum bittikten sonra Ollama ekran kartını gördüğünü bize bildirecektir.
Ubuntu Ollama kurulumu
$ curl -fsSL <https://ollama.com/install.sh> | shOllama kurulumu bu komuttan sonra otomatik olarak başlayacaktır. Kurulum problemsiz tamamlandıktan sonra son olarak Nvidia ekran kartının sunucuda tespit edildiğine dair bir çıktı verecektir. Eğer sistemde Nvidia ekran kartı tespit edemezse CPU-Only modda çalışacaktır. Ekran kartınız olmasına karşın bu hatayı alıyorsanız sürücü yükleme adımlarını kontrol ederek tekrar etmenizi tavsiye ederim. Eğer aldığınız hatayı çözemediyseniz farklı bir kaynaktan probleme ilişkin çözüm bulmanız gerekmektedir.
Ollama sunucuda servis olarak çalışmaktadır. Ollamanın sorunsuz bir şekilde çalıştığını anlamak için servisin durumuna bakabilir ve web servisinin çalıştığını tarayıcınız ile kontrol edebilirsiniz.
Ollama servisini kontrol etmek için;
$ sudo systemctl status ollama.serviceWeb arayüzüne erişmek için ise bu adrese gitmeniz gerekmekte;
<http://localhost:11434/>Daha önce bahsettiğim gibi Ollama aynı zamanda API hizmeti de sunmakta. Güvenlik olarak Ollama sadece kurulduğu cihaza hizmet vermektedir. Yani API istekleriniz, kod editörünüz için yapacağınız bütün bağlantılar sadece loopback adresinden geliyorsa cevaplanmakta.
Ollamayı Tüm Ağa Açma
Eğer Ollamayı ağınıza açmak istiyorsanız Ollama’nın servis ayar dosyası üzerinde eklemeler yapmanız gerekecek. Buradaki değişiklikler haricinde eğer sunucunuzda güvenlik duvarı aktifse gelen-giden istekler için ekstradan izin ayarı yapmanız da gerekiyor. Ben yaptığım örneklerde güvenlik duvarını kullanmadığımdan bu adımları atlıyorum.
Aslında Ollamanın kullandığı çevre değişkenlerini düzenleyerek ağ ayarlarını yapmaktayız. Aşağıdaki komutu kullanarak Ollamanızı tüm arayüzlerden gelecek bağlantılara açabilirsiniz;
$ export OLLAMA_HOST=0.0.0.0Ben buna alternatif olarak direkt servis dosyası üzerinden çevre değişkeni ayarlarını yapmaktayım. İki seçenek de aynı sonucu vermekte, tercih sizin.
Ollama servis dosyası;
$ sudo vi /etc/systemd/system/ollama.serviceDosyaya eriştikten sonra içerisine aşağıdaki satırları ekliyoruz ve kaydedip dosyayı kapatıyoruz.
[Service]
Environment="OLLAMA_HOST=0.0.0.0"Bu konuyla ilgili daha detaylı açıklamalara Ollamanın resmi dokümantasyonundan ulaşabilirsiniz.
https://github.com/ollama/ollama/blob/main/docs/faq.md
Ollama Komutları
Başlamadan önce Ollamanın bizlere sağladığı komutları inceleyebiliriz. Şu anda sınırlı sayıda olan bu komutlar ile sunucumuza istediğimiz modeli çekmek, düzenlemek ve kopyalamak gibi çeşitli işlemleri yapabilmekteyiz.
Komutlar;
| KOMUT | AÇIKLAMA |
|---|---|
| help | Komutlar hakkında yardım alma. |
| serve | Ollama servisini başlatır. |
| create | Bir modelfile dosyası ile bir model oluşturur. |
| show | Seçilen model için çeşitli bilgileri gösterir. |
| run | Seçilen modeli çalıştırır. |
| pull | Seçilen modeli çeker. |
| push | Seçilen modeli yükler. |
| list | Yüklü olan modellerin listesini verir. |
| cp | Seçilen modeli kopyalar. |
| rm | Seçilen modeli siler. |
Yapay Zeka Modelleri
Ollama kurulumu tamamlandıktan sonra ihtiyacımız doğrultusunda işimizi görecek bir model seçimi yapmamız gerekmekte. Ollamanın bize sunduğu modelleri kendi web sayfasından inceleyebiliriz.
Ollama Modelleri
Genel olarak çeşitli konularda eğitilmiş modellerden sadece programlamada kullanılmak üzere eğitilmiş modellere kadar her iş için bir modeli burada bulabilmekteyiz. Ayrıca fark edeceğiniz üzere her modelin farklı parametre değerlerine sahip versiyonları da var.
Parametreler kabaca yapay zeka modellerinin tahmin etmekte ve karar vermekte kullandığı değişkenlerdir. Parametre sayısı yüksek olan modeller daha fazla kaynak tüketmektedir ve genelde daha başarılı sonuçlar vermektedir.
Örnek modeller;
- LLAMA3: Çok çeşitli alanlarda bilgi sahibi olan bir model. Meta tarafından geliştirilmektedir.
- QWEN2: Alibaba grubun geliştirdiği bir model. LLAMA3 gibi çeşitli alanlarda bilgi sahibi. Performans testlerince an itibariyle en iyi open ai modeli.
- Codestral: Kod geliştirme konusunda bilgi sahibi bir model. Kod editörünüzün desteği varsa kullanışlı olabilir.
Örnek verdiğim bu modeller eğitildikleri konularda belirli başarı oranlarına sahip. Bu başarıda parametre sayıları da büyük rol oynamakta. LLAMA3 modelinin latest sürümü 8B (sekiz milyar) parametre ile 70B parametre versiyonlarına sahip. QWEN2 modeli ise 0.5B ile 72B arasında çeşitli seçenekler sunmakta.
Eğer sahip olduğunuz donanıma ortalama bir oyun bilgisayarına denk ise 7 ve 13B parametreli modelleri rahatlıkla çalıştırabilirsiniz. 13B parametrenin üzerindeki modellerde sisteminiz zorlanmaya başlayacaktır. Özellikle modelin yanıt verme süreleri burada belirgin bir gösterge olacaktır.
Codestral Modeli
İhtiyaçlarım doğrultusunda ben codestral modelini tercih ettim. 22B parametreli ve yaklaşık 13GB boyutu olan bir model. Yazılım geliştirme konusunda destek vermek üzere eğitilmiş aynı zamanda kod editörü içerisinde inline assist gibi işlemlerde de yetenekli.
Modelin Çekilmesi ve Çalıştırılması
Seçtiğimiz modeli sunucumuza çekmek (yüklemek) için pull komutunu kullanabiliriz. Alternatif olarak (eğer model sunucunuzda yoksa) Ollama, run komutu ile otomatik olarak önce modeli sunucunuza çekip sonrasında da çalıştırır.
$ ollama run codestralModel sunucumuza yüklendikten sonra çalışacaktır. Bundan sonra çeşitli promptlar ile modeli terminal üzerinden kullanabiliriz.
Codellama 7b Modeli
Codestral modeline alternatif olarak daha az kaynak tüketerek çalışan bu modeli de tercih edebilirsiz. Anlayabileceğiniz üzere parametresi de oldukça az olan bu model verimlilik olarak da codestrala kıyasla ~%30±5’luk bir kayba sahip. Ama bu açığını hızı ve bahsettiğim gibi az kaynak tüketmesiyle kapatmakta.
Codellama 7b modelini çekmek için;
$ ollama run codellama:7bModellerin Kullanım Şekilleri
Terminal
Modelinizi çalıştırdığınız terminal üzerinden promptlar vererek çalışabilirsiniz. Ek olarak “/” işareti ile model içerisinde kullanabileceğiniz yardımcı komutları inceleyebilirsiniz.
API
Ollamanın 11434 numaralı port üzerinden sağladığı bir API servisi mevcut. Bu servis ile çalışan modelinize promptlar gönderebilir ve sonuçlar elde edebilirsiniz. Göndereceğiniz http isteklerine header da eklemeniz gerekecektir, bu işlemleri yapabilmek için curl kullanmak mantıklı olabilir tabi alternatifler de tercih edilebilir.
Kod Editörleri
Günümüz için konuşmak istersen bu taraftaki en iyi örnek Copilot olacaktır. OpenAI’ın GPT3 modeli ile başlayan sonrasında GPT4 modeline güncellenmiştir. Copilot ile yazdığın kod üzerinde çeşitli düzeltmeler, eksiklikleri gidermeler hatta kod tamamlama konusunda daha ileri seviyede destek alabilirsiniz. Ollamanın modelleri ile de aynı desteği alabiliriz fakat OpenAI’ın modellerinin performansına yetişmek pek mümkün olmayacaktır.
VSCode kullananlar için CodeGPT gibi çeşitli eklentilerle bu desteği alabilirsiniz. MacOS tarafında bu desteği en basit bir şekilde verebilecek Zed kod editörü bulunmakta, tercih sizlerin.
Ollama Eklentileri
Ollama için açık kaynak olarak topluluklarca desteklenen çeşitli eklentiler bulunmakta. WebUI, web tabanlı bir deneyim sunarken Oterm aynı deneyimi size terminal üzerinden vermekte. Ollama Copilot eklentisini de tercih edebilirsiniz. Ollamanın resmi GitHub reposunda eklentilerin geri kalanına ulaşabilirsiniz.
Zed Editöründe Ollama
Yazının bu kısmı daha çok MacOS kullanıcılarına hitab etmekte. Ama yine de Ollamanın modellerini kod editörlerinize nasıl bağlayabileceğiniz hakkında fikir sahibi olmak için gözden geçirebilirsiniz.
Ön Hazırlık
Bu kısma kadar geldiyseniz elinizde çalışan, ağ üzerinden erişime açık bir model olması gerekmekte. Zed editörünün de herhangi bir eksiği yoksa başlayabiliriz.
Zed
Öncelikle Zed’in kişiselleştirilebilir ayarları kısmına Ollamayı kullanabilmek için ihtiyacımız olan kodları ekliyoruz;
assistant": {
"version": "1",
"provider": {
"name": "openai",
"type": "openai",
"default_model": "gpt-4-turbo-preview",
"api_url": "<http://localhost:11434/v1>"
}
}Burada üzerinde değişiklik yapmamız gereken nokta api_url, sunucunuzda çalışan IP ve port bilgileri doğrultusunda bu kısmı düzenlemeniz gerekmektedir.
Ollama modellerini editöre bağlamak için ise OpenAI modellerinin de bağlanmasında kullanılan assistant panele giriş yapıyoruz. Bu kısma girdikten sonra bize bir key soracaktır. Normalde buradaki key GPT modelleri için olsa da Zed, Ollama için de bir seçenek sunmakta. Eğer key kısmına ollama yazıp enter tuşuna basarsanız Zed belirlediğiniz ayarlar doğrultusunda Ollama modeline bağlanacaktır.
Bundan sonraki adımlarla Zed kod editörü üzerinden AI modelinizle iletişime geçebilir ve inline assist desteği alabilirsiniz.