- MareNostrum V của Đại học Bách khoa Catalonia ở Barcelona là một trong 15 siêu máy tính hàng đầu thế giới, là hạ tầng nghiên cứu công trị giá €200 triệu thực hiện điện toán phân tán trên 8.000 node
- Đây không phải một máy tính hiệu năng cao đơn lẻ mà là một hệ thống phân tán gồm hàng nghìn máy tính độc lập được kết nối bằng topology fat-tree InfiniBand NDR200, cho phép mọi node giao tiếp với cùng độ trễ tối thiểu
- Việc gửi tác vụ được thực hiện thông qua SLURM workload manager, bằng các batch script chỉ rõ yêu cầu tài nguyên, giới hạn thời gian và ngân sách dự án để đưa công việc vào hàng đợi của scheduler
- Hệ thống vận hành trong môi trường air-gapped bị chặn truy cập Internet bên ngoài, nên cần chuẩn bị sẵn thư viện và dataset cần thiết từ trước, và đôi khi việc trích xuất kết quả còn trở thành nút thắt hơn cả tính toán
- Đây là tài nguyên công được cung cấp miễn phí cho giới nghiên cứu: các tổ chức tại Tây Ban Nha có thể truy cập qua RES, còn trên toàn châu Âu thì thông qua các đợt kêu gọi định kỳ của EuroHPC Joint Undertaking
Kiến trúc: mạng chính là máy tính
- Hiểu lầm lớn nhất về HPC là nghĩ rằng mình đang thuê một máy tính siêu mạnh duy nhất, trong khi thực tế là gửi công việc theo kiểu phân tán lên hàng nghìn máy tính độc lập
- Để tránh tình trạng GPU nhàn rỗi vì phải chờ truyền dữ liệu trong điện toán phân tán, MareNostrum V xây dựng fabric InfiniBand NDR200 theo topology fat-tree
- Trong mạng thông thường, khi nhiều máy tính cùng chia sẻ một switch thì sẽ phát sinh nút thắt băng thông
- Topology fat-tree tăng băng thông liên kết khi đi lên các tầng cao hơn của mạng để bảo đảm băng thông non-blocking
- Bất kỳ node nào trong 8.000 node cũng có thể giao tiếp với cùng độ trễ tối thiểu
Cấu hình các phân vùng tính toán
- General Purpose Partition (GPP): được thiết kế cho các tác vụ CPU song song cao, gồm 6.408 node với 112 lõi Intel Sapphire Rapids trên mỗi node, tổng hiệu năng đỉnh 45,9 PFlops
- Accelerated Partition (ACC): được thiết kế cho các mục đích chuyên biệt như huấn luyện AI, động lực học phân tử, gồm 1.120 node với 4 NVIDIA H100 SXM GPU trên mỗi node, hiệu năng đỉnh 260 PFlops
- Với giá bán lẻ một H100 vào khoảng 25.000 USD, riêng chi phí GPU đã vượt 110 triệu USD
- Login Nodes: điểm vào đầu tiên khi kết nối SSH, chỉ dành cho các tác vụ nhẹ như chuyển file, biên dịch code, gửi job script, không phải để tính toán
Hạ tầng lượng tử
- MareNostrum 5 tích hợp máy tính lượng tử đầu tiên của Tây Ban Nha cả về mặt vật lý lẫn logic
- Bao gồm hệ lượng tử dựa trên digital gate và quantum annealer siêu dẫn dựa trên qubit MareNostrum-Ona
- Quantum processing unit (QPU) không thay thế siêu máy tính cổ điển mà đóng vai trò bộ tăng tốc chuyên dụng
- Các bài toán tối ưu hóa hoặc mô phỏng hóa học lượng tử mà ngay cả GPU H100 cũng khó xử lý có thể được offload sang phần cứng lượng tử, tạo nên một cỗ máy điện toán lai cổ điển - lượng tử quy mô lớn
Air-gap, quota và thực tế vận hành HPC
- Airgap: có thể SSH từ bên ngoài vào, nhưng các compute node không được truy cập Internet bên ngoài
- Không thể
pip install, wget hay kết nối tới các repository HuggingFace bên ngoài
- Mọi thứ script cần đều phải được tải xuống và biên dịch sẵn trước, rồi chuẩn bị trong thư mục lưu trữ
- Quản trị viên cung cấp phần lớn thư viện và phần mềm thông qua hệ thống
module
- Di chuyển dữ liệu: dữ liệu vào/ra được thực hiện qua login node bằng
scp hoặc rsync
- Vì bản thân việc tính toán diễn ra rất nhanh, quá trình kéo kết quả đã hoàn thành về máy cục bộ đôi khi lại trở thành nút thắt
- Giới hạn và quota: mỗi dự án được cấp một ngân sách thời gian CPU nhất định, và có hard limit về số lượng job đang chạy hoặc chờ của một người dùng
- Mọi job đều bắt buộc phải chỉ định giới hạn wall-time nghiêm ngặt
- Chỉ cần vượt thời gian đã yêu cầu dù 1 giây, scheduler sẽ lập tức dừng tiến trình
- Logging: sau khi gửi job sẽ không có đầu ra terminal trực tiếp; toàn bộ
stdout và stderr được tự động chuyển hướng sang file log, ví dụ sim_12345.out, sim_12345.err
- Sau khi job hoàn tất hoặc bị crash, người dùng kiểm tra các file văn bản này để xem kết quả và debug
- Có thể theo dõi trạng thái job đã gửi bằng
squeue hoặc tail -f
SLURM workload manager
- Sau khi được phê duyệt phân bổ nghiên cứu và đăng nhập SSH, thứ hiện ra chỉ là một dấu nhắc terminal Linux hoàn toàn bình thường
- Vì có hàng nghìn nhà nghiên cứu sử dụng đồng thời, nếu chạy trực tiếp script nặng trong terminal thì login node có thể bị sập và bạn sẽ nhận email cảnh báo từ quản trị hệ thống
- SLURM (Simple Linux Utility for Resource Management) là phần mềm lập lịch công việc mã nguồn mở: bạn khai báo phần cứng cần dùng, môi trường phần mềm và mã thực thi trong bash script, đưa vào hàng đợi, rồi khi có tài nguyên phù hợp hệ thống sẽ chạy và giải phóng node sau đó
- Các directive
#SBATCH quan trọng:
--nodes: số máy vật lý cần dùng
--ntasks: tổng số MPI process (task) sẽ tạo, SLURM sẽ tự phân phối giữa các node
--time: giới hạn thời gian wall-clock nghiêm ngặt, vượt là bị dừng ngay
--account: ID dự án mà thời gian CPU sẽ bị trừ vào
--qos: Quality of Service hoặc hàng đợi cụ thể, ví dụ hàng đợi debug cho phép truy cập nhanh hơn nhưng giới hạn runtime ngắn
Ví dụ thực tế: điều phối sweep OpenFOAM
- Để dự đoán lực ép khí động học bằng mô hình ML surrogate, cần chạy 50 mô phỏng CFD (Computational Fluid Dynamics) độ chính xác cao trên 50 lưới 3D khác nhau
- Ví dụ một SLURM job script cho một case CFD OpenFOAM đơn lẻ trên general purpose partition:
- Chỉ định tài nguyên bằng
--nodes=1, --ntasks=6, --time=00:30:00 v.v.
- Tải môi trường bằng
module load OpenFOAM/11-foss-2023a
- Dùng
srun --mpi=pmix để chạy tuần tự surfaceFeatureExtract, blockMesh, decomposePar, snappyHexMesh, potentialFoam, simpleFoam, reconstructPar
- Thay vì gửi thủ công cả 50 job, có thể dùng SLURM dependency để chain từng job sau job trước
- Dùng
sbatch --dependency=afterany:$PREV_JOB_ID để đăng ký 50 job vào hàng đợi chỉ trong vài giây
- Đến sáng hôm sau, 50 lượt đánh giá khí động học đã được xử lý và ghi log xong, sẵn sàng chuyển thành tensor cho quá trình huấn luyện ML
Giới hạn của song song hóa: định luật Amdahl
- Lý do có 112 lõi mỗi node nhưng chỉ yêu cầu 6 task cho mô phỏng CFD là vì định luật Amdahl
- Mọi chương trình đều có một phần tuần tự (serial fraction) không thể song song hóa, và mức tăng tốc lý thuyết bị giới hạn chặt bởi tỷ lệ tuần tự đó
- Công thức: S = 1 / ((1−p) + p/N), trong đó S là mức tăng tốc tổng thể, p là tỷ lệ có thể song song hóa, N là số lõi xử lý
- Ngay cả khi chỉ 5% code là tuần tự, thì dùng toàn bộ lõi của MareNostrum V cũng chỉ cho mức tăng tốc lý thuyết tối đa 20 lần
- Nếu chia task ra quá nhiều lõi, chi phí giao tiếp qua mạng InfiniBand sẽ tăng lên
- Nếu việc truyền điều kiện biên giữa các lõi tốn nhiều thời gian hơn cả tính toán thực tế, việc thêm phần cứng còn có thể làm chậm chương trình
- Khi mô phỏng hệ nhỏ (N=100), runtime tăng lên sau 16 thread; chỉ với hệ lớn (N=10k+) thì phần cứng mới được khai thác hoàn toàn hiệu quả
- Viết code cho siêu máy tính về bản chất là bài toán quản lý tỷ lệ tính toán so với giao tiếp
Cách tiếp cận
- Dù chi phí phần cứng rất lớn, quyền truy cập MareNostrum V vẫn miễn phí cho giới nghiên cứu, và thời gian tính toán được xem là tài nguyên khoa học do ngân sách công tài trợ
- Các nhà nghiên cứu thuộc tổ chức tại Tây Ban Nha có thể đăng ký qua Spanish Supercomputing Network (RES)
- Các nhà nghiên cứu trên khắp châu Âu có thể đăng ký qua các đợt kêu gọi truy cập định kỳ của EuroHPC Joint Undertaking
- Track Development Access được thiết kế cho các dự án port code hoặc benchmark mô hình ML, giúp nhà khoa học dữ liệu dễ tiếp cận hơn
Chưa có bình luận nào.