FPGA đang quay lại trong cuộc đua AI – nhưng không phải theo cách bạn nghĩ
Nếu bạn là dev, rất có thể bạn đã quen với một “niềm tin mặc định”:
- CPU → làm mọi thứ
- GPU → làm AI
Và thế là xong.
Nên khi nghe ai đó nói:
“FPGA đang quay lại và ngày càng quan trọng trong AI”
Phản ứng rất tự nhiên sẽ là:
“Ủa? FPGA chưa tuyệt chủng à?” 😅
Nghe hơi phũ… nhưng cũng không sai. Vì trong nhiều năm, FPGA gần như bị GPU “đè sóng” hoàn toàn trong lĩnh vực AI. Nhưng vài năm gần đây, đặc biệt là khi AI bắt đầu đi vào production thực tế, câu chuyện lại bắt đầu thay đổi.
🤔 GPU mạnh thật… nhưng không phải lúc nào cũng “đúng bài”
GPU cực kỳ mạnh. Không cần tranh cãi.
- Training model lớn → GPU gần như là lựa chọn duy nhất
- Parallel compute → GPU làm quá tốt
Nhưng vấn đề là: production ≠ lab
Khi bạn deploy AI ra ngoài đời, bạn sẽ gặp những yêu cầu kiểu:
- Camera phải phản hồi gần như ngay lập tức
- Thiết bị chạy bằng pin (edge device)
- System yêu cầu timing cực kỳ ổn định
Và lúc này, GPU bắt đầu lộ ra một số “điểm yếu” mà trước đó ít ai để ý:
- 🔥 Tốn điện (và tỏa nhiệt không hề nhẹ)
- 🎯 Latency không ổn định (có jitter)
- 🎲 Khó predict chính xác thời gian phản hồi
👉 Với một số hệ thống, mấy vấn đề này không phải “khó chịu”… mà là không chấp nhận được. Và đó là lúc FPGA bắt đầu xuất hiện trở lại.
⚡ FPGA là gì – nói kiểu dev cho dễ hiểu
Nếu phải giải thích cho một dev chưa từng học hardware, mình sẽ nói thế này:
- CPU: chạy từng dòng lệnh, tuần tự
- GPU: chạy rất nhiều thread giống nhau cùng lúc
- FPGA: bạn tự thiết kế luôn cách phần cứng sẽ chạy
👉 Không phải viết code để chạy trên hardware 👉 Mà là viết code để… tạo ra hardware
Nghe hơi “overkill”, nhưng chính chỗ này lại là điểm mạnh.
🧠 Một ví dụ đơn giản nhưng rất “đắt”
Giả sử bạn cần tính: y = (a + b) * (c - d)
Trên CPU:
- Làm từng bước → cộng → trừ → nhân Trên GPU:
- Làm song song nhiều phép tính tương tự
Nhưng trên FPGA, bạn có thể thiết kế kiểu này:
- Stage 1: tính
a + b - Stage 2: tính
c - d - Stage 3: nhân hai kết quả
Ban đầu sẽ có một chút delay để “đổ đầy pipeline”. Nhưng sau đó: 👉** mỗi clock cycle → ra 1 kết quả**
Nếu bạn quen với backend hoặc data pipeline, thì đây giống như chuyển từ xử lý tuần tự → sang một dây chuyền xử lý liên tục.
Và đây chính là “triết lý” của FPGA: thiết kế lại luồng xử lý thay vì chỉ tối ưu code
📊 Một vài con số (để thấy FPGA không “yếu” như lời đồn)
Nói chuyện cảm tính không thì hơi thiếu thuyết phục. Đây là một vài con số từ các benchmark và nghiên cứu gần đây:
🕒 Latency
- FPGA: khoảng 1–50 microseconds
- GPU: khoảng 50–1000 microseconds
- CPU: khoảng 500–5000 microseconds
👉 Trong nhiều bài toán inference nhỏ: FPGA có thể nhanh hơn GPU 10–100 lần về độ trễ
Với hệ thống real-time, sự khác biệt này không còn là “nice to have” nữa, mà là bắt buộc phải có.
🔋 Điện năng (power efficiency)
Một số kết quả đo được:
- FPGA chỉ dùng khoảng ~28% điện năng so với GPU
- Hoặc tiết kiệm khoảng 3–10 lần điện năng tùy workload
👉 Làm cùng một việc, nhưng tiêu thụ ít điện hơn rất nhiều. Nếu bạn đang làm hệ thống edge hoặc embedded, đây là một lợi thế cực lớn.
⚙️ Hiệu năng (performance)
- GPU có thể đạt hơn 100 TFLOPS
- FPGA thường thấp hơn (~10 TFLOPS)
Nhưng đây là chỗ dễ hiểu sai:
- 👉 GPU mạnh theo kiểu brute-force compute
- 👉 FPGA mạnh theo kiểu tối ưu đúng bài toán
Thực tế:
- Trong một số benchmark (như Rodinia), FPGA đạt performance tương đương GPU ở nhiều workload
- Nhưng lại dùng ít điện hơn đáng kể
🚀 Những case “bất ngờ”
Trong các thiết kế được tối ưu tốt:
- FPGA có thể nhanh hơn GPU tới 30 lần
- Hoặc giảm hơn 80% latency và điện năng
👉 Tất nhiên, đây không phải default. Nhưng nó cho thấy tiềm năng của việc thiết kế đúng kiến trúc.
🧠 Insight quan trọng nhất (đọc tới đây là đủ “lãi” rồi)
Nhiều người nghĩ AI chậm vì thiếu compute. Nhưng rất nhiều nghiên cứu gần đây chỉ ra:
Bottleneck lớn nhất của AI là data movement, không phải compute
Tức là:
- Không phải thiếu phép nhân
- Mà là dữ liệu phải đi lại quá nhiều giữa memory và compute
👉 Bạn có thể tưởng tượng như:
- CPU/GPU: data chạy lòng vòng như xe giờ cao điểm
- FPGA: bạn được quyền… thiết kế lại cả hệ thống đường xá
Và đây chính là điểm FPGA “ăn tiền”:
- Bạn kiểm soát dataflow
- Bạn quyết định dữ liệu đi như thế nào
- Bạn tối ưu pipeline theo đúng bài toán
🎯 Khi nào FPGA là lựa chọn hợp lý?
Không phải lúc nào cũng nên dùng FPGA (nói thật 😄) Nên dùng khi:
- Cần latency thấp và ổn định
- Cần tiết kiệm điện
- Làm Edge AI / Embedded system
- Bài toán khá “ổn định” (không thay đổi liên tục) Không nên dùng khi:
- Training model lớn
- Cần thay đổi logic thường xuyên
- Team chưa có kinh nghiệm hardware
💡 Một góc nhìn cá nhân
FPGA không phải là “GPU killer”. Nhưng mình thấy nó giống kiểu:
một “specialist” – chuyên xử lý những bài toán mà GPU làm không hiệu quả
Và xu hướng này đang ngày càng rõ khi:
- Edge AI phát triển mạnh
- Real-time system ngày càng nhiều
- Power trở thành constraint quan trọng
🚀 Kết lại
Nếu bạn là dev software, có thể FPGA không phải thứ bạn dùng mỗi ngày. Nhưng hiểu nó sẽ giúp bạn có thêm một góc nhìn rất thú vị:
Không phải mọi bài toán đều nên giải bằng software.
Đôi khi, cách đúng là: 👉 đem bài toán xuống phần cứng và thiết kế lại từ đầu
All rights reserved