Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Quay lại Bảng thuật ngữ Ultralytics

Flash Attention

Flash Attention tính attention chính xác của Transformer theo từng tile được lưu trong bộ nhớ GPU trên chip tốc độ cao, giảm lưu lượng bộ nhớ và chi phí xử lý chuỗi dài.

Flash Attention (FlashAttention) là một thuật toán và họ kernel GPU tính attention chính xác cho các model Transformer mà không bao giờ ghi toàn bộ ma trận attention vào bộ nhớ chính của GPU. Self-attention tiêu chuẩn trên N token tạo ma trận điểm N × N, ghi ma trận đó vào bộ nhớ băng thông cao (HBM), rồi đọc lại để tính softmax và tích với các giá trị; vì vậy, phần lớn thời gian chạy của attention dành cho việc di chuyển dữ liệu. Tri Dao và cộng sự tại Stanford giới thiệu phương pháp này trong bài báo năm 2022 FlashAttention: Attention chính xác nhanh và tiết kiệm bộ nhớ với nhận biết IO. Phương pháp chia công việc thành các tile vừa với SRAM trên chip tốc độ cao, nhờ đó mức sử dụng bộ nhớ tăng tuyến tính theo độ dài chuỗi và đầu ra khớp với attention tiêu chuẩn, ngoại trừ sai số làm tròn dấu phẩy động. Các kernel của phương pháp chạy trong PyTorch và trong các engine suy luận mô hình ngôn ngữ lớn (LLM) như vLLM.

Cách hoạt động của Flash Attention#

GPU có một lượng nhỏ bộ nhớ rất nhanh nằm cạnh các đơn vị tính toán và một lượng lớn bộ nhớ ngoài chip chậm hơn. Bài báo FlashAttention mô tả NVIDIA A100 có 40-80 GB HBM với băng thông 1.5-2.0 TB/s và 192 KB SRAM trong mỗi trong số 108 streaming multiprocessor, với băng thông ước tính 19 TB/s. Attention thực hiện ít phép toán trên mỗi byte được đọc, vì vậy tốc độ phụ thuộc vào tần suất dữ liệu di chuyển giữa hai cấp bộ nhớ; phương pháp này đếm số lần truyền đó, và đó là ý nghĩa của thuật ngữ "nhận biết IO".

FlashAttention nạp một tile query rồi lần lượt truyền các tile key và value qua SRAM. Với mỗi tile, phương pháp tính điểm, cập nhật giá trị cực đại đang chạy và tổng đang chạy cho từng hàng query, điều chỉnh lại đầu ra từng phần mỗi khi giá trị cực đại tăng, rồi cộng phần đóng góp của tile mới. Softmax trực tuyến này cho kết quả softmax chính xác mà không cần xử lý toàn bộ một hàng cùng lúc; chỉ đầu ra cuối cùng và hai con số trên mỗi hàng được ghi trở lại HBM. Lượt lan truyền ngược tính lại các tile điểm từ Q, K và V thay vì lưu ma trận N × N; cách này tăng số phép toán nhưng vẫn chạy nhanh hơn vì đọc ít bộ nhớ hơn nhiều. Vòng lặp tương tự trong PyTorch, xử lý tất cả query với từng tile key-value một:

import torch

torch.manual_seed(0)
n, d, block = 4096, 64, 256
q, k, v = torch.randn(3, n, d).unbind(0)

# Standard attention builds the full n x n score matrix in memory
reference = torch.softmax(q @ k.T / d**0.5, dim=-1) @ v

# FlashAttention-style: stream key/value tiles, keeping a running max and sum per query (online softmax)
row_max, row_sum, out = torch.full((n, 1), -torch.inf), torch.zeros(n, 1), torch.zeros(n, d)
for start in range(0, n, block):
    scores = q @ k[start : start + block].T / d**0.5  # only an n x block tile exists at once
    new_max = torch.maximum(row_max, scores.max(dim=-1, keepdim=True).values)
    rescale, probs = torch.exp(row_max - new_max), torch.exp(scores - new_max)
    row_sum = row_sum * rescale + probs.sum(dim=-1, keepdim=True)
    out = out * rescale + probs @ v[start : start + block]
    row_max = new_max
out = out / row_sum

print(f"Largest score tile: {tuple(scores.shape)} vs full matrix: ({n}, {n})")
print(f"Max difference from standard attention: {(out - reference).abs().max().item():.1e}")

Tile điểm lớn nhất có kích thước 4,096 × 256, bằng một phần mười sáu ma trận 4,096 × 4,096; kết quả khác attention tiêu chuẩn tối đa 4.3e-07, tương đương độ lớn của sai số làm tròn FP32. Kernel thực tế cũng chia query thành các tile, mỗi tile thuộc một khối luồng GPU, rồi hợp nhất toàn bộ vòng lặp vào một kernel duy nhất để các tile không rời khỏi SRAM.

FlashAttention-2, -3 và -4#

Mỗi phiên bản hướng đến thế hệ GPU mới hơn. FlashAttention-2 (2023) tổ chức lại cách phân chia công việc giữa các luồng và chạy nhanh gần gấp đôi phiên bản gốc, đạt 50-73% thông lượng cực đại của A100. FlashAttention-3 (2024) sử dụng Tensor Core bất đồng bộ của H100 và hỗ trợ FP8, đạt 740 TFLOPs/s ở FP16 và gần 1.2 PFLOPs/s ở FP8. FlashAttention-4 (2026) hướng đến GPU Blackwell và báo cáo hiệu suất tối đa 1,613 TFLOPs/s ở BF16 trên B200, bằng 71% hiệu suất cực đại. Các kernel được phân phối trong thư viện mã nguồn mở flash-attention, hỗ trợ đầu vào FP16 và BF16; hàm scaled_dot_product_attention của PyTorch tự động chọn kernel FlashAttention-2 khi GPU và đầu vào hỗ trợ, nếu không sẽ chuyển sang các cách triển khai tiết kiệm bộ nhớ hoặc thông thường. SAM 2 của Meta, chạy trong package Ultralytics, tính attention trong bộ mã hóa ảnh Hiera và attention bộ nhớ thông qua hàm đó; do vậy, PyTorch định tuyến các lớp này đến FlashAttention bất cứ khi nào phần cứng và độ chính xác đầu vào cho phép.

  • Attention tiêu chuẩn: Cùng phép toán toán học đó, được tính bằng cách ghi toàn bộ ma trận điểm và xác suất vào HBM.
  • Attention thưa: Chỉ tính điểm cho các cặp query-key được chọn. Bài báo FlashAttention cũng giới thiệu biến thể thưa theo khối, bỏ qua các tile rỗng.
  • Attention tuyến tính: Thay softmax bằng một feature map để chi phí tăng tuyến tính theo độ dài, làm thay đổi đầu ra của model.
  • PagedAttention: Bộ quản lý bộ nhớ lưu KV cache thành các page kích thước cố định trong quá trình phục vụ model. Các kernel attention, bao gồm FlashAttention, đọc key và value từ những page đó.
  • Ring attention: Chia một chuỗi rất dài giữa nhiều thiết bị; mỗi thiết bị tính attention theo khối trên phần dữ liệu của mình trong khi các khối key-value di chuyển theo vòng.

Tác động đến huấn luyện và ngữ cảnh dài#

Vì bộ nhớ tăng tuyến tính theo độ dài chuỗi, FlashAttention giúp việc huấn luyện với cửa sổ ngữ cảnh dài trở nên khả thi. Bài báo gốc báo cáo tốc độ toàn quy trình tăng 15% cho BERT-large với độ dài chuỗi 512 so với kỷ lục huấn luyện MLPerf 1.1, tăng tốc 3× cho GPT-2 với độ dài chuỗi 1,024 và 2.4× trên benchmark Long Range Arena. Mức tiết kiệm tương tự cũng áp dụng cho thị giác, nơi Vision Transformer (ViT) hoặc Transformer khuếch tán chuyển ảnh và video độ phân giải cao thành các chuỗi token dài. Chuỗi dài hơn cũng cải thiện độ chính xác: bài báo ghi nhận những Transformer đầu tiên đạt kết quả cao hơn ngẫu nhiên trên Path-X, một tác vụ yêu cầu xác định xem hai điểm trong ảnh 128 × 128, được làm phẳng thành chuỗi 16,384 pixel, có được nối với nhau bằng một đường đi hay không.

Khám phá các giải pháp

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Chuyển hình ảnh từ drone và ảnh hàng không thành thông tin chuyên sâu theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Ứng dụng computer vision trong ngành hàng không vũ trụ với Ultralytics YOLO cho kiểm tra máy bay, phát hiện dị vật trên đường băng (FOD), vận hành mặt đất tại sân bay và phát hiện lỗi vật liệu composite.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

Bắt đầu hành trình hướng đến tương lai của machine learning