AI Infrastructure & MLOps

AMD Strix Halo + RDMA + vLLM: Cluster AI Giá Rẻ Chạy Model 200B+

Xây Dựng AI Inference Cluster Giá Rẻ Mà Mạnh — Chạy Model 200B+ Với Latency 5µs

28/06/2026 18 phút đọc Võ Đào Huy Hoàng

⚡ 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.

5µs RDMA inter-node latency (vs 100µs TCP)
256GB Tổng unified memory (2 × 128GB)
200B+ Max model parameters có thể chạy
20× Throughput gain vs TCP/IP

📌 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 Capacity24GB VRAM128GB Unified256GB Unified
Memory Bandwidth1,008 GB/s (GDDR6X)~273 GB/s (LPDDR5X)~273 GB/s per node
Inter-node LinkN/AN/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)
📝 Lưu ý: RTX 4090 vẫn nhanh hơn nhiều với model nhỏ (7B-13B) nhờ bandwidth GDDR6X cao hơn. Strix Halo toả sáng ở segment model lớn (70B+) nơi memory capacity là bottleneck chính, không phải compute.

🤖 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.

⚠️ Math:
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.

Ray cluster setup
# 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!
✅ Key insight: Không cần switch cho setup 2 node — kết nối trực tiếp bằng DAC (Direct Attach Copper) cable 100G giữa 2 Intel E810. Tiết kiệm $500-2000 so với cần switch 100GbE.

🔧 5. Hardware Setup Thực Tế

Đây là hardware list từ setup đang được document trên GitHub (đã verified hoạt động):

ComponentSpecsSố lượngGhi chú
MainboardFramework Desktop AMD Ryzen AI MAX+ 395 (Strix Halo)2128GB LPDDR5X mỗi board
NICIntel Ethernet E810-CQDA1 (100GbE QSFP28)2Hỗ trợ RoCE v2, driver irdma
CableQSFP28 100G DAC Cable 1-3m1Kết nối trực tiếp, no switch
PCIe RiserPCIe 4x to 16x Extender2Framework board có slot x4
OSFedora Linux 43 (kernel 6.18.x)-Kernel 6.18 đã verified stable
⚠️ PCIe Riser Bắt Buộc: Framework Desktop Mainboard có PCIe slot vật lý là x4 (dù hỗ trợ x16 về signal). Intel E810 là card x16 vật lý → cần riser adapter. Đừng cố force-fit card vào slot x4 nhỏ hơn — sẽ damage connector.

📌 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

Step 1: Cài RDMA packages
# 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
Step 2: Static IP + MTU 9000 (Jumbo Frames)
# 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 ...
Step 3: Firewall + Kernel Params
# 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
Step 4: Benchmark RDMA Connection
# 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.

Cài Toolbox Script
# 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
Launch vLLM với Tensor Parallelism
# 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
Test Inference
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
📊 RDMA vs TCP so sánh trực tiếp:
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.

Diagnose RDMA đang được dù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.

Test MTU
# 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.

Required kernel params
# /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.

📝 Note: Bug này đã được report upstream và khả năng cao sẽ fix trong RCCL 2.22+. Kiểm tra ROCm/rccl issues trước khi setup để biết version nào đã patch native.

📌 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.

🔗 Resources:
- GitHub: kyuz0/amd-strix-halo-vllm-toolboxes
- HN Discussion: Hacker News thread
- vLLM Docs: Distributed Serving Guide
- ROCm + RCCL: AMD RCCL Documentation