Độ trễ là bài toán hệ thống, không phải bài toán mô hình đơn lẻ
Một sai lầm phổ biến là xem độ trễ của Voice AI như một con số gắn với riêng mô hình ngôn ngữ, rồi dồn toàn bộ nỗ lực tối ưu vào đúng một tầng đó. Thực tế, độ trễ cảm nhận bởi người gọi là tổng tích lũy của nhiều tầng độc lập: thời gian phát hiện khách ngừng nói (endpointing), thời gian nhận dạng tiếng nói, thời gian mô hình ngôn ngữ sinh token đầu tiên, thời gian tổng hợp gói âm thanh đầu tiên, cộng thêm độ trễ mạng hai chiều. Mục tiêu dưới 0,8 giây mà BEEDONI theo đuổi không đến từ việc tối ưu cực đoan một tầng, mà từ việc thiết kế hạ tầng suy luận sao cho mọi tầng đều nhanh, chạy song song khi có thể, và không có tầng nào trở thành nút thắt bất ngờ dưới tải cao.
Bài viết này tập trung vào lớp hạ tầng suy luận (inference infrastructure) đứng phía sau các mô hình đã trình bày trong các bài viết trước về streaming ASR, TTS và pipeline Voice AI: cách phục vụ mô hình (model serving), cách gộp yêu cầu hiệu quả (batching), cách nén mô hình mà không đánh đổi chất lượng (quantization), và cách tăng tốc sinh văn bản (speculative decoding).
Lớp 1. Model Serving: tách mô hình khỏi logic nghiệp vụ
Nguyên tắc kiến trúc đầu tiên là tách biệt hoàn toàn tầng phục vụ mô hình (model serving) khỏi logic nghiệp vụ của tổng đài. Mỗi mô hình (ASR, LLM, TTS) chạy trên một cụm máy chủ suy luận chuyên biệt, giao tiếp qua gRPC với giao thức nhị phân hiệu quả hơn REST/JSON cho tải lượng lớn request tần suất cao. Việc tách biệt này cho phép co giãn (scale) độc lập từng tầng: khi lưu lượng cuộc gọi tăng đột biến, hệ thống có thể thêm máy chủ ASR mà không cần động tới cụm TTS, vì tỷ lệ tải giữa các tầng không nhất thiết tỷ lệ thuận.
GPU Pooling và chia sẻ tài nguyên
Một GPU hiện đại có đủ bộ nhớ và năng lực tính toán để phục vụ nhiều phiên suy luận đồng thời, nhưng chỉ khi được quản lý đúng cách. BEEDONI dùng một lớp điều phối (scheduler) đứng giữa yêu cầu suy luận và GPU vật lý, theo dõi mức sử dụng bộ nhớ và độ trễ hàng đợi hiện tại của từng GPU, định tuyến yêu cầu mới tới GPU còn khả năng xử lý nhanh nhất thay vì chia tải đơn giản theo vòng lặp (round-robin), vốn có thể dồn tải không đều khi các yêu cầu có độ dài xử lý khác nhau nhiều.
Lớp 2. Dynamic Batching: tăng throughput mà không tăng độ trễ cảm nhận
GPU đạt hiệu suất tính toán cao nhất khi xử lý theo lô (batch) thay vì từng yêu cầu đơn lẻ, vì chi phí khởi tạo và di chuyển dữ liệu được phân bổ cho nhiều yêu cầu cùng lúc. Vấn đề với hệ thống thời gian thực là các yêu cầu từ nhiều cuộc gọi không đến cùng một lúc. Chờ đủ một lô lớn mới xử lý sẽ làm tăng độ trễ của những yêu cầu đến sớm trong lô.
Dynamic batching giải quyết đánh đổi này bằng một cửa sổ chờ gộp rất ngắn, thường vài mili-giây tới vài chục mili-giây tùy tầng: hệ thống gộp mọi yêu cầu đến trong cửa sổ đó thành một lô, xử lý ngay khi cửa sổ đóng hoặc khi lô đã đầy, tùy điều kiện nào tới trước. Với các mô hình streaming như Conformer ASR, một kỹ thuật tinh vi hơn là continuous batching: thay vì gộp theo cửa sổ thời gian cố định, hệ thống liên tục thêm yêu cầu mới vào lô đang xử lý và loại bỏ yêu cầu đã hoàn thành ngay khi có thể, giữ cho GPU luôn bận rộn ở mức tải tối ưu.
| Chiến lược xử lý | Throughput (yêu cầu/giây) | Độ trễ p99 dưới tải cao | Độ phức tạp triển khai |
|---|---|---|---|
| Xử lý tuần tự, một yêu cầu một lúc | Thấp | Tăng tuyến tính theo tải | Thấp |
| Batching tĩnh, cửa sổ chờ cố định dài | Cao | Cao, vì yêu cầu đến sớm phải chờ | Trung bình |
| Dynamic/continuous batching, cửa sổ ngắn | Cao | Thấp và ổn định | Cao, cần scheduler tinh vi |
Lớp 3. Lượng tử hóa INT8: suy luận nhanh hơn mà không đổi mô hình
Phần lớn mô hình học sâu được huấn luyện ở độ chính xác dấu phẩy động 32-bit hoặc 16-bit (FP32/FP16). Lượng tử hóa (quantization) chuyển trọng số và phép tính của mô hình sang số nguyên 8-bit (INT8), giảm đáng kể lượng dữ liệu cần di chuyển qua bộ nhớ và tận dụng các đơn vị tính toán số nguyên chuyên biệt trên GPU hiện đại, thường cho tốc độ suy luận nhanh hơn hai đến bốn lần so với FP16 trên cùng phần cứng.
Thách thức là lượng tử hóa không đúng cách có thể làm giảm chất lượng mô hình đáng kể, đặc biệt với các lớp nhạy cảm như lớp dự đoán cao độ trong TTS, nơi sai số nhỏ tích lũy thành lỗi thanh điệu nghe được. BEEDONI áp dụng post-training quantization có calibration: chạy mô hình đã huấn luyện qua một tập dữ liệu đại diện để xác định phạm vi giá trị thực tế của từng lớp, từ đó chọn tỷ lệ lượng tử hóa (scale factor) tối ưu cho từng lớp riêng biệt, thay vì áp một tỷ lệ chung cho toàn mô hình. Các lớp đặc biệt nhạy cảm, như lớp đầu ra cuối cùng ảnh hưởng trực tiếp tới đường nét F0, có thể được giữ nguyên ở FP16 (mixed-precision quantization) để bảo toàn chất lượng cảm nhận.
Mô hình gốc FP16 ──▶ Chạy qua tập calibration (vài trăm mẫu đại diện)
│
▼
Xác định scale factor tối ưu cho mỗi lớp
│
▼
Lớp thường (encoder, convolution) ──▶ INT8
Lớp nhạy cảm (pitch predictor, output head) ──▶ giữ FP16
│
▼
Đánh giá lại trên golden set trước khi triển khaiLớp 4. Speculative Decoding: tăng tốc sinh văn bản tuần tự
Mô hình ngôn ngữ sinh văn bản theo cơ chế tự hồi quy (autoregressive): mỗi token mới được sinh ra phải chờ token trước đó hoàn tất, một quá trình vốn dĩ tuần tự và khó song song hóa trực tiếp. Speculative decoding là kỹ thuật lách qua giới hạn này: một mô hình nháp (draft model) nhỏ hơn, nhanh hơn nhiều lần, đề xuất trước một chuỗi vài token tiếp theo; mô hình chính sau đó xác thực toàn bộ chuỗi đề xuất này trong một lượt tính toán song song duy nhất, chấp nhận các token đúng và chỉ sinh lại từ điểm sai lệch đầu tiên nếu có.
Vì bước xác thực hàng loạt của mô hình chính tận dụng tốt khả năng tính toán song song của GPU (vốn dĩ bị lãng phí khi sinh từng token một), tổng thời gian sinh ra một câu trả lời hoàn chỉnh giảm đáng kể khi mô hình nháp đoán đúng phần lớn thời gian, điều thường xảy ra với các đoạn hội thoại có cấu trúc lặp lại và dự đoán được cao, như câu xác nhận lịch hẹn hay câu chào tiêu chuẩn trong kịch bản chăm sóc khách hàng.
“Độ trễ dưới 0,8 giây không phải một con số marketing. Đó là ngân sách được chia nhỏ cho từng tầng hạ tầng, và mỗi tầng phải tự chứng minh phần đóng góp của mình vào ngân sách đó bằng số liệu đo thật, không phải ước lượng lý thuyết.”
Kết luận: hạ tầng là nơi nghiên cứu mô hình gặp thực tế vận hành
Một mô hình ASR có WER thấp nhất, một mô hình TTS nghe tự nhiên nhất, nếu chạy trên một hạ tầng suy luận thiết kế kém, vẫn sẽ tạo ra trải nghiệm hội thoại chậm chạp, phá vỡ toàn bộ nỗ lực nghiên cứu ngôn ngữ học và kiến trúc mô hình đã trình bày trong các bài viết trước. Model serving tách biệt, dynamic batching, lượng tử hóa có kiểm soát và speculative decoding là bốn đòn bẩy hạ tầng mà BEEDONI kết hợp để đảm bảo chất lượng nghiên cứu được chuyển hóa trọn vẹn thành trải nghiệm thực tế dưới 0,8 giây trên Tổng đài Voice AI, nền tảng bắt buộc trước khi giải quyết bài toán cuối cùng của chuỗi nghiên cứu này: cơ chế ngắt lời thông minh Smart Barge-in.

