Chuyển đến nội dung chính

Cách chạy Llama 3 cục bộ với Ollama và GPT4ALL

Chạy LLaMA 3 cục bộ với GPT4ALL và Ollama, và tích hợp vào VSCode. Sau đó, xây dựng hệ thống truy xuất Hỏi & Đáp bằng Langchain và Chroma DB.
Đã cập nhật 5 thg 10, 2026  · 12 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Chạy các mô hình ngôn ngữ lớn (LLM) như Llama 3 trên máy cục bộ đã trở thành một bước ngoặt trong thế giới AI. Với các nền tảng như Hugging Face thúc đẩy triển khai cục bộ, người dùng giờ đây có thể tận hưởng trải nghiệm riêng tư và không gián đoạn với các mô hình của mình.

Trong bài blog này, chúng ta sẽ tìm hiểu lý do nên chạy LLM như Llama 3 cục bộ và cách truy cập chúng bằng GPT4ALL và Ollama. Ngoài ra, chúng ta sẽ học về phục vụ mô hình, tích hợp Llama 3 vào không gian làm việc của bạn và cuối cùng là dùng nó để phát triển ứng dụng AI. Chúng ta không chỉ dùng nó như một chatbot, mà còn tận dụng để nâng cao quy trình làm việc và xây dựng dự án với nó.

Vì sao nên chạy Llama 3 cục bộ?

Chạy Llama 3 cục bộ có thể trông đáng ngại do yêu cầu cao về RAM, GPU và sức mạnh xử lý. Tuy nhiên, những tiến bộ trong framework và tối ưu mô hình đã khiến việc này dễ tiếp cận hơn bao giờ hết. Dưới đây là lý do bạn nên cân nhắc:

  • Truy cập không gián đoạn: Bạn sẽ không phải lo về giới hạn tần suất, thời gian ngừng hoạt động hay gián đoạn dịch vụ bất ngờ.
  • Hiệu năng cải thiện: Tạo phản hồi nhanh, không lag hay độ trễ. Ngay cả trên laptop tầm trung, bạn có thể đạt tốc độ khoảng 50 token/giây.
  • Bảo mật nâng cao: Bạn hoàn toàn kiểm soát dữ liệu đầu vào dùng để tinh chỉnh mô hình, và dữ liệu ở lại máy của bạn.
  • Giảm chi phí: Thay vì trả phí cao để truy cập API hoặc đăng ký chatbot trực tuyến, bạn có thể dùng Llama 3 miễn phí.
  • Tùy biến và linh hoạt: Bạn có thể tuỳ chỉnh mô hình bằng siêu tham số, thêm stop token và thay đổi các thiết lập nâng cao.
  • Khả năng ngoại tuyến: Sau khi tải mô hình, bạn không cần kết nối internet để sử dụng.
  • Quyền sở hữu: Bạn sở hữu và kiểm soát hoàn toàn mô hình, dữ liệu và đầu ra của nó.

Đọc bài viết Ưu và nhược điểm của việc dùng mô hình ngôn ngữ lớn (LLM) trên đám mây so với chạy cục bộ để tìm hiểu thêm liệu dùng LLM cục bộ có phù hợp với bạn không.

Dùng Llama 3 với GPT4ALL

GPT4ALL là phần mềm mã nguồn mở cho phép bạn chạy các mô hình ngôn ngữ lớn phổ biến trên máy tính cục bộ, kể cả khi không có GPU. Công cụ thân thiện với người dùng, phù hợp cả với những người không chuyên kỹ thuật.

Chúng ta sẽ bắt đầu bằng cách tải và cài đặt GPT4ALL trên Windows từ trang tải xuống chính thức.

Sau khi cài đặt ứng dụng, khởi chạy và bấm nút “Downloads” để mở menu mô hình. Ở đó, bạn có thể cuộn xuống và chọn mô hình “Llama 3 Instruct”, rồi nhấn nút “Download”.

Tải xuống Llama 3 trong ứng dụng GPT4all trên Windows.

Sau khi tải xong, đóng tab và chọn mô hình Llama 3 Instruct bằng cách nhấp vào menu thả xuống “Choose a model”.

chọn mô hình llama 3

Nhập một prompt và bắt đầu dùng như ChatGPT. Hệ thống đã cài bộ công cụ CUDA, nên sẽ dùng GPU để tạo phản hồi nhanh hơn.

dùng mô hình llama3 8b cục bộ

Dùng Llama 3 với Ollama

Giờ hãy thử cách dễ nhất để dùng Llama 3 cục bộ bằng cách tải và cài đặt Ollama.

tải gói cài đặt Ollama

Ollama là công cụ mạnh mẽ cho phép bạn dùng LLM cục bộ. Nó nhanh và đi kèm rất nhiều tính năng.

Sau khi cài đặt Ollama trên hệ thống, mở terminal/PowerShell và nhập lệnh.

ollama run llama3

Lưu ý: Quá trình tải tệp mô hình và khởi động chatbot trong terminal sẽ mất vài phút.

Viết prompt hoặc bắt đầu đặt câu hỏi, và Ollama sẽ tạo phản hồi ngay trong terminal của bạn. Phản hồi rất nhanh, và bạn có thể tiếp tục hỏi sâu hơn để đào sâu chủ đề.

tải và dùng llama 3 trong Windows PowerShell

Để thoát chatbot, chỉ cần gõ /bye .

Ngoài hai phần mềm này, bạn có thể tham khảo hướng dẫn Chạy LLM cục bộ: 7 phương pháp đơn giản để khám phá thêm ứng dụng và framework.

Phục vụ Llama 3 cục bộ

Chạy máy chủ cục bộ cho phép bạn tích hợp Llama 3 vào các ứng dụng khác và xây dựng ứng dụng riêng cho các tác vụ cụ thể.

Khởi động máy chủ suy luận mô hình cục bộ bằng cách nhập lệnh sau trong terminal.

ollama serve

Để kiểm tra máy chủ chạy đúng hay không, vào khay hệ thống, tìm biểu tượng Ollama và nhấp chuột phải để xem log.

ollama view logs

Thao tác này sẽ đưa bạn đến thư mục Ollama, nơi bạn có thể mở tệp `server.log` để xem thông tin về các yêu cầu qua API và thông tin máy chủ kèm dấu thời gian.

ollama server logs

Truy cập API bằng CURL

Bạn có thể truy cập máy chủ suy luận đơn giản bằng lệnh CURL.

Chỉ cần cung cấp tên mô hình và prompt, và đảm bảo tắt chế độ streaming để nhận toàn bộ thông điệp.

curl http://localhost:11434/api/chat -d '{
  "model": "llama3",
  "messages": [
    { "role": "user", "content": "What are God Particles?" }
  ],
  "stream": false
}'

Lệnh CURL là gốc của Linux, nhưng bạn cũng có thể dùng trong Windows PowerShell như bên dưới.

dùng curl để truy cập mô hình llama3 được host cục bộ

Truy cập API bằng gói Python

Bạn cũng có thể cài gói Python của Ollama bằng PIP để truy cập máy chủ suy luận.

pip install ollama

Truy cập API trong Python giúp bạn xây dựng ứng dụng và công cụ AI một cách mạnh mẽ, và cách dùng thì rất dễ.

Chỉ cần truyền cho hàm `ollama.chat` tên mô hình và thông điệp, nó sẽ tạo phản hồi.

Lưu ý: Trong đối số message, bạn cũng có thể thêm system prompt và assistant prompt để bổ sung ngữ cảnh.

import ollama

response = ollama.chat(
    model="llama3",
    messages=[
        {
            "role": "user",
            "content": "Tell me an interesting fact about elephants",
        },
    ],
)
print(response["message"]["content"])

đầu ra do llama 3 tạo

Gói Python của Ollama cũng cung cấp các tính năng như gọi bất đồng bộ và streaming, giúp quản lý yêu cầu API hiệu quả và tăng tốc độ cảm nhận của mô hình.

Tương tự API của OpenAI, bạn có thể tạo hàm chat bất đồng bộ rồi viết mã streaming bằng hàm async, cho phép tương tác hiệu quả và nhanh với mô hình.

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())

Như bạn thấy, mô hình hiển thị token ngay khi được tạo.

đầu ra async và streaming

Bạn cũng có thể dùng Python API để tạo mô hình tuỳ chỉnh, chuyển văn bản thành embedding và xử lý lỗi. Bạn cũng có thể sao chép, xóa, kéo và đẩy mô hình.

Tích hợp Llama 3 vào VSCode

Ngoài việc dùng Ollama làm chatbot hoặc tạo phản hồi, bạn có thể tích hợp nó vào VSCode và dùng Llama 3 cho các tính năng như tự động hoàn thành, gợi ý mã theo ngữ cảnh, viết mã, tạo docstring, kiểm thử đơn vị và nhiều hơn nữa.

1. Trước hết, chúng ta phải khởi tạo máy chủ suy luận Ollama bằng cách nhập lệnh sau trong terminal.

ollama serve

2. Vào phần tiện ích mở rộng của VSCode, tìm công cụ "CodeGPT" và cài đặt. CodeGPT cho phép bạn kết nối bất kỳ nhà cung cấp mô hình nào bằng khóa API.

CodeGPT trên chợ tiện ích VSCode

3. Thiết lập CodeGPT bằng cách nhấp biểu tượng chat CodeGPT ở bảng bên trái. Đổi nhà cung cấp mô hình sang Ollama và chọn mô hình llama3:8b. Bạn không cần cung cấp khóa API vì chúng ta đang chạy cục bộ.

chọn nhà cung cấp và mô hình trong tiện ích CodeGPT

4. Viết prompt để tạo mã Python rồi bấm nút "Insert the code" để chèn mã vào tệp Python của bạn. Bạn cũng có thể viết hướng dẫn tiếp theo để cải thiện mã.

dùng llama 3 trong CodeGPT

5. Ngoài trợ lý viết mã, bạn có thể dùng CodeGPT để hiểu mã, refactor, viết tài liệu, tạo kiểm thử đơn vị và xử lý vấn đề.

refactor mã bằng CodeGPT

Nếu bạn muốn sử dụng Python như dân chuyên, hãy xem hướng dẫn Thiết lập VSCode cho Python để tìm hiểu tính năng cốt lõi của VSCode và tuỳ biến theo nhu cầu.

Phát triển ứng dụng AI cục bộ

Trong phần này, chúng ta sẽ phát triển một ứng dụng dùng AI để đọc các tệp docx từ một thư mục chỉ định, chuyển chúng thành embedding và lưu vào kho vector.

Sau đó, chúng ta sẽ dùng tìm kiếm theo độ tương đồng để truy xuất ý nghĩa liên quan và cung cấp câu trả lời có ngữ cảnh cho câu hỏi của bạn.

Ứng dụng này sẽ giúp bạn nhanh chóng nắm bắt cốt lõi của sách và đi sâu vào phát triển nhân vật.

Thư mục sách của Abid với các tệp docx

Thiết lập

Đầu tiên, chúng ta sẽ cài tất cả gói Python cần thiết để tải tài liệu, kho vector và các framework LLM.

pip install unstructured[docx] langchain langchainhub langchain_community langchain-chroma

Sau đó, khởi động máy chủ suy luận Ollama.

ollama serve

Tải tài liệu

Thực hành tốt là phát triển và kiểm thử mã trong Jupyter Notebook trước khi tạo ứng dụng.

Chúng ta sẽ tải tất cả tệp docx trong thư mục bằng DirectoryLoader.

from langchain_community.document_loaders import DirectoryLoader

loader = DirectoryLoader("C:/Users/abida/Desktop/Books", glob="**/*.docx")
books = loader.load()
len(books)
4

Bạn có thể tạo chatbot nhận biết ngữ cảnh của riêng mình bằng cách làm theo hướng dẫn Phát triển Chatbot với ChatGPT & LangChain: Tiếp cận theo ngữ cảnh.

Chia nhỏ văn bản

Cấp toàn bộ một cuốn sách cho mô hình là không khả thi vì sẽ vượt quá cửa sổ ngữ cảnh. Để khắc phục, chúng ta phải chia văn bản thành các đoạn nhỏ, dễ xử lý, vừa với cửa sổ ngữ cảnh của mô hình.

Trong trường hợp này, chúng ta sẽ chuyển cả bốn cuốn sách thành các đoạn dài 500 ký tự.

from langchain_text_splitters import RecursiveCharacterTextSplitter

text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
all_splits = text_splitter.split_documents(books)

Embedding bằng Ollama và kho vector Chroma

Chúng ta sẽ dùng Langchain để chuyển văn bản thành embedding và lưu vào cơ sở dữ liệu Chroma.

Chúng ta dùng mô hình Ollama Llama 3 làm mô hình 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]

Hãy kiểm thử cơ sở dữ liệu vector của chúng ta bằng một vài truy vấn theo độ tương đồng.

question = "Who is Zahra?"
docs = vectorstore.similarity_search(question)
docs

Chúng ta nhận được bốn kết quả tương tự với câu hỏi.

Đầu ra tìm kiếm theo độ tương đồng

Bạn có thể đi sâu vào thế giới cơ sở dữ liệu Vector và Chroma DB bằng cách đọc hướng dẫn Tìm hiểu cách dùng Chroma DB: Hướng dẫn từng bước.

Xây dựng chuỗi Langchain cho hệ thống truy xuất H&Đ

Để xây dựng hệ thống truy xuất câu hỏi–trả lời đúng chuẩn, chúng ta sẽ dùng các chuỗi Langchain và bắt đầu thêm các mô-đun.

Trong chuỗi H&Đ của chúng ta, sẽ có

  1. Dùng kho vector làm retriever và định dạng kết quả.
  2. Sau đó cung cấp prompt RAG. Bạn có thể kéo về dễ dàng từ Langchain Hub.
  3. Tiếp đến, cung cấp hàm suy luận Ollama Llama 3.
  4. Cuối cùng, phân tách kết quả để chỉ hiển thị phản hồi.

Nói ngắn gọn, trước khi đưa qua mô hình Llama 3, câu hỏi của bạn sẽ được bổ sung ngữ cảnh bằng tìm kiếm theo độ tương đồng và prompt RAG.

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()
)

Bạn có thể xây dựng ứng dụng tương tự bằng LLamaIndex. Để làm vậy, hãy theo hướng dẫn LlamaIndex: Khung dữ liệu cho các ứng dụng dựa trên mô hình ngôn ngữ lớn (LLM).

Kiểm thử chuỗi truy xuất H&Đ

Đặt các câu hỏi liên quan đến sách để hiểu thêm về câu chuyện.

question = "What is the story of the 'Gené is Missing' book?"
qa_chain.invoke(question)

Như ta thấy, dùng sách làm ngữ cảnh mang lại phản hồi chính xác.

'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.'

Giờ hãy hỏi về một nhân vật.

question = "Who is Arslan?"
qa_chain.invoke(question)

Một câu trả lời chính xác đã được tạo.

'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.'

Xây dựng ứng dụng AI

Để xây dựng một ứng dụng AI hoàn chỉnh chạy mượt trong terminal, chúng ta sẽ gộp toàn bộ mã từ các phần trước vào một tệp Python duy nhất.

code AI_app.py

Bên cạnh đó, chúng ta sẽ nâng cấp mã để cho phép truy vấn tương tác, giúp bạn có thể liên tục đặt câu hỏi cho ứng dụng cho đến khi bạn gõ 'exit' để kết thúc phiên.

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")



Chạy ứng dụng bằng cách gõ `Python` và tên tệp trong terminal.

python AI_app.py

Thật tuyệt. Chúng ta đã tạo ứng dụng RAG AI của riêng mình cục bộ chỉ với vài dòng mã.

Ứng dụng AI Python: truy xuất H&Đ

Toàn bộ mã nguồn cho hướng dẫn này có sẵn tại kho GitHub kingabzpro/using-llama3-locally. Hãy xem và nhớ gắn sao ⭐cho kho nhé.

Kết luận

Trong hướng dẫn này, chúng ta đã học cách dùng Llama 3 cục bộ trên laptop. Chúng ta cũng đã tìm hiểu về máy chủ suy luận và cách dùng nó để tích hợp Llama 3 vào VSCode.

Cuối cùng, chúng ta xây dựng hệ thống truy xuất H&Đ bằng Langchain, Chroma và Ollama. Dữ liệu không rời khỏi hệ thống cục bộ, và bạn không phải trả bất kỳ khoản phí nào để xây dựng. Ngoài các ứng dụng đơn giản, bạn có thể xây dựng hệ thống phức tạp bằng chính những công cụ đã dùng trong hướng dẫn này.

Để học thêm, tôi gợi ý các hướng dẫn sau:

Câu hỏi thường gặp

Tôi có thể chạy Llama 3 cục bộ trên macOS hoặc Linux hay chỉ Windows?

Có. Bạn cũng có thể chạy Llama 3 cục bộ trên macOS và Linux. Các công cụ như Ollama và GPT4ALL hỗ trợ đa nền tảng, và nhiều bước cài đặt tương tự giữa các hệ điều hành.

Llama 3 thường cần bao nhiêu dung lượng đĩa?

Tùy kích thước mô hình (ví dụ 7B, 13B), bạn có thể cần từ 4 GB đến hơn 20 GB dung lượng đĩa. Hãy đảm bảo đủ dung lượng trước khi tải, đặc biệt nếu bạn dùng nhiều mô hình hoặc các phiên bản đã lượng tử hóa.

Tôi có thể tinh chỉnh Llama 3 cục bộ sau khi triển khai không?

Có, nhưng tinh chỉnh đòi hỏi nhiều tài nguyên hơn so với suy luận. Bạn sẽ cần một thiết lập GPU tốt và một framework như Hugging Face Transformers hoặc PEFT (Parameter-Efficient Fine-Tuning) để bắt đầu.

Có bắt buộc cần GPU để chạy Llama 3 cục bộ không?

Không bắt buộc. Các công cụ như GPT4ALL có thể chạy Llama 3 trên CPU, nhưng hiệu năng sẽ chậm hơn. Nếu bạn muốn phản hồi theo thời gian thực hoặc dùng mô hình lớn, rất nên có GPU.

Tôi có thể chuyển đổi giữa nhiều LLM trong Ollama không?

Có. Ollama hỗ trợ chạy nhiều mô hình như Llama 2, Llama 3 và Mistral. Bạn có thể tải và chuyển đổi giữa chúng qua terminal hoặc GUI, tuỳ thiết lập của bạn.

Làm sao để cập nhật mô hình Llama 3 tôi đã tải?

Được. Ollama cho phép bạn kéo lại hoặc làm mới mô hình. Chỉ cần chạy lại lệnh tải hoặc pull—nó sẽ kiểm tra cập nhật và ghi đè phiên bản cũ nếu có.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Là một nhà khoa học dữ liệu được chứng nhận, tôi đam mê tận dụng công nghệ tiên tiến để tạo ra các ứng dụng học máy đổi mới. Với nền tảng vững chắc về nhận dạng giọng nói, phân tích và báo cáo dữ liệu, MLOps, AI hội thoại và NLP, tôi đã rèn giũa kỹ năng phát triển các hệ thống thông minh có thể tạo ra tác động thực sự. Bên cạnh chuyên môn kỹ thuật, tôi cũng là một người truyền đạt tốt, có khả năng chắt lọc các khái niệm phức tạp thành ngôn ngữ rõ ràng, súc tích. Nhờ đó, tôi trở thành một blogger được nhiều người quan tâm trong lĩnh vực khoa học dữ liệu, chia sẻ góc nhìn và kinh nghiệm với cộng đồng các chuyên gia dữ liệu ngày càng lớn. Hiện tại, tôi tập trung vào sáng tạo và biên tập nội dung, làm việc với các mô hình ngôn ngữ lớn để phát triển nội dung mạnh mẽ và hấp dẫn, giúp doanh nghiệp và cá nhân tận dụng tối đa dữ liệu của mình.

Chủ đề
Trí tuệ Nhân tạo
Mô hình Ngôn ngữ Lớn

Học AI với DataCamp!

Lộ trình

Phát triển các mô hình ngôn ngữ quy mô lớn

16 giờ
Học cách phát triển các mô hình ngôn ngữ lớn (LLMs) bằng PyTorch và Hugging Face, áp dụng các kỹ thuật học sâu và xử lý ngôn ngữ tự nhiên (NLP) tiên tiến nhất.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm