OpenArchLabOpen Architecture — From Models to Systems

L4 · Hardware

Phần tính toán của accelerator và giới hạn hiệu năng

Bộ tăng tốc phần cứng xử lý song song hàng nghìn phép tính ma trận, bị giới hạn bởi năng lực tính toán hoặc băng thông bộ nhớ.

LESSON ID gpu GROUP Kiến trúc Inference
Mục lục bài học

1Định nghĩa

Accelerator (phổ biến nhất là GPU) là phần cứng chuyên dụng chứa hàng nghìn nhân tính toán song song để thực thi các kernels của mô hình. Khác với CPU tối ưu cho luồng điều khiển tuần tự, GPU được thiết kế để nhân ma trận lớn và xử lý cùng một phép toán trên hàng triệu phần tử dữ liệu cùng lúc.

Hiệu năng của một tác vụ trên GPU luôn bị chặn bởi một trong hai trần vật lý: tốc độ tính toán tối đa (FLOP/s của Tensor Cores) hoặc tốc độ truyền dữ liệu từ bộ nhớ HBM vào chip (memory bandwidth). Tỷ số giữa số phép tính và số byte phải đọc/ghi (arithmetic intensity) quyết định tác vụ đang nghẽn ở tính toán (như prefill) hay nghẽn ở băng thông bộ nhớ (như decode).

Ví dụ đời thường: Nếu CPU giống như một chiếc xe thể thao tốc độ cao chỉ chở được 2 người để xử lý nhanh các việc lặt vặt, thì GPU giống như một đoàn tàu cao tốc hàng chục toa chở hàng nghìn hành khách cùng lúc. Tốc độ phục vụ của đoàn tàu chỉ bị giới hạn bởi hai thứ: sức kéo của đầu máy (năng lực tính toán) hoặc tốc độ hành khách bước qua cửa ga lên tàu (băng thông bộ nhớ HBM).

2Luồng

Sơ đồ luồng (4 bước)
  1. Runtime phát kernel

    Thiết bị nhận công việc.

  2. Đọc qua memory hierarchy

    Dữ liệu đi từ bộ nhớ lớn tới nơi tính.

  3. Các units tính song song

    Thực hiện phép toán theo tiles/threads.

  4. Ghi kết quả và tiếp tục

    Kết quả phục vụ bước model kế tiếp.

Mã Mermaid
flowchart TD
  step1["Runtime phát kernel"]
  step2["Đọc qua memory hierarchy"]
  step3["Các units tính song song"]
  step4["Ghi kết quả và tiếp tục"]
  step1 --> step2
  step2 --> step3
  step3 --> step4

3Giải pháp

Dùng counters và timeline để biết kernel bị giới hạn bởi compute hay memory. Tối ưu tiling và reuse khi traffic lớn; chọn format phù hợp khi compute là giới hạn.

Không dùng phần trăm utilization trung bình để kết luận mọi kernels hiệu quả. Thiết bị có thể rất bận nhưng làm nhiều công việc dư.

4Profiling

  • Bandwidth và compute đạt được

    So mức đo được với giới hạn phần cứng, tránh dùng peak quảng bá làm kết quả thực tế.

  • Khoảng trống execution

    Tìm chờ host, chờ network và memory dependency trong timeline.

Mẹo đo lường: ghim số liệu trên workload thật, ghi cả p50/p95/p99 thay vì chỉ trung bình, và luôn ghi lại điều kiện chạy (batch, cache, đồng thời, phần cứng) trước và sau khi tối ưu. Số đo thiếu điều kiện chạy thì không so sánh được.

5Ví dụ

Decode với một request

Có ít phép tính mỗi lượt đọc weights; bandwidth có thể là điểm nghẽn.

Prefill nhiều token

Nhiều token dùng lại weights trong phép nhân ma trận; phần tính toán có thể được sử dụng hiệu quả hơn.

6Thuật ngữ

Arithmetic intensity
Số phép tính thực hiện trên mỗi byte phải đọc hoặc ghi.
Memory bandwidth
Lượng dữ liệu bộ nhớ có thể chuyển trong một đơn vị thời gian.
Occupancy
Mức sử dụng tài nguyên cho các nhóm threads đang có mặt, không đồng nghĩa tốc độ tối đa.
Glossary (4)
Model weights
Các tham số số học được học và lưu trong checkpoint.
Kernel
Hàm tính toán chạy trên thiết bị; thường xử lý nhiều phần tử song song.
Runtime
Phần mềm quản lý việc thực thi, buffers và phụ thuộc giữa phép toán.
Host
Phần chương trình điều khiển thiết bị, thường chạy trên bộ xử lý trung tâm.

7Bài liên quan

8Nguồn