Fine-tuning & Model Customization
Trang chủ / Module 13
🚀 Module 13 / 14 · 1 tuần

Triển khai Model tuỳ chỉnh

Serving model đã fine-tune bằng vLLM/TGI, phục vụ nhiều LoRA adapter cùng lúc, và triển khai qua Databricks Model Serving.

vLLMTGIServing
📌 Vì sao module này quan trọng

Model tốt nhất cũng vô giá trị nếu không phục vụ được request thật với độ trễ/chi phí chấp nhận được. Module này nối trực tiếp vào Module 10, 13 của khoá AI Engineer (Production AI Systems, Cloud & Deployment) — chuyên biệt hoá cho việc serving model tự fine-tune thay vì chỉ gọi API model có sẵn.

🎯 Mục tiêu học tập

  • Serving model đã fine-tune bằng vLLM cho throughput cao
  • Phục vụ nhiều LoRA adapter cùng lúc trên 1 base model để tiết kiệm chi phí
  • Triển khai qua Databricks Model Serving khi model là một phần của hệ thống lakehouse
  • Áp dụng lại các nguyên tắc Production AI Systems (caching, rate limiting, monitoring) cho model tự host

Serving hiệu năng cao với vLLM

vLLM (đã giới thiệu ở Module 17 khoá AI Engineer) là lựa chọn hàng đầu để serving model tự host ở quy mô production, nhờ kỹ thuật PagedAttention (quản lý bộ nhớ KV-cache hiệu quả như quản lý bộ nhớ ảo trong hệ điều hành) và continuous batching (gộp động nhiều request đến ở các thời điểm khác nhau vào cùng 1 batch xử lý, thay vì đợi đủ batch cố định) — tăng throughput đáng kể so với serving thô bằng Hugging Face generate():

# Khởi động server tương thích API OpenAI
vllm serve ./my-finetuned-merged-model \
    --served-model-name support-assistant-v1 \
    --max-model-len 4096 \
    --gpu-memory-utilization 0.9
# Gọi qua client giống hệt cú pháp OpenAI SDK đã quen thuộc ở Module 5 khoá AI Engineer
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="not-needed")
resp = client.chat.completions.create(
    model="support-assistant-v1",
    messages=[{"role": "user", "content": "Đơn hàng DH123 khi nào giao?"}],
)

Phục vụ nhiều LoRA Adapter cùng lúc

Nếu bạn có nhiều "phiên bản chuyên biệt" (ví dụ 1 adapter cho tiếng Việt, 1 cho tiếng Anh, 1 cho từng khách hàng doanh nghiệp khác nhau — mô hình multi-tenant), vLLM hỗ trợ load nhiều LoRA adapter đồng thời trên cùng 1 base model đã load 1 lần, chuyển đổi động theo từng request — tiết kiệm VRAM rất nhiều so với chạy nhiều instance base model riêng biệt cho từng adapter:

vllm serve Qwen/Qwen2.5-7B-Instruct \
    --enable-lora \
    --lora-modules vi-support=./adapters/vi-support en-support=./adapters/en-support

# Request chọn adapter qua tham số "model"
resp = client.chat.completions.create(model="vi-support", messages=[...])

Triển khai qua Databricks Model Serving

Nếu model là một phần của hệ thống lakehouse lớn hơn (dữ liệu huấn luyện đến từ pipeline Lakeflow, thực nghiệm được track bằng MLflow — Module 9), việc đăng ký model đã fine-tune vào Unity Catalog Model Registry và deploy qua Mosaic AI Model Serving (Module 9-10 khoá Databricks) cho phép tận dụng cùng cơ chế governance, autoscaling, và AI Gateway đã có sẵn — nhất quán với toàn bộ hạ tầng AI khác của tổ chức thay vì vận hành một cụm serving rời rạc riêng.

Production Concerns áp dụng lại cho Model tự Host

Toàn bộ nguyên tắc Module 10 khoá AI Engineer vẫn áp dụng, với vài điểm khác biệt khi tự host:

  • Caching: vẫn hữu ích (exact-match, semantic), nhưng vLLM đã tự động cache KV-cache giữa các bước sinh token trong cùng 1 request — không cần tự cài thêm cho phần này.
  • Rate limiting/Autoscaling: với model tự host, bạn chịu trách nhiệm cả việc scale số replica theo tải (không có "vô hạn" như API cloud) — cần giám sát chặt để tránh nghẽn cổ chai GPU.
  • Fallback: nên có cơ chế fallback sang model API cloud khi cụm serving tự host quá tải hoặc gặp sự cố — kết hợp cả hai thế giới thay vì phụ thuộc hoàn toàn vào 1 phía.
  • Monitoring: theo dõi thêm các chỉ số đặc thù serving GPU (GPU utilization, VRAM usage, queue length) ngoài các chỉ số ứng dụng thông thường (Module 11 khoá AI Engineer).

🏋️ Bài tập thực hành

Serving production-ready cho model đã Fine-tune

Triển khai model đã fine-tune/merge ở các module trước qua vLLM, bật continuous batching mặc định. Đo throughput (request/giây) và latency P95 với tải giả lập (nhiều request đồng thời). Nếu có từ 2 adapter LoRA trở lên (từ Module 11), cấu hình vLLM phục vụ cả 2 đồng thời và kiểm tra chuyển đổi đúng adapter theo tham số model trong request.

📚 Tài nguyên học tập

✅ Tự đánh giá hoàn thành

  • Serving thành công model đã fine-tune qua vLLM với API tương thích OpenAI
  • Đo được throughput/latency thực tế dưới tải giả lập
  • Cấu hình được phục vụ nhiều LoRA adapter đồng thời (nếu có nhu cầu multi-tenant)
  • Áp dụng lại được các nguyên tắc production (fallback, monitoring) cho model tự host