Xây dựng hạ tầng 'Serverless AI Agent Workers' tự host trên VPS giá rẻ với Bun Runtime và Ollama
Giới thiệu xu hướng Tự Host hạ tầng AI Agent hiện nay
Trong kỷ nguyên bùng nổ của trí tuệ nhân tạo, các AI Agents đang dần chuyển dịch từ vai trò chatbot đơn thuần sang hệ thống tự vận hành, có khả năng gọi API, đọc ghi file và xử lý chuỗi logic phức tạp. Tuy nhiên, việc phụ thuộc vào các API thương mại của bên thứ ba như OpenAI, Anthropic hay các nền tảng đám mây Serverless chuyên dụng thường đi kèm với mức chi phí đắt đỏ và các rủi ro bảo mật dữ liệu nhạy cảm.
Đối với các doanh nghiệp vừa và nhỏ (SMEs) hoặc các kỹ sư công nghệ muốn tối ưu hóa chi phí vận hành, việc xây dựng một hệ thống Serverless AI Agent Workers tự host (self-hosted) trên một máy chủ ảo cá nhân (VPS) giá rẻ là một giải pháp vô cùng đột phá. Bài viết này sẽ hướng dẫn bạn cách tối ưu hóa phần cứng VPS hạn chế bằng sự kết hợp mạnh mẽ giữa Bun Runtime và Ollama.
Tại sao lại chọn Bun Runtime và Ollama cho hệ thống giá rẻ?
Thông thường, việc chạy các mô hình ngôn ngữ lớn (LLM) đòi hỏi hạ tầng GPU đắt đỏ. Tuy nhiên, kiến trúc của hệ thống này tối ưu được tài nguyên phần cứng cực kỳ hiệu quả dựa trên hai thành phần cốt lõi:
1. Bun Runtime – Hiệu năng vượt trội Node.js
Bun là một JavaScript runtime hiện đại, sở hữu tốc độ khởi động cực nhanh và mức tiêu thụ tài nguyên bộ nhớ (RAM) thấp hơn đáng kể so với Node.js truyền thống. Với cơ chế Bun.Worker tích hợp sẵn, hệ thống có thể tạo và giải phóng các Worker luồng (thread) xử lý AI Agent theo mô hình on-demand (chỉ khi có yêu cầu) tương tự như mô hình Serverless thực thụ.
2. Ollama – Công cụ quản lý LLM cục bộ tối ưu CPU
Ollama cho phép chạy các mô hình mã nguồn mở tiên tiến nhất hiện nay (như Qwen 3, Llama 3.2 hay Gemma 3) ngay trên CPU thông qua các phiên bản lượng tử hóa (quantized) như 4-bit hoặc 5-bit. Nhờ đó, một VPS thông thường với mức giá khoảng $5 - $10 mỗi tháng (2-4 vCPU, 4GB-8GB RAM) hoàn toàn có thể đảm đương được tác vụ suy luận (inference) mà không lo tràn bộ nhớ.
Mẹo tối ưu: Việc chọn các mô hình nhỏ như Llama 3.2 (2B hoặc 3B) hay Qwen 3 (4B) sẽ mang lại tốc độ phản hồi cực nhanh trên hạ tầng chỉ có CPU mà vẫn đảm bảo tính chính xác cao cho các tác vụ của Agent.---
Kiến trúc tổng quan của Serverless AI Agent Worker
Hệ thống hoạt động theo mô hình phi tập trung và phản hồi linh hoạt:
- API Gateway / Coordinator (Bun Server): Tiếp nhận yêu cầu HTTP từ client. Đóng vai trò bộ định tuyến và quản lý vòng đời của các tiến trình Worker.
- Serverless Worker Pool (Bun.Worker): Khi một yêu cầu xử lý logic xuất hiện, Gateway sẽ tạo ra một luồng Worker riêng biệt để thực thi mã nguồn mã hóa hoặc thực hiện chuỗi ReAct (Reasoning and Acting) của Agent. Sau khi hoàn thành nhiệm vụ, Worker tự động kết thúc để trả lại bộ nhớ.
- Local LLM Layer (Ollama): Cung cấp endpoint API nội bộ (mặc định tại
http://localhost:11434) để các Agent truy vấn suy luận thông qua giao tiếp cục bộ tốc độ cao.
Hướng dẫn triển khai chi tiết trên VPS
Hãy chuẩn bị một VPS Ubuntu sạch (tối thiểu 2 vCPU và 4GB RAM) và thực hiện tuần tự các bước sau:
Bước 1: Cài đặt Ollama và tải mô hình LLM
Để cài đặt Ollama trên môi trường Linux, bạn chỉ cần thực thi câu lệnh duy nhất sau:
curl -fsSL [https://ollama.com/install.sh](https://ollama.com/install.sh) | sh
Sau khi tiến trình cài đặt hoàn tất, Ollama sẽ tự động chạy ngầm dưới dạng một systemd service. Tiến hành tải xuống mô hình LLM gọn nhẹ nhưng mạnh mẽ, ví dụ như Llama 3.2:
ollama pull llama3.2
Bạn có thể xác tra danh sách mô hình đã tải bằng lệnh ollama list để đảm bảo hệ thống đã sẵn sàng.
Bước 2: Cài đặt Bun Runtime
Cài đặt Bun siêu nhanh bằng mã script chính thức:
curl -fsSL [https://bun.sh/install](https://bun.sh/install) | bash
source ~/.bashrc
Bước 3: Khởi tạo dự án AI Agent Worker
Tạo một thư mục dự án mới và khởi tạo môi trường Bun:
mkdir serverless-ai-workers && cd serverless-ai-workers
bun init -y
Cài đặt thư viện SDK chính thức của Ollama dành cho JavaScript/TypeScript:
bun add ollama
Bước 4: Viết mã nguồn cho Worker và Gateway
Đầu tiên, chúng ta tạo file xử lý tác vụ của Agent (worker.ts). File này sẽ nhận dữ liệu đầu vào, tương tác với Ollama và thực thi logic:
// worker.ts
declare var self: Worker;
import { ollama } from "ollama";
self.onmessage = async (event: MessageEvent) => {
const { prompt, taskType } = event.data;
try {
// Giả định logic Agent phân tích và đưa ra hành động
const response = await ollama.chat({
model: "llama3.2",
messages: [
{ role: "system", content: "You are a helpful serverless AI micro-worker specialized in data analysis." },
{ role: "user", content: prompt }
]
});
// Trả kết quả về cho luồng chính (Main Thread)
self.postMessage({ success: true, data: response.message.content });
} catch (error: any) {
self.postMessage({ success: false, error: error.message });
} finally {
// Tự động đóng worker sau khi hoàn thành công việc để giải phóng tài nguyên
self.close();
}
};
Tiếp theo, tạo file máy chủ API điều phối chính (index.ts) bằng Bun HTTP Server để lắng nghe yêu cầu bên ngoài và kích hoạt Worker theo cơ chế Serverless:
// index.ts
import { serve } from "bun";
serve({
port: 3000,
async fetch(req) {
const url = new URL(req.url);
if (req.method === "POST" && url.pathname === "/api/execute") {
const body = await req.json();
const { prompt } = body;
if (!prompt) return new Response("Missing prompt", { status: 400 });
return new Promise((resolve) => {
// Khởi tạo một cụm Serverless Worker biệt lập trên một luồng mới
const worker = new Worker(new URL("./worker.ts", import.meta.url).href);
worker.postMessage({ prompt });
worker.onmessage = (event) => {
if (event.data.success) {
resolve(Response.json({ result: event.data.data }));
} else {
resolve(new Response(`Worker Error: ${event.data.error}`, { status: 500 }));
}
};
});
}
return new Response("Not Found", { status: 404 });
},
});
console.log("Serverless AI Gateway đang chạy tại cổng 3000...");
---
Đánh giá hiệu năng và Giải pháp tối ưu chi phí chuyên sâu
Khi chạy hệ thống này trên một cấu hình VPS giá rẻ, việc quản lý vòng đời tài nguyên là bài toán sống còn. Dưới đây là các kỹ thuật tối ưu hóa nâng cao mà bạn cần áp dụng:
- Quản lý cơ chế Keep-Alive của Ollama: Mặc định, Ollama sẽ giữ mô hình trong bộ nhớ RAM/VRAM khoảng 5 phút trước khi giải phóng. Nếu tần suất yêu cầu thấp, bạn nên cấu hình biến môi trường
OLLAMA_NUM_PARALLEL=1vàOLLAMA_KEEP_ALIVE=1mđể ép giải phóng bộ nhớ RAM nhanh hơn, nhường không gian cho các tiến trình hệ thống khác. - Tận dụng Fast Path của Bun.Worker: Cơ chế truyền nhận thông điệp qua
postMessagecủa Bun được tối ưu hóa vượt trội khi bạn truyền chuỗi ký tự dạng String thuần túy thay vì các Object JSON phức tạp giúp bỏ qua bước tuần tự hóa bộ nhớ (serialization overhead). - Giới hạn số lượng Worker đồng thời (Concurrency Control): Để tránh tình trạng VPS bị sập do cạn kiệt tài nguyên CPU khi có lượng truy cập đột biến (DDoS hoặc spam), hãy thiết lập một biến đếm toàn cục (Counter) tại
index.tsnhằm giới hạn tối đa số lượng Worker được phép hoạt động cùng một thời điểm.
Lời kết
Việc kết hợp giữa Bun Runtime và Ollama mở ra một hướng đi mới cho việc triển khai ứng dụng AI với chi phí cực kỳ tiết kiệm. Chỉ với một chiếc VPS cấu hình khiêm tốn, bạn đã sở hữu một hạ tầng Serverless AI Agent Workers linh hoạt, bảo mật tuyệt đối dữ liệu và có khả năng kiểm soát toàn diện mã nguồn mà không phụ thuộc vào bất kỳ nhà cung cấp Cloud lớn nào. Hãy bắt tay vào xây dựng hạ tầng AI độc lập của riêng bạn ngay hôm nay!
