hoatranlab.io.vn Zalo: 0917516878 Hotline: 0917516878 [email protected]
HoaTranLab Logo HoaTranLab
Linux Bible Phiên bản 11 • Chương 22

Cấu hình Chatbot Trí tuệ Nhân tạo (AI Chatbot)

Chạy các mô hình ngôn ngữ lớn (LLM) cục bộ trên Linux bằng Ollama - từ cài đặt đến tương tác với AI Chatbot mà không cần Internet hay đám mây.

Mục Tiêu Học Tập

Sau khi hoàn thành chương này, bạn sẽ nắm được các kiến thức sau:

LLM vs SLM

Hiểu sự khác biệt giữa Mô hình Ngôn ngữ Lớn (LLM) và Mô hình Ngôn ngữ Nhỏ (SLM), ưu nhược điểm khi chạy cục bộ.

Cài đặt Ollama

Cài đặt Ollama server trên Linux, kiểm tra phần cứng (CPU/RAM/GPU/Disk), quản lý qua systemd.

Chạy mô hình AI

Sử dụng `ollama run` để tải và tương tác với Llama 3.1, Mistral, Phi-3 từ dòng lệnh (command line).

Quản lý phiên làm việc

Lưu phiên bằng `/save`, tải lại bằng `ollama run`, liệt kê bằng `ollama list`, xóa bằng `ollama rm`.

Yêu cầu phần cứng

RAM 8/16/32GB cho các mô hình 3B/7B/13B, hỗ trợ CPU AVX/AVX-512, VRAM GPU và hơn 12GB ổ cứng.

Ollama REST API

Gọi Ollama qua REST API cổng 11434 bằng curl/Python, tích hợp AI vào ứng dụng và các kịch bản (script).

Lý Thuyết

SLM vs LLM - Khi nào chọn mô hình nhỏ?

Mô hình Ngôn ngữ Nhỏ (SLMs) phù hợp khi cần: bảo mật dữ liệu (không tải lên đám mây), chạy ngoại tuyến (offline), chi phí thấp và phạm vi hẹp (như chatbot chuyên dụng). LLM lớn (400B+) thường chạy trên đám mây, trong khi SLM (3-13B) có thể chạy mượt mà trên PC cá nhân.

Phi-3:mini (Microsoft)
  • - Chạy tốt: 8GB RAM, 6 nhân CPU
  • - Giỏi viết mã (code) và shell script
  • - Có xu hướng trả lời chi tiết
  • - Kích thước nhỏ: 2.2 GB đĩa
Llama 3.1:8b (Meta)
  • - Mã nguồn mở từ Meta AI
  • - 8 tỷ tham số, lượng tử hóa Q4_K_M
  • - Ngữ cảnh (Context): 131,072 tokens
  • - Kích thước: 4.9 GB, cần 16GB RAM
Mistral (Mistral AI)
  • - Startup Pháp, hỗ trợ đa ngôn ngữ
  • - Hỗ trợ tốt EN, FR, ES, DE, IT
  • - Trả lời súc tích, ngắn gọn
  • - Kích thước: 4.4 GB đĩa
Tài nguyênMô hình 3BMô hình 7BMô hình 13B
RAM tối thiểu8 GB16 GB32 GB
VRAM GPU2 GB4 GB (Q4)8 GB
Dung lượng đĩa+2-3 GB+4-5 GB+12+ GB
CPUTối thiểu 4 nhân (khuyến nghị 8). AVX/AVX-512 giúp tăng tốc tính toán ma trận của mạng thần kinh.
Terminal -- Kiểm tra phần cứng

# Kiểm tra số lượng nhân CPU và hỗ trợ AVX

$ grep -c processor /proc/cpuinfo

6

$ grep -i avx /proc/cpuinfo | head -1

flags : fpu vme de pse ... avx f16c rdrand avx512f ...

# Kiểm tra RAM và dung lượng đĩa

$ free -h

total used free

Mem: 15Gi 3.2Gi 11Gi

$ df -h /

Filesystem Size Used Avail Use%

/dev/sda1 50G 12G 38G 24%

Cài đặt và chạy Ollama

Terminal -- Cài đặt Ollama và quản lý mô hình

# Bước 1: Tải và cài đặt Ollama server

$ curl -fsSL https://ollama.com/install.sh | sh

>>> Đang kích hoạt và khởi động dịch vụ ollama...

>>> Ollama API hiện đã khả dụng tại 127.0.0.1:11434.

>>> Cài đặt hoàn tất. Chạy "ollama" từ dòng lệnh.

CẢNH BÁO: Không tìm thấy GPU NVIDIA/AMD. Ollama sẽ chạy ở chế độ chỉ dùng CPU.


# Bước 2: Kiểm tra trạng thái dịch vụ và phiên bản

$ sudo systemctl status ollama

* ollama.service - Dịch vụ Ollama

Active: active (running) since Sun 2025-09-21 19:09:49 EDT

$ ollama -v

ollama version is 0.12.0


# Bước 3: Tải và chạy Llama 3.1 8B

$ ollama run llama3.1:8b

pulling manifest

pulling 667b0c1932bc: 100% ..... 4.9 GB

verifying sha256 digest

success

>>>


# Xem thông tin mô hình đang chạy

>>> /show info

kiến trúc llama

tham số 8.0B

độ dài ngữ cảnh 131072

lượng tử hóa Q4_K_M


# Lưu phiên làm việc và liệt kê mô hình

>>> /save mysession

Đã tạo mô hình mới 'mysession'

>>> /bye

$ ollama list

NAME ID SIZE MODIFIED

phi3:mini 4f2222927938 2.2 GB About an hour ago

mistral:latest 6577803aa9a0 4.4 GB 30 hours ago

mysession:latest 89d3d23af648 4.9 GB 2 days ago

llama3.1:8b 46e0c10c039e 4.9 GB 2 days ago

Ollama REST API - Tích hợp AI vào ứng dụng

Ollama cung cấp REST API tại http://127.0.0.1:11434. Có thể gọi từ curl, Python, Node.js. Các endpoint chính bao gồm: `/api/generate` (sinh văn bản), `/api/tags` (liệt kê mô hình), `/api/pull` (tải mô hình).

Terminal -- Ollama REST API

# Gọi API sinh văn bản

$ curl http://localhost:11434/api/generate \

-d '{"model":"llama3.1:8b","prompt":"Giải thích firewalld","stream":false}'

{"model":"llama3.1:8b","response":"firewalld là một quản lý tường lửa động

sử dụng các zone và dịch vụ để kiểm soát truy cập mạng...",

"done":true}


# Liệt kê các mô hình hiện có

$ curl http://localhost:11434/api/tags

{"models":[{"name":"llama3.1:8b","size":4921438208},

{"name":"mistral:latest","size":4113301052}]}

Tùy chỉnh mô hình với Modelfile

Bạn có thể tùy chỉnh thông điệp hệ thống (system prompt) và các tham số mô hình qua Ollama Modelfile để tạo ra một trợ lý AI chuyên biệt.

Modelfile -- linux_expert

$ cat Modelfile

FROM llama3.1:8b

SYSTEM "Bạn là một quản trị viên hệ thống Linux chuyên nghiệp.

Luôn cung cấp các lệnh chính xác kèm theo các biện pháp bảo mật tốt nhất."

PARAMETER temperature 0.3

PARAMETER num_ctx 4096


$ ollama create linux_expert -f Modelfile

đang chuyển dữ liệu mô hình ...

thành công

$ ollama run linux_expert

>>> Làm thế nào để kiểm tra trạng thái SELinux?

Sử dụng 'getenforce' để kiểm tra chế độ: Enforcing/Permissive/Disabled

Sử dụng 'sestatus' để xem thông tin chi tiết bao gồm loại chính sách và phiên bản.

Lab Thực Hành

Cài đặt Ollama và chạy AI chatbot cục bộ trên Linux

1

Kiểm tra phần cứng hệ thống

Xác minh CPU có hỗ trợ AVX, kiểm tra RAM và dung lượng đĩa còn trống trước khi cài đặt.

Terminal

$ grep -c processor /proc/cpuinfo

6

$ grep -i avx /proc/cpuinfo | head -1 | grep -o avx

avx

$ free -h

Mem: 15Gi total, 3.2Gi used, 11Gi free

$ df -h /

/dev/sda1 50G 12G 38G 24% /

2

Cài đặt Ollama server

Tải và chạy script cài đặt chính thức từ ollama.com, sau đó kích hoạt dịch vụ hệ thống.

Terminal

$ curl -fsSL https://ollama.com/install.sh | sh

>>> Cài đặt hoàn tất. Chạy "ollama" để bắt đầu.

$ sudo systemctl enable --now ollama

$ ollama -v

phiên bản ollama là 0.12.0

3

Tải và chạy Llama 3.1:8b

Tải mô hình (khoảng 4.9GB) và bắt đầu tương tác với AI. Đừng quên xem qua giấy phép trước khi dùng.

Terminal

$ ollama run llama3.1:8b

đang tải manifest ... đang tải 667b0c1932bc: 100% 4.9 GB ... thành công

>>> Viết một bash script để sao lưu thư mục /etc

#!/bin/bash

tar -czf /tmp/etc_backup_$(date +%Y%m%d).tar.gz /etc

echo "Sao lưu xong: /tmp/etc_backup_$(date +%Y%m%d).tar.gz"

>>> /show license

THỎA THUẬN GIẤY PHÉP CỘNG ĐỒNG LLAMA 3.1 ...

4

Chạy Mistral và Phi-3:mini

So sánh khả năng và tốc độ của các mô hình khác nhau trên cùng một phần cứng.

Terminal

$ ollama run mistral

>>> Liệt kê 5 công cụ bảo mật Linux kèm mô tả ngắn gọn

1. SELinux - Kiểm soát truy cập bắt buộc (MAC)

2. firewalld - Tường lửa động dựa trên zone

3. fail2ban - Tự động chống brute-force

4. auditd - Nhật ký sự kiện bảo mật

5. OpenSSH - Truy cập từ xa được mã hóa

>>> /bye

$ ollama run phi3:mini

>>> Viết lệnh bash ngắn nhất để tìm các file có quyền SUID

find / -perm /4000 -ls 2>/dev/null

5

Lưu phiên và quản lý mô hình

Lưu trạng thái hội thoại hiện tại, liệt kê các mô hình đã tải và xóa những thứ không cần thiết.

Terminal

>>> /save tro_ly_bao_mat_linux

Đã tạo mô hình mới 'tro_ly_bao_mat_linux'

>>> /bye

$ ollama list

tro_ly_bao_mat_linux:latest abc123 4.4 GB 2 phút trước

mistral:latest def456 4.4 GB 1 giờ trước

llama3.1:8b ghi789 4.9 GB 2 ngày trước

$ ollama rm phi3:mini

đã xóa 'phi3:mini'

6

Gọi Ollama API từ bash script

Tạo kịch bản tự động gọi API của AI để phân tích nhật ký hoặc trả lời câu hỏi nhanh.

Terminal -- ask_ai.sh

$ cat ask_ai.sh

#!/bin/bash

PROMPT="$1"

curl -s http://localhost:11434/api/generate \

-d "{\"model\":\"mistral\",\"prompt\":\"$PROMPT\",\"stream\":false}" \

| python3 -c "import sys,json; print(json.load(sys.stdin)['response'])"

$ chmod +x ask_ai.sh

$ ./ask_ai.sh "Làm sao để kiểm tra các lần đăng nhập thất bại?"

Kiểm tra /var/log/secure hoặc dùng: journalctl | grep 'Failed password'

Hoặc dùng: 'lastb | head -20' để xem các lần đăng nhập sai gần đây.

Câu Hỏi Ôn Tập

1

Sự khác biệt chính giữa LLM và SLM là gì? Khi nào nên dùng SLM?

LLM có hàng trăm tỷ tham số, cần đám mây hoặc phần cứng cực mạnh. SLM (3-13 tỷ tham số) có thể chạy trên PC cá nhân (8-32GB RAM). Nên dùng SLM khi cần bảo mật dữ liệu, chạy ngoại tuyến, tiết kiệm chi phí, hoặc cần phản hồi nhanh cho một lĩnh vực cụ thể.
2

Cần bao nhiêu RAM để chạy mô hình có 7 tỷ (7B) tham số?

Cần ít nhất 16 GB RAM cho các mô hình 7B. Mô hình 3B cần 8GB, 13B cần 32GB. Nếu dùng GPU, cần khoảng 4GB VRAM (lượng tử hóa Q4). Về ổ cứng: Phi-3 khoảng 2.2GB, Mistral 4.4GB, Llama 3.1 8B là 4.9GB.
3

Lệnh để tải và chạy Mistral là gì? Dấu nhắc tương tác trông thế nào?

Lệnh là `ollama run mistral`. Nếu mô hình chưa có, nó sẽ tự động tải về. Sau khi hoàn tất, dấu nhắc `>>>` sẽ xuất hiện để bạn nhập câu hỏi. Thoát bằng cách gõ `/bye`.
4

AVX và AVX-512 ảnh hưởng thế nào đến hiệu suất của mô hình AI?

AVX (256-bit) và AVX-512 (512-bit) cho phép xử lý nhiều luồng dữ liệu song song. Vì mạng thần kinh AI sử dụng nhiều phép nhân ma trận, AVX giúp tăng tốc đáng kể. Bạn có thể kiểm tra bằng lệnh: `grep -i avx /proc/cpuinfo`.
5

Làm thế nào để lưu một phiên (session) trong Ollama và tải lại sau đó?

Trong cửa sổ trò chuyện, gõ `/save ten_phien`. Để tải lại, dùng `ollama run ten_phien`. Bạn có thể xem danh sách bằng `ollama list` và xóa bằng `ollama rm ten_phien`. Phiên lưu trữ cả ngữ cảnh của cuộc trò chuyện trước đó.
6

Ollama REST API nằm ở đâu? Cho ví dụ sử dụng curl.

API mặc định chạy tại `http://127.0.0.1:11434`. Ví dụ: `curl http://localhost:11434/api/generate -d '{"model":"mistral","prompt":"câu hỏi của bạn","stream":false}'`. Endpoint `/api/tags` dùng để liệt kê mô hình.
7

Lệnh nào dùng để xem giấy phép và thông tin kỹ thuật của mô hình?

Gõ `/show license` để xem các ràng buộc về quyền thương mại. Gõ `/show info` để xem kiến trúc, số tham số, độ dài ngữ cảnh và phương pháp lượng tử hóa. Điều này rất quan trọng trước khi triển khai thực tế.
8

Cách tinh chỉnh (fine-tune) mô hình AI với dữ liệu nội bộ?

Bạn có thể dùng thư viện Transformers của Hugging Face cùng với PyTorch/TensorFlow. Một cách nhanh hơn là dùng `Modelfile` với system prompt hoặc các kỹ thuật như PEFT/LoRA. Tinh chỉnh tốn ít tài nguyên hơn nhiều so với việc huấn luyện từ đầu.