Sự cố rò rỉ dữ liệu lúc 2 giờ sáng và quyết định đưa AI về “vườn”
Mọi chuyện bắt đầu khi một dev trong team mình vô tình dán đoạn code chứa API Key AWS vào ChatGPT để nhờ fix lỗi logic. Chỉ 15 phút sau, bộ phận bảo mật đã báo động đỏ. Dùng hàng “mì ăn liền” như ChatGPT hay Claude rất sướng, nhưng đổi lại, bạn không hề có quyền kiểm soát dữ liệu đầu vào. Ngay lúc đó, mình hiểu rằng việc triển khai Local LLM (Large Language Model) không còn là thú vui vọc vạch, mà là yêu cầu bảo mật bắt buộc.
Trong hệ thống production gồm hơn 30 container mình đang quản lý, tính cô lập là ưu tiên số một. Mình chọn bộ đôi Ollama và Open WebUI chạy trên Docker Compose. Giải pháp này giúp tiết kiệm khoảng 40% công sức bảo trì so với cài đặt native. Bạn có thể bê nguyên hệ thống từ máy local lên server chỉ trong vài phút.
Tại sao không nên cài trực tiếp (Native)?
Trước khi chốt phương án Docker, mình đã thử qua vài cách và rút ra bài học xương máu:
- Cài đặt Native (Binary): Rất nhanh nhưng cực kỳ dễ xung đột thư viện CUDA hoặc Python. Chỉ cần một bản update OS là toàn bộ engine AI có thể “ngỏm” ngay lập tức.
- Cloud Private (AWS Bedrock): Bảo mật tốt nhưng chi phí duy trì rất cao. Với nhu cầu query liên tục, hóa đơn cuối tháng có thể lên tới hàng nghìn USD.
- Docker Compose: Đây là lựa chọn tối ưu nhất. Mọi thứ được đóng gói gọn gàng. Muốn đổi từ GPU NVIDIA sang chạy CPU hoặc backup dữ liệu? Bạn chỉ cần thao tác với file YAML và copy folder data là xong.
Sức mạnh của bộ đôi Ollama & Open WebUI
Ollama đóng vai trò là “trái tim” điều khiển các model như Llama 3.1, Mistral hay Qwen. Trong khi đó, Open WebUI mang đến giao diện mượt mà, hỗ trợ cả RAG (Retrieval-Augmented Generation) và quản lý người dùng chuyên nghiệp. Sự kết hợp này mang lại trải nghiệm không thua kém gì ChatGPT bản trả phí.
Cấu hình phần cứng tối thiểu
Để chatbot phản hồi nhanh, không bị giật lag, anh em cần chuẩn bị:
- Docker & Docker Compose: Đã cài đặt và hoạt động ổn định.
- NVIDIA GPU: Khuyến khích tối thiểu 8GB VRAM (như RTX 3060 hoặc 4060). Với 8GB VRAM, bạn có thể chạy mượt các model 7B-8B ở tốc độ 50-70 tokens/s.
- NVIDIA Container Toolkit: Thành phần bắt buộc để Docker có thể giao tiếp với driver card màn hình.
# Lệnh kiểm tra driver GPU
nvidia-smi
Triển khai nhanh với Docker Compose
Đừng chạy từng lệnh docker run thủ công vì rất khó quản lý network. Thay vào đó, hãy gom tất cả vào một file docker-compose.yaml để quản lý tập trung.
Tạo thư mục local-ai và dán nội dung sau vào file cấu hình:
services:
ollama:
volumes:
- ./ollama:/root/.ollama
container_name: ollama
pull_policy: always
tty: true
restart: unless-stopped
image: ollama/ollama:latest
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
volumes:
- ./open-webui:/app/backend/data
depends_on:
- ollama
ports:
- "3000:8080"
environment:
- 'OLLAMA_BASE_URL=http://ollama:11434'
- 'WEBUI_SECRET_KEY=thay_doi_key_nay_ngay'
restart: unless-stopped
Giải mã các thông số quan trọng
- Volume: Việc mount folder
./ollamara máy host giúp giữ lại các model (thường nặng 5GB – 40GB) khi bạn nâng cấp container. - Deploy (GPU): Đoạn này kích hoạt sức mạnh phần cứng. Nếu máy chỉ có CPU, hãy xóa toàn bộ block
deployđể tránh lỗi khởi động. - OLLAMA_BASE_URL: Sử dụng tên service
ollamathay vì địa chỉ IP. Docker sẽ tự động điều hướng traffic nội bộ giữa hai container.
Khởi động và trải nghiệm
Chỉ cần một lệnh duy nhất để kích hoạt toàn bộ hệ thống:
docker compose up -d
Sau khi Docker kéo xong image, hãy truy cập http://localhost:3000. Tại giao diện Open WebUI, bạn thực hiện các bước sau:
- Đăng ký tài khoản Admin (dữ liệu này nằm hoàn toàn trên máy bạn).
- Vào Settings > Models, nhập
llama3.1:8b. - Nhấn Pull. Với mạng 100Mbps, quá trình này mất khoảng 3-5 phút cho 4.7GB dữ liệu.
Xử lý lỗi thực tế (Troubleshooting)
Trong quá trình vận hành, mình thường gặp 3 vấn đề chính sau đây:
1. Lỗi không tìm thấy Driver GPU
Nếu thấy log báo could not select device driver, nghĩa là bạn chưa cài NVIDIA Container Toolkit. Hãy chạy lệnh sau trên Ubuntu để fix:
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
2. Chatbot phản hồi cực chậm
Hãy kiểm tra docker logs -f ollama. Nếu thấy CPU load 100% nhưng GPU vẫn rảnh, khả năng cao là driver NVIDIA của bạn quá cũ. Ollama sẽ tự động chuyển sang chạy bằng CPU (fallback), khiến tốc độ giảm từ 60 tokens/s xuống còn 2-3 tokens/s.
3. Tràn RAM (Out of Memory)
Một model 8B cần khoảng 5GB VRAM để hoạt động ổn định. Nếu bạn cố chạy model 70B trên card RTX 3060, hệ thống sẽ crash ngay lập tức. Giải pháp là ưu tiên dùng các bản Quantized (GGUF) để giảm dung lượng nhưng vẫn giữ được độ thông minh.
Lời kết
Tự làm chủ hệ thống AI giúp bạn tự tin xử lý các dữ liệu nhạy cảm của khách hàng mà không lo bị rò rỉ. Ngoài ra, chi phí vận hành gần như bằng 0 sau khi đã đầu tư phần cứng. Nếu bạn định triển khai cho công ty, hãy nhớ cấu hình thêm Nginx Reverse Proxy và bật SSL để bảo vệ đường truyền giữa các máy trạm và server.

