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

Cách cài đặt và chạy Gemma 3 cục bộ với Ollama

Tìm hiểu cách cài đặt, thiết lập và chạy Gemma 3 cục bộ với Ollama và xây dựng một trợ lý tệp đơn giản trên thiết bị của bạn.
Đã cập nhật 5 thg 10, 2026  · 12 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Google DeepMind vừa phát hành Gemma 3, thế hệ tiếp theo của các mô hình mã nguồn mở của họ. Gemma 3 được thiết kế để chạy trực tiếp trên các thiết bị tài nguyên thấp như điện thoại và laptop. Những mô hình này được tối ưu cho hiệu năng nhanh trên một GPU hoặc TPU và có nhiều kích thước để phù hợp với nhu cầu phần cứng khác nhau.

Trong hướng dẫn này, tôi sẽ giải thích từng bước cách thiết lập và chạy Gemma 3 cục bộ bằng Ollama. Sau đó, tôi sẽ chỉ bạn cách dùng Gemma 3 và Python để xây dựng một trợ lý tệp.

Vì sao chạy Gemma 3 cục bộ?

Chạy một mô hình ngôn ngữ lớn (LLM) như Gemma 3 cục bộ mang lại nhiều lợi ích quan trọng:

  • Quyền riêng tư: Dữ liệu nằm trên thiết bị, bảo vệ thông tin nhạy cảm.
  • Độ trễ thấp: Loại bỏ việc truyền qua internet, cho phản hồi nhanh hơn.
  • Tùy biến: Có thể điều chỉnh mô hình theo nhu cầu và thử nghiệm cụ thể.
  • Tiết kiệm chi phí: Giảm phí sử dụng đám mây bằng cách tận dụng phần cứng sẵn có.
  • Khả năng ngoại tuyến: Ứng dụng vẫn hoạt động khi không có kết nối internet.
  • Kiểm soát: Tăng cường bảo mật và kiểm soát môi trường tính toán của chúng ta.

Thiết lập Gemma 3 cục bộ với Ollama

Cài đặt Ollama

Ollama là một nền tảng có sẵn cho Windows, Mac và Linux, hỗ trợ chạy và phân phối các mô hình AI, giúp nhà phát triển dễ dàng tích hợp các mô hình này vào dự án. Chúng ta sẽ dùng nó để tải và chạy Gemma 3 cục bộ.

Bước đầu tiên là tải và cài đặt từ trang web chính thức của Ollama.

Tải Ollama để dùng gemma 3 cục bộ

Khi cài đặt, hãy nhớ cài đặt dòng lệnh:

Cài đặt dòng lệnh Ollama

Sau khi hoàn tất cài đặt, chúng ta có thể kiểm tra xem đã cài đúng chưa bằng lệnh ollama trong terminal. Kết quả mong đợi như sau:

Kiểm tra cài đặt Ollama

Tải Gemma 3

Để tải một mô hình với Ollama, dùng lệnh pull:

ollama pull <model_name>:<model_version>

Danh sách các mô hình có sẵn có tại thư viện của Ollama.

Gemma 3, cụ thể, có bốn mô hình: 1b, 4b, 12b và 27b, trong đó b là billion (tỷ), chỉ số lượng tham số của mô hình.

Ví dụ, để tải gemma3 với 1b tham số, ta dùng lệnh:

ollama pull gemma3:1b

Nếu không chỉ định phiên bản mô hình, mặc định sẽ tải mô hình 4b:

ollama pull gemma3

Liệt kê các mô hình cục bộ

Chúng ta có thể liệt kê các mô hình đang có cục bộ bằng lệnh sau:

ollama list

Trường hợp của tôi, đầu ra cho thấy tôi có hai mô hình: 

NAME             ID              SIZE      MODIFIED       
gemma3:1b        2d27a774bc62    815 MB    38 seconds ago    
gemma3:latest    c0494fe00251    3.3 GB    22 minutes ago 

Trò chuyện trong terminal

Chúng ta có thể dùng Ollama để trò chuyện với một mô hình bằng lệnh run:

ollama run gemma3

Trò chuyện với Ollama và Gemma 3 trong terminal

Lưu ý nếu dùng lệnh run với mô hình chưa tải về, nó sẽ tự động được tải bằng pull.

Chạy Gemma 3 nền

Để dùng Gemma 3 với Python, ta cần chạy nó ở chế độ nền. Có thể làm điều này bằng lệnh serve:

ollama serve

Nếu bạn gặp lỗi sau khi chạy lệnh, rất có thể Ollama đã chạy sẵn:

Error: listen tcp 127.0.0.1:11434: bind: address already in use

Lỗi này có thể xảy ra khi Ollama tiếp tục chạy trong nền.

Dùng Gemma 3 cục bộ với Python

Thiết lập môi trường Python

Ollama cung cấp một gói Python để dễ dàng kết nối với các mô hình đang chạy trên máy của chúng ta.

Chúng ta sẽ dùng Anaconda để thiết lập môi trường Python và thêm các phụ thuộc cần thiết. Cách làm này giúp tránh xung đột với các gói Python khác có sẵn.

Khi đã cài Anaconda, ta thiết lập môi trường bằng lệnh:

conda create -n gemma3-demo -y python=3.9

Lệnh này tạo môi trường tên gemma3-demo dùng Python phiên bản 3.9. Tùy chọn -y tự động trả lời có cho mọi câu hỏi trong quá trình thiết lập.

Tiếp theo, kích hoạt môi trường bằng:

conda activate gemma3-demo

Cuối cùng, cài gói ollama bằng lệnh:

pip install ollama

Gửi tin nhắn tới Gemma 3 bằng Python

Cách gửi một tin nhắn tới Gemma 3 bằng Python:

from ollama import chat
response = chat(
    model="gemma3",
    messages=[
        {
            "role": "user",
            "content": "Why is the sky blue?",
        },
    ],
)
print(response.message.content)

Tùy phần cứng của bạn, mô hình có thể mất một lúc để trả lời, nên hãy kiên nhẫn khi chạy script.

Như đã thấy trước đó, gemma3 mặc định là gemma3:4b. Vì vậy khi chỉ định model="gemma3", mô hình đó sẽ được dùng.

Để dùng mô hình khác—chẳng hạn bản 1B—chúng ta cần truyền đối số model=”gemma3:1b” (với điều kiện đã kéo về trước bằng lệnh ollama pull gemma3:1b). Để liệt kê các mô hình có sẵn, dùng lệnh ollama list.

Nếu muốn stream câu trả lời từng từ, ta có thể dùng stream=True và in phản hồi theo từng phần:

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)

Cách này mang lại trải nghiệm tốt hơn vì người dùng không phải đợi tạo xong toàn bộ câu trả lời.

Để tìm hiểu thêm về gói ollama, hãy xem tài liệu của họ.

Xây dựng trợ lý tệp bằng Gemma 3

Trong phần này, chúng ta học cách xây dựng một script Python cho phép đặt câu hỏi về nội dung của một tệp văn bản ngay từ terminal. Script này hữu ích cho các tác vụ như kiểm tra lỗi trong tệp mã hoặc truy vấn thông tin từ bất kỳ tài liệu nào.

Tổng quan về script

Mục tiêu là tạo một công cụ dòng lệnh bằng Python, đọc một tệp văn bản và dùng Gemma 3 để trả lời các câu hỏi liên quan đến nội dung của nó. Dưới đây là hướng dẫn từng bước:

Thiết lập cấu trúc script

Trước tiên, cần thiết lập script Python với các import cần thiết và cấu trúc cơ bản:

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)

Chức năng cốt lõi được gói trong hàm ask_questions_from_file(). Hàm này nhận đường dẫn tệp làm đối số và bắt đầu bằng cách mở, đọc nội dung từ tệp văn bản chỉ định. Nội dung này sẽ được dùng như thông tin nền để trả lời câu hỏi.

Khi đã nạp nội dung tệp, script đi vào vòng lặp liên tục yêu cầu chúng ta nhập câu hỏi. Khi nhập một câu hỏi, script gửi nội dung tệp cùng câu hỏi của chúng ta tới mô hình Gemma 3, mô hình sẽ xử lý để tạo câu trả lời.

Việc tương tác với mô hình diễn ra qua cơ chế streaming, cho phép hiển thị câu trả lời theo thời gian thực ngay khi được tạo. Nếu nhập exit, vòng lặp dừng và script kết thúc.

Cuối script có phần kiểm tra đảm bảo chạy đúng cách với một đối số dòng lệnh là đường dẫn tới tệp văn bản. Nếu không có đối số, script sẽ hiển thị thông điệp hướng dẫn cách chạy đúng. Thiết lập này cho phép chúng ta điều khiển script hiệu quả từ dòng lệnh.

Chạy script

Lưu đoạn mã trên vào một tệp, ví dụ ask.py. Để kiểm thử script, chạy lệnh:

python ask.py ask.py

Lệnh này sẽ chạy script để đặt câu hỏi về chính nó (vì vậy ask.py xuất hiện hai lần). Ví dụ dưới đây yêu cầu giải thích cách script hoạt động:

Dùng script để chạy Gemma 3 cục bộ như một trợ lý tệp

Kết luận

Chúng ta đã thiết lập và học cách chạy Gemma 3 cục bộ bằng Ollama và Python. Cách tiếp cận này đảm bảo quyền riêng tư cho dữ liệu, mang lại độ trễ thấp, khả năng tùy biến và có thể tiết kiệm chi phí. Những bước trên không chỉ áp dụng cho Gemma 3—mà còn có thể áp dụng cho các mô hình khác được lưu trữ trên Ollama.

Nếu muốn nâng cấp chức năng của script, chúng ta có thể mở rộng để xử lý PDF. Cách tốt nhất là dùng API Mistral OCR. Ta có thể chuyển PDF thành văn bản, cho phép script trả lời câu hỏi về PDF, khiến nó linh hoạt và mạnh mẽ hơn.

Với các công cụ này, chúng ta đã sẵn sàng khám phá và tương tác với các mô hình lớn ngay trên thiết bị của mình.

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

Yêu cầu phần cứng để chạy Gemma 3 cục bộ là gì?

Khả năng chạy Gemma 3 cục bộ phụ thuộc vào kích thước mô hình bạn chọn tải. Các mô hình nhỏ như gemma3:1b được thiết kế hiệu quả và có thể chạy trên thiết bị ít mạnh hơn, như laptop với một GPU hoặc thậm chí một số máy tính bảng cấu hình cao. Các mô hình lớn như gemma3:27b đòi hỏi tài nguyên tính toán nhiều hơn, chẳng hạn một workstation đa nhân với GPU cao cấp. Luôn kiểm tra thông số thiết bị của bạn so với yêu cầu tài nguyên của mô hình để đảm bảo tương thích.

Tôi có thể chạy nhiều phiên bản Gemma 3 cùng lúc không?

Có, bạn có thể chạy đồng thời nhiều phiên bản Gemma 3, miễn là tài nguyên phần cứng (CPU, GPU và bộ nhớ) đủ để xử lý tải tính toán bổ sung. Mỗi phiên bản mô hình chạy nền sẽ tiêu tốn thêm tài nguyên hệ thống, vì vậy hãy chắc chắn hệ thống của bạn có thể xử lý nhiều tiến trình mà không suy giảm hiệu năng đáng kể.

Có bắt buộc dùng Anaconda để thiết lập môi trường Python không?

Anaconda rất được khuyến nghị vì giúp tạo môi trường biệt lập, quản lý phụ thuộc và tránh xung đột với các gói Python khác, nhưng không bắt buộc. Bạn cũng có thể dùng các công cụ môi trường ảo khác như venv hoặc virtualenv.


François Aubry's photo
Author
François Aubry
LinkedIn
Kỹ sư full-stack & nhà sáng lập tại CheapGPT. Giảng dạy luôn là niềm đam mê của tôi. Từ những ngày còn là sinh viên, tôi đã háo hức tìm kiếm cơ hội kèm cặp và hỗ trợ các bạn học khác. Niềm đam mê đó đã thôi thúc tôi theo học tiến sĩ, nơi tôi cũng đảm nhiệm vai trò trợ giảng để hỗ trợ con đường học thuật của mình. Trong những năm ấy, tôi tìm thấy sự mãn nguyện lớn lao trong môi trường lớp học truyền thống, xây dựng kết nối và thúc đẩy việc học tập. Tuy nhiên, với sự ra đời của các nền tảng học trực tuyến, tôi nhận ra tiềm năng thay đổi của giáo dục số. Thực tế, tôi đã trực tiếp tham gia phát triển một nền tảng như vậy tại trường đại học của chúng tôi. Tôi tận tâm kết hợp các nguyên tắc giảng dạy truyền thống với những phương pháp số đổi mới. Đam mê của tôi là tạo ra các khóa học không chỉ hấp dẫn và giàu thông tin mà còn dễ tiếp cận với người học trong thời đại số này.
Chủ đề
Trí tuệ Nhân tạo
Mô hình Ngôn ngữ Lớn

Học AI với các khóa học này!

Khóa học

Retrieval Augmented Generation (RAG) với LangChain

3 giờ
21.3K
Tìm hiểu các phương pháp tiên tiến để tích hợp dữ liệu bên ngoài với LLMs bằng cách sử dụng Retrieval Augmented Generation (RAG) với LangChain.
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