Program
Menjalankan model bahasa besar (LLM) seperti Llama 3 secara lokal menjadi pengubah permainan di dunia AI. Dengan platform seperti Hugging Face yang mendorong penerapan lokal, pengguna kini dapat menikmati pengalaman menggunakan model tanpa gangguan dan tetap privat.
Dalam blog ini, kita akan mempelajari mengapa kita sebaiknya menjalankan LLM seperti Llama 3 secara lokal dan cara mengaksesnya menggunakan GPT4ALL dan Ollama. Selain itu, kita akan mempelajari tentang model serving, mengintegrasikan Llama 3 ke dalam lingkungan kerja Anda, dan pada akhirnya menggunakannya untuk mengembangkan aplikasi AI. Kita tidak hanya akan menggunakannya sebagai chatbot, tetapi juga untuk meningkatkan alur kerja dan membangun proyek dengannya.
Mengapa Menjalankan Llama 3 Secara Lokal?
Menjalankan Llama 3 secara lokal mungkin tampak menakutkan karena kebutuhan RAM, GPU, dan daya pemrosesan yang tinggi. Namun, kemajuan dalam kerangka kerja dan optimasi model membuatnya kini lebih mudah diakses. Inilah alasannya:
- Akses tanpa gangguan: Anda tidak perlu khawatir tentang batasan kuota, downtime, dan gangguan layanan tak terduga.
- Kinerja lebih baik: Generasi respons cepat tanpa lag atau latensi. Bahkan pada laptop kelas menengah, Anda bisa mendapatkan kecepatan sekitar 50 token per detik.
- Keamanan lebih baik: Anda memiliki kendali penuh atas input yang digunakan untuk fine-tuning model, dan data tetap berada secara lokal di perangkat Anda.
- Biaya lebih rendah: Alih-alih membayar biaya tinggi untuk mengakses API atau berlangganan chatbot online, Anda dapat menggunakan Llama 3 secara gratis.
- Kustomisasi dan fleksibilitas: Anda dapat menyesuaikan model menggunakan hiperparameter, menambahkan stop tokens, dan mengubah pengaturan lanjutan.
- Kemampuan offline: Setelah Anda mengunduh model, Anda tidak memerlukan koneksi internet untuk menggunakannya.
- Kepemilikan: Anda memiliki kepemilikan dan kendali penuh atas model, datanya, dan keluarannya.
Baca artikel kami, Kelebihan dan Kekurangan Menggunakan Large Language Models (LLM) di Cloud vs. Menjalankan LLM Secara Lokal, untuk mempelajari lebih lanjut apakah menggunakan LLM secara lokal cocok untuk Anda.
Menggunakan Llama 3 dengan GPT4ALL
GPT4ALL adalah perangkat lunak open-source yang memungkinkan Anda menjalankan model bahasa besar populer di mesin lokal Anda, bahkan tanpa GPU. Antarmukanya ramah pengguna, sehingga dapat diakses oleh individu dengan latar belakang non-teknis.
Kita akan mulai dengan mengunduh dan memasang GPT4ALL di Windows melalui halaman unduhan resmi.
Setelah menginstal aplikasi, jalankan dan klik tombol "Downloads" untuk membuka menu model. Di sana, gulir ke bawah dan pilih model “Llama 3 Instruct”, lalu klik tombol “Download”.

Setelah pengunduhan selesai, tutup tab dan pilih model Llama 3 Instruct dengan mengklik menu dropdown “Choose a model”.

Ketik prompt dan mulai gunakan seperti ChatGPT. Sistem telah terpasang CUDA toolkit, sehingga menggunakan GPU untuk menghasilkan respons lebih cepat.

Menggunakan Llama 3 dengan Ollama
Sekarang, mari coba cara termudah menggunakan Llama 3 secara lokal dengan mengunduh dan memasang Ollama.

Ollama adalah alat yang tangguh yang memungkinkan Anda menggunakan LLM secara lokal. Alat ini cepat dan dilengkapi dengan banyak fitur.
Setelah memasang Ollama di sistem Anda, jalankan terminal/PowerShell dan ketik perintah.
ollama run llama3
Catatan: Mengunduh berkas model dan memulai chatbot di dalam terminal akan memakan waktu beberapa menit.
Tulis prompt atau ajukan pertanyaan, dan Ollama akan menghasilkan respons di dalam terminal Anda. Respons chat sangat cepat, dan Anda dapat terus bertanya lanjutan untuk menggali topik lebih dalam.

Untuk keluar dari chatbot, cukup ketik /bye .
Selain dua perangkat lunak ini, Anda dapat merujuk ke panduan Menjalankan LLM Secara Lokal: 7 Metode Sederhana untuk mengeksplorasi aplikasi dan kerangka kerja tambahan.
Menyajikan Llama 3 Secara Lokal
Menjalankan server lokal memungkinkan Anda mengintegrasikan Llama 3 ke aplikasi lain dan membangun aplikasi Anda sendiri untuk tugas tertentu.
Mulai server inferensi model lokal dengan mengetik perintah berikut di terminal.
ollama serve
Untuk memeriksa apakah server berjalan dengan baik, buka system tray, cari ikon Ollama, dan klik kanan untuk melihat log.

Ini akan membawa Anda ke folder Ollama, tempat Anda dapat membuka berkas `server.log` untuk melihat informasi tentang permintaan server melalui API dan informasi server dengan cap waktu.

Mengakses API menggunakan CURL
Anda dapat mengakses server inferensi dengan mudah menggunakan perintah CURL.
Cukup berikan nama model dan prompt, serta pastikan streaming dimatikan untuk mendapatkan pesan penuh.
curl http://localhost:11434/api/chat -d '{
"model": "llama3",
"messages": [
{ "role": "user", "content": "What are God Particles?" }
],
"stream": false
}'
Perintah CURL adalah bawaan Linux, tetapi Anda juga dapat menggunakannya di Windows PowerShell seperti ditunjukkan di bawah.

Mengakses API menggunakan Paket Python
Anda juga dapat memasang paket Python Ollama menggunakan PIP untuk mengakses server inferensi.
pip install ollama
Mengakses API di Python memberi Anda kemampuan membangun aplikasi dan alat bertenaga AI, dan cara penggunaannya sangat mudah.
Cukup berikan fungsi `ollama.chat` dengan nama model dan pesan, dan fungsi tersebut akan menghasilkan respons.
Catatan: Dalam argumen message, Anda juga dapat menambahkan system prompt dan assistant prompt untuk menambahkan konteks.
import ollama
response = ollama.chat(
model="llama3",
messages=[
{
"role": "user",
"content": "Tell me an interesting fact about elephants",
},
],
)
print(response["message"]["content"])

Paket Python Ollama juga menyediakan fitur seperti pemanggilan asinkron dan streaming, yang memungkinkan pengelolaan permintaan API secara efektif dan meningkatkan kecepatan model yang dirasakan.
Mirip dengan OpenAI API, Anda dapat membuat fungsi chat asinkron dan kemudian menulis kode streaming menggunakan fungsi async, sehingga interaksi dengan model menjadi efisien dan cepat.
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())
Seperti yang Anda lihat, model menampilkan token seiring token tersebut dihasilkan.

Anda juga dapat menggunakan Python API untuk membuat model kustom, mengonversi teks menjadi embedding, dan penanganan error. Anda juga bisa menyalin, menghapus, menarik, dan mendorong model.
Mengintegrasikan Llama 3 di VSCode
Selain menggunakan Ollama sebagai chatbot atau untuk menghasilkan respons, Anda dapat mengintegrasikannya ke VSCode dan menggunakan Llama 3 untuk fitur seperti pelengkapan otomatis, saran kode berbasis konteks, penulisan kode, pembuatan docstring, pengujian unit, dan lainnya.
1. Pertama, kita harus menginisialisasi server inferensi Ollama dengan mengetik perintah berikut di terminal.
ollama serve
2. Buka ekstensi VSCode, cari alat "CodeGPT", dan pasang. CodeGPT memungkinkan Anda menghubungkan penyedia model apa pun menggunakan kunci API.

3. Atur CodeGPT dengan mengklik ikon chat CodeGPT di panel kiri. Ubah penyedia model menjadi Ollama dan pilih model llama3:8b. Anda tidak perlu memberikan kunci API, karena kita menjalankannya secara lokal.

4. Tulis prompt untuk menghasilkan kode Python lalu klik tombol "Insert the code" untuk memindahkan kode ke berkas Python Anda. Anda juga dapat menulis instruksi lanjutan untuk memperbaiki kode.

5. Selain asisten pengkodean, Anda dapat menggunakan CodeGPT untuk memahami kode, melakukan refactor, mendokumentasikan, membuat unit test, dan menyelesaikan masalah.

Jika Anda ingin merasa seperti profesional Python, lihat panduan Menyiapkan VSCode untuk Python untuk mempelajari fitur inti VSCode dan menyesuaikannya sesuai kebutuhan Anda.
Mengembangkan Aplikasi AI Secara Lokal
Pada bagian ini, kita akan mengembangkan aplikasi bertenaga AI yang membaca berkas docx dari folder tertentu, mengonversinya menjadi embedding, dan menyimpannya di vector store.
Setelah itu, kita akan menggunakan pencarian kemiripan untuk mengambil makna yang relevan dan memberikan jawaban kontekstual atas pertanyaan Anda.
Aplikasi ini akan memungkinkan Anda dengan cepat memahami inti buku dan menyelami pengembangan karakter lebih dalam.

Menyiapkan
Pertama, kita akan memasang semua paket Python yang diperlukan untuk memuat dokumen, vector store, dan kerangka kerja LLM.
pip install unstructured[docx] langchain langchainhub langchain_community langchain-chroma
Lalu, jalankan server inferensi Ollama.
ollama serve
Memuat dokumen
Sebaiknya kembangkan dan uji kode Anda di Jupyter Notebook sebelum membuat aplikasi.
Kita akan memuat semua berkas docx dari folder menggunakan DirectoryLoader.
from langchain_community.document_loaders import DirectoryLoader
loader = DirectoryLoader("C:/Users/abida/Desktop/Books", glob="**/*.docx")
books = loader.load()
len(books)
4
Anda dapat membuat chatbot yang peka konteks dengan mengikuti tutorial Pengembangan Chatbot dengan ChatGPT & LangChain: Pendekatan Konteks.
Membagi teks
Memberikan seluruh buku ke model tidaklah memungkinkan, karena akan melebihi jendela konteksnya. Untuk mengatasi keterbatasan ini, kita harus membagi teks menjadi potongan yang lebih kecil dan mudah dikelola yang muat dengan nyaman dalam jendela konteks model.
Dalam kasus kita, kita akan mengonversi keempat buku menjadi ukuran chunk 500 karakter.
from langchain_text_splitters import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
all_splits = text_splitter.split_documents(books)
Embedding Ollama dan Chroma vector store
Kita akan menggunakan Langchain untuk mengonversi teks menjadi embedding dan menyimpannya di basis data Chroma.
Kita menggunakan model Ollama Llama 3 sebagai model embedding.
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]
Mari uji basis data vektor kita dengan melakukan beberapa pencarian kemiripan.
question = "Who is Zahra?"
docs = vectorstore.similarity_search(question)
docs
Kita mendapat empat hasil yang mirip dengan pertanyaan tersebut.

Anda dapat menyelami lebih dalam dunia basis data vektor dan Chroma DB dengan membaca tutorial Pelajari Cara Menggunakan Chroma DB: Panduan Langkah demi Langkah.
Membangun rantai Langchain untuk sistem penelusuran T&J
Untuk membangun sistem temu balik tanya jawab yang baik, kita akan menggunakan rantai Langchain dan mulai menambahkan modul.
Dalam rantai T&J kita, kita akan
- Menggunakan vector store sebagai retriever dan memformat hasilnya.
- Setelah itu, kita akan memberikan RAG prompt. Anda dapat dengan mudah menariknya dari Langchain Hub.
- Kemudian, kita akan memberikan fungsi inferensi Ollama Llama 3.
- Pada akhirnya, kita akan mengurai hasil agar hanya menampilkan respons.
Sederhananya, sebelum melewatinya ke model Llama 3, pertanyaan Anda akan diberi konteks menggunakan pencarian kemiripan dan RAG prompt.
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()
)
Anda dapat membangun aplikasi serupa menggunakan LLamaIndex. Untuk melakukannya ikuti tutorial LlamaIndex: Kerangka Data untuk Aplikasi Berbasis Large Language Models (LLM).
Menguji rantai penelusuran T&J
Ajukan pertanyaan relevan tentang buku untuk memahami lebih jauh tentang ceritanya.
question = "What is the story of the 'Gené is Missing' book?"
qa_chain.invoke(question)
Seperti yang kita lihat, menggunakan buku sebagai konteks memberikan respons yang akurat.
'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.'
Sekarang mari ajukan pertanyaan tentang karakter.
question = "Who is Arslan?"
qa_chain.invoke(question)
Jawaban yang tepat berhasil dihasilkan.
'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.'
Membangun aplikasi AI
Untuk membangun aplikasi AI yang lengkap dan berjalan mulus di terminal Anda, kita akan menggabungkan semua kode dari bagian sebelumnya ke dalam satu berkas Python.
code AI_app.py
Selanjutnya, kita akan menyempurnakan kode agar mendukung kueri interaktif, memungkinkan Anda mengajukan pertanyaan ke aplikasi berulang kali hingga Anda secara eksplisit mengakhiri sesi dengan mengetik 'exit'.
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")
Jalankan aplikasi dengan menulis `Python` dan nama berkas di terminal.
python AI_app.py
Keren. Kita telah membuat aplikasi RAG AI sendiri secara lokal dengan beberapa baris kode.

Seluruh source code untuk tutorial ini tersedia di repositori GitHub kingabzpro/using-llama3-locally. Silakan cek dan jangan lupa beri bintang ⭐pada repositori tersebut.
Kesimpulan
Dalam tutorial ini, kita telah mempelajari cara menggunakan Llama 3 secara lokal di laptop. Kita juga mempelajari tentang server inferensi dan bagaimana kita dapat menggunakannya untuk mengintegrasikan Llama 3 ke VSCode.
Pada akhirnya, kita membangun sistem penelusuran T&J menggunakan Langchain, Chroma, dan Ollama. Data tidak pernah keluar dari sistem lokal, dan Anda bahkan tidak perlu membayar satu dolar pun untuk membangunnya. Selain aplikasi yang lebih sederhana, Anda dapat membangun sistem kompleks menggunakan alat yang sama seperti yang kita gunakan dalam tutorial ini.
Untuk mempelajari lebih lanjut, saya merekomendasikan tutorial berikut:
FAQ
Apakah saya bisa menjalankan Llama 3 secara lokal di macOS atau Linux, atau hanya di Windows?
Ya, Anda dapat menjalankan Llama 3 secara lokal di macOS dan Linux juga. Alat seperti Ollama dan GPT4ALL mendukung multi-platform, dan banyak instruksi penyiapan serupa di berbagai sistem operasi.
Berapa banyak ruang disk yang biasanya dibutuhkan Llama 3?
Bergantung pada ukuran model (misalnya 7B, 13B), Anda mungkin memerlukan sekitar 4 GB hingga lebih dari 20 GB ruang disk. Pastikan Anda memiliki ruang yang cukup sebelum mengunduh, terutama jika menggunakan beberapa model atau versi terkuantisasi.
Apakah saya dapat melakukan fine-tune Llama 3 secara lokal setelah men-deploy-nya?
Bisa, tetapi fine-tuning membutuhkan sumber daya lebih besar dibanding inferensi. Anda akan memerlukan setup GPU yang mumpuni dan kerangka kerja seperti Hugging Face Transformers atau PEFT (Parameter-Efficient Fine-Tuning) untuk memulai.
Apakah GPU diperlukan untuk menjalankan Llama 3 secara lokal?
Tidak, tidak wajib. Alat seperti GPT4ALL dapat menjalankan Llama 3 di CPU, tetapi kinerjanya akan lebih lambat. Jika Anda menginginkan respons real-time atau menggunakan model besar, GPU sangat direkomendasikan.
Bisakah saya beralih di antara beberapa LLM di Ollama?
Ya. Ollama mendukung menjalankan berbagai model seperti Llama 2, Llama 3, dan Mistral. Anda dapat mengunduh dan beralih di antaranya menggunakan terminal atau GUI, tergantung pada pengaturan Anda.
Bagaimana cara memperbarui model Llama 3 yang sudah saya unduh?
Kebanyakan alat seperti Ollama memungkinkan Anda menarik ulang atau menyegarkan model. Cukup jalankan kembali perintah download atau pull—alat akan memeriksa pembaruan dan menimpa versi lama jika tersedia.
Sebagai data scientist tersertifikasi, saya bersemangat memanfaatkan teknologi mutakhir untuk menciptakan aplikasi machine learning yang inovatif. Dengan latar belakang kuat di pengenalan ucapan, analisis dan pelaporan data, MLOps, conversational AI, dan NLP, saya mengasah keterampilan dalam mengembangkan sistem cerdas yang berdampak nyata. Selain keahlian teknis, saya juga komunikator andal yang mampu menyederhanakan konsep kompleks menjadi bahasa yang jelas dan ringkas. Karena itu, saya menjadi blogger yang dicari di bidang data science, membagikan wawasan dan pengalaman kepada komunitas profesional data yang terus berkembang. Saat ini, saya berfokus pada pembuatan dan penyuntingan konten, bekerja dengan large language model untuk mengembangkan konten yang kuat dan menarik agar membantu bisnis dan individu memaksimalkan data mereka.

