Fine-tuning & Model Customization
Trang chủ / Module 9
🖥️ Module 9 / 14 · 1 tuần

Hạ tầng Training: GPU, Distributed Training cơ bản

Chọn GPU đúng, thuê GPU cloud theo giờ, khái niệm distributed training (Data/Model Parallelism), DeepSpeed/FSDP cơ bản.

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

Hầu hết bài học trong khoá này (QLoRA trên 1 model vừa) chạy tốt trên 1 GPU thuê theo giờ. Nhưng khi quy mô tăng (model lớn hơn, full fine-tuning, dữ liệu khổng lồ), cần hiểu distributed training để biết mình đang thuê đúng loại hạ tầng và tại sao chi phí tăng vọt khi vượt ngưỡng 1 GPU.

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

  • Chọn đúng loại và số lượng GPU theo nhu cầu (tương tự bảng cấu hình máy đã học ở Module 17 khoá AI Engineer, nhưng cho training thay vì inference)
  • Hiểu 2 kiểu song song hoá chính: Data Parallelism và Model Parallelism
  • Biết khi nào cần DeepSpeed ZeRO hoặc PyTorch FSDP, và ý tưởng cốt lõi đằng sau chúng
  • So sánh các lựa chọn thuê GPU cloud theo giờ

Chọn GPU cho Training — khác gì so với Inference

Module 17 khoá AI Engineer đã cho bảng cấu hình máy cho inference (chạy model có sẵn). Training cần nhiều VRAM hơn hẳn cho cùng kích thước model, vì phải lưu thêm gradient và optimizer state:

Kịch bảnVRAM cần thiết (ước lượng)GPU gợi ý
QLoRA, model 7B12-16GBRTX 4060 Ti 16GB, RTX 4070, hoặc thuê 1× A10/L4
LoRA (không lượng tử hoá), model 7B20-24GBRTX 4090, hoặc thuê 1× A10G/L40S
QLoRA, model 13-14B18-24GBRTX 4090, hoặc thuê 1× A10G/L40S
Full Fine-tuning, model 7B>100GB (cần multi-GPU)Thuê cụm nhiều A100/H100

Data Parallelism vs Model Parallelism

  • Data Parallelism: mỗi GPU giữ toàn bộ 1 bản sao model, nhưng xử lý một phần khác nhau của batch dữ liệu song song, rồi đồng bộ gradient giữa các GPU sau mỗi bước — cách đơn giản nhất để tăng tốc bằng nhiều GPU, nhưng đòi hỏi mỗi GPU đủ VRAM chứa cả model (không giải quyết được vấn đề "model quá lớn cho 1 GPU").
  • Model Parallelism: chia bản thân model ra nhiều phần, mỗi GPU chỉ giữ một phần (ví dụ một số layer, hoặc chia nhỏ từng weight matrix) — giải quyết đúng vấn đề "model quá lớn", nhưng phức tạp hơn và có overhead giao tiếp giữa các GPU trong lúc forward/backward pass.

DeepSpeed ZeRO & PyTorch FSDP — ý tưởng cốt lõi

Cả hai framework giải quyết cùng một vấn đề theo cách tương tự: thay vì mỗi GPU giữ bản sao đầy đủ của weight + gradient + optimizer state (lãng phí khi có nhiều GPU), chúng chia nhỏ (shard) các thành phần này ra nhiều GPU, chỉ tổng hợp lại (gather) khi thực sự cần dùng đến trong forward/backward pass. DeepSpeed ZeRO có 3 cấp độ (Stage 1: chia optimizer state; Stage 2: thêm chia gradient; Stage 3: thêm chia cả weight) — cấp độ càng cao càng tiết kiệm bộ nhớ nhưng overhead giao tiếp càng nhiều. PyTorch FSDP (Fully Sharded Data Parallel) là giải pháp tương đương tích hợp sẵn trong PyTorch, ngày càng phổ biến vì không cần cài thêm thư viện ngoài.

💡 Thực dụng

Với QLoRA (Module 4) trên 1 GPU, bạn không cần DeepSpeed/FSDP — chúng chỉ thực sự cần thiết khi vượt quá 1 GPU (multi-GPU) hoặc làm full fine-tuning. Thư viện accelerate của Hugging Face giúp cấu hình cả hai một cách tương đối đơn giản qua file YAML khi bạn thực sự cần đến chúng.

Thuê GPU Cloud theo giờ — so sánh nhanh

Dịch vụĐặc điểm
RunPodGiá cạnh tranh, giao diện đơn giản, cả GPU cộng đồng (rẻ hơn) và secure cloud
Lambda LabsTập trung GPU cho AI/ML, ổn định, có cả on-demand và reserved
Google ColabMiễn phí ở mức giới hạn, Colab Pro trả phí — tiện cho thử nghiệm nhanh, không phù hợp job dài/production
AWS/Azure/GCP (Module 13 khoá AI Engineer)Tích hợp hệ sinh thái doanh nghiệp sẵn có, thường đắt hơn dịch vụ chuyên biệt cho cùng loại GPU
Databricks (Module 2 khoá Databricks)Phù hợp khi training là một phần của pipeline lakehouse lớn hơn, tận dụng MLflow tracking sẵn có

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

Ước lượng & chọn hạ tầng cho một kịch bản cụ thể

Giả định bạn cần fine-tune 1 model 13B bằng full fine-tuning (không phải LoRA) cho một dự án công ty. Ước lượng VRAM cần thiết, xác định cần bao nhiêu GPU loại nào, và liệu có cần DeepSpeed ZeRO Stage nào. So sánh chi phí thuê hạ tầng này trong 8 giờ giữa 2 dịch vụ cloud GPU khác nhau.

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

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

  • Ước lượng đúng VRAM cần thiết cho một kịch bản training cụ thể
  • Giải thích được sự khác nhau giữa Data Parallelism và Model Parallelism
  • Hiểu ý tưởng cốt lõi của DeepSpeed ZeRO/FSDP (sharding) dù chưa cần dùng đến
  • So sánh được chi phí giữa ít nhất 2 dịch vụ GPU cloud cho cùng nhu cầu