Thiết lập LLM "bí mật" với Ollama: Chạy AI tách biệt hoàn toàn cho dữ liệu nhạy cảm
Lê Lân
0
Hướng Dẫn Thiết Lập LLM Cục Bộ và Air-Gapped Sử Dụng Ollama và Podman/Docker
MỞ ĐẦU
Việc triển khai các mô hình ngôn ngữ lớn (LLM) trong môi trường cục bộ hoặc air-gapped mang lại lợi ích to lớn về bảo mật và kiểm soát dữ liệu. Bài viết này sẽ chỉ ra cách thiết lập LLM bằng Ollama cùng Podman hoặc Docker, từ khâu chuẩn bị đến vận hành.
Trong bối cảnh dữ liệu được kiểm soát nghiêm ngặt hoặc phân loại bí mật, việc sử dụng các dịch vụ AI đám mây công khai tiềm ẩn nguy cơ lộ lọt thông tin. Do vậy, thiết lập LLM hoạt động độc lập trên máy chủ nội bộ, không kết nối internet (air-gapped), là hướng đi hiệu quả và an toàn. Bài viết tập trung từng bước thực hiện, bao gồm: cache mô hình trên máy không giới hạn, export/import volume chứa mô hình sang môi trường air-gapped, thiết lập mạng nội bộ bảo mật, và cuối cùng đưa mô hình vào sử dụng trong container.
Cache Mô Hình LLM Mong Muốn
Thiết Lập Container Ollama Ban Đầu
Trước tiên, để mô hình LLM có sẵn trong môi trường cách ly, ta cần tạo trước container Ollama ở một máy có kết nối mạng để tải về và cache các mô hình cần thiết.
podman run -d \
-v ollama:/root/.ollama \
-p 11434:11434 \
--name ollama docker.io/ollama/ollama
Lưu ý: Thay thế podman bằng docker nếu sử dụng Docker.
Tải Các Mô Hình Trung Gian
Dùng lệnh sau để tải và lưu trữ các LLM bạn muốn:
podman exec -it ollama ollama pull <tên mô hình>
Bạn có thể tìm tên các mô hình tương ứng tại Ollama Library.
Xuất Volume Chứa Mô Hình
Sau khi hoàn tất tải các LLM, xuất volume chứa để chuyển sang máy air-gapped:
podman volume export ollama --output ollama.tar
Bạn có thể thực hiện thao tác xuất volume trên một máy khác, hoàn toàn không cần phải là máy chính để tăng độ an toàn khi truyền dữ liệu.
Tạo Volume Mới và Khôi Phục Mô Hình Trong Môi Trường Air-Gapped
Tạo Volume Mới
Bên máy không kết nối mạng, tạo volume mới để chứa dữ liệu LLM:
podman volume create ollama
Nhập Volume Đã Xuất
Import file đã export sang volume vừa tạo:
podman volume import ollama ollama.tar
Đối với Docker, chức năng xuất nhập volume chỉ khả dụng với bản Docker Desktop bản quyền và chủ yếu thao tác qua giao diện UI, chưa có CLI tương đương.
Cấu Hình Mạng Nội Bộ Isolated Cho Container
Tạo Mạng Internal Đơn Giản
Để giữ môi trường container tách biệt hoàn toàn khỏi mạng bên ngoài, có thể dùng tùy chọn --internal:
Phương án này giới hạn container không thể truy cập ra ngoài, nhưng vẫn cho phép liên kết với các container khác cùng mạng.
Thiết Lập Mạng Có Kiểm Soát Firewall
Trong trường hợp bạn cần truy cập container từ bên ngoài (ví dụ truy cập qua VS Code hoặc giao diện chat bot), có thể tạo mạng không dùng --internal nhưng kiểm soát truy cập bằng iptables:
Thiết lập luật firewall ngăn container truy cập mạng ngoài:
iptables -A OUTPUT -s $networkAddressSpace -j DROP
Luật iptables trên giúp ngăn cấm mọi lưu lượng đi từ mạng container ra thế giới bên ngoài, đảm bảo container hoạt động trong môi trường kín.
Tạo Container Ollama Bên Trong Mạng Đã Thiết Lập
Sau khi chuẩn bị volume chứa mô hình và mạng nội bộ, tiến hành chạy container:
podman run -d -v ollama:/root/.ollama \
-p 11434:11434 \
--network ollama-internal-network \
--name ollama-internal ollama/ollama
Bây giờ container không thể kết nối ra Internet, dữ liệu được giữ an toàn tuyệt đối trong phạm vi mạng nội bộ.
Kiểm Tra Hoạt Động Mô Hình LLM Đã Cache
Để kiểm tra mô hình có thực sự sẵn sàng trong container air-gapped, sử dụng lệnh:
podman exec -it ollama-internal ollama run <tên mô hình>
Ví dụ:
podman exec -it ollama-internal ollama run mistral
Nếu mô hình trả lời đúng yêu cầu, quá trình thiết lập đã thành công.
KẾT LUẬN
Việc thiết lập một môi trường LLM cục bộ và air-gapped bằng Ollama cùng Podman/Docker giúp doanh nghiệp và cá nhân giữ bí mật dữ liệu, đồng thời không mất đi tính năng thông minh của AI. Từ cache mô hình, xuất nhập volume, đến thiết lập mạng bảo mật và container vận hành, mỗi bước đều quan trọng để xây dựng hệ thống an toàn và hiệu quả.
Bạn đã sẵn sàng ứng dụng kiến thức này để phát triển chatbot hoặc trợ lý lập trình an toàn cho các dự án nhạy cảm?