OpenArchLabOpen Architecture — From Models to Systems

L3 · Execution software

Tầng thực thi nối bộ điều phối với thiết bị tính toán

Tầng thực thi điều phối bộ nhớ đệm, xếp hàng các lệnh tính toán (streams/graphs) và gọi kernel xuống thiết bị phần cứng.

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

1Định nghĩa

Runtime là tầng thực thi nằm giữa bộ lập lịch (scheduler) và các hàm tính toán (kernels) trên thiết bị. Sau khi scheduler chốt danh sách token cho bước hiện tại, runtime chịu trách nhiệm chuẩn bị tensor đầu vào, ánh xạ địa chỉ KV cache và phát lệnh chạy mô hình xuống phần cứng.

Để GPU hoạt động liên tục không bị ngắt quãng bởi CPU, runtime phát lệnh bất đồng bộ qua các luồng thực thi (execution streams), tái sử dụng vùng nhớ tạm (workspace buffers) và dùng kỹ thuật ghi sẵn đồ thị lệnh (như CUDA Graph) để phát cả chuỗi hàng trăm thao tác chỉ bằng một lời gọi từ host.

Ví dụ đời thường: Runtime giống như người quản đốc đứng điều hành trực tiếp dưới sàn nhà máy. Sau khi phòng kế hoạch (scheduler) gửi danh sách đơn hàng của ca xuống, quản đốc lo việc dọn sẵn mặt bằng chứa hàng, xếp lịch từng dây chuyền chạy nối tiếp nhau không nghỉ để dàn máy móc đắt tiền không bao giờ phải đứng không chờ người bấm nút.

2Luồng

Sơ đồ luồng (4 bước)
  1. Nhóm công việc đã chọn

    Có token và bảng ánh xạ cache.

  2. Chuẩn bị buffers

    Sắp dữ liệu đúng shape và vị trí.

  3. Phát kernels và chờ phụ thuộc

    Cho thiết bị tính theo thứ tự đúng.

  4. Trả điểm số

    Chuyển kết quả tới phần chọn token.

Mã Mermaid
flowchart TD
  step1["Nhóm công việc đã chọn"]
  step2["Chuẩn bị buffers"]
  step3["Phát kernels và chờ phụ thuộc"]
  step4["Trả điểm số"]
  step1 --> step2
  step2 --> step3
  step3 --> step4

3Giải pháp

Dùng lại buffers thay vì cấp phát mỗi bước và dùng graph replay khi shapes phù hợp giúp giảm khoảng trống giữa kernels. Phải có đường chạy linh hoạt cho shapes chưa được capture.

Tránh các lần chuyển dữ liệu hoặc đồng bộ toàn thiết bị không cần thiết. Kiểm tra lifetime: không tái dùng buffer trước khi tác vụ cũ đã xong.

4Profiling

  • Timeline host và thiết bị

    Tìm khoảng trống giữa kernels; xem host đang chuẩn bị, phát lệnh hay chờ kết quả.

  • Warmup và trạng thái ổn định

    Báo riêng capture/khởi động với chi phí mỗi bước khi đã sẵn sàng.

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 nhóm ổn định

Graph replay có thể giảm việc host phát lại nhiều lệnh nhỏ mỗi token.

Nhóm request thay đổi liên tục

Runtime dùng các nhóm shape đã chuẩn bị hoặc đường fallback; cần đo tần suất fallback.

6Thuật ngữ

Buffer
Vùng bộ nhớ giữ dữ liệu đầu vào, trung gian hoặc kết quả.
Stream
Hàng lệnh trên thiết bị, có quy tắc thứ tự thực thi.
Graph replay
Chạy lại một chuỗi thao tác đã được ghi trước để giảm chi phí phát lệnh từ host.
Glossary (7)
Model weights
Các tham số số học được học và lưu trong checkpoint.
Cache
Bộ nhớ giữ kết quả có thể dùng lại; trong attention thường giữ key/value vectors.
Logits
Điểm số chưa chuẩn hóa cho các token ứng viên trước khi chọn token.
Runtime
Phần mềm quản lý việc thực thi, buffers và phụ thuộc giữa phép toán.
Warmup
Chạy chuẩn bị để hoàn tất khởi tạo, compilation/capture hoặc ổn định execution trước đo.
Batch
Nhóm công việc hoặc mẫu được xử lý trong một lượt tính.
Tensor shape
Kích thước các chiều của tensor; ảnh hưởng layout, kernel và memory.

7Bài liên quan

8Nguồn