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ớ.
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
- Runtime phát kernel
Thiết bị nhận công việc.
- Đọc qua memory hierarchy
Dữ liệu đi từ bộ nhớ lớn tới nơi tính.
- Các units tính song song
Thực hiện phép toán theo tiles/threads.
- 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.