Program
Llama 3 gibi büyük dil modellerini (LLM’ler) yerelde çalıştırmak, yapay zekâ dünyasında oyunun kurallarını değiştiriyor. Hugging Face gibi platformlar yerel dağıtımı teşvik ederken, kullanıcılar artık modelleriyle kesintisiz ve mahrem bir deneyim yaşayabiliyor.
Bu blogda, Llama 3 gibi LLM’leri neden yerelde çalıştırmanız gerektiğini ve onlara GPT4ALL ile Ollama kullanarak nasıl erişeceğinizi öğreneceğiz. Ayrıca model sunumu, Llama 3’ü çalışma alanınıza entegre etme ve nihayetinde bunu bir yapay zekâ uygulaması geliştirmek için kullanma konularını ele alacağız. Onu yalnızca bir sohbet botu olarak değil, aynı zamanda iş akışımızı güçlendirmek ve projeler inşa etmek için de kullanacağız.
Llama 3 Neden Yerelde Çalıştırılmalı?
Llama 3’ü yerelde çalıştırmak, yüksek RAM, GPU ve işlem gücü gereksinimleri nedeniyle göz korkutucu görünebilir. Ancak, çerçevelerdeki ve model optimizasyonundaki gelişmeler sayesinde bu artık her zamankinden daha erişilebilir. İşte bunu düşünmeniz için bazı nedenler:
- Kesintisiz erişim: Oran sınırlamaları, kesinti süreleri ve beklenmedik hizmet aksamaları konusunda endişelenmenize gerek kalmaz.
- Gelişmiş performans: Yanıt üretimi gecikme olmadan hızlıdır. Orta seviye dizüstü bilgisayarlarda bile saniyede yaklaşık 50 token hızlarına ulaşabilirsiniz.
- Artırılmış güvenlik: Modeli ince ayar yapmak için kullanılan girdiler üzerinde tam kontrole sahipsiniz ve veriler cihazınızda yerel olarak kalır.
- Azaltılmış maliyetler: API’lere erişmek veya çevrimiçi bir sohbet botuna abone olmak için yüksek ücretler ödemek yerine Llama 3’ü ücretsiz kullanabilirsiniz.
- Özelleştirme ve esneklik: Hiperparametrelerle modelleri özelleştirebilir, durdurma token’ları ekleyebilir ve gelişmiş ayarları değiştirebilirsiniz.
- Çevrimdışı yetenekler: Modeli indirdikten sonra onu kullanmak için internet bağlantısına ihtiyacınız yoktur.
- Mülkiyet: Model, verileri ve çıktıları üzerinde tam mülkiyet ve kontrole sahipsiniz.
Daha fazla bilgi için Bulutta Büyük Dil Modellerini (LLM’ler) Kullanmanın Artıları ve Eksileri vs. LLM’leri Yerelde Çalıştırma makalemizi okuyun ve yerelde LLM kullanmanın sizin için uygun olup olmadığını öğrenin.
Llama 3’ü GPT4ALL ile Kullanma
GPT4ALL, popüler büyük dil modellerini GPU olmadan bile yerel makinenizde çalıştırmanızı sağlayan açık kaynaklı bir yazılımdır. Kullanıcı dostudur ve teknik olmayan geçmişe sahip bireyler için de erişilebilir kılar.
Windows’ta GPT4ALL’i indirmek ve kurmak için resmî indirme sayfasına giderek başlayacağız.
Uygulamayı kurduktan sonra başlatın ve modeller menüsünü açmak için “Downloads” düğmesine tıklayın. Oradan aşağı kaydırıp “Llama 3 Instruct” modelini seçin ve “Download” düğmesine tıklayın.

İndirme tamamlandıktan sonra sekmeyi kapatın ve “Choose a model” açılır menüsünden Llama 3 Instruct modelini seçin.

Bir istem yazın ve tıpkı ChatGPT gibi kullanmaya başlayın. Sistemde CUDA araç seti kurulu olduğundan, daha hızlı yanıt üretmek için GPU’yu kullanır.

Llama 3’ü Ollama ile Kullanma
Şimdi, Llama 3’ü yerelde kullanmanın en kolay yolunu deneyelim: Ollama’yı indirip kurarak.

Ollama, LLM’leri yerelde kullanmanıza olanak tanıyan güçlü bir araçtır. Hızlıdır ve pek çok özellikle birlikte gelir.
Ollama’yı sisteminize kurduktan sonra terminali/PowerShell’i açın ve komutu yazın.
ollama run llama3
Not: Model dosyasını indirmek ve sohbet botunu terminal içinde başlatmak birkaç dakika sürecektir.
İstemler yazın veya sorular sormaya başlayın; Ollama yanıtı terminalinizde üretecektir. Sohbet yanıtı oldukça hızlıdır ve konunuza derinlemesine inmek için takip soruları sormaya devam edebilirsiniz.

Sohbet botundan çıkmak için /bye yazmanız yeterlidir.
Bu iki yazılıma ek olarak, daha fazla uygulama ve çerçeveyi keşfetmek için LLM’leri Yerelde Çalıştırın: 7 Basit Yöntem rehberine bakabilirsiniz.
Llama 3’ü Yerelde Sunma
Yerel bir sunucu çalıştırmak, Llama 3’ü diğer uygulamalara entegre etmenizi ve belirli görevler için kendi uygulamanızı oluşturmanızı sağlar.
Yerel model çıkarım sunucusunu terminale aşağıdaki komutu yazarak başlatın.
ollama serve
Sunucunun düzgün çalışıp çalışmadığını kontrol etmek için sistem tepsisine gidin, Ollama simgesini bulun ve günlükleri görüntülemek için sağ tıklayın.

Bu sizi Ollama klasörüne götürecek; burada API’ler aracılığıyla gelen sunucu isteklerine ve zaman damgalarıyla birlikte sunucu bilgilerine ilişkin verileri görüntülemek için `server.log` dosyasını açabilirsiniz.

CURL ile API’ye erişim
Çıkarım sunucusuna basitçe CURL komutuyla erişebilirsiniz.
Sadece model adını ve istemi sağlayın ve tam mesajı almak için akışın kapalı olduğundan emin olun.
curl http://localhost:11434/api/chat -d '{
"model": "llama3",
"messages": [
{ "role": "user", "content": "What are God Particles?" }
],
"stream": false
}'
CURL komutu Linux’ta yereldir, ancak aşağıda gösterildiği gibi Windows PowerShell’de de kullanabilirsiniz.

Python Paketiyle API’ye erişim
Çıkarım sunucusuna erişmek için PIP kullanarak Ollama Python paketini de kurabilirsiniz.
pip install ollama
API’ye Python’dan erişmek, yapay zekâ destekli uygulama ve araçlar geliştirmenizi sağlar ve kullanımı son derece kolaydır.
`ollama.chat` fonksiyonuna model adını ve mesajı vermeniz yeterlidir; yanıtı üretecektir.
Not: message argümanında, bağlam eklemek için sistem istemi ve asistan istemi de ekleyebilirsiniz.
import ollama
response = ollama.chat(
model="llama3",
messages=[
{
"role": "user",
"content": "Tell me an interesting fact about elephants",
},
],
)
print(response["message"]["content"])

Ollama Python paketi, eşzamansız çağrılar ve akış gibi özellikler de sunar; bu da API isteklerinin etkin yönetimini sağlar ve modelin algılanan hızını artırır.
OpenAI API’sine benzer şekilde, eşzamansız bir sohbet fonksiyonu oluşturabilir ve ardından async fonksiyonunu kullanarak akış kodu yazabilirsiniz; bu da modelle verimli ve hızlı etkileşimler sağlar.
import asyncio
from ollama import AsyncClient
async def chat():
"""
Stream a chat from Llama using the AsyncClient.
"""
message = {
"role": "user",
"content": "Tell me an interesting fact about elephants"
}
async for part in await AsyncClient().chat(
model="llama3", messages=[message], stream=True
):
print(part["message"]["content"], end="", flush=True)
asyncio.run(chat())
Gördüğünüz gibi, model üretilen token’ları anlık olarak gösteriyor.

Ayrıca Python API’sini kullanarak özel model oluşturabilir, metni gömülere dönüştürebilir ve hata yönetimi yapabilirsiniz. Modelleri kopyalayabilir, silebilir, çekebilir ve gönderebilirsiniz.
Llama 3’ü VSCode’a Entegre Etme
Ollama’yı bir sohbet botu olarak kullanmanın veya yanıtlar üretmenin yanı sıra, onu VSCode’a entegre edebilir ve Llama 3’ten otomatik tamamlama, bağlama duyarlı kod önerileri, kod yazma, docstring oluşturma, birim testi ve daha fazlası gibi özellikler için yararlanabilirsiniz.
1. Önce, terminale aşağıdaki komutu yazarak Ollama çıkarım sunucusunu başlatmalıyız.
ollama serve
2. VSCode eklentilerine gidin, "CodeGPT" aracını arayın ve kurun. CodeGPT, API anahtarını kullanarak herhangi bir model sağlayıcısına bağlanmanızı sağlar.

3. Sol paneldeki CodeGPT sohbet simgesine tıklayarak CodeGPT’yi yapılandırın. Model sağlayıcısını Ollama olarak değiştirin ve llama3:8b modelini seçin. Yerelde çalıştırdığımız için bir API anahtarı girmenize gerek yok.

4. Python kodu üretmek için istemi yazın ve ardından kodu Python dosyanıza aktarmak için "Insert the code" düğmesine tıklayın. Kodu iyileştirmek için takip talimatları da yazabilirsiniz.

5. Kodlama asistanının dışında, CodeGPT’yi kodu anlamak, yeniden düzenlemek, belgelendirmek, birim testi üretmek ve sorunları çözmek için kullanabilirsiniz.

Kendinizi bir Python profesyoneli gibi hissetmek istiyorsanız, VSCode’un çekirdek özelliklerini öğrenmek ve ihtiyaçlarınıza göre özelleştirmek için Python için VSCode Kurulumu rehberine göz atın.
Yerelde Bir Yapay Zekâ Uygulaması Geliştirme
Bu bölümde, belirlenmiş bir klasörden docx dosyalarını okuyan, onları gömülere dönüştüren ve bir vektör deposunda saklayan bir yapay zekâ destekli uygulama geliştireceğiz.
Ardından, benzerlik aramasını kullanarak ilgili anlamları alacak ve sorularınıza bağlamsal yanıtlar sağlayacağız.
Bu uygulama, kitapların özünü hızla kavramanıza ve karakter gelişimine daha derinlemesine dalmanıza olanak tanır.

Kurulum
Önce, belgeleri yüklemek, vektör deposu ve LLM çerçeveleri için gerekli tüm Python paketlerini kuracağız.
pip install unstructured[docx] langchain langchainhub langchain_community langchain-chroma
Ardından, Ollama çıkarım sunucusunu başlatın.
ollama serve
Belgeleri yükleme
Uygulamayı oluşturmadan önce kodunuzu Jupyter Notebook’ta geliştirmek ve test etmek iyi bir uygulamadır.
DirectoryLoader kullanarak klasörden tüm docx dosyalarını yükleyeceğiz.
from langchain_community.document_loaders import DirectoryLoader
loader = DirectoryLoader("C:/Users/abida/Desktop/Books", glob="**/*.docx")
books = loader.load()
len(books)
4
Kılavuz niteliğindeki ChatGPT & LangChain ile Sohbet Botu Geliştirme: Bağlama Duyarlı Yaklaşım öğreticisini takip ederek kendi bağlama duyarlı sohbet botunuzu oluşturabilirsiniz.
Metni bölme
Tüm bir kitabı modele beslemek mümkün değildir; çünkü bağlam penceresini aşar. Bu sınırlamayı aşmak için metni, modelin bağlam penceresine rahatça sığacak daha küçük ve yönetilebilir parçalara bölmemiz gerekir.
Bizim durumda, dört kitabın tamamını 500 karakterlik parçalara dönüştüreceğiz.
from langchain_text_splitters import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
all_splits = text_splitter.split_documents(books)
Ollama gömüleri ve Chroma vektör deposu
Metni gömüye dönüştürmek ve Chroma veritabanında saklamak için Langchain’i kullanacağız.
Gömü modeli olarak Ollama Llama 3 modelini kullanıyoruz.
from langchain_chroma import Chroma
from langchain_community.embeddings import OllamaEmbeddings
vectorstore = Chroma.from_documents(
documents=all_splits,
embedding=OllamaEmbeddings(model="llama3", show_progress=True),
persist_directory="./chroma_db",
)
OllamaEmbeddings: 100%|██████████| 23/23 [01:00<00:00, 2.63s/it]
Şimdi vektör veritabanımızı bazı benzerlik aramaları yaparak test edelim.
question = "Who is Zahra?"
docs = vectorstore.similarity_search(question)
docs
Soruya benzer dört sonuç elde ettik.

Vektör veritabanı ve Chroma DB dünyasına daha derinlemesine dalmak için Chroma DB Nasıl Kullanılır: Adım Adım Kılavuz öğreticisini okuyun.
Soru-Cevap alma sistemi için Langchain zincirleri kurma
Doğru bir soru-cevap alma sistemi kurmak için Langchain zincirlerini kullanacak ve modülleri eklemeye başlayacağız.
Soru-Cevap zincirimizde
- Vektör deposunu alıcı olarak kullanacak ve sonuçları biçimlendireceğiz.
- Ardından RAG istemini sağlayacağız. Bunu Langchain Hub’dan kolayca çekebilirsiniz.
- Sonra Ollama Llama 3 çıkarım fonksiyonunu sağlayacağız.
- En sonunda, yalnızca yanıtı göstermek için sonuçları ayrıştıracağız.
Basitçe söylemek gerekirse, Llama 3 modeline geçmeden önce, sorunuzu benzerlik araması ve RAG istemi kullanarak bağlamla zenginleştireceğiz.
from langchain import hub
from langchain_community.llms import Ollama
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough
llm = Ollama(model="llama3")
retriever = vectorstore.as_retriever()
def format_docs(docs):
return "\n\n".join(doc.page_content for doc in docs)
rag_prompt = hub.pull("rlm/rag-prompt")
qa_chain = (
{"context": retriever | format_docs, "question": RunnablePassthrough()}
| rag_prompt
| llm
| StrOutputParser()
)
Benzer bir uygulamayı LLamaIndex kullanarak da oluşturabilirsiniz. Bunu yapmak için LlamaIndex: Büyük Dil Modeli (LLM) tabanlı uygulamalar için bir Veri Çerçevesi öğreticisini takip edin.
Soru-Cevap alma zincirini test etme
Hikâye hakkında daha fazlasını anlamak için kitaplarla ilgili sorular sorun.
question = "What is the story of the 'Gené is Missing' book?"
qa_chain.invoke(question)
Görüldüğü gibi, kitapları bağlam olarak kullanmak doğru bir yanıt sağlıyor.
'Based on the provided context, "Gené is Missing" appears to be a mystery novel that revolves around uncovering the truth about Gené\'s life and potential involvement in murders. The story follows different perspectives, including Simon trying to prove his innocence, flashbacks of Gené\'s past, and detective Jacob investigating the case.'
Şimdi karakterle ilgili bir soru soralım.
question = "Who is Arslan?"
qa_chain.invoke(question)
Net bir yanıt üretildi.
'Arslan is Zahra\'s brother\'s best friend. He is someone that Zahra visits in the book "A Boy with Honest Dreams" by Abid Ali Awan to gather information about Ali.'
Yapay zekâ uygulamasını oluşturma
Terminalinizde sorunsuz çalışan, tam donanımlı bir yapay zekâ uygulaması oluşturmak için önceki bölümlerdeki tüm kodu tek bir Python dosyasında birleştireceğiz.
code AI_app.py
Ayrıca kodu, etkileşimli sorgulamayı etkinleştirecek şekilde geliştireceğiz; böylece ‘exit’ yazarak oturumu açıkça sonlandırana kadar uygulamaya tekrar tekrar soru sorabilirsiniz.
from langchain_chroma import Chroma
from langchain_community.embeddings import OllamaEmbeddings
from langchain import hub
from langchain_community.llms import Ollama
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough
# loading the vectorstore
vectorstore = Chroma(persist_directory="./chroma_db", embedding_function=OllamaEmbeddings(model="llama3"))
# loading the Llama3 model
llm = Ollama(model="llama3")
# using the vectorstore as the retriever
retriever = vectorstore.as_retriever()
# formating the docs
def format_docs(docs):
return "\n\n".join(doc.page_content for doc in docs)
# loading the QA chain from langchain hub
rag_prompt = hub.pull("rlm/rag-prompt")
# creating the QA chain
qa_chain = (
{"context": retriever | format_docs, "question": RunnablePassthrough()}
| rag_prompt
| llm
| StrOutputParser()
)
# running the QA chain in a loop until the user types "exit"
while True:
question = input("Question: ")
if question.lower() == "exit":
break
answer = qa_chain.invoke(question)
print(f"\nAnswer: {answer}\n")
Uygulamayı terminalde `Python` ve dosya adını yazarak çalıştırın.
python AI_app.py
Harika. Sadece birkaç satır kodla yerelde kendi RAG yapay zekâ uygulamamızı oluşturduk.

Bu öğreticiye ait tüm kaynak kodu GitHub deposunda mevcuttur: kingabzpro/using-llama3-locally. Lütfen göz atın ve depoyu yıldızlamayı ⭐ unutmayın.
Sonuç
Bu öğreticide Llama 3’ü bir dizüstü bilgisayarda yerelde kullanmayı öğrendik. Ayrıca çıkarım sunucusunu ve bunu kullanarak Llama 3’ü VSCode’a nasıl entegre edebileceğimizi gördük.
Sonuç olarak Langchain, Chroma ve Ollama kullanarak bir Soru-Cevap alma sistemi kurduk. Veriler yerel sistemi asla terk etmedi ve bunu oluşturmak için tek kuruş ödemeniz gerekmedi. Daha basit uygulamaların yanı sıra, bu öğreticide kullandığımız aynı araçlarla karmaşık sistemler de inşa edebilirsiniz.
Daha fazla bilgi için şu öğreticileri öneririm:
SSS
Llama 3’ü yerelde macOS veya Linux’ta çalıştırabilir miyim, yoksa yalnızca Windows’ta mı?
Evet, Llama 3’ü macOS ve Linux’ta da yerelde çalıştırabilirsiniz. Ollama ve GPT4ALL gibi araçlar çoklu platform desteği sunar ve kurulum talimatlarının çoğu işletim sistemleri arasında benzerdir.
Llama 3 tipik olarak ne kadar disk alanı gerektirir?
Model boyutuna (ör. 7B, 13B) bağlı olarak 4 GB ile 20+ GB arasında disk alanına ihtiyaç duyabilirsiniz. Özellikle birden fazla model veya quantize edilmiş sürümler kullanıyorsanız indirmeden önce yeterli alanınız olduğundan emin olun.
Dağıtım yaptıktan sonra Llama 3’ü yerelde ince ayar yapabilir miyim?
Evet, ancak ince ayar yapmak çıkarımdan daha fazla kaynak gerektirir. Başlamak için sağlam bir GPU kurulumu ve Hugging Face Transformers veya PEFT (Parametre-Verimli İnce Ayar) gibi bir çerçeveye ihtiyacınız olacaktır.
Llama 3’ü yerelde çalıştırmak için GPU şart mı?
Hayır, kesin olarak gerekli değildir. GPT4ALL gibi araçlar Llama 3’ü CPU’larda çalıştırabilir, ancak performans daha yavaş olacaktır. Gerçek zamanlı yanıt veya büyük modeller istiyorsanız GPU şiddetle tavsiye edilir.
Ollama’da birden fazla LLM arasında geçiş yapabilir miyim?
Evet. Ollama, Llama 2, Llama 3 ve Mistral gibi farklı modelleri çalıştırmayı destekler. Kurulumunuza bağlı olarak terminal veya GUI üzerinden indirip aralarında geçiş yapabilirsiniz.
Zaten indirdiğim bir Llama 3 modelini nasıl güncellerim?
Çoğu araç, Ollama dahil, modelleri yeniden çekmenize veya yenilemenize izin verir. İndirme veya pull komutunu tekrar çalıştırmanız yeterlidir—güncellemeleri kontrol eder ve varsa eski sürümün üzerine yazar.
Sertifikalı bir veri bilimcisi olarak, yenilikçi makine öğrenimi uygulamaları oluşturmak için en son teknolojileri kullanmaya büyük ilgi duyuyorum. Konuşma tanıma, veri analizi ve raporlama, MLOps, konuşma yapay zekası ve NLP alanlarında güçlü bir geçmişe sahip olarak, gerçek bir etki yaratabilecek akıllı sistemler geliştirme becerilerimi geliştirdim. Teknik uzmanlığımın yanı sıra, karmaşık kavramları açık ve özlü bir dille ifade etme yeteneğine sahip, becerikli bir iletişimciyim. Sonuç olarak, veri bilimi konusunda aranan bir blog yazarı oldum ve giderek büyüyen veri profesyonelleri topluluğuyla görüşlerimi ve deneyimlerimi paylaşıyorum. Şu anda, içerik oluşturma ve düzenlemeye odaklanıyorum. Büyük dil modelleriyle çalışarak, hem işletmelerin hem de bireylerin verilerinden en iyi şekilde yararlanmalarına yardımcı olabilecek güçlü ve ilgi çekici içerikler geliştiriyorum.

