Hạ tầng phục vụ LLM inference

Chủ đề Dành cho thành viên
Bài đọc thử: 1/3 · còn 2 bài miễn phí · Xem gói thành viên

Bài toán

Phục vụ LLM giống một dịch vụ web ở chỗ cần scale theo tải, deploy phiên bản mới an toàn và phục hồi khi một process chết; nhưng ba đặc điểm làm các công cụ quen thuộc hỏng:

  • Khởi động rất đắt: một replica phải được xếp lên GPU, tải hàng chục tới hàng trăm GB weight, nạp vào HBM, compile kernel, capture CUDA graph. Cold start tính bằng phút, nên autoscaling phản ứng không kịp đỉnh, rollback về model cũ cũng phải chờ, và một worker chết để lại khoảng trống dài.
  • Tín hiệu tải dễ đánh lừa: engine dùng continuous batching nên áp lực dồn vào hàng đợi và latency tổng; GPU utilization và latency token đầu đo ở engine có thể trông khoẻ trong khi user chờ vài giây.
  • Lỗi chất lượng không phải lỗi HTTP: một cấu hình hay compiler sai làm câu trả lời tệ đi mà vẫn trả 200, và mỗi loại phần cứng có thể sai theo cách riêng.

Trang này giữ phần hạ tầng phục vụ (scale, rollout, phục hồi, kiểm chất lượng ở production). Training, tối ưu model và kiến trúc agent nằm ngoài phạm vi; index vector cho RAG ở Vector search và index ANN; cluster Kubernetes cho job training lớn ở OpenAI 2021 và Nền tảng nội bộ cho service (đường ray chung).

Diễn tiến theo thời gian

  • 2023→2025 · Mercari (phía dùng API): dịch listing bằng LLM của nhà cung cấp: Azure PTU (capacity trả trước, bội số 50) với tràn sang pay-as-you-go khi PTU báo rate limit, hai endpoint làm code phức tạp; chuyển Gemini trên GCP vì rate limit pay-as-you-go cao, bỏ được capacity đặt trước. Model bị cho nghỉ khoảng một năm sau khi ra; đổi sang bản vá "giống hệt" không A/B làm latency tăng vì nhiều khách cùng chuyển. Lỗi đã biết từ nút báo cáo của người dùng thành bộ eval offline. Mercari 2025
  • 2024 · Zillow: guardrail Fair Housing cho trợ lý LLM: service riêng gồm stop list và classifier BERT chạy cả trước và sau LLM, cộng chỉ dẫn trong prompt; prompt một mình từ chối cả câu hợp lệ, stop list không hiểu ngữ cảnh. Zillow 2024
  • 2025 · Anthropic: ba lỗi hạ tầng chồng lên nhau trên ba loại phần cứng (Trainium, GPU, TPU): định tuyến sai sang pool context 1M (một thay đổi load balancing thường lệ đẩy từ 0,8% lên 16% request ở giờ tệ nhất, định tuyến sticky làm người đã dính thì dính tiếp), cấu hình runtime TPU sinh token hiếm, lỗi approximate top-k của XLA lộ ra khi gỡ một workaround cũ. Benchmark, eval và canary đều không bắt được; khắc phục bằng eval chất lượng chạy liên tục trên production và coi phản hồi người dùng là tín hiệu giám sát. Anthropic 2025
  • 2025 · WhatsApp: Private Processing chạy LLM trên chat trong TEE (CVM, GPU confidential): RA-TLS đối chiếu số đo với ledger bên thứ ba, OHTTP qua relay ngoài và credential ẩn danh để không nhắm được một user, stateless, chỉ log theo danh sách trắng. Suy luận phải thiết kế quanh việc nhà vận hành không được xem request. WhatsApp 2025
  • 2026 · NVIDIA (nhà cung cấp), 5/2026: rút ngắn cold start bằng checkpoint/restore (CRIU + cuda-checkpoint) trên Kubernetes: worker dừng ở trạng thái đã nạp engine nhưng chưa kết nối control plane; bỏ KV cache khỏi checkpoint (190 GiB → 6 GiB cho model nhỏ), restore CRIU song song và bằng AIO (gpt-oss-120b 119 → 15 giây), tách weight sang GPU Memory Service để đi kênh nhanh riêng; start nhanh hơn 21 lần trong thử nghiệm. NVIDIA 2026
  • 2026 · Together AI (nhà cung cấp), 7/2026: autoscaling theo metric của engine. Thí nghiệm trên cùng tải: chỉ policy theo inflight_requests scale được; policy theo TTFT p95 và theo GPU utilization không scale trong khi p95 phía client 3–5 giây. Cửa sổ scale lên ngắn, xuống dài (mặc định 5 phút) vì scale nhầm xuống phải trả cold start; khi đỉnh nhanh hơn cold start thì chỉ còn dự trữ min_replicas. Together AI 2026
  • 2026 · NVIDIA (nhà cung cấp), 8/2026: shadow engine: engine thứ hai khởi tạo sẵn trên cùng GPU, dùng chung weight qua GPU Memory Service, không giữ KV cache; bầu active bằng flock mà kernel tự nhả khi process chết. Hai worker GLM-5.2, giết một worker: 283 giây (cold restart) so với 7,3 giây; chỉ áp dụng cho lỗi process, không cho lỗi node hay phần cứng. NVIDIA 2026
  • 2026 · Together AI (nhà cung cấp), 9/2026: rollout model theo canary với thứ tự cố định trong mỗi bậc (scale target → health gate → dời traffic → chờ routing hội tụ → drain source → metric gate), gate so sánh p95 router của target với source, cửa sổ chờ ≥ window + 90 giây trễ ingest; gate hỏng thì dừng chờ người, không tự abort. Lần chạy thật bắt hồi quy p95 137% ở 10% traffic (model mới dài lời hơn), huỷ và chạy ngược với 0 request lỗi trên 6.800. Together AI 2026
  • 2026 · Zillow: phục vụ mô hình hành vi dạng transformer trên CPU: bản đầu gần 8 s/request vì nhiều worker tranh lõi; một luồng mỗi worker, chỉ tính trên token hợp lệ và KV cache đưa xuống khoảng 300 ms. Zillow 2026

Các lựa chọn và đánh đổi

Lựa chọn Được Mất Nguồn
Scale theo concurrency (in-flight) Tín hiệu dẫn trước, đo đúng áp lực hàng đợi Phải biết điểm bão hoà của một replica để đặt target Together AI 2026
Scale theo SLO (TTFT, e2e) Bám đúng lời hứa với user Tín hiệu trễ; TTFT đo ở engine có thể không phản ánh hàng đợi Together AI 2026
Scale theo GPU/token utilization Rẻ nhất Ít khoảng đệm; GPU bận không có nghĩa là latency khoẻ Together AI 2026
Dự trữ min_replicas Đỡ được đỉnh nhanh hơn cold start Trả tiền GPU ngồi chờ Together AI 2026
Checkpoint/restore worker Start nhanh hơn nhiều lần Ứng dụng phải hợp tác (quiesce/resume); cần storage nhanh; một phần còn là prototype NVIDIA 2026
Shadow engine trên cùng GPU Phục hồi lỗi process trong vài giây Tốn context, graph, buffer thường trực; không phủ lỗi node/phần cứng; KV cache rỗng sau cutover NVIDIA 2026
Canary có metric gate, dừng chờ người Bán kính ảnh hưởng dừng ở phần trăm canary; người phân biệt hồi quy với thay đổi có chủ đích Chậm hơn auto-rollback; cần người trực Together AI 2026
Eval chất lượng liên tục trên production Bắt lỗi trả 200 nhưng sai Phải dựng eval đủ nhạy; quyền riêng tư giới hạn việc xem dữ liệu thật Anthropic 2025

Quy tắc rút ra

  1. Scale theo việc đang chờ, không theo mức bận của GPU; với engine có batching, latency đo ở engine có thể khoẻ trong khi user đang chờ. Together AI 2026
  2. Cold start dài biến autoscaling thành bài toán dự trữ và rút ngắn khởi động: cửa sổ scale xuống phải kiên nhẫn hơn nhịp traffic; muốn phản ứng thì phải giảm thời gian start (checkpoint, tách weight). Together AI 2026 NVIDIA 2026
  3. Tách thứ lớn và bất biến (weight) khỏi vòng đời process: khi đó restore, failover và chạy hai engine trên một GPU đều rẻ đi. NVIDIA 2026 NVIDIA 2026
  4. Trong mỗi bậc rollout, capacity đi trước traffic khi lên và traffic đi trước capacity khi xuống; gate chỉ đọc traffic của bậc hiện tại và cần đủ mẫu. Together AI 2026
  5. Canary trên latency và lỗi không bắt được lỗi chất lượng: cần eval chạy liên tục trên production và kênh phản hồi của người dùng như một tín hiệu giám sát. Anthropic 2025 Xem Deploy và release an toàn quy tắc 18.
  6. Phân loại lỗi theo phạm vi (process, node, phần cứng) rồi chọn cơ chế phục hồi cho từng loại; cơ chế nhanh nhất thường chỉ phủ loại lỗi phổ biến nhất. NVIDIA 2026 Xem Failover, replica và dự phòng dữ liệu.
  7. Model qua API là phụ thuộc có hạn dùng: nhà cung cấp cho nghỉ model theo lịch, nên migrate là việc định kỳ; mọi lần đổi model, kể cả bản vá được coi là giống hệt, phải qua cùng cổng (A/B, eval offline từ lỗi người dùng báo). Capacity đặt trước + tràn sang theo nhu cầu là bài sizing như reserved instance. Mercari 2025

Câu hỏi mở