D · Systems foundation
Concurrency, hàng đợi và vòng đời dữ liệu ở host
Điều phối luồng xử lý trên CPU (event loop, threads, queues) để nhận mạng, chuẩn bị dữ liệu và phát lệnh xuống GPU không bị nghẽn.
1Định nghĩa
Quản lý đồng thời ở phía host (CPU và hệ điều hành) là phần khung điều khiển bao quanh GPU: nhận kết nối mạng từ gateway, chạy tokenizer, gom batch ở scheduler, phát lệnh xuống runtime và stream từng mảnh chữ về client.
Nếu luồng CPU bị chặn (block) bởi một tác vụ nặng như giải mã JSON hay ghép chuỗi, GPU sẽ rơi vào cảnh đứng chờ lệnh (GPU starvation) dù phần cứng tính toán rất nhanh. Vì vậy, inference server phải tách bạch vòng lặp sự kiện mạng (async event loop) với các hàng đợi công việc có giới hạn (bounded queues) và quản lý chặt vòng đời vùng nhớ (pinned host memory) cho tới khi GPU báo đã đọc xong.
Ví dụ đời thường: Quản lý đồng thời ở phía CPU (host) giống như đội ngũ nhân viên chạy bàn và thu ngân phối hợp với một đầu bếp siêu tốc (GPU). Nếu thu ngân vừa nhận đơn vừa tự đi gọt trái cây làm kẹt quầy, đầu bếp trong bếp sẽ đứng khoanh tay chờ phiếu gọi món; vì vậy quầy thu ngân chỉ làm việc nhận đơn, xếp khay theo hàng đợi rồi đẩy liên tục vào cửa bếp.
2Luồng
- Nhận sự kiện network
Đọc input hoặc cancellation.
- Chuẩn bị và xếp việc
Tokenize rồi chuyển queue.
- Phát device work
Runtime quản lý buffers và dependencies.
- Xử lý completion
Gửi output và trả tài nguyên đúng lúc.
Mã Mermaid
flowchart TD
step1["Nhận sự kiện network"]
step2["Chuẩn bị và xếp việc"]
step3["Phát device work"]
step4["Xử lý completion"]
step1 --> step2
step2 --> step3
step3 --> step4 3Giải pháp
Dùng queues giới hạn, async input/output và tái dùng buffers. Tách công việc CPU nặng khỏi event loop khi nó chặn các request khác.
Quản lý ownership rõ: buffer vẫn có thể đang được device dùng dù host đã phát xong lệnh.
4Profiling
- Host time và contention
Profile chuẩn bị input, khóa và serialization; so với device gaps.
- Queue và lifetime
Stress cancellation/concurrency rồi kiểm tra memory không tăng không giới hạn.
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ụ
Tokenizer chậm
Một event loop chạy tokenization dài có thể chậm cả stream của các request khác.
Buffer dùng lại quá sớm
Dữ liệu một batch có thể bị ghi đè trước khi device đọc xong; cần completion dependency.
6Thuật ngữ
- Event loop
- Vòng xử lý các sự kiện sẵn sàng mà không cần một thread chờ riêng cho từng việc.
- Bounded queue
- Hàng đợi có giới hạn để kiểm soát memory và backpressure.
Glossary (5)
- Central Processing Unit
- Bộ xử lý trung tâm chạy phần host, chuẩn bị dữ liệu và điều khiển chương trình.
- Tokenizer
- Bộ chuyển đổi văn bản và chuỗi mã token theo bảng từ vựng.
- 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.
- Batch
- Nhóm công việc hoặc mẫu được xử lý trong một lượt tính.