Yêu cầu phần cứng tối thiểu cho Container và AI Inference
Để chạy các container chứa mô hình AI suy luận (inference) trên WebAssembly mà không bị nghẽn cổ chai, máy chủ hoặc máy phát triển cần đáp ứng các thông số sau.
RAM tối thiểu: 8GB. Các mô hình TensorFlow Lite khi được tải vào bộ nhớ RAM và thực thi qua Wasm cần không gian đệm lớn hơn so với các ứng dụng web thông thường. CPU tối thiểu: 4 nhân (vật lý) hoặc 4 vCPU. WebAssembly hiện tại chạy tốt nhất trên kiến trúc x86_64 hoặc ARM64, tận dụng đa luồng của CPU.
Để kiểm tra cấu hình hiện tại của máy, hãy thực thi lệnh sau:
cat /proc/cpuinfo | grep "model name" | uniq && free -h
Kết quả mong đợi: Hiển thị tên CPU (ví dụ: Intel(R) Core(TM) i7) và tổng RAM (ví dụ: total 15Gi). Nếu RAM dưới 8GB, cần nâng cấp hoặc giảm kích thước mô hình AI trước khi triển khai.
Cài đặt Docker Desktop và Kubernetes Cluster
Bước này thiết lập môi trường ảo hóa để chứa ứng dụng web và engine AI. Chúng ta sẽ sử dụng Docker làm runtime và Kind (Kubernetes in Docker) để tạo cluster Kubernetes cục bộ, nhẹ hơn và nhanh hơn Minikube cho môi trường phát triển.
Tải và cài đặt Docker Desktop cho Linux (Ubuntu/Debian). Thêm repository Docker chính thức và cài đặt gói docker-ce.
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Khởi động dịch vụ Docker và thêm user hiện tại vào nhóm docker để chạy lệnh không cần sudo.
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER
newgrp docker
Kết quả mong đợi: Lệnh `docker version` chạy thành công, hiển thị Client và Server version mà không báo lỗi permission.
Tiếp theo, cài đặt Kind để tạo Kubernetes cluster chạy trên Docker container. Tải binary của Kind từ GitHub.
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
Tạo cluster Kubernetes với 1 node control plane. Đây là bước quan trọng để chuẩn bị môi trường triển khai container trong các phần sau.
kind create cluster --name ai-wasm-cluster
Cấu hình kubeconfig để kubectl trỏ đúng vào cluster vừa tạo.
kind get kubeconfig --name ai-wasm-cluster > $HOME/.kube/config
Verify kết quả bằng cách liệt kê các node trong cluster.
kubectl get nodes
Kết quả mong đợi: Hiển thị 1 node với trạng thái Ready (ví dụ: ai-wasm-cluster-control-plane Ready).
Cài đặt TensorFlow.js và các công cụ WebAssembly
Môi trường phát triển cần Node.js để xử lý frontend và các công cụ biên dịch Wasm. Chúng ta sẽ cài đặt Node.js, TensorFlow.js (để xử lý mô hình trên browser) và Wasm-pack (để biên dịch code Rust/C++ sang Wasm).
Cài đặt Node.js và npm. Sử dụng phiên bản LTS (Long Term Support) để đảm bảo tính tương thích.
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
Thiết lập thư mục dự án và khởi tạo project Node.js.
mkdir ~/ai-wasm-platform
cd ~/ai-wasm-platform
npm init -y
Cài đặt TensorFlow.js và các dependencies cần thiết cho việc tích hợp WebAssembly.
npm install @tensorflow/tfjs @tensorflow/tfjs-core
Cài đặt Wasm-pack. Công cụ này giúp biên dịch Rust sang Wasm, nhưng chúng ta cũng sẽ dùng nó để đóng gói các module C++ nếu cần thiết. Tải từ trang chủ wasm-pack.
curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
Để kiểm tra phiên bản Wasm-pack đã cài đặt.
wasm-pack --version
Kết quả mong đợi: Hiển thị phiên bản wasm-pack (ví dụ: wasm-pack 0.12.0). Nếu chưa thấy, cần thêm `~/.cargo/bin` vào biến môi trường PATH.
Cấu hình biến môi trường PATH để hệ thống nhận diện wasm-pack.
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> $HOME/.bashrc
source $HOME/.bashrc
Thiết lập IDE và Git cho luồng phát triển
Cuối cùng, chúng ta chuẩn bị môi trường biên dịch và quản lý mã nguồn. Visual Studio Code được chọn làm IDE chính do khả năng hỗ trợ extensions cho Docker, Kubernetes và WebAssembly.
Cài đặt Visual Studio Code và các extensions cần thiết: Docker, Kubernetes, C/C++ và Rust (nếu dùng Rust cho Wasm).
sudo apt-get update
sudo apt-get install -y software-properties-common apt-transport-https wget
wget -qO - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/microsoft.gpg > /dev/null
sh -c 'echo "deb [arch=amd64,arm64,armhf] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'
sudo apt-get update
sudo apt-get install -y code
Mở VS Code và cài đặt extensions qua giao diện đồ họa (hoặc dùng lệnh CLI nếu đã cấu hình).
code --install-extension ms-vscode.docker
code --install-extension ms-kubernetes-tools.vscode-kubernetes-tools
code --install-extension ms-vscode.cpptools
code --install-extension rust-lang.rust-analyzer
Thiết lập Git và cấu hình thông tin người dùng.
sudo apt-get install -y git
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
Khởi tạo repository Git trong thư mục dự án đã tạo ở phần trên.
cd ~/ai-wasm-platform
git init
git add .
git commit -m "Initial commit: Environment setup for AI-Wasm platform"
Tạo file cấu hình `.gitignore` để loại bỏ các thư mục build và node_modules khỏi version control.
cat > .gitignore
Verify toàn bộ môi trường bằng cách kiểm tra phiên bản của tất cả các công cụ đã cài đặt.
echo "Docker: $(docker --version)"
echo "Kubectl: $(kubectl version --client --short)"
echo "Node: $(node --version)"
echo "Wasm-pack: $(wasm-pack --version)"
echo "Git: $(git --version)"
Kết quả mong đợi: Tất cả các dòng lệnh trên đều trả về phiên bản tương ứng mà không báo lỗi "command not found". Môi trường đã sẵn sàng cho Phần 2: Giới thiệu kiến trúc Real-time AI.
Điều hướng series:
Mục lục: Series: Xây dựng nền tảng Real-time AI với WebAssembly, TensorFlow Lite và Kubernetes
Phần 2: Giới thiệu kiến trúc Real-time AI với WebAssembly »