Kurs
Google DeepMind, açık kaynak modellerinin bir sonraki sürümü olan Gemma 3’ü yeni yayınladı. Gemma 3, telefonlar ve dizüstü bilgisayarlar gibi düşük kaynaklı cihazlarda doğrudan çalışacak şekilde tasarlandı. Bu modeller tek bir GPU veya TPU üzerinde hızlı performans için optimize edilmiştir ve farklı donanım ihtiyaçlarına uygun çeşitli boyutlarda gelir.
Bu eğitimde, Gemma 3’ü Ollama kullanarak yerelde nasıl kurup çalıştıracağınızı adım adım anlatacağım. Bunu yaptıktan sonra, Gemma 3 ve Python kullanarak nasıl bir dosya asistanı oluşturabileceğinizi göstereceğim.
Neden Gemma 3’ü Yerelde Çalıştırmalı?
Gemma 3 gibi büyük dil modellerini (LLM) yerelde çalıştırmanın birkaç önemli faydası vardır:
- Gizlilik: Veriler cihazda kalır ve hassas bilgileri korur.
- Düşük gecikme: İnternet üzerinden iletimi ortadan kaldırarak daha hızlı yanıtlar sağlar.
- Özelleştirme: Modeller belirli ihtiyaçlara ve deneylere göre ayarlanabilir.
- Maliyet verimliliği: Mevcut donanımı kullanarak bulut kullanım ücretlerini azaltır.
- Çevrimdışı erişim: Uygulamalar internet bağlantısı olmadan da çalışır.
- Kontrol: Bilgi işlem ortamımız üzerinde gelişmiş güvenlik ve kontrol sağlar.
Gemma 3’ü Ollama ile Yerelde Kurun
Ollama’yı yükleme
Ollama, Windows, Mac ve Linux için mevcut olup, yapay zeka modellerini çalıştırmayı ve dağıtmayı destekleyen bir platformdur; geliştiricilerin bu modelleri projelerine entegre etmesini kolaylaştırır. Gemma 3’ü yerelde indirmek ve çalıştırmak için bunu kullanacağız.
İlk adım, resmi Ollama web sitesinden indirip kurmaktır.

Kurulum sırasında komut satırını da yüklediğinizden emin olun:

Kurulumu tamamladıktan sonra, terminalde ollama komutunu kullanarak doğru şekilde yüklendiğini kontrol edebiliriz. Sonuç şöyle olmalıdır:

Gemma 3’ü indirme
Ollama ile bir modeli indirmek için pull komutunu kullanın:
ollama pull <model_name>:<model_version>
Mevcut modellerin listesi Ollama’nın kütüphanesinde bulunabilir.
Gemma 3 özelinde dört model sunar: 1b, 4b, 12b ve 27b. Buradaki b, modeldeki parametre sayısını milyar cinsinden ifade eder.
Örneğin 1b parametreli gemma3 modelini indirmek için şu komutu kullanırız:
ollama pull gemma3:1b
Model sürümünü belirtmezsek, varsayılan olarak 4b modeli indirilir:
ollama pull gemma3
Yerel modelleri listeleme
Yerelde sahip olduğumuz modelleri aşağıdaki komutla listeleyebiliriz:
ollama list
Benim durumda çıktı, iki modelim olduğunu gösteriyor:
NAME ID SIZE MODIFIED
gemma3:1b 2d27a774bc62 815 MB 38 seconds ago
gemma3:latest c0494fe00251 3.3 GB 22 minutes ago
Terminalde sohbet etme
Bir modelle sohbet etmek için Ollama’da run komutunu kullanabiliriz:
ollama run gemma3

İndirmediğimiz bir modelle run komutunu kullanırsak, model pull ile otomatik olarak indirileceğini unutmayın.
Gemma 3’ü arka planda çalıştırma
Gemma 3’ü Python ile kullanmak için arka planda çalıştırmamız gerekir. Bunu serve komutuyla yapabiliriz:
ollama serve
Komutu çalıştırırken aşağıdaki hatayı alırsanız, büyük olasılıkla Ollama zaten çalışıyordur:
Error: listen tcp 127.0.0.1:11434: bind: address already in use
Bu hata, Ollama’nın arka planda çalışmaya devam etmesi durumunda ortaya çıkabilir.
Gemma 3’ü Python ile Yerelde Kullanma
Python ortamını ayarlama
Ollama, bilgisayarımızda çalışan modellere kolayca bağlanmak için bir Python paketi sunar.
Gerekli bağımlılıkları ekleyerek bir Python ortamı kurmak için Anaconda kullanacağız. Bunu bu şekilde yapmak, hâlihazırda sahip olduğumuz diğer Python paketleriyle olası sorunları önlemeye yardımcı olur.
Anaconda yüklendikten sonra ortamı şu komutla oluşturabiliriz:
conda create -n gemma3-demo -y python=3.9
Bu komut, 3.9 sürümündeki Python’u kullanarak gemma3-demo adlı bir ortam kurar. -y seçeneği kurulum sırasında sorulan tüm soruların otomatik olarak evet yanıtı almasını sağlar.
Ardından ortamı şu komutla etkinleştiriyoruz:
conda activate gemma3-demo
Son olarak ollama paketini şu komutla yüklüyoruz:
pip install ollama
Python ile Gemma 3’e mesaj gönderme
Python kullanarak Gemma 3’e nasıl mesaj gönderebileceğimiz şöyle:
from ollama import chat
response = chat(
model="gemma3",
messages=[
{
"role": "user",
"content": "Why is the sky blue?",
},
],
)
print(response.message.content)
Donanımınıza bağlı olarak modelin cevap vermesi biraz zaman alabilir; bu nedenle betiği çalıştırırken sabırlı olun.
Daha önce gördüğümüz gibi gemma3 varsayılan olarak gemma3:4b’ye karşılık gelir. Dolayısıyla model olarak model="gemma3" belirttiğimizde kullanılacak olan budur.
Başka bir modeli—örneğin 1B modeli—kullanmak istersek, bunun yerine model=”gemma3:1b” argümanını geçmemiz gerekir (önceden ollama pull gemma3:1b komutuyla indirmiş olmamız şartıyla). Kullanılabilir modelleri listelemek için ollama list komutunu kullanabiliriz.
Yanıtı kelime kelime akış halinde almak istersek, bunun yerine stream=True kullanabilir ve yanıtı parça parça yazdırabiliriz:
from ollama import chat
stream = chat(
model="gemma3",
messages=[{"role": "user", "content": "Why is the sky blue?"}],
stream=True,
)
for chunk in stream:
print(chunk["message"]["content"], end="", flush=True)
Bu, daha iyi bir kullanıcı deneyimi sağlar; çünkü kullanıcı, yanıtın tamamının üretilmesini beklemek zorunda kalmaz.
ollama paketi hakkında daha fazla bilgi edinmek için dokümantasyonlarına göz atın.
Gemma 3 Kullanarak Bir Dosya Asistanı Oluşturma
Bu bölümde, bir metin dosyasının içeriği hakkında doğrudan terminalden soru sormamızı sağlayan bir Python betiğinin nasıl oluşturulacağını öğreneceğiz. Bu betik, bir kod dosyasındaki hataları kontrol etmek veya herhangi bir belgeden bilgi sorgulamak gibi görevler için kullanışlı olacaktır.
Betiğe genel bakış
Amacımız, bir metin dosyasını okuyan ve içeriğiyle ilgili soruları yanıtlamak için Gemma 3’ü kullanan bir komut satırı aracı oluşturmaktır. Bunu adım adım nasıl başaracağımız şöyle:
Betik yapısını oluşturma
Öncelikle gerekli içe aktarmalar ve temel yapı ile Python betiğini oluşturmamız gerekir:
import sys
from ollama import chat
def ask_questions_from_file(file_path):
# Read the content of the text file
with open(file_path, "r") as file:
content = file.read()
# Loop to keep asking questions
while True:
question = input("> ")
print()
if question.lower() == "exit":
break
# Use Gemma 3 to get answers
stream = chat(
model="gemma3",
messages=[
{"role": "user", "content": content},
{"role": "user", "content": question},
],
stream=True,
)
for chunk in stream:
print(chunk["message"]["content"], end="", flush=True)
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python ask_file.py <path_to_text_file>")
else:
file_path = sys.argv[1]
ask_questions_from_file(file_path)
Temel işlevsellik ask_questions_from_file() fonksiyonu içinde kapsüllenmiştir. Bu fonksiyon, argüman olarak bir dosya yolu alır ve belirtilen metin dosyasını açıp okuyarak başlar. Bu içerik, soruları yanıtlarken arka plan bilgisi olarak kullanılacaktır.
Dosya içeriği yüklendikten sonra betik, sürekli olarak bizden soru girişi isteyen bir döngüye girer. Bir soru yazdığımızda, betik dosyanın içeriğini sorumuzla birlikte Gemma 3 modeline gönderir ve model bu bilgiyi işleyerek bir yanıt üretir.
Modelle etkileşim, yanıtların oluşturuldukça gerçek zamanlı olarak görüntülenmesine olanak tanıyan bir akış mekanizması üzerinden gerçekleşir. exit yazarsak döngü sonlanır ve betik durur.
Betik sonunda, betiğin komut satırından doğru şekilde, yani argüman olarak metin dosyasının yolu verilerek çalıştırıldığını kontrol eden bir yapı vardır. Argüman sağlanmazsa, betiği doğru şekilde nasıl çalıştıracağımıza dair bir kullanım mesajı gösterir. Bu kurulum, betiği komut satırından etkin biçimde yönlendirmemizi sağlar.
Betiği çalıştırma
Yukarıdaki kodu örneğin ask.py adlı bir dosyaya kaydedin. Betiği test etmek için şu komutu çalıştırın:
python ask.py ask.py
Bu, betiğin kendisi hakkında soru sormanızı sağlayacaktır (bu yüzden yukarıdaki komutta ask.py iki kez görünür). İşte betiğin nasıl çalıştığını açıklamasını istemeye bir örnek:

Sonuç
Ollama ve Python kullanarak Gemma 3’ü yerelde kurup çalıştırmayı başarıyla öğrendik. Bu yaklaşım verilerimizin gizliliğini sağlar, düşük gecikme sunar, özelleştirme imkânları verir ve maliyet tasarrufuna yol açabilir. Ele aldığımız adımlar yalnızca Gemma 3 ile sınırlı değildir—Ollama’da barındırılan diğer modellere de uygulanabilir.
Betiklerimizin işlevselliğini geliştirmek istersek, örneğin PDF’leri işleyebilecek şekilde yeteneklerini genişletebiliriz. Bunu yapmanın en iyi yolu Mistral OCR API’sini kullanmaktır. PDF dosyalarını metne dönüştürerek betiğimizin PDF’ler hakkında da soruları yanıtlamasını sağlayabilir, onu daha da çok yönlü ve güçlü hale getirebiliriz.
Bu araçlarla, artık büyük modelleri doğrudan kendi cihazlarımızdan keşfetmeye ve onlarla etkileşim kurmaya hazırız.
FAQs
Gemma 3’ü yerelde çalıştırmak için donanım gereksinimleri nelerdir?
Gemma 3’ü yerelde çalıştırma yeteneği, indirmeyi seçtiğiniz model boyutuna bağlıdır. gemma3:1b gibi daha küçük modeller verimlilik için tasarlanmıştır ve tek GPU’lu dizüstü bilgisayarlar veya bazı üst düzey tabletler gibi daha az güçlü cihazlarda çalışabilir. gemma3:27b gibi daha büyük modeller ise çok çekirdekli, üst düzey GPU’ya sahip bir iş istasyonu gibi daha fazla hesaplama kaynağı gerektirir. Uyumlu olduğundan emin olmak için her zaman cihazınızın özelliklerini modelin kaynak gereksinimleriyle karşılaştırın.
Aynı anda birden fazla Gemma 3 örneği çalıştırabilir miyim?
Evet, donanım kaynaklarınız (CPU, GPU ve bellek) ek hesaplama yükünü desteklemeye yeterliyse aynı anda birden fazla Gemma 3 örneği çalıştırabilirsiniz. Arka planda çalışan her model örneği ek sistem kaynakları tüketeceğinden, sisteminizin birden çok süreci belirgin performans düşüşü olmadan kaldırabildiğinden emin olun.
Bir Python ortamı kurmak için Anaconda kullanmak şart mı?
Yalıtılmış ortamlar oluşturmadaki kolaylığı, bağımlılık yönetimi ve diğer Python paketleriyle çakışmaları önlemesi nedeniyle Anaconda şiddetle önerilir; ancak zorunlu değildir. venv veya virtualenv gibi diğer sanal ortam araçlarını da kullanabilirsiniz.

