Zyphra ZYFA: FP8 FlashAttention dành cho AMD MI355X, nhanh hơn tới 1,76 lần
Tóm lược nhanh
Tổng hợp và đối chiếu bởi gemini-2.0-flash-thinking-exp
“Zyphra đã phát hành ZYFA (Zyphra FlashAttention trên AMD), một bộ hạt nhân chú ý điền trước FP8 và B”
Các điểm cốt lõi
- 1.Zyphra đã phát hành ZYFA (Zyphra FlashAttention trên AMD), một bộ hạt nhân chú ý điền trước FP8 và BF16 dành cho GPU AMD Instinct MI355X.
- 2.ZYFA là công cụ chú ý FP8 của Zyphra để điền trước ngữ cảnh dài và mã là nguồn mở theo Apache 2.0.
- 3.Khi kích hoạt mô hình thực, hạt nhân FP8 của nó chạy nhanh hơn 1,16-1,76 lần so với AITER, thư viện hạt nhân mặc định của AMD.
Zyphra đã phát hành ZYFA (Zyphra FlashAttention trên AMD), một bộ hạt nhân chú ý điền trước FP8 và BF16 dành cho GPU AMD Instinct MI355X. ZYFA là công cụ chú ý FP8 của Zyphra để điền trước ngữ cảnh dài và mã là nguồn mở theo Apache 2.0. Khi kích hoạt mô hình thực, hạt nhân FP8 của nó chạy nhanh hơn 1,16-1,76 lần so với AITER, thư viện hạt nhân mặc định của AMD. Ở kích thước đầu 128, sai số FP8 của ZYFA thấp hơn AITER từ 62-78%. TL;DR
Framework: Đây là thư viện kernel. Chú ý chuyển tiếp nhân quả (điền trước) trong FP8 e4m3 và BF16, đầu mờ 128 và hình dạng MLA (192/128). Chạy trên: Chỉ AMD Instinct MI355X (CDNA4, gfx950), ROCm 7.2.3, PyTorch 2.12. Giao diện thả vào flash_attn_func. Hiệu suất: Thông lượng FP8 của AITER gấp 1,16-1,76 lần khi kích hoạt thực tế; BF16 gần bằng nhau (1,01-1,02x). Tốt nhất: 2.672 TFLOP/s FP8 với 32K token, 53% mức cao nhất của bảng dữ liệu FP8 (AITER: 39%). Tệ nhất: Chỉ 1,16 lần khi kích hoạt Mistral-7B; Xung nhịp FP8 giảm xuống 1.628 MHz so với 2.108 MHz của AITER.
ZYFA là gì? ZYFA được gửi dưới dạng tài liệu kỹ thuật cùng với mã từ Zyphra. Nó cung cấp năng lượng cho công cụ chú ý của Công cụ tối ưu hóa Zyphra (ZOE), chạy Zyphra Cloud. Hạt nhân BF16 được viết bằng HIP. Các hạt nhân FP8 là tập hợp được lên lịch thủ công được phát ra bởi trình tạo Python. Tại sao sự chú ý của FP8 kém hơn trên MI355X? Lệnh ma trận FP8 chạy ở tốc độ gấp 2 lần đỉnh BF16. Nhưng FP8 chỉ tăng tốc cho 2 sản phẩm ma trận là QKᵀ và PV. Softmax giữa chúng chạy trên đơn vị vectơ với cùng tốc độ ở cả hai độ chính xác. Đối với 32 truy vấn đối với 128 khóa, công việc của ma trận FP8 mất 1.024 chu kỳ. Softmax chính xác của FP8 có 896 chu kỳ vectơ. Vì vậy, kernel cần sự chồng chéo gần như hoàn hảo để giữ cho các đơn vị ma trận luôn bận rộn. Dấu vết ren của Zyphra cho thấy ống ma trận của AITER không hoạt động trong 31,7% số chu kỳ. MI355X không theo dõi việc hoàn thành lệnh ma trận trong phần cứng, vì vậy thứ tự lệnh phải tạo ra sự chồng chéo đó. ZYFA hoạt động như thế nào? ZYFA sử dụng 3 kỹ thuật: Lean P: cộng một lần thay vì lũy thừa Mẫu bit e4m3, được đọc dưới dạng số nguyên, tăng thêm 8 mỗi khi giá trị tăng gấp đôi. Vậy mã của 2^x xấp xỉ là 8x cộng với một hằng số. Lean P ghi từng xác suất FP8 với 1 phép cộng nhân và 1 phép chuyển đổi số nguyên. Điều này cắt giảm chu kỳ vectơ softmax trên mỗi khối từ 896 xuống 384. Lịch thi đấu bóng bàn hai sóng 2 sóng chia sẻ mỗi SIMD. Một người đưa ra các hướng dẫn ma trận trong khi người kia tính toán xác suất, sau đó họ hoán đổi. Với P nạc, ống ma trận chiếm 86% chu kỳ ở trạng thái ổn định, tăng từ 60% với P chính xác. Chia tỷ lệ theo khối và tổng hàng được làm tròn Mỗi khối xác suất gồm 64 phím được chia tỷ lệ theo lũy thừa 2 trước khi làm tròn. Lệnh ma trận tỷ lệ của CDNA4 sẽ loại bỏ hệ số này mà không mất phí. ZYFA cũng chia cho tổng xác suất được làm tròn, được tính bằng 1 lệnh ma trận bổ sung cho mỗi khối.
&&
ZYFA nhanh như thế nào? Tốc độ tăng tốc FP8 kích hoạt thực ở 16K và xung nhịp duy trì là 1,16x (Mistral-7B), 1,17x (Qwen3-8B) và 1,76x (DeepSeek-V2-Lite). Trên điểm chuẩn Gaussian ở 32K, nhân head-dim-128 FP8 đạt 2.672 TFLOP/s so với 1.944 của AITER. Ở hình dạng MLA, nó đạt 2.464 so với 1.237, tỷ lệ 1,99x. Trên các lớp Mistral-7B và Qwen3-8B được thu giữ, ZYFA mang lại 1,94 và 1,91 TFLOP/J. AITER cung cấp 1,60 và 1,56. Tại sao mức tăng của mô hình thực nhỏ hơn mức tăng chuẩn? Đồng hồ MI355X phụ thuộc vào số lượng bit toán hạng được lật. AITER cho phép nhiều xác suất nhỏ hơn trở thành số 0 hoặc chuẩn mực phụ. Những cái đó chuyển đổi ít bit hơn, do đó đồng hồ của nó chạy cao hơn. Trên lớp Mistral-7B, ZYFA chạy ở tần số 1.628 MHz trong khi AITER chạy ở tần số 2.108 MHz. Nhìn chung, ZYFA vẫn cần ít chu kỳ hơn. Nhóm Zyphra khuyến nghị đo điểm chuẩn đối với các lần kích hoạt thực tế ở đồng hồ được duy trì liên tục. Sự chú ý FP8 của ZYFA chính xác đến mức nào? Chống lại sự chú ý của fp64, lỗi FP8 của ZYFA là 0,22x AITER trên Mistral-7B và 0,38x trên Qwen3-8B. Nó nằm trong một vài phần trăm của Hạt nhân có thể kết hợp và Triton. Trong Mistral-7B đầy đủ, độ phân kỳ KL so với fp64 là 3,4×10⁻³ với ZYFA và 5,9×10⁻³ với AITER. Đầu ra của ZYFA cũng giống hệt nhau về mặt bit trong 7.200 lần khởi chạy. Hầu hết lỗi FP8 của mô hình đầy đủ đều xuất phát từ việc lượng tử hóa Q, K và V. Một phép quay Hadamard của Q và K gần như giảm một nửa lỗi đầu vào đó. Trên Mistral-7B, nó tăng thêm khoảng 0,1% thời gian chú ý. ZYFA so sánh với các hạt nhân chú ý khác như thế nào? Tính năngZYFA FP8AITER FP8FlashAttention-3FlashAttention-4MakerZyphraAMDDao-AILab et al.Dao-AILab et al.GPU mục tiêuAMD MI355XAMD MI300X tới MI355XNVIDIA H100/H800NVIDIA B200 (cộng với Hopper)Thông lượng tiêu đề2.672 TFLOP/s FP81.944 TFLOP/s FP8 (được đo bằng Zyphra)Gần tới 1,2 PFLOP/s FP81.613 TFLOP/s BF16Chia sẻ của đỉnh53% FP839% FP8 (được đo bằng Zyphra)Không được tiết lộ (FP8)71% BF16Phương pháp tiếp cận SoftmaxLean P, không có cấp số nhânPhần cứng theo cấp số nhânChồng chéo thông qua lõi Tensor không đồng bộĐộ chính xác theo cấp số nhân được mô phỏng bằng phần mềmFP8 yêu cầu lỗi thấp hơn 62-78% so với AITERBaseline Lỗi thấp hơn 2,6 lần so với đường cơ sở FP8Không được tiết lộPhạm viLý do điền trước chỉ chuyển tiếpPrefill, giải mã, MLA, phân trangChuyển tiếp và lùi, chuyển tiếp FP8Chuyển tiếp và lùiGiấy phépApache 2.0MITBSD-3-ClauseBSD-3-Clause Số lượng nhà cung cấp chéo đến từ các đầu vào và đồng hồ khác nhau. Zyphra không đo GPU NVIDIA. Bài học chính
Sự chú ý của FP8 trên MI355X là giới hạn softmax chứ không phải giới hạn ma trận. Lean P hoán đổi số mũ cho 1 phép cộng. Mức tăng của mô hình thực là 1,16-1,76 lần, nhỏ hơn so với mức điểm chuẩn hiển thị. Lỗi FP8 giảm 62-78% so với AITER ở đầu mờ 128. Chỉ điền trước: không giải mã, không phân trang KV, chỉ MI355X.
Hãy xem bài báo, bài đăng trên blog Zyphra và kho lưu trữ GitHub. Ngoài ra, vui lòng theo dõi chúng tôi trên Twitter và đừng quên tham gia SubReddit 150k+ML của chúng tôi và Đăng ký Bản tin của chúng tôi. Chờ đợi! bạn có đang dùng điện tín không? bây giờ bạn cũng có thể tham gia cùng chúng tôi trên telegram. Bạn cần hợp tác với chúng tôi để quảng bá GitHub Repo HOẶC Trang ôm mặt HOẶC Phát hành sản phẩm HOẶC Hội thảo trên web, v.v.? Kết nối với chúng tôi Bài đăng Zyphra ZYFA: FP8 FlashAttention cho AMD MI355X, Nhanh hơn tới 1,76 lần xuất hiện đầu tiên trên MarkTechPost.
Bản quyền & Xuất xứ thông tin
Bài viết này được tổng hợp và phân tích AI từ ấn phẩm MarkTechPost. Mọi bản quyền nội dung thuộc về tác giả và toà soạn gốc.

