Quay lại danh sách
Tin tức công nghệ

Xây dựng hạ tầng Serverless AI Agent Workers tự host trên VPS giá rẻ với Bun và Ollama

25 tháng 5, 2026

Giới thiệu: Thách thức chi phí khi triển khai AI Agent

Trong kỷ nguyên trí tuệ nhân tạo phát triển vượt bậc, các AI Agent (Tác tử thông minh) đang trở thành lõi công nghệ giúp doanh nghiệp tự động hóa quy trình vận hành phức tạp. Tuy nhiên, việc phụ thuộc hoàn toàn vào các API thương mại như OpenAI, Anthropic hay các nền tảng Serverless Cloud lớn (AWS Lambda, Google Cloud Functions) thường đi kèm với hai bài toán nan giải: chi phí vận hành leo thang theo quy mô và rủi ro bảo mật dữ liệu nội bộ.

Đối với các doanh nghiệp vừa và nhỏ (SMEs) hoặc các đội ngũ phát triển sản phẩm (Startups), việc chi trả hàng nghìn USD mỗi tháng cho hạ tầng AI là một gánh nặng lớn. Bài viết này sẽ hướng dẫn bạn một cách tiếp cận mang tính đột phá: Tự thiết lập hạ tầng Serverless AI Agent Workers có khả năng tự động điều phối, phản hồi siêu tốc trên một VPS (Virtual Private Server) giá rẻ bằng cách kết hợp sức mạnh của Bun Runtime và Ollama.

Tại sao lại chọn Bun và Ollama cho cấu hình VPS giá rẻ?

Để chạy được hệ thống AI Agent theo kiến trúc Serverless trên một máy chủ ảo có tài nguyên hạn chế (ví dụ: 2 vCPU và 4GB RAM), chúng ta cần những công nghệ tối ưu hóa tài nguyên ở mức cực đoan. Bun và Ollama chính là cặp bài trùng hoàn hảo cho bài toán này.

1. Bun Runtime: Tốc độ khởi động tức thì (Cold Start gần như bằng 0)

Bản chất của kiến trúc Serverless là các Worker (tiến trình xử lý) chỉ khởi chạy khi có request và tự động giải phóng bộ nhớ khi hoàn thành nhiệm vụ. Điểm yếu cố hữu của Node.js trong mô hình này là thời gian khởi động (Cold Start) khá lớn do phải phân tích cú pháp lượng code cồng kềnh.

Bun được viết bằng ngôn ngữ Zig và tối ưu hóa dựa trên nền tảng WebKit WebCore, cho tốc độ khởi động nhanh gấp 4-5 lần Node.js. Điều này giúp các AI Worker dạng Serverless phản hồi ngay lập tức, tiết kiệm tối đa CPU và RAM của VPS khi không có tải.

2. Ollama: Trình quản lý LLM cục bộ hiệu năng cao

Ollama cho phép chạy các mô hình ngôn ngữ lớn (LLM) mã nguồn mở hàng đầu hiện nay như Llama 3, Mistral, hoặc Qwen ngay trên môi trường local hoặc VPS. Nhờ cơ chế tối ưu hóa phần cứng (ngay cả khi chỉ chạy trên CPU) và kỹ thuật lượng tử hóa (Quantization), Ollama giúp giảm dung lượng RAM tiêu thụ xuống mức tối thiểu mà vẫn giữ được độ chính xác cần thiết cho các tác vụ của Agent.

Kiến trúc hệ thống Serverless AI Worker tự host

Hệ thống của chúng ta sẽ được cấu trúc theo mô hình phi tập trung gọn nhẹ bao gồm các thành phần cốt lõi sau:

  • Gateway Router (Bun HTTP Server): Tiếp nhận các webhook hoặc API request từ client, phân phối tác vụ đến các Worker thích hợp.
  • Worker Pool (Bun Workers API): Sử dụng cơ chế Multi-threading (luồng xử lý song song) của Bun để cô lập các tác vụ xử lý của Agent. Mỗi Agent Worker sẽ chịu trách nhiệm cho một kỹ năng chuyên biệt (như phân tích dữ liệu, viết email, hoặc tra cứu DB).
  • Inference Engine (Ollama): Cung cấp API cục bộ để các Worker gọi mô hình LLM xử lý ngôn ngữ tự nhiên.

Hướng dẫn triển khai từng bước trên VPS

Bước 1: Cài đặt môi trường Ollama và Bun

Đầu tiên, bạn cần truy cập vào VPS của mình qua SSH và thực hiện cài đặt các công cụ nền tảng. Hãy đảm bảo VPS của bạn đang chạy hệ điều hành Ubuntu 22.04 LTS trở lên.

Cài đặt Ollama bằng lệnh script chính thức:

curl -fsSL [https://ollama.com/install.sh](https://ollama.com/install.sh) | sh

Sau khi cài đặt xong, hãy tải về một mô hình LLM tối ưu cho VPS cấu hình thấp (ví dụ: Llama3 8B đã được lượng tử hóa hoặc Qwen2 1.5B/7B tùy thuộc vào dung lượng RAM của VPS):

ollama run llama3:8b-instruct-q4_K_M

Tiếp theo, tiến hành cài đặt Bun runtime siêu tốc:

curl -fsSL [https://bun.sh/install](https://bun.sh/install) | bash

Bước 2: Phát triển Serverless Worker Controller bằng Bun

Chúng ta sẽ tận dụng API Bun.serve() để tạo một HTTP Server siêu nhẹ làm Gateway tiếp nhận request, kết hợp với Worker mã nguồn gốc của Bun để xử lý bất đồng bộ, tránh gây nghẽn luồng chính khi Agent xử lý logic phức tạp.

Dưới đây là cấu trúc mã nguồn của file index.js (Gateway điều phối):

import { serve } from "bun";

serve({
  port: 3000,
  async fetch(req) {
    const url = new URL(req.url);
    
    if (req.method === "POST" && url.pathname === "/api/agent") {
      const body = await req.json();
      
      // Khởi tạo một Serverless Worker độc lập cho mỗi request
      const worker = new Worker(new URL("./agent-worker.js", import.meta.url).href);
      
      return new Promise((resolve) => {
        worker.postMessage({ task: body.task, context: body.context });
        
        worker.onmessage = (event) => {
          worker.terminate(); // Hủy worker ngay lập tức để giải phóng RAM (Serverless Behavior)
          resolve(Response.json({ success: true, result: event.data }));
        };
      });
    }
    
    return new Response("Not Found", { status: 404 });
  },
});
console.log("Serverless AI Gateway đang chạy tại port 3000...");

Bước 3: Xây dựng logic cho Agent Worker kết nối với Ollama

Tạo file agent-worker.js. Worker này sẽ trực tiếp giao tiếp với Ollama API được host cục bộ tại cổng 11434 của VPS. Bằng cách sử dụng thư viện fetch tích hợp sẵn của Bun với tốc độ native, độ trễ mạng gần như bằng 0.

self.onmessage = async (event) => {
  const { task, context } = event.data;
  
  try {
    const response = await fetch("[http://127.0.0.1:11434/api/generate](http://127.0.0.1:11434/api/generate)", {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({
        model: "llama3:8b-instruct-q4_K_M",
        prompt: `Bạn là một AI Agent chuyên nghiệp. Hãy xử lý tác vụ sau dựa trên ngữ cảnh được cung cấp.\nNgữ cảnh: ${context}\nTác vụ: ${task}`,
        stream: false
      })
    });
    
    const data = await response.json();
    self.postMessage(data.response);
  } catch (error) {
    self.postMessage(`Lỗi xử lý Agent: ${error.message}`);
  }
};

Chiến lược tối ưu hóa và quản lý tài nguyên trên VPS giá rẻ

Chạy LLM trên VPS không có GPU (chỉ dùng CPU) đòi hỏi những tinh chỉnh khắt khe để hệ thống không rơi vào trạng thái "OOM" (Out of Memory) hoặc treo máy khi bị overload:

  1. Sử dụng Swap Memory thích hợp: Tạo một phân vùng Swap khoảng 4GB đến 8GB trên ổ cứng SSD của VPS. Mặc dù tốc độ Swap chậm hơn RAM vật lý, nhưng nó là "phao cứu sinh" giúp tiến trình Ollama không bị HĐH kill đột ngột khi lượng request tăng cao.
  2. Tận dụng tính năng Stream: Thay vì đợi toàn bộ đoạn văn bản dài hàng trăm từ được sinh ra rồi mới trả về (gây giữ hàng đợi kết nối lâu), hãy chuyển đổi cấu hình sang stream: true để đẩy dữ liệu dạng chunk về client theo thời gian thực (Server-Sent Events).
  3. Giới hạn số lượng Worker đồng thời (Concurrency Limit): Tại Gateway Server, hãy thiết lập một biến đếm số lượng Worker đang hoạt động. Nếu vượt quá ngưỡng an toàn của CPU (ví dụ tối đa 3 tác vụ xử lý cùng lúc trên VPS 2 vCPU), hãy trả về mã lỗi 429 Too Many Requests hoặc đưa vào hàng đợi (Queue) Redis/BullMQ.

Kết luận: Tương lai của AI tự chủ và tiết kiệm chi phí

Việc kết hợp Bun và Ollama mở ra một hướng đi mới đầy tiềm năng cho các kỹ sư và doanh nghiệp muốn làm chủ công nghệ AI. Bạn không còn phải lo lắng về hóa đơn API tăng chóng mặt mỗi tháng, cũng như hoàn toàn yên tâm về tính bảo mật dữ liệu khách hàng vì mọi dữ liệu đều nằm trọn trong VPS của bạn.

Chỉ với một chi phí rất nhỏ cho một cấu hình VPS thông thường, mô hình Serverless AI Agent Workers tự host này đã chứng minh rằng: AI hiệu năng cao không còn là đặc quyền của các tập đoàn công nghệ lớn nắm giữ hạ tầng đám mây khổng lồ.