1 điểm bởi GN⁺ 2025-02-26 | 1 bình luận | Chia sẻ qua WhatsApp

DeepEP

DeepEP là một thư viện truyền thông dành cho Mixture-of-Experts (MoE) và expert parallelism (EP). Thư viện cung cấp các kernel all-to-all GPU tốc độ cao, độ trễ thấp, thường được dùng cho MoE dispatch và combine. Ngoài ra, thư viện còn hỗ trợ tính toán độ chính xác thấp, bao gồm cả FP8. Phù hợp với thuật toán gating giới hạn theo nhóm được đề xuất trong bài báo DeepSeek-V3, DeepEP cung cấp các kernel tối ưu hóa việc truyền băng thông miền bất đối xứng, chuyển dữ liệu từ miền NVLink sang miền RDMA. Các kernel này mang lại thông lượng cao, phù hợp cho huấn luyện và các tác vụ prefill trong suy luận. Ngoài ra, thư viện còn hỗ trợ điều khiển số lượng SM (Streaming Multiprocessors). Đối với tác vụ decoding suy luận nhạy cảm với độ trễ, DeepEP bao gồm các kernel độ trễ thấp sử dụng RDMA thuần để giảm thiểu độ trễ. Thư viện này cũng giới thiệu phương pháp chồng lấp giao tiếp - tính toán dựa trên hook, không chiếm dụng tài nguyên SM.

Hiệu năng

Kernel thông thường sử dụng truyền NVLink và RDMA

  • Trên H800, kernel thông thường được kiểm thử với băng thông NVLink tối đa khoảng 160 GB/s, kết nối với card mạng RDMA CX7 InfiniBand 400 Gb/s (~50 GB/s băng thông tối đa).
  • Tuân theo cấu hình pre-training DeepSeek-V3/R1 (4096 token mỗi batch, hidden 7168, top 4 group, top 8 expert, dispatch FP8 và combine BF16).

Kernel độ trễ thấp sử dụng RDMA thuần

  • Trên H800, kernel độ trễ thấp được kiểm thử với card mạng RDMA CX7 InfiniBand 400 Gb/s (~50 GB/s băng thông tối đa).
  • Tuân theo cấu hình production DeepSeek-V3/R1 điển hình (128 token mỗi batch, hidden 7168, top 8 expert, dispatch FP8 và combine BF16).

Bắt đầu nhanh

Yêu cầu

  • GPU Hopper (trong tương lai có thể hỗ trợ thêm nhiều kiến trúc hoặc thiết bị hơn)
  • Python 3.8 trở lên
  • CUDA 12.3 trở lên
  • PyTorch 2.1 trở lên
  • NVLink cho giao tiếp trong node
  • Mạng RDMA cho giao tiếp liên node

Tải xuống và cài đặt phụ thuộc NVSHMEM

DeepEP phụ thuộc vào một phiên bản NVSHMEM đã được chỉnh sửa. Cần tham khảo hướng dẫn cài đặt để tiến hành cài đặt.

Cấu hình mạng

DeepEP đã được kiểm thử đầy đủ trên mạng InfiniBand và về mặt lý thuyết cũng tương thích với RDMA over Converged Ethernet (RoCE).

Cô lập lưu lượng

InfiniBand hỗ trợ cô lập lưu lượng thông qua Virtual Lanes (VL). Để tránh nhiễu giữa các loại lưu lượng khác nhau, nên tách workload theo các làn ảo như sau:

  • workload sử dụng kernel thông thường
  • workload sử dụng kernel độ trễ thấp
  • các workload khác

Trong DeepEP, có thể kiểm soát việc gán làn ảo bằng cách thiết lập biến môi trường NVSHMEM_IB_SL.

Định tuyến thích ứng

Định tuyến thích ứng là một tính năng định tuyến nâng cao do switch InfiniBand cung cấp, cho phép phân phối lưu lượng đồng đều qua nhiều đường đi. Hiện tại, kernel độ trễ thấp hỗ trợ định tuyến thích ứng, còn kernel thông thường thì chưa hỗ trợ (có thể sẽ sớm có). Nếu bật định tuyến thích ứng cho kernel liên node thông thường, có thể phát sinh tình trạng deadlock hoặc lỗi hỏng dữ liệu. Đối với kernel độ trễ thấp, việc bật định tuyến thích ứng có thể loại bỏ hoàn toàn tắc nghẽn mạng do xung đột định tuyến, nhưng sẽ gây thêm độ trễ. Để đạt hiệu năng tối ưu, khuyến nghị cấu hình như sau:

  • Bật định tuyến thích ứng trong môi trường có tải mạng cao
  • Dùng định tuyến tĩnh trong môi trường có tải mạng thấp

Kiểm soát tắc nghẽn

Vì không quan sát thấy tắc nghẽn đáng kể trong môi trường production, nên kiểm soát tắc nghẽn được tắt.

Giao diện và ví dụ

Sử dụng ví dụ trong huấn luyện mô hình hoặc prefill suy luận

Kernel thông thường có thể được sử dụng trong giai đoạn huấn luyện mô hình hoặc prefill suy luận (không bao gồm phần backward).

Sử dụng ví dụ trong decoding suy luận

Kernel độ trễ thấp có thể được sử dụng trong giai đoạn decoding suy luận.

Lưu ý

  • Để đạt hiệu năng cực hạn, nhóm phát triển đã phát hiện và sử dụng lệnh PTX không được ghi nhận trong tài liệu là ld.global.nc.L1::no_allocate.L2::256B. Lệnh này gây ra hành vi không xác định khi truy cập bộ nhớ GPU volatile bằng một PTX modifier đọc chỉ đọc không nhất quán. Tuy nhiên, khi kiểm thử với .L1::no_allocate trên kiến trúc Hopper, hiệu năng được cải thiện đáng kể. Nếu kernel không hoạt động trên nền tảng khác, có thể vô hiệu hóa bằng cách thêm DISABLE_AGGRESSIVE_PTX_INSTRS=1 vào setup.py hoặc tạo issue.
  • Để có hiệu năng tốt hơn trên cluster, nên chạy toàn bộ các bài kiểm thử và sử dụng cấu hình auto-tuning tối ưu. Cấu hình mặc định được tối ưu trên cluster nội bộ của DeepSeek.

Giấy phép

Kho mã này được phát hành theo giấy phép MIT, và phần mã tham chiếu tới NVSHMEM (bao gồm csrc/kernels/ibgda_device.cuhthird-party/nvshmem.patch) chịu sự điều chỉnh của NVSHMEM SLA.

1 bình luận

 
GN⁺ 2025-02-26
Ý kiến Hacker News
  • Họ đã phát hiện và sử dụng các lệnh PTX không có trong tài liệu để đạt hiệu năng tối đa. Lệnh này dùng bộ sửa đổi PTX chỉ đọc không nhất quán để truy cập bộ nhớ GPU khả biến, có thể dẫn đến hành vi không được định nghĩa. Tuy nhiên, độ chính xác đã được xác nhận khi thử nghiệm với .L1::no_allocate trên kiến trúc Hopper, và hiệu năng sẽ tốt hơn nhiều
  • Zuckerberg nên ngừng tuyên bố rằng Meta đang mã nguồn mở AI. Họ chỉ công bố trọng số chứ không phải mã nguồn. AI mã nguồn mở thực sự chỉ có DeepSeek
  • Cảm giác như một đứa trẻ trong cửa hàng kẹo. Một số mẹo như thế này sẽ mất rất nhiều thời gian để đảo ngược chính xác chỉ dựa trên bài báo. Hy vọng các công bố trong tuần này sẽ mở ra một thời kỳ phục hưng, nơi MoE trở thành mô hình học thuật mặc định
  • Không thể không yêu mến những con người này. Họ thực sự đang đẩy xa ranh giới của mã nguồn mở vì tất cả chúng ta. Cảm ơn vì đã chia sẻ
    • Giao tiếp all-to-all hiệu quả và được tối ưu hóa
    • Hỗ trợ trong cùng nút và giữa các nút qua NVLink và RDMA
    • Kernel thông lượng cao cho huấn luyện và tiền điền suy luận
    • Kernel độ trễ thấp cho giải mã suy luận
    • Hỗ trợ điều phối FP8 gốc
    • Kiểm soát tài nguyên GPU linh hoạt để chồng lấp tính toán và truyền thông
  • Động cơ phía sau công việc của DeepSeek có thể là sai lầm (ví dụ: một nỗ lực được nhà nước hậu thuẫn nhằm xóa bỏ lợi thế dẫn đầu của Mỹ trong AI). Nhưng trên phạm vi toàn cầu, kết quả của nó đơn giản là tuyệt vời
    • Ngay cả trong kịch bản tệ nhất (nếu họ làm việc này vì những lý do sai trái), tôi vẫn cảm ơn DeepSeek. Họ đang thực sự làm điều mà OpenAI đã nói dối cả thế giới suốt nhiều năm
    • Thật sự quá đỉnh
  • Tò mò không biết lần này PTX mà mọi người mong đợi có được đưa vào không
  • Lệnh PTX được nhắc đến trong báo cáo kỹ thuật nên được liên kết tới đoạn mã ở đây
  • Trong lúc Mỹ lần theo hóa đơn GPU ở Singapore để xác minh DeepSeek có thật sự chỉ dùng H800 hay không, phần còn lại của thế giới có thể chạy các tối ưu hóa này trên toàn bộ H100
    • Tò mò không biết có phải họ đang giả vờ rằng H100 khó mua hoặc khó tiếp cận vì sự ngạo mạn cho rằng lệnh trừng phạt và mệnh lệnh của Mỹ bao trùm cả thế giới hay không
  • Đây là bản phát hành mã nguồn mở thứ hai của công ty "Open AI™" thực sự, và nó được phát hành theo giấy phép MIT
    • DeepSeek cởi mở hơn công ty tự nhận trị giá hơn $157B
    • Gần như chẳng ai còn nói về Llama của Meta, và mọi người nên kỳ vọng Llama 4 sẽ được phát hành có lý do
    • Mục tiêu là không bị kẹt ở giữa trong cuộc đua về số 0