TỐI ƯU MẠNG INFINIBAND VÀ RDMA - XÓA BỎ GIỚI HẠN TRUYỀN TẢI CHO CỤM DGX SPARK
TỐI ƯU MẠNG INFINIBAND VÀ RDMA - XÓA BỎ GIỚI HẠN TRUYỀN TẢI CHO CỤM DGX SPARK
Trong các cụm tính toán hiệu năng cao (HPC), mạng không chỉ là dây dẫn, nó là một phần của bộ nhớ mở rộng. Khi chạy Apache Spark trên NVIDIA DGX, giai đoạn Shuffle (trao đổi dữ liệu giữa các máy) thường chiếm đến 40% tổng thời gian thực thi. Nếu sử dụng mạng TCP/IP thông thường, CPU sẽ bị quá tải vì phải xử lý các gói tin mạng, dẫn đến GPU phải "ngồi chơi xơi nước". Công nghệ InfiniBand và RDMA (Remote Direct Memory Access) sinh ra để biến việc truyền dữ liệu giữa các máy chủ nhanh như việc truy cập RAM nội bộ.
1. Tại sao TCP/IP là "kẻ thù" của Big Data trên GPU?
Kiến trúc mạng TCP/IP truyền thống có 3 điểm yếu chí tử đối với DGX Spark:
CPU Overhead: CPU phải tham gia vào việc đóng gói, mở gói và kiểm tra lỗi cho từng bit dữ liệu di chuyển qua card mạng.
Bản sao đệm (Kernel Copy): Dữ liệu phải được sao chép từ bộ nhớ ứng dụng sang bộ nhớ nhân hệ điều hành (Kernel) rồi mới đi ra mạng.
Độ trễ cao: Quá trình chuyển đổi ngữ cảnh (Context Switching) của hệ điều hành khiến độ trễ tăng vọt, không thể đáp ứng tốc độ xử lý miligiây của GPU.
2. RDMA: Đường cao tốc không rào cản
RDMA cho phép một máy chủ truy cập trực tiếp vào bộ nhớ của một máy chủ khác mà không cần thông qua hệ điều hành hay CPU của cả hai bên.
2.1. Cơ chế Zero-Copy
Với RDMA, dữ liệu từ VRAM của GPU trên máy DGX 1 sẽ được card mạng ConnectX đọc trực tiếp và đẩy sang VRAM của GPU trên máy DGX 2. CPU hoàn toàn đứng ngoài tiến trình này.
2.2. Kernel Bypass
RDMA loại bỏ lớp trung gian của hệ điều hành. Điều này giúp giảm độ trễ từ hàng chục microgiây xuống còn mức nano giây, cực kỳ quan trọng cho các lệnh hoặc trong Spark.
3. Cấu hình InfiniBand cho cụm DGX Spark
NVIDIA DGX được trang bị tới 8-10 cổng InfiniBand tốc độ cao (lên đến 400Gbps mỗi cổng). Để tối ưu cho Spark, chúng ta cần tập trung vào các giao thức sau:
3.1. UCX (Unified Communication X)
UCX là lớp giao tiếp mã nguồn mở giúp Spark tận dụng tối đa InfiniBand.
Tối ưu hóa: Plugin RAPIDS sử dụng UCX để thực hiện các thao tác Shuffle. Nó tự động chọn giao thức nhanh nhất hiện có (NVLink cho nội bộ máy và InfiniBand RDMA cho giữa các máy).
Tham số cấu hình:
và các biến môi trườngspark.executor.resource.gpu.amount để kích hoạt chế độ truyền tải tối ưu nhất.UCX_TLS=rc,cuda_copy,gdr_copy
3.2. RoCE (RDMA over Converged Ethernet)
Nếu doanh nghiệp của bạn không dùng InfiniBand thuần túy mà dùng Ethernet tốc độ cao (100/200/400GbE), bạn phải cấu hình RoCE v2. Đây là giải pháp mang sức mạnh của RDMA vào hạ tầng Ethernet truyền thống, yêu cầu các Switch mạng phải hỗ trợ tính năng PFC (Priority Flow Control) để tránh mất gói tin.
4. Tăng tốc Shuffle Service bằng GPU và RDMA
Trong Spark, Shuffle là giai đoạn tốn kém nhất. Trên DGX, chúng ta sử dụng RAPIDS Shuffle Manager.
Cơ chế: Thay vì ghi dữ liệu Shuffle xuống đĩa cứng (Disk), RAPIDS sẽ giữ dữ liệu trong bộ nhớ GPU hoặc RAM hệ thống và chờ máy khác đến "lấy" qua RDMA.
Hiệu quả: Tốc độ Shuffle tăng từ 5-10 lần, biến những câu lệnh SQL phức tạp nhất vốn gây nghẽn mạng trở nên mượt mà.
5. Tối ưu hóa Topology mạng trong Trung tâm dữ liệu
Để đạt hiệu năng đỉnh cao, việc cắm dây không là chưa đủ. Bạn cần thiết lập sơ đồ mạng tối ưu:
Non-blocking Fabric: Đảm bảo Switch mạng có đủ băng thông để tất cả các máy DGX có thể giao tiếp ở tốc độ tối đa cùng một lúc mà không gây nghẽn cổ chai tại Switch trung tâm.
Adaptive Routing: InfiniBand hỗ trợ định tuyến thích ứng, giúp dữ liệu tự động tìm đường đi ngắn nhất và ít tắc nghẽn nhất giữa các node DGX trong cụm Spark.
6. Bảng so sánh hiệu năng mạng (Network Benchmark)
Thử nghiệm thực hiện phép trên 1TB dữ liệu giữa 4 máy DGX.
| Tiêu chí | Mạng 10GbE (TCP/IP) | Mạng 100GbE (RoCE) | Mạng InfiniBand (RDMA) |
|---|---|---|---|
| Thời gian Shuffle | 120 Phút | 15 Phút | 8 Phút |
| Tải CPU trung bình | 90% (Bị nghẽn) | 30% | < 10% |
| Độ trễ (Latency) | 50 - 100 ms | 5 - 10 ms | < 1 ms |
| Băng thông thực tế | ~1.1 GB/s | ~11 GB/s | ~45 GB/s |
7. Kết luận
Mạng InfiniBand và RDMA chính là "hệ tuần hoàn" giúp các siêu máy tính NVIDIA DGX gắn kết thành một thực thể tính toán khổng lồ. Việc cấu hình đúng các giao thức này cho Apache Spark không chỉ giúp tăng tốc độ xử lý mà còn giải phóng tài nguyên CPU để làm những việc quan trọng hơn. Nếu không có một hệ thống mạng đủ mạnh, sức mạnh của GPU H100 hay B200 sẽ mãi mãi bị kìm hãm sau những rào cản truyền tải.