- Các chiến lược và mã nguồn đã được sử dụng trong DeepSeek V3/R1
- DualPipe: thuật toán song song pipeline hai chiều để chồng lấp tính toán - truyền thông
- EPLB: bộ cân bằng tải Expert-Parallel
- Profile-Data: phân tích chồng lấp tính toán - truyền thông bằng dữ liệu profiling từ hạ tầng của DeepSeek
- DualPipe là một thuật toán song song pipeline hai chiều mang tính đột phá được giới thiệu trong DeepSeek-V3 Technical Report
- Nó giúp giảm pipeline bubble bằng cách chồng lấp hoàn toàn các giai đoạn tính toán - truyền thông của cả chiều thuận và chiều ngược
- Có thể xem thêm thông tin chi tiết về chồng lấp tính toán - truyền thông tại profile data
- Trong Expert Parallelism (EP), các expert khác nhau được phân bổ cho từng GPU
- Tuy nhiên, do khối lượng công việc của mỗi expert có thể khác nhau, việc cân bằng tải giữa các GPU là rất quan trọng
- Trong DeepSeek-V3, họ sử dụng chiến lược redundant experts để sao chép các expert có tải cao, sau đó phân bổ chúng hiệu quả lên GPU để đạt cân bằng tải
- Ngoài ra, họ tận dụng group-limited expert routing để đặt các expert trong cùng một nhóm lên cùng một node nhiều nhất có thể, qua đó giảm thiểu truyền dữ liệu giữa các node
- Để dễ tái hiện và triển khai, thuật toán cân bằng tải EP được cung cấp dưới dạng mã nguồn mở trong
eplb.py
- Thuật toán này tính toán kế hoạch sao chép và phân bổ expert cân bằng dựa trên tải expert được dự đoán
- Tuy nhiên, phương pháp cụ thể để dự đoán tải expert nằm ngoài phạm vi của kho này; thông thường người ta hay dùng phương pháp trung bình trượt dựa trên thống kê trong quá khứ
- Thuật toán cân bằng tải cung cấp hai chính sách và mỗi chính sách được dùng trong các tình huống khác nhau.
- Cân bằng tải phân cấp (Hierarchical Load Balancing)
- Khi số node máy chủ chia hết cho số nhóm expert, chính sách cân bằng tải phân cấp được dùng để tối ưu hóa group-limited expert routing
- Trước tiên, các nhóm expert được phân bổ đồng đều lên các node để cân bằng tải giữa các node
- Sau đó, các expert được sao chép trong từng node
- Cuối cùng, các expert đã sao chép được phân bổ lên từng GPU để cân bằng tải giữa các GPU
- Chính sách này có thể được sử dụng ở giai đoạn prefilling, nơi quy mô song song expert nhỏ
- Cân bằng tải toàn cục (Global Load Balancing)
- Trong các trường hợp khác, chính sách cân bằng tải toàn cục được dùng để sao chép expert trên phạm vi toàn cục mà không phụ thuộc vào nhóm expert, rồi phân bổ chúng lên từng GPU
- Chính sách này phù hợp với giai đoạn decoding, nơi quy mô song song expert lớn.
- DeepSeek công khai dữ liệu profiling từ framework huấn luyện và suy luận của mình để giúp cộng đồng hiểu rõ hơn về các chiến lược chồng lấp truyền thông - tính toán và các chi tiết triển khai ở mức thấp
- Dữ liệu profiling này được thu thập bằng PyTorch Profiler; sau khi tải về, có thể trực quan hóa bằng
chrome://tracing trên Chrome hoặc edge://tracing trên Edge
- Ngoài ra, trong thí nghiệm họ đã mô phỏng chiến lược định tuyến MoE cân bằng để thực hiện profiling
- Huấn luyện (Training)
- Dữ liệu profile huấn luyện từ DualPipe cho thấy chiến lược chồng lấp của các chunk chiều thuận và chiều ngược
- Mỗi chunk bao gồm 4 lớp MoE (Mixture of Experts) và có cấu hình song song phù hợp với thiết lập pre-training của DeepSeek-V3:
- Suy luận (Inference)
- Prefilling
- Ở giai đoạn này, hai micro-batch được dùng để chồng lấp tính toán và truyền thông all-to-all
- Đồng thời, tải tính toán attention được phân bổ cân bằng giữa hai micro-batch để cùng một prompt có thể được chia thành nhiều micro-batch
- Decoding
- Trong decoding cũng giống prefilling, hai micro-batch được dùng để chồng lấp tính toán và truyền thông all-to-all
- Tuy nhiên, trong decoding, truyền thông all-to-all không chiếm dụng GPU SM → sau khi gửi thông điệp RDMA thì GPU SM được giải phóng, và hệ thống hoạt động bằng cách chờ truyền thông hoàn tất sau khi việc tính toán kết thúc
- Có thể xem thêm thông tin chi tiết về triển khai all-to-all tại DeepEP
Bài thứ 4 trong 5 dự án mã nguồn mở được công bố dưới tên DeepSeek Open Infra
Chưa có bình luận nào.