Tin tức tiếng Việt
Mới nhất
AI & Công nghệ

Mở rộng FlashAttention, huấn luyện đa GPU và lượng tử hóa trọng số

Trần kỹ thuật tòa nhà mang tính minh họa với khay cáp và đường ống, không phải trung tâm dữ liệu.
Trần kỹ thuật tòa nhà mang tính minh họa với khay cáp và đường ống, không phải trung tâm dữ liệu.

Hạ tầng AI hiện đại dựa vào các kernel attention nhận biết phần cứng, song song hóa đa GPU phân tán và lượng tử hóa số bit thấp để huấn luyện và phục vụ các mô hình khổng lồ một cách hiệu quả. Ba kỹ thuật này thu hẹp khoảng cách giữa quy mô mô hình lý thuyết và giới hạn vật lý của GPU.

1. FlashAttention-2 và FlashAttention-3 trên GPU Hopper (H100)

Mặc dù FlashAttention ban đầu đã giải quyết được nút thắt băng thông bộ nhớ, nó vẫn để lại một phần đáng kể hiệu năng tính toán thô chưa được tận dụng trên các GPU hiện đại. FlashAttention-2 (2023) và FlashAttention-3 (2024) đã tái thiết kế cách các luồng GPU và các engine phần cứng phối hợp với nhau.

  • FlashAttention-2 (Phân chia công việc tốt hơn).
  • Giảm các phép toán không phải Matmul. Tensor Core của GPU thực hiện phép nhân ma trận (matmul) nhanh hơn khoảng 16× so với các CUDA core tiêu chuẩn thực hiện các phép toán vô hướng như rescaling Softmax. FlashAttention-2 đã viết lại phép toán Softmax trực tuyến để trì hoãn việc rescaling đến tận cuối vòng lặp trong, cắt giảm các lệnh non-matmul chậm.
  • Song song hóa theo độ dài chuỗi. Phiên bản ban đầu chủ yếu song song hóa công việc theo kích thước batch và các attention head, khiến các nhân GPU bị bỏ trống khi huấn luyện với chuỗi dài và kích thước batch nhỏ. FlashAttention-2 bổ sung tính song song theo chiều độ dài chuỗi và đảo thứ tự vòng lặp (vòng lặp ngoài theo các khối Q, vòng lặp trong theo K và V), giảm thiểu các lượt ghi bộ nhớ dùng chung chậm.
  • FlashAttention-3 (Khai thác phần cứng Hopper H100).
  • Di chuyển dữ liệu bất đồng bộ (TMA). Kiến trúc Hopper của NVIDIA giới thiệu Tensor Memory Accelerator (TMA), một đơn vị phần cứng chuyên dụng sao chép dữ liệu giữa HBM toàn cục và SRAM trên chip mà không chiếm dụng các luồng tính toán.
  • Chuyên môn hóa Warp (mô hình Producer-Consumer). FlashAttention-3 chia các warp của GPU (nhóm 32 luồng) thành các vai trò chuyên biệt. Các warp Producer dùng TMA để nạp trước các tile K và V sắp tới vào SRAM, trong khi các warp Consumer đưa các tile hiện tại vào Tensor Core (lệnh WGMMA). Điều này chồng lấp việc truyền bộ nhớ với phép toán ma trận và các phép tính Softmax cùng một lúc.
  • Hỗ trợ độ chính xác thấp FP8. FlashAttention-3 mở khóa các Tensor Core FP8 của Hopper, tăng gấp đôi thông lượng thô so với FP16. Để tránh mất độ chính xác do các activation ngoại lai trong FP8, nó sử dụng lượng tử hóa theo khối (scale độc lập từng tile nhỏ) và xử lý incoherent (nhân Q và K với các ma trận trực giao ngẫu nhiên để làm phẳng các giá trị cực trị trước khi lượng tử hóa).

2. Các chiến lược mở rộng đa GPU (Song song 3D)

Khi một mô hình có hàng chục hoặc hàng trăm tỷ tham số, trọng số, gradient và trạng thái optimizer của nó vượt quá VRAM của một GPU đơn lẻ. Huấn luyện quy mô lớn kết hợp ba chiến lược song song hóa riêng biệt - thường gọi là Song song 3D (3D Parallelism).

Chiến lượcCách phân chia công việcNút thắt truyền thôngTrường hợp sử dụng tốt nhất
Song song dữ liệu (DP / FSDP)Nhân bản mô hình trên các GPU; mỗi GPU xử lý một batch dữ liệu khác nhau.All-Reduce / All-Gather gradient và trọng số sharded trên các GPU.Mở rộng thông lượng huấn luyện trên hàng trăm GPU khi các layer vừa trên một thiết bị.
Song song Tensor (TP)Chia từng ma trận trọng số (layer) theo chiều dọc hoặc ngang trên các GPU.All-Reduce sau mỗi layer Transformer (đòi hỏi NVLink cực nhanh).Các layer khổng lồ không vừa trên một GPU, được giữ nghiêm ngặt trong một node máy chủ 8 GPU.
Song song Pipeline (PP)Chia mô hình theo độ sâu, đặt các nhóm layer tuần tự trên các GPU khác nhau.Truyền activation điểm-điểm (P2P) giữa các giai đoạn pipeline.Mở rộng trên nhiều node máy chủ kết nối bằng mạng InfiniBand/Ethernet chậm hơn.
  • Song song dữ liệu & ZeRO / FSDP. Trong Song song dữ liệu tiêu chuẩn, mỗi GPU giữ một bản sao đầy đủ của mô hình, gây lãng phí bộ nhớ. Các framework hiện đại dùng ZeRO (Zero Redundancy Optimizer) hoặc PyTorch FSDP (Fully Sharded Data Parallel), vốn shard tham số, gradient và trạng thái optimizer trên tất cả các GPU, gather trọng số của từng layer ngay kịp thời cho việc tính toán.
  • Song song Tensor (trong layer). Thay vì nhân bản một phép nhân ma trận feed-forward khổng lồ Y = XW, Song song Tensor chia W theo cột trên các GPU (W = [W_1, W_2]). Mỗi GPU tính một nửa đầu ra của mình đồng thời và trao đổi kết quả từng phần qua NVLink tốc độ cao (900 GB/s trên H100).
  • Song song Pipeline (giữa các layer). Layer 1-8 nằm trên GPU 1, Layer 9-16 trên GPU 2, v.v. Để tránh các GPU phía sau phải ngồi chờ trong khi các layer trước chưa xong ("bong bóng pipeline"), các framework chia mỗi batch huấn luyện thành các micro-batch nhỏ hơn để tất cả GPU luôn bận rộn theo kiểu dây chuyền lắp ráp.

3. Lượng tử hóa (GPTQ, AWQ) và các kernel giải lượng tử tức thời

Trong suy luận (tạo token từng cái một), các Mô hình Ngôn ngữ Lớn bị giới hạn bởi băng thông bộ nhớ, không phải giới hạn tính toán. Việc nạp 70 tỷ tham số 16-bit (140 GB) từ VRAM chỉ để tạo một token duy nhất khiến Tensor Core phải chờ truyền bộ nhớ. Lượng tử hóa nén trọng số từ số thực 16-bit xuống số nguyên 4-bit (INT4), cắt giảm dung lượng bộ nhớ và thời gian truyền gần 4×.

  • GPTQ (Lượng tử hóa sau huấn luyện qua hiệu chuẩn Hessian).
  • Làm tròn ngây thơ trọng số 16-bit xuống số nguyên 4-bit phá hủy độ chính xác của mô hình. GPTQ đưa một tập dữ liệu hiệu chuẩn nhỏ qua mô hình và dùng toán bậc hai (ma trận Hessian nghịch đảo) để đo độ nhạy của từng trọng số.
  • Nó lượng tử hóa trọng số theo từng cột; bất cứ khi nào làm tròn một trọng số gây ra sai số, GPTQ điều chỉnh toán học các trọng số chưa lượng tử hóa còn lại trong hàng đó để triệt tiêu sai số.
  • AWQ (Lượng tử hóa trọng số nhận biết activation).
  • Các nhà nghiên cứu phát hiện rằng khoảng 0,1% đến 1% kênh trọng số quan trọng hơn hẳn phần còn lại vì chúng nhân với các giá trị activation lớn.
  • Thay vì giữ các trọng số then chốt đó ở dạng 16-bit (tạo ra bố cục bộ nhớ hỗn hợp độ chính xác lộn xộn và chậm), AWQ scale tăng các kênh trọng số nổi bật đó trước khi lượng tử hóa và scale giảm các activation đầu vào tương ứng lúc chạy, bảo toàn độ chính xác trong khi giữ 100% trọng số ở định dạng 4-bit thống nhất.
  • Cách các kernel CUDA tùy biến giải lượng tử tức thời (W4A16).
  • GPU không thể nhân trực tiếp một activation 16-bit (FP16) với một trọng số nguyên 4-bit (INT4). Thay vào đó, các kernel suy luận chuyên dụng (như Marlin hoặc ExLlama) thực hiện thực thi W4A16 (trọng số 4-bit, activation 16-bit):
  • 1. Đọc HBM nén: Kernel nạp các trọng số 4-bit đóng gói (tám giá trị INT4 gói trong một số nguyên 32-bit) từ VRAM toàn cục chậm, cắt giảm 4× mức sử dụng băng thông bộ nhớ.
  • 2. Giải gói ở mức thanh ghi: Bên trong các thanh ghi siêu nhanh của GPU, kernel CUDA dùng các phép dịch bit nhanh (>>) và bitmask (&) để giải gói các số nguyên INT4 và áp dụng các hệ số scale/zero-point đã lưu để chuyển chúng trở lại thành giá trị FP16 tức thời.
  • 3. Toán Tensor Core ngay lập tức: Các trọng số FP16 vừa được giải gói được đưa thẳng vào Tensor Core cùng với các activation FP16 mà không bao giờ ghi trọng số 16-bit đã mở rộng trở lại VRAM.

Tin tức khác: AI & Công nghệ