
Đừng đo token/giây: 5 con số quyết định độ trễ AI thật
40 token/giây trong notebook nhưng 11 giây với user thật. Năm số cần đo thay vào đó, kèm ngưỡng p95 và error rate để quyết định đạt hay không đạt.
Model của bạn chạy 40 token/giây trong notebook. Deploy xong, một request của user mất 11 giây từ lúc click tới lúc câu trả lời hiện ra.
Con số đầu không sai — nó chỉ đo đúng một mắt trong chuỗi, và thường là mắt nhanh nhất. Dưới đây là năm số bạn nên đo thay vào đó, cùng ngưỡng để quyết định.
Token/giây đo một mắt trong chuỗi
Tác giả bài gốc mô tả chuỗi handoff của một feature AI: browser, edge, lớp auth, API của bạn, queue, server, model provider, lớp persistence, rồi đường về. Nhận định của họ: "A token-per-second number measures exactly one link in that chain, and it is usually the fastest one. The rest of the chain is where latency, cost, and failure actually live."
Đó là lý do khoảng cách 40 token/giây và 11 giây không phải bug của model. Nó là hệ quả của việc đo sai chỗ — và đo sai chỗ thì tối ưu cũng sai chỗ.
Năm số cần có trước khi tin một endpoint
Script kiểm tra trong bài đo năm thứ, chạy bằng httpx bất đồng bộ:
- Cold start — lần gọi đầu sau khi idle, đo riêng.
- Warm p50 — trung vị của 20 lần gọi tuần tự.
- Warm p95 — đuôi của cùng 20 lần đó.
- Concurrent p95 — p95 của 10 request chạy song song qua
asyncio.gather. - Error rate — tỉ lệ status ≥ 400 hoặc request lỗi hẳn, tính trên cả hai nhóm gọi.
Điểm quan trọng là script không in ra một điểm số. Nó so với một budget khai báo sẵn trong code: p95_seconds: 3.0 và error_rate: 0.01. Đạt hay không đạt, không có vùng xám.
Muốn cảm nhận nhanh trước khi viết script, một lệnh curl với -w "%{time_total}s" lên endpoint chat đã đủ để thấy cold start.
Chạy ba lần, mỗi lần trả lời một câu khác nhau
Tác giả đề nghị chạy cùng bộ đo trên ba môi trường: model local, một server free, và endpoint production đang trả phí. Cách đọc kết quả: lần đầu cho biết rất ít, lần thứ hai cho biết user thật sẽ cảm nhận gì, lần thứ ba cho biết bạn đang trả tiền cho cái gì.
Nếu môi trường yếu nhất vẫn đạt budget, bạn chưa cần tier đắt hơn. Nếu không đạt, theo bài viết chỉ có hai lựa chọn: mua thêm compute để che vấn đề, hoặc sửa chuỗi.
Chỗ hỏng thường không phải model
Kinh nghiệm tác giả nêu thẳng: lỗi gần như không bao giờ nằm ở model. Nó nằm ở cái queue bạn thêm vào để tránh timeout, và ở wrapper streaming buffer toàn bộ response trước khi gửi byte đầu tiên. Cả hai đều vô hình với benchmark token/giây, và cả hai đều là thứ user cảm nhận trực tiếp.
Lưu ý về nguồn: bài gốc có disclosure rằng nó được viết trong khuôn khổ product outreach của một vendor, nên hãy lấy phần phương pháp đo và bỏ phần khuyến nghị công cụ.
Việc nên làm tuần này: chọn một feature AI đang chạy production, khai báo budget p95 và error rate cho nó, rồi đo. Nếu bạn chưa có con số p95 cho feature đó, bạn chưa biết nó nhanh hay chậm — bạn chỉ biết model nhanh.
Không spam, hủy đăng ký bất kỳ lúc nào.


