⚡ 1. Tại Sao Cần AI Inference Cluster Cá Nhân?
Năm 2026, chi phí chạy LLM lớn trên cloud đang trở thành nỗi đau thực sự. Một inference session Llama-3 70B liên tục trên AWS p4d.24xlarge tốn khoảng $32/giờ. Với startup hoặc researcher cần chạy model nhiều giờ mỗi ngày, đây là khoản chi phí không thể bỏ qua.
Đồng thời, data privacy là vấn đề nghiêm túc — nhiều tổ chức không thể gửi data nhạy cảm lên cloud. Chạy model on-premise là bắt buộc với các team y tế, pháp lý, tài chính.
Setup đang gây sóng gió trên Hacker News sáng nay (28/06/2026): 2 node AMD Strix Halo + Intel E810 100GbE RDMA + vLLM Tensor Parallelism. Một researcher đã document toàn bộ quy trình setup, benchmark, và troubleshooting trên GitHub. Kết quả đáng kinh ngạc.
📌 2. AMD Strix Halo — APU Phá Vỡ Giới Hạn
AMD Ryzen AI MAX+ "Strix Halo" là APU (Accelerated Processing Unit) thế hệ mới nhất — không phải GPU rời, không phải CPU thông thường. Nó là sự hội tụ: CPU cores Zen 5, GPU iGPU RDNA 3.5 mạnh, và đặc biệt là Unified Memory Architecture cho phép CPU và GPU chia sẻ cùng một pool RAM 128GB.
📌 2.1 Unified Memory 128GB — Game Changer Thực Sự
GPU rời như RTX 4090 chỉ có 24GB VRAM riêng biệt. Khi model vượt quá VRAM, bạn phải offload sang CPU RAM qua PCIe — và bandwidth PCIe 4.0 x16 chỉ đạt ~64 GB/s, trở thành bottleneck nặng nề.
Strix Halo dùng LPDDR5X với bandwidth ~273 GB/s. CPU và GPU đều truy cập 128GB này với tốc độ tương đương. Không bottleneck PCIe. Không copy data. Chỉ cần đọc thẳng từ memory.
Điều này có nghĩa: Llama-3 70B ở fp16 (140GB) có thể chạy trên 2 node mà không cần quantization. Chất lượng output giữ nguyên so với cloud.
📌 2.2 So Sánh Với GPU Truyền Thống
| Metric | RTX 4090 | Strix Halo (1 node) | 2x Strix Halo + RDMA |
|---|---|---|---|
| Memory Capacity | 24GB VRAM | 128GB Unified | 256GB Unified |
| Memory Bandwidth | 1,008 GB/s (GDDR6X) | ~273 GB/s (LPDDR5X) | ~273 GB/s per node |
| Inter-node Link | N/A | N/A | ~50 Gbps RDMA (RoCE v2) |
| Max Model (fp16) | ~13B | ~130B | ~260B |
| Power (TDP) | 450W | ~120W | ~240W total |
| Giá ước tính | ~$2,000 | ~$1,500 | ~$3,500 total |
| Cần quantization? | Yes (70B model) | No (đến 130B) | No (đến 260B) |
🤖 3. RDMA — Liên Kết Thần Tốc Giữa Hai Node
Khi scale lên 2 node, bottleneck chuyển sang inter-node communication. Đây là nơi RDMA tỏa sáng. RDMA (Remote Direct Memory Access) cho phép một máy ghi dữ liệu trực tiếp vào RAM của máy kia — bypass hoàn toàn CPU và OS kernel của máy nhận.
📌 3.1 RoCE v2 — RDMA Trên Ethernet Bình Thường
Truyền thống, RDMA cần InfiniBand — loại network đắt tiền, phức tạp. RoCE v2 (RDMA over Converged Ethernet version 2) mang RDMA xuống chạy trên Ethernet thông thường (100GbE), giảm chi phí 5-10 lần.
TCP/IP (truyền thống): ┌──────────┐ socket ┌──────────┐ PCIe ┌─────┐ ┌─────┐ PCIe ┌──────────┐ socket ┌──────────┐ │ App (A) │──────────▶│ Kernel │─────────▶│ NIC │──Ethernet──│ NIC │─────────▶│ Kernel │──────────▶│ App (B) │ └──────────┘ └──────────┘ └─────┘ └─────┘ └──────────┘ └──────────┘ Latency: ~100µs — 7 hops, CPU interrupt mỗi packet RDMA (RoCE v2): ┌──────────┐ verb ┌─────────────────────┐ ┌─────────────────────┐ DMA ┌──────────┐ │ App (A) │──────────▶│ NIC Hardware (DMA) │──RDMA───▶│ NIC Hardware (DMA) │────────▶│ App (B) │ └──────────┘ └─────────────────────┘ └─────────────────────┘ └──────────┘ Latency: ~5µs — 2 hops, zero CPU sau khi setup
Intel E810 NIC hỗ trợ RoCE v2 với driver irdma built-in trong Linux kernel — không cần driver proprietary. Setup tương đối đơn giản so với InfiniBand.
📌 3.2 Tại Sao Latency Quan Trọng Sống Còn Với LLM?
Với Tensor Parallelism degree 2, hai node phải đồng bộ tensor partial results sau mỗi transformer layer. Model Llama-3 70B có 80 layers → mỗi token generation cần 80 lần sync inter-node.
TCP (100µs): 80 layers × 100µs = 8ms overhead/token → max ~125 tokens/sec chỉ từ network
RDMA (5µs): 80 layers × 5µs = 0.4ms overhead/token → max ~2,500 tokens/sec headroom
Difference: 20× throughput improvement chỉ từ thay network stack.
📌 4. vLLM + Tensor Parallelism — Kiến Trúc Phân Tán
vLLM là inference engine hiệu năng cao cho LLM, hỗ trợ nhiều optimization như PagedAttention, continuous batching, và đặc biệt là Tensor Parallelism để chạy model lớn hơn memory của một máy.
Khi dùng TP=2 (Tensor Parallel degree 2), vLLM chia model thành 2 phần theo chiều tensor — mỗi node xử lý một nửa. Sau mỗi layer, hai node phải all-reduce để tổng hợp kết quả trước khi đi tiếp.
📌 4.1 Ray Cluster — Control Plane
Ray là distributed computing framework, vLLM dùng nó để orchestrate workers trên nhiều node. Ray đảm nhiệm control plane: khởi tạo workers, phân phối tasks, health monitoring.
# Node 1 (head node) — khởi tạo Ray cluster
ray start --head --port=6379 --num-gpus=1
# Node 2 (worker node) — join vào cluster
ray start --address=192.168.100.1:6379 --num-gpus=1
# Verify cluster đang chạy
ray status
# Output:
# Node status
# ---------------------------------------------------------------
# Active:
# 1 node(s) with resources: {GPU: 1.0, CPU: 32.0, memory: 128GB}
# 1 node(s) with resources: {GPU: 1.0, CPU: 32.0, memory: 128GB}
# Total: 2 nodes, 2 GPUs
📁 4.2 RCCL — Data Plane Thực Sự
Khi Ray setup xong control plane, RCCL (ROCm Collective Communication Library) xử lý data plane — tức là việc đồng bộ tensor weights giữa 2 node sau mỗi layer. RCCL là AMD equivalent của NVIDIA NCCL.
RCCL sử dụng RDMA (qua RoCE v2) để giao tiếp — đây là lý do latency cực thấp 5µs. Mỗi all-reduce operation xảy ra hoàn toàn trong NIC hardware, không cần CPU.
vLLM Tensor Parallelism Architecture:
┌─────────────── Ray Control Plane ───────────────┐
│ │
┌────────────────────────┐ ┌────────────────────────┐
│ Node 1 │ │ Node 2 │
│ Strix Halo + 128GB │ │ Strix Halo + 128GB │
│ │ │ │
│ ┌──────────────────┐ │ │ ┌──────────────────┐ │
│ │ vLLM Worker 0 │ │ RCCL all-reduce │ │ vLLM Worker 1 │ │
│ │ Model shard 0 │◀─┼──── RDMA / RoCE ────▶─┼─│ Model shard 1 │ │
│ │ Layer 0-40 │ │ 5µs latency │ │ Layer 0-40 │ │
│ └──────────────────┘ │ │ └──────────────────┘ │
│ ▲ │ │ ▲ │
│ Intel E810 (100GbE) │ │ Intel E810 (100GbE) │
└──────────┬─────────────┘ └─────────┬──────────────┘
│ │
└──────────────── DAC Cable ──────────────────┘
No switch needed!
🔧 5. Hardware Setup Thực Tế
Đây là hardware list từ setup đang được document trên GitHub (đã verified hoạt động):
| Component | Specs | Số lượng | Ghi chú |
|---|---|---|---|
| Mainboard | Framework Desktop AMD Ryzen AI MAX+ 395 (Strix Halo) | 2 | 128GB LPDDR5X mỗi board |
| NIC | Intel Ethernet E810-CQDA1 (100GbE QSFP28) | 2 | Hỗ trợ RoCE v2, driver irdma |
| Cable | QSFP28 100G DAC Cable 1-3m | 1 | Kết nối trực tiếp, no switch |
| PCIe Riser | PCIe 4x to 16x Extender | 2 | Framework board có slot x4 |
| OS | Fedora Linux 43 (kernel 6.18.x) | - | Kernel 6.18 đã verified stable |
📌 5.1 Tại Sao Framework Desktop?
Framework Desktop Mainboard là board consumer-grade rẻ nhất hiện nay có AMD Ryzen AI MAX+ với 128GB unified memory. Không cần full workstation tower — board này compact, ít tiêu điện, và dễ mua.
Alternative nếu không tìm được Framework: Asus ProArt X870E-Creator hoặc MSI MEG X870E với Ryzen AI MAX+ 395, nhưng price cao hơn đáng kể.
📌 6. Cấu Hình Step-by-Step
Thực hiện trên cả 2 node, trừ khi được chỉ định riêng.
🌐 6.1 Network Setup — RDMA Ready
# Fedora 43 — kernel đã có driver irdma built-in
# Chỉ cần cài userspace tools
sudo dnf install rdma-core libibverbs-utils perftest
# Verify RDMA device detected
ibv_devinfo
# Output:
# hca_id: irdma0
# transport: InfiniBand (0)
# fw_ver: 1.70.11.24
# node_guid: ...
# max_mr_size: 0xffffffffffffffff
# max_qp: 1048576
# Node 1: IP 192.168.100.1
sudo nmcli con add type ethernet ifname enp1s0 con-name rdma-link ip4 192.168.100.1/30 gw4 ""
sudo nmcli con mod rdma-link 802-3-ethernet.mtu 9000
sudo nmcli con up rdma-link
# Node 2: IP 192.168.100.2
sudo nmcli con add type ethernet ifname enp1s0 con-name rdma-link ip4 192.168.100.2/30 gw4 ""
sudo nmcli con mod rdma-link 802-3-ethernet.mtu 9000
sudo nmcli con up rdma-link
# Verify MTU
ip link show enp1s0 | grep mtu
# enp1s0: mtu 9000 qdisc mq state UP ...
# Cho phép RDMA traffic
sudo firewall-cmd --permanent --zone=trusted --add-interface=enp1s0
sudo firewall-cmd --reload
# Kernel params cho RDMA (thêm vào /etc/sysctl.d/rdma.conf)
sudo tee /etc/sysctl.d/rdma.conf << EOF
# RDMA optimization
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.core.rmem_default = 67108864
net.core.wmem_default = 67108864
kernel.shmmax = 137438953472
EOF
sudo sysctl --system
# BIOS/Kernel: iGPU VRAM 512MB + IOMMU passthrough
# Thêm vào /etc/default/grub GRUB_CMDLINE_LINUX:
# iommu=pt pci=realloc video=efifb:off amdgpu.gttsize=110000
# Node 2: chạy server
ib_write_bw -d irdma0 --rdma_cm
# Node 1: chạy client test
ib_write_bw -d irdma0 --rdma_cm 192.168.100.2
# Expected output:
# -----------------------------------------------------------------------
# Local address: LID 0x0000 QPN 0x0002 PSN ...
# Remote address: LID 0x0000 QPN 0x0002 PSN ...
# -----------------------------------------------------------------------
# #bytes #iterations BW peak[MB/sec] BW average[MB/sec]
# 65536 1000 11891.97 11888.12
# -----------------------------------------------------------------------
# 11GB/s ~ 90Gbps — đạt ~90% line rate của 100GbE link
📌 6.2 Launch vLLM Cluster
Tác giả đã wrap toàn bộ quá trình vào một toolbox script với TUI (Terminal UI) để đơn giản hóa.
# Clone repo
git clone https://github.com/kyuz0/amd-strix-halo-vllm-toolboxes
cd amd-strix-halo-vllm-toolboxes/rdma_cluster
# Script tự detect RDMA devices và config container
./refresh_toolbox.sh
# Script sẽ:
# 1. Detect Intel E810 RDMA device (irdma0)
# 2. Build/pull container với ROCm + vLLM + custom librccl.so
# 3. Expose /dev/irdma0 vào container
# 4. Setup RCCL environment variables
# Dùng TUI launcher
start-vllm-cluster
# Menu:
# 1. Check Prerequisites
# 2. Start Ray Cluster <-- chọn đây trước
# 3. Verify Cluster Status
# 4. Launch VLLM Serve <-- sau đó chọn đây
# 5. Stop Cluster
# Hoặc manual launch:
# Node 1 — head node
HF_TOKEN=hf_xxx NCCL_IB_HCA=irdma0 NCCL_IB_GID_INDEX=3 NCCL_NET_GDR_LEVEL=5 vllm serve meta-llama/Llama-3.1-70B-Instruct --tensor-parallel-size 2 --distributed-executor-backend ray --ray-workers-use-nsight false
# API sẽ serve tại http://localhost:8000
curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{
"model": "meta-llama/Llama-3.1-70B-Instruct",
"messages": [
{"role": "user", "content": "Giải thích RDMA trong 3 câu"}
],
"max_tokens": 200,
"temperature": 0.7
}'
# Response time first token (TTFT): ~800ms
# Tokens/sec (generation): ~45 tok/s
# So sánh vs 1 node (Llama-3 8B): ~120 tok/s
# 70B model với 2 node: 45 tok/s — rất tốt cho model lớn như vậy
📊 7. Benchmark Thực Tế
Dựa trên data từ setup đang được document, đây là performance thực tế với các model khác nhau:
| Model | Precision | TTFT (first token) | Throughput | Memory Used | Notes |
|---|---|---|---|---|---|
| Llama-3.1 8B | fp16 | ~200ms | ~120 tok/s | 16GB (1 node) | Không cần TP, 1 node đủ |
| Llama-3.1 70B | fp16 | ~800ms | ~45 tok/s | 140GB (TP=2) | Cần RDMA để đạt throughput này |
| Llama-3.1 70B | fp16 | ~2500ms | ~18 tok/s | 140GB (TP=2) | Nếu dùng TCP thay RDMA |
| Qwen-2.5 72B | fp16 | ~900ms | ~40 tok/s | 145GB (TP=2) | Tương đương Llama-3 70B |
| DeepSeek-V3 (MoE) | bf16 | ~1200ms | ~25 tok/s | ~180GB (TP=2) | MoE nặng hơn dense models |
Với Llama-3.1 70B, chuyển từ TCP sang RDMA tăng throughput từ 18 → 45 tok/s — 2.5× improvement. Với TTFT cải thiện từ 2.5s → 0.8s — 3× improvement. Đây là lý do RDMA là bắt buộc, không phải optional.
📌 7.1 Tại Sao Không Chỉ Dùng NVLink/Infinity Fabric?
NVLink (NVIDIA) và AMD Infinity Fabric thường nhanh hơn RDMA over Ethernet. Tuy nhiên, cả 2 đều yêu cầu hardware đặc biệt (NVSwitch, Infinity Fabric trực tiếp giữa APU) và không khả dụng với consumer hardware thông thường. RDMA over 100GbE là pragmatic sweet spot giữa performance và chi phí.
🔧 8. Use Cases — Khi Nào Nên Dùng Setup Này
8.1 ✅ Phù Hợp Nhất Với
- Research labs nhỏ: Cần chạy model 70B+ liên tục, không muốn trả $30+/giờ cloud. Setup này hoàn vốn sau 500-1000 giờ inference so với cloud.
- Privacy-sensitive workloads: Healthcare, legal, financial — data không được rời khỏi datacenter. On-premise bắt buộc.
- Edge AI deployment: Khi cần inference gần nguồn data (factory, hospital) với low latency.
- Prototyping với large models: Test model 70B-200B trước khi quyết định đầu tư GPU cluster lớn hơn.
8.2 ❌ Không Phù Hợp Với
- High-throughput production serving: Nếu cần serve 1000+ concurrent users với model 70B, cần A100/H100 cluster thực sự.
- Training / Fine-tuning lớn: LPDDR5X bandwidth 273 GB/s vẫn thua xa HBM3 (3.35 TB/s trên H100). Training cần compute và bandwidth cao hơn.
- Small models (7B-13B): Một RTX 4090 đơn lẻ sẽ nhanh hơn và rẻ hơn setup này cho model nhỏ.
🤖 8.3 Case Study: Vietnam AI Startup
Một startup tại Việt Nam đang build RAG system cho legal document analysis cần chạy Qwen-2.5 72B (hỗ trợ tốt tiếng Việt). Options:
- Option A — Cloud: AWS g5.48xlarge (~8 GPU), $16/giờ. Chi phí 24/7: ~$11,500/tháng.
- Option B — Strix Halo cluster: $3,500 one-time cost. Amortized 12 tháng: ~$290/tháng. Savings: ~$11,200/tháng.
Với legal documents, data không được lên cloud → Option B là lựa chọn duy nhất hợp lệ. Setup này giải quyết cả privacy requirement lẫn cost problem.
📌 9. Pitfalls & Troubleshooting Phổ Biến
📌 9.1 RCCL Không Dùng RDMA (Fallback TCP)
Đây là pitfall phổ biến nhất. RCCL sẽ silently fallback về TCP nếu RDMA không configure đúng — throughput giảm 2-3× mà không có error message rõ ràng.
# Set env var để RCCL log chi tiết
export NCCL_DEBUG=INFO
export NCCL_DEBUG_SUBSYS=ALL
# Khi launch vLLM, check logs cho:
# [0] NCCL INFO Using network RoCE
# (nếu thấy "Using network Socket" → đang dùng TCP, không phải RDMA)
# Fix: ensure env vars đúng
export NCCL_IB_HCA=irdma0 # tên RDMA device
export NCCL_IB_GID_INDEX=3 # GID index cho RoCE v2
export NCCL_NET_GDR_LEVEL=5 # GPU Direct RDMA level
📌 9.2 MTU Mismatch Gây Packet Loss
RDMA với Jumbo Frames (MTU 9000) cần cả 2 NIC và switch (nếu có) đều config MTU 9000. Mismatch sẽ gây fragmentation, tăng latency đột ngột.
# Ping với packet size 8972 bytes (MTU 9000 - 28 byte header)
ping -M do -s 8972 192.168.100.2
# Nếu timeout hoặc "Message too long" → MTU mismatch
# Fix: verify cả 2 interface đều MTU 9000
ip link show enp1s0
📌 9.3 IOMMU Conflict Với iGPU
Strix Halo iGPU cần IOMMU passthrough mode để hoạt động correctly với vLLM. Thiếu kernel param này có thể gây crash hoặc performance issues.
# /etc/default/grub
GRUB_CMDLINE_LINUX="... iommu=pt pci=realloc video=efifb:off amdgpu.gttsize=110000"
# Rebuild grub
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo reboot
# Verify sau reboot
cat /proc/cmdline | grep iommu
📌 9.4 custom librccl.so — Patch Bắt Buộc
Phiên bản RCCL stock từ ROCm có bug với Strix Halo + Intel E810 kết hợp. Tác giả đã patch và bundle librccl.so tùy chỉnh trong toolbox. Đây là lý do phải dùng refresh_toolbox.sh thay vì cài vLLM thẳng từ pip.
📌 10. Kết Luận
Setup AMD Strix Halo + RDMA + vLLM chứng minh rằng AI inference cluster hiệu năng cao không còn chỉ dành cho big tech. Với ~$3,500 hardware và vài ngày setup, bạn có thể chạy model 70B-200B với latency và throughput đủ tốt cho production workload vừa và nhỏ.
Điểm then chốt cần nhớ:
- RDMA không phải optional — thiếu RDMA, throughput giảm 2-3×, latency tăng 20×. 5µs vs 100µs là sự khác biệt giữa "usable" và "broken".
- Unified Memory là lợi thế thực sự — 128GB LPDDR5X cho phép chạy model lớn mà không cần quantization, giữ nguyên chất lượng.
- Consumer hardware có thể làm được — Framework Desktop, Intel E810, DAC cable — không cần enterprise hardware $100k+.
📌 Khi Nào Nên Adopt?
Nếu team bạn đang:
- Chi hơn $2,000/tháng cho cloud LLM inference
- Cần chạy model 70B+ on-premise vì data privacy
- Muốn experiment với model lớn mà không commit GPU cluster đắt tiền
→ Setup này đáng để thử ngay trong Q3 2026.
- GitHub: kyuz0/amd-strix-halo-vllm-toolboxes
- HN Discussion: Hacker News thread
- vLLM Docs: Distributed Serving Guide
- ROCm + RCCL: AMD RCCL Documentation