# Syllabus GCP machine learning

## Tuần 0: Foundation ML

**Ngày F1: Linear & Logistic Regression**

*   Mục tiêu: Hiểu cơ chế toán học đằng sau, không chỉ gọi API.
    
*   Lý thuyết: Gradient descent, loss function (MSE, cross-entropy), regularization (L1/L2).
    
*   Thực hành: Implement linear regression từ đầu bằng numpy (không dùng sklearn), so sánh với `sklearn.LinearRegression`.
    

**Ngày F2: Decision Trees, Random Forest, XGBoost**

*   Mục tiêu: Hiểu tại sao boosted trees thường thắng trên dữ liệu tabular.
    
*   Lý thuyết: Entropy/Gini, bagging vs boosting, overfitting trong trees.
    
*   Thực hành: Train Random Forest và XGBoost trên cùng 1 dataset, so sánh feature importance.
    

**Ngày F3: Neural Networks cơ bản**

*   Mục tiêu: Hiểu backpropagation, không chỉ `model.fit()`.
    
*   Lý thuyết: Forward/backward pass, activation functions, vanishing gradient.
    
*   Thực hành: Xây 1 MLP đơn giản bằng PyTorch cho bài toán classification.
    

**Ngày F4: CNN cho ảnh**

*   Mục tiêu: Hiểu convolution, pooling ở mức trực giác.
    
*   Lý thuyết: Kernel/filter, receptive field, transfer learning.
    
*   Thực hành: Fine-tune 1 pretrained CNN (ResNet) trên tập ảnh nhỏ.
    

**Ngày F5: Transformer cơ bản**

*   Mục tiêu: Hiểu attention mechanism - nền tảng của mọi LLM sẽ dùng trong Tuần 12.
    
*   Lý thuyết: Self-attention, positional encoding, encoder-decoder vs decoder-only.
    
*   Thực hành: Đọc và trace qua 1 implementation attention đơn giản (vd minGPT), không cần train.
    

## Tuần 1: Low-code AI & BigQuery ML

**Ngày 1: Tổng quan kiến trúc Google Cloud AI stack**

*   Mục tiêu: Nắm bản đồ tổng thể - đâu là low-code (BigQuery ML, AutoML), đâu là custom (Vertex/Agent Platform custom training), đâu là foundation models (Model Garden).
    
*   Lý thuyết: So sánh BigQuery ML vs Agent Platform AutoML vs custom training về chi phí, tốc độ, độ linh hoạt.
    
*   Thực hành: Tạo project GCP, bật billing alert, enable các API cần thiết (BigQuery, Vertex/Agent Platform, Storage).
    

**Ngày 2: BigQuery ML - classification & regression**

*   Mục tiêu: Tự viết được `CREATE MODEL` cho bài toán tabular thực tế.
    
*   Lý thuyết: Cú pháp `CREATE MODEL`, các model\_type (LOGISTIC\_REG, LINEAR\_REG, BOOSTED\_TREE\_CLASSIFIER), TRANSFORM clause.
    
*   Thực hành: Lấy dataset public (vd `bigquery-public-data.ml_datasets`), train 1 model logistic regression, đánh giá bằng `ML.EVALUATE`.
    

**Ngày 3: BigQuery ML - feature engineering & forecasting/clustering**

*   Mục tiêu: Biết chọn đúng loại model theo bài toán business.
    
*   Lý thuyết: ARIMA\_PLUS cho time series, K-MEANS cho clustering, ML.FEATURE\_CROSS, ML.BUCKETIZE.
    
*   Thực hành: Forecast doanh thu theo tuần bằng ARIMA\_PLUS, visualize kết quả bằng Looker Studio hoặc notebook.
    

**Ngày 4: Agent Platform AutoML & Model Garden**

*   Mục tiêu: Hiểu khi nào AutoML hợp lý hơn custom code (thời gian, chi phí, team không có ML expert).
    
*   Lý thuyết: Quy trình AutoML tabular/image/text, giới hạn (không kiểm soát kiến trúc, cost per node-hour).
    
*   Thực hành: Train 1 AutoML tabular model trên Agent Platform, so sánh AUC với BigQuery ML ở Ngày 2.
    

**Ngày 5: Chi phí & giới hạn thực tế của low-code**

*   Mục tiêu: Hiểu tại sao production team thường không dừng ở AutoML.
    
*   Lý thuyết: BigQuery slot pricing vs on-demand, cost của AutoML training node-hours, khi nào low-code trở thành nợ kỹ thuật (khó version control, khó CI/CD).
    
*   Thực hành: Tính chi phí ước lượng cho 1 pipeline retrain hàng tuần bằng BigQuery ML vs custom training; viết ghi chú trade-off.
    

## Tuần 2: Data Engineering & Model Prototyping

**Ngày 6: Data preprocessing tools - chọn đúng công cụ theo scale**

*   Mục tiêu: Biết khi nào dùng BigQuery SQL, Dataflow, Spark, hay pandas.
    
*   Lý thuyết: Ngưỡng dữ liệu (GB vs TB), batch vs streaming, chi phí vận hành Dataflow.
    
*   Thực hành: Viết 1 pipeline Dataflow (Apache Beam Python) đơn giản đọc từ GCS, transform, ghi vào BigQuery.
    

**Ngày 7: Feature Store**

*   Mục tiêu: Hiểu vai trò Feature Store trong việc tránh training-serving skew.
    
*   Lý thuyết: Online vs offline feature serving, feature consolidation, point-in-time lookup.
    
*   Thực hành: Tạo 1 feature group trong Agent Platform Feature Store, ingest batch, query online serving latency.
    

**Ngày 8: Notebook environments - Workbench & Colab Enterprise**

*   Mục tiêu: Setup môi trường prototyping an toàn, có collaboration.
    
*   Lý thuyết: Managed vs user-managed notebooks, service account scoping, VPC-SC cho notebook.
    
*   Thực hành: Tạo Workbench instance, train 1 model nhỏ bằng PyTorch, lưu artifact vào GCS.
    

**Ngày 9: Experiment tracking**

*   Mục tiêu: Có khả năng so sánh nhiều runs một cách có hệ thống, không phải "nhớ trong đầu".
    
*   Lý thuyết: Vertex/Agent Platform Experiments, ML Metadata, lineage tracking.
    
*   Thực hành: Chạy 3 training runs với hyperparameter khác nhau, log vào Experiments, so sánh trên UI.
    

**Ngày 10: Data privacy & PII**

*   Mục tiêu: Biết cách xử lý dữ liệu nhạy cảm đúng chuẩn compliance thực tế (không chỉ lý thuyết thi).
    
*   Lý thuyết: DLP API để phát hiện PII, tokenization/masking, data governance (Dataplex), quyền truy cập theo nguyên tắc least-privilege.
    
*   Thực hành: Chạy Cloud DLP scan trên 1 bảng BigQuery có dữ liệu giả PII, thiết lập masking policy.
    

## Tuần 3: Model Building Strategy

**Ngày 11: Chọn model type theo bài toán**

*   Mục tiêu: Có framework ra quyết định ARIMA vs DNN vs LLM, không đoán mò.
    
*   Lý thuyết: Trade-off interpretability vs performance, data size threshold cho từng loại model.
    
*   Thực hành: Viết decision tree cá nhân (dạng flowchart) cho việc chọn model dựa trên: loại dữ liệu, latency yêu cầu, interpretability yêu cầu.
    

**Ngày 12: Chọn sản phẩm GCP phù hợp**

*   Mục tiêu: Biết map bài toán → AutoML / BigQuery ML / Agent Platform Pipelines / custom training.
    
*   Lý thuyết: So sánh 4 hướng tiếp cận về maintainability và team skill cần thiết.
    
*   Thực hành: Viết 3 case study giả định (ví dụ: fraud detection, demand forecasting, chatbot support) và chọn stack phù hợp, giải thích lý do.
    

**Ngày 13: Deployment strategy planning**

*   Mục tiêu: Nắm được khi nào dùng batch, khi nào real-time, khi nào edge.
    
*   Lý thuyết: Latency SLA, cost per prediction, batch vs online trade-off.
    
*   Thực hành: Thiết kế kiến trúc (trên giấy/diagram) cho 1 hệ thống recommendation cần cả batch scoring và real-time re-ranking.
    

**Ngày 14: Interpretability requirements**

*   Mục tiêu: Hiểu khi nào business/luật pháp yêu cầu model giải thích được (vd tín dụng, y tế).
    
*   Lý thuyết: SHAP, feature attribution, glass-box models (linear, decision tree) vs black-box (deep learning).
    
*   Thực hành: Chạy Vertex Explainable AI trên 1 model tabular, đọc feature attribution.
    

**Ngày 15: Khi nào KHÔNG nên dùng LLM**

*   Mục tiêu: Tránh cái bẫy "LLM cho mọi thứ" phổ biến trong production hiện nay.
    
*   Lý thuyết: Chi phí inference LLM vs model truyền thống, latency, khi nào 1 model nhỏ + rule-based đủ tốt.
    
*   Thực hành: Viết bài phân tích ngắn (300 từ) so sánh chi phí/lợi ích giữa dùng Gemini API vs train XGBoost cho 1 use case classification đơn giản.
    

## Tuần 4: Training & Hardware

**Ngày 16: Tổ chức training data trên GCP**

*   Mục tiêu: Thiết kế data layout tối ưu cho training pipeline lớn.
    
*   Lý thuyết: TFRecord vs Parquet, sharding, GCS vs BigQuery cho từng loại dữ liệu (tabular/text/image).
    
*   Thực hành: Convert 1 dataset ảnh nhỏ sang TFRecord, benchmark tốc độ đọc so với đọc file gốc.
    

**Ngày 17: Custom training trên Agent Platform**

*   Mục tiêu: Tự chạy được 1 custom training job production-grade (không phải notebook).
    
*   Lý thuyết: Custom container vs prebuilt container, CustomJob vs HyperparameterTuningJob, machine spec.
    
*   Thực hành: Đóng gói code training thành Docker image, push lên Artifact Registry, submit CustomJob.
    

**Ngày 18: Hyperparameter tuning**

*   Mục tiêu: Biết tự động hóa tuning thay vì tune tay.
    
*   Lý thuyết: Bayesian optimization trong Vertex Vizier, search space design, early stopping.
    
*   Thực hành: Chạy HyperparameterTuningJob với 10-15 trials, phân tích kết quả bằng parallel coordinates plot.
    

**Ngày 19: Troubleshooting training failures**

*   Mục tiêu: Có khả năng debug thực chiến khi job crash lúc 2h sáng.
    
*   Lý thuyết: OOM errors, checkpointing, retry logic, Cloud Logging/Error Reporting cho training job.
    
*   Thực hành: Cố tình gây lỗi OOM (batch size quá lớn), đọc log, sửa và chạy lại thành công.
    

**Ngày 20: CPU/GPU/TPU và distributed training**

*   Mục tiêu: Hiểu sâu hơn exam yêu cầu - khi nào data parallelism đủ, khi nào cần model parallelism.
    
*   Lý thuyết: TPU pod slicing, NCCL/all-reduce cho GPU multi-node, chi phí GPU spot/preemptible vs on-demand.
    
*   Thực hành: Chạy 1 job training với `MirroredStrategy` (data parallelism) trên nhiều GPU ảo (hoặc mô phỏng), đo speedup thực tế.
    

## Tuần 5: Serving & Scaling

**Ngày 21: Batch vs online inference**

*   Mục tiêu: Triển khai đúng loại inference theo yêu cầu nghiệp vụ.
    
*   Lý thuyết: BatchPredictionJob vs Endpoint, chi phí giữ endpoint sống 24/7.
    
*   Thực hành: Deploy 1 model lên Vertex Endpoint, gọi thử online prediction; chạy song song 1 batch prediction job.
    

**Ngày 22: Custom containers cho serving**

*   Mục tiêu: Serve được model không thuộc framework được hỗ trợ sẵn.
    
*   Lý thuyết: Cấu trúc custom serving container (health check, predict route), prebuilt container cho PyTorch/XGBoost.
    
*   Thực hành: Viết Flask/FastAPI serving wrapper cho 1 model sklearn, đóng gói container, deploy lên Cloud Run.
    

**Ngày 23: Model Registry & rollout strategies**

*   Mục tiêu: Quản lý version model như quản lý code (không "model\_final\_v2\_thật.pkl").
    
*   Lý thuyết: Model Registry versioning, canary deployment, traffic splitting.
    
*   Thực hành: Đăng ký 2 version model vào Model Registry, thiết lập traffic split 90/10 trên endpoint.
    

**Ngày 24: Feature Store cho online serving & scaling backend**

*   Mục tiêu: Đảm bảo latency thấp khi serve ở scale lớn.
    
*   Lý thuyết: Autoscaling endpoint (min/max replicas), Feature Store online serving latency budget.
    
*   Thực hành: Load test endpoint bằng `locust` hoặc `hey`, quan sát autoscaling behavior và latency p99.
    

**Ngày 25: Cost optimization cho serving**

*   Mục tiêu: Đây là kỹ năng đề thi gần như không hỏi sâu nhưng production luôn cần.
    
*   Lý thuyết: Right-sizing machine type, batching request phía client, model quantization/distillation để giảm chi phí GPU serving.
    
*   Thực hành: So sánh chi phí/tháng giữa serving trên CPU n1-standard vs GPU T4 cho cùng 1 model, tính break-even theo QPS.
    

## Tuần 6: Pipelines & Automation (Section 5 - 18%)

**Ngày 26: Kubeflow Pipelines / Agent Platform Pipelines cơ bản**

*   Mục tiêu: Viết được pipeline component đầu tiên.
    
*   Lý thuyết: KFP SDK, `@component`, `@pipeline`, container-based components.
    
*   Thực hành: Viết pipeline 3 bước (load data → train → evaluate) bằng KFP, chạy trên Agent Platform Pipelines.
    

**Ngày 27: Data & model validation trong pipeline**

*   Mục tiêu: Ngăn "garbage in, garbage out" tự động.
    
*   Lý thuyết: TensorFlow Data Validation (TFDV) hoặc custom schema check, model validation threshold trước khi deploy.
    
*   Thực hành: Thêm component validate schema và validate accuracy threshold vào pipeline Ngày 26 (fail pipeline nếu không đạt).
    

**Ngày 28: Managed Airflow & Ray**

*   Mục tiêu: Biết khi nào Kubeflow không đủ và cần Airflow/Ray.
    
*   Lý thuyết: Cloud Composer (Managed Airflow) cho orchestration đa hệ thống, Ray cho distributed compute-heavy workload.
    
*   Thực hành: Viết 1 DAG Airflow đơn giản trigger pipeline Vertex mỗi ngày.
    

**Ngày 29: Retraining policy & CI/CD/CT**

*   Mục tiêu: Thiết kế được hệ thống retrain tự động có kiểm soát, không phải "cron chạy bừa".
    
*   Lý thuyết: Trigger theo lịch vs theo drift signal, Cloud Build cho CI/CD, CT (continuous training) pipeline.
    
*   Thực hành: Viết `cloudbuild.yaml` build image + trigger pipeline khi push code lên GitHub (Cloud Build trigger).
    

**Ngày 30: Pipeline như code (IaC)**

*   Mục tiêu: Pipeline production không nên click tay trên UI.
    
*   Lý thuyết: Terraform cho GCP resources (Vertex, BigQuery, IAM), reproducibility, environment tách dev/staging/prod.
    
*   Thực hành: Viết Terraform script tạo 1 BigQuery dataset + 1 GCS bucket + 1 service account với quyền tối thiểu.
    

## Tuần 7: Monitoring & Security cơ bản

**Ngày 31: Rủi ro bảo mật AI systems**

*   Mục tiêu: Nhận diện được data exfiltration, prompt injection trong hệ thống LLM.
    
*   Lý thuyết: Model Armor, safety filters, regex-based guardrail, VPC-SC để chặn exfiltration.
    
*   Thực hành: Cấu hình 1 safety filter cơ bản trên Gemini API call, test với input độc hại giả lập.
    

**Ngày 32: Responsible AI & bias monitoring**

*   Mục tiêu: Có checklist thực tế để đánh giá fairness, không chỉ khái niệm suông.
    
*   Lý thuyết: Fairness metrics (demographic parity, equal opportunity), Vertex Model Monitoring bias detection.
    
*   Thực hành: Chạy fairness evaluation trên model classification Ngày 2, kiểm tra performance theo từng nhóm subgroup.
    

**Ngày 33: Model Monitoring - drift detection**

*   Mục tiêu: Phát hiện model xuống cấp trước khi business bị ảnh hưởng.
    
*   Lý thuyết: Training-serving skew, data drift, concept drift, feature attribution drift - phân biệt rõ 4 loại này.
    
*   Thực hành: Bật Vertex Model Monitoring trên endpoint Ngày 21, cấu hình alert threshold cho feature drift.
    

**Ngày 34: Monitoring & evaluating gen AI solutions (mức cơ bản)**

*   Mục tiêu: Đánh giá chất lượng LLM output một cách có hệ thống - nền tảng trước khi đi sâu ở Tuần 12.
    
*   Lý thuyết: LLM-as-a-judge, automated eval metrics (BLEU/ROUGE hạn chế với gen AI), human-in-the-loop eval.
    
*   Thực hành: Viết 1 eval pipeline nhỏ dùng Gemini làm judge để chấm điểm output của 1 prompt khác trên tập 10 câu hỏi mẫu.
    

## Tuần 8: Production Mastery

**Ngày 35: Incident response cho ML system (mức nhập môn)**

*   Mục tiêu: Biết phải làm gì khi model "sập" lúc production đang chạy - sẽ đào sâu hơn ở Tuần 13.
    
*   Lý thuyết: Rollback strategy, feature flag cho model, runbook mẫu.
    
*   Thực hành: Viết 1 runbook incident response ngắn cho tình huống "endpoint latency tăng đột biến".
    

**Ngày 36: Cost governance toàn hệ thống**

*   Mục tiêu: Nhìn tổng chi phí ML system chứ không chỉ từng phần riêng lẻ.
    
*   Lý thuyết: Budget alerts, labels cho cost attribution theo team/project, committed use discounts.
    
*   Thực hành: Thiết lập budget alert cho project, gắn label cho toàn bộ resource đã tạo trong 7 tuần qua.
    

**Ngày 37: Security review toàn diện (mức nhập môn)**

*   Mục tiêu: Audit lại toàn bộ hệ thống đã xây theo checklist bảo mật thực tế - sẽ mở rộng sang supply chain/model security ở Tuần 13.
    
*   Lý thuyết: IAM least privilege audit, VPC-SC perimeter, encryption at rest/in transit (mặc định GCP nhưng cần hiểu rõ).
    
*   Thực hành: Chạy Security Command Center scan (hoặc checklist thủ công) trên project, sửa ít nhất 3 misconfiguration.
    

**Ngày 38-39: Capstone project #1 - End-to-end production system (predictive ML)**

*   Mục tiêu: Ghép toàn bộ kiến thức Tuần 1-7 thành 1 hệ thống hoàn chỉnh.
    
*   Lý thuyết: Không có lý thuyết mới - đây là ngày tổng hợp.
    
*   Thực hành: Xây 1 hệ thống hoàn chỉnh: data ingestion (Dataflow) → feature store → training pipeline (KFP, có validation) → CI/CD (Cloud Build) → serving (Endpoint với canary) → monitoring (drift alert). Viết README mô tả kiến trúc.
    

## Tuần 9: Distributed Data Processing

*Khối bổ sung #1 - production MLE trên GCP thường xuyên đụng streaming pipeline, không chỉ batch SQL.*

**Ngày 40: Apache Beam internals**

*   Mục tiêu: Hiểu mô hình lập trình Beam đủ sâu để tự viết pipeline phức tạp, không chỉ copy example.
    
*   Lý thuyết: PCollection, ParDo, Combine, side input, DoFn lifecycle.
    
*   Thực hành: Viết 1 pipeline Beam có custom `DoFn` xử lý transform không có sẵn, chạy local bằng DirectRunner.
    

**Ngày 41: Windowing & Triggers**

*   Mục tiêu: Xử lý đúng dữ liệu theo thời gian trong streaming.
    
*   Lý thuyết: Fixed windows, sliding windows, session windows; trigger dựa trên event time vs processing time.
    
*   Thực hành: Viết pipeline tính aggregate (vd tổng đơn hàng) theo sliding window 5 phút trên dữ liệu giả lập streaming.
    

**Ngày 42: Streaming pipelines với Pub/Sub + Dataflow**

*   Mục tiêu: Xây được pipeline streaming thật, không chỉ lý thuyết.
    
*   Lý thuyết: Pub/Sub topic/subscription, Dataflow Streaming Engine, backpressure.
    
*   Thực hành: Publish message giả lập vào Pub/Sub, đọc bằng Dataflow streaming job, ghi kết quả real-time vào BigQuery.
    

**Ngày 43: Watermarks & Exactly-once processing**

*   Mục tiêu: Tránh 2 lỗi phổ biến nhất trong streaming: dữ liệu trễ bị bỏ sót và xử lý trùng lặp.
    
*   Lý thuyết: Watermark là gì, late data handling, deduplication, checkpointing.
    
*   Thực hành: Cấu hình allowed lateness cho pipeline Ngày 42, test bằng cách gửi message có timestamp trễ.
    

**Ngày 44: Cost & autoscaling cho streaming jobs**

*   Mục tiêu: Streaming job chạy 24/7 rất dễ đốt tiền nếu không kiểm soát.
    
*   Lý thuyết: Dataflow autoscaling (Streaming Engine), so sánh chi phí Dataflow streaming vs Pub/Sub + Cloud Functions cho workload nhỏ.
    
*   Thực hành: Bật autoscaling cho streaming job, load test bằng cách tăng throughput publish, quan sát worker scale up/down.
    

## Tuần 10: Advanced Feature Engineering

**Ngày 45: Feature selection**

*   Mục tiêu: Giảm chiều dữ liệu có cơ sở khoa học, không phải "thử bỏ cột xem sao".
    
*   Lý thuyết: Mutual Information, Chi-square test, Recursive Feature Elimination (RFE).
    
*   Thực hành: Áp dụng cả 3 phương pháp trên 1 dataset tabular, so sánh tập feature được chọn.
    

**Ngày 46: Leakage detection**

*   Mục tiêu: Tránh lỗi kinh điển khiến model "quá tốt" lúc train nhưng sập khi lên production.
    
*   Lý thuyết: Target leakage (feature chứa thông tin từ tương lai), train-test contamination, temporal leakage trong time series.
    
*   Thực hành: Cố tình tạo 1 dataset có leakage, train model đạt AUC gần 1.0, tìm ra nguyên nhân và fix.
    

**Ngày 47: Embedding features**

*   Mục tiêu: Biến dữ liệu phi cấu trúc (text/ảnh) thành feature dùng được cho model truyền thống.
    
*   Lý thuyết: Text embeddings (Vertex AI Embeddings API), image embeddings, dimensionality (768d, 1536d...), khi nào nên fine-tune embedding riêng.
    
*   Thực hành: Sinh embedding cho 1 tập văn bản ngắn bằng Vertex Embeddings API, dùng làm feature cho model classification.
    

**Ngày 48: Feature freshness**

*   Mục tiêu: Đảm bảo feature phục vụ inference không bị "cũ" so với thực tế.
    
*   Lý thuyết: TTL (time-to-live) cho feature, backfill strategy, late-arriving data trong feature pipeline.
    
*   Thực hành: Cấu hình TTL cho 1 feature trong Feature Store, mô phỏng tình huống backfill sau khi phát hiện lỗi dữ liệu quá khứ.
    

**Ngày 49: Feature quality monitoring**

*   Mục tiêu: Feature cũng cần monitoring như model, không chỉ monitor output.
    
*   Lý thuyết: Feature drift vs data drift (phân biệt rõ), schema validation liên tục, alerting khi feature distribution thay đổi bất thường.
    
*   Thực hành: Thiết lập alert khi 1 feature có tỷ lệ null tăng đột biến hoặc phân phối lệch khỏi baseline.
    

## Tuần 11: Advanced Evaluation & Error Analysis

**Ngày 50: Classification metrics sâu & calibration**

*   Mục tiêu: Chọn đúng metric theo bài toán, không mặc định dùng accuracy.
    
*   Lý thuyết: Precision, Recall, F1, PR Curve vs ROC Curve (khi nào PR tốt hơn ROC với dữ liệu mất cân bằng), model calibration.
    
*   Thực hành: Trên 1 dataset imbalanced, vẽ cả ROC và PR curve, giải thích tại sao PR curve informative hơn ở đây; kiểm tra calibration bằng reliability diagram.
    

**Ngày 51: Forecasting metrics**

*   Mục tiêu: Đánh giá đúng model time series, tránh dùng nhầm MAE cho bài toán có scale khác nhau.
    
*   Lý thuyết: MAPE, WAPE, SMAPE - khi nào mỗi metric bị lệch (MAPE lỗi khi actual gần 0).
    
*   Thực hành: Tính cả 3 metric trên model ARIMA\_PLUS đã train ở Ngày 3, so sánh kết quả và giải thích khác biệt.
    

**Ngày 52: Ranking metrics**

*   Mục tiêu: Đánh giá đúng hệ thống recommendation/search.
    
*   Lý thuyết: NDCG, MAP, MRR - ý nghĩa và khi nào dùng metric nào.
    
*   Thực hành: Tính NDCG cho 1 tập kết quả ranking giả lập (query + list kết quả có relevance score).
    

**Ngày 53: GenAI evaluation**

*   Mục tiêu: Đánh giá LLM output đúng chuẩn, chuẩn bị nền cho Tuần 12.
    
*   Lý thuyết: Faithfulness, groundedness, toxicity - phân biệt rõ 3 khái niệm và cách đo từng loại.
    
*   Thực hành: Viết rubric đánh giá groundedness cho 5 câu trả lời của 1 LLM dựa trên context cho trước, chấm điểm thủ công rồi so với LLM-as-a-judge.
    

**Ngày 54: Error analysis & slicing**

*   Mục tiêu: Biết model sai ở đâu, không chỉ biết model sai bao nhiêu.
    
*   Lý thuyết: Slicing theo subgroup, confusion matrix theo từng slice, root-cause analysis workflow.
    
*   Thực hành: Lấy model classification Ngày 2, slice performance theo 2-3 nhóm thuộc tính khác nhau, tìm ra nhóm có error rate cao nhất và giả thuyết nguyên nhân.
    

## Tuần 12: GenAI Production

*Khối bổ sung #4 - PMLE ngày càng đụng nhiều GenAI, đề thi cũng đã thêm hẳn phần fine-tune Gemini.*

**Ngày 55: RAG fundamentals - chunking strategy**

*   Mục tiêu: Hiểu vì sao chunking sai là nguyên nhân số 1 khiến RAG system trả lời tệ.
    
*   Lý thuyết: Fixed-size chunking vs semantic chunking, chunk overlap, ảnh hưởng của chunk size đến retrieval quality.
    
*   Thực hành: Chunk 1 tài liệu dài bằng 2 chiến lược khác nhau, so sánh chất lượng câu trả lời cuối cùng.
    

**Ngày 56: Retrieval & reranking**

*   Mục tiêu: Xây pipeline retrieval 2 giai đoạn thực chiến, không chỉ top-k similarity search.
    
*   Lý thuyết: Dense retrieval vs hybrid search (BM25 + embedding), reranking model.
    
*   Thực hành: Thêm bước rerank vào kết quả retrieval Ngày 55, so sánh top-3 trước/sau rerank.
    

**Ngày 57: Vertex AI Vector Search / ANN**

*   Mục tiêu: Triển khai vector search ở scale production, không phải brute-force cosine similarity trong notebook.
    
*   Lý thuyết: Approximate Nearest Neighbor (ANN) index, trade-off recall vs latency, index building/updating.
    
*   Thực hành: Tạo 1 Vector Search index trên Vertex AI, deploy, query thử với embedding từ Ngày 47.
    

**Ngày 58: Prompt engineering nâng cao**

*   Mục tiêu: Kiểm soát output LLM đủ chặt để dùng trong hệ thống production (không phải chatbot demo).
    
*   Lý thuyết: Structured output (JSON mode/schema), tool calling / function calling.
    
*   Thực hành: Viết 1 prompt bắt Gemini trả về JSON theo schema cố định, kèm 1 tool-calling flow đơn giản (vd gọi "get\_weather").
    

**Ngày 59: Agent systems**

*   Mục tiêu: Hiểu kiến trúc agent thực tế, không chỉ prompt chain đơn giản.
    
*   Lý thuyết: Agent Development Kit (ADK), memory (short-term vs long-term), planning/orchestration giữa nhiều tool.
    
*   Thực hành: Xây 1 agent đơn giản dùng ADK có 2 tool và khả năng nhớ ngữ cảnh qua nhiều lượt hội thoại.
    

**Ngày 60: GenAI evaluation pipeline end-to-end**

*   Mục tiêu: Ghép Ngày 53 (metric) + hệ thống RAG (Ngày 55-58) thành 1 vòng eval tự động.
    
*   Lý thuyết: Golden dataset cho RAG eval, hallucination rate tracking theo thời gian, regression test khi đổi prompt/model.
    
*   Thực hành: Xây 1 eval set 15-20 câu hỏi cho hệ thống RAG đã xây, chạy tự động và log groundedness score theo từng lần thay đổi prompt.
    

## Tuần 13: ML SRE & Security cho MLOps

**Ngày 61: SLI/SLO cho ML systems**

*   Mục tiêu: Định lượng được "hệ thống đang chạy tốt" bằng con số, không phải cảm tính.
    
*   Lý thuyết: SLI (latency p95/p99, error rate) vs SLO (mục tiêu cam kết) vs SLA, error budget.
    
*   Thực hành: Định nghĩa SLO cho endpoint đã deploy ở Ngày 21 (vd p99 < 300ms, availability 99.9%), tính error budget hàng tháng.
    

**Ngày 62: Alert design**

*   Mục tiêu: Alert phải đáng tin, không gây "alert fatigue" khiến on-call bỏ qua cảnh báo thật.
    
*   Lý thuyết: Burn rate alerting (multi-window, multi-burn-rate), phân biệt alert cần page ngay vs alert chỉ cần ticket.
    
*   Thực hành: Cấu hình 1 burn-rate alert trong Cloud Monitoring dựa trên SLO Ngày 61.
    

**Ngày 63: Incident management**

*   Mục tiêu: Biết vận hành 1 incident từ đầu đến cuối theo quy trình chuẩn, không phải hoảng loạn cá nhân.
    
*   Lý thuyết: Severity levels, escalation path, postmortem blameless.
    
*   Thực hành: Viết 1 postmortem giả định đầy đủ (timeline, root cause, action items) cho 1 sự cố mô phỏng (vd model drift gây sai lệch dự đoán 3 ngày không ai phát hiện).
    

**Ngày 64: Capacity planning**

*   Mục tiêu: Tránh cả 2 thái cực: overprovision (tốn tiền) và underprovision (sập khi traffic tăng).
    
*   Lý thuyết: QPS forecasting dựa trên traffic pattern, autoscaling limits và cold-start latency.
    
*   Thực hành: Dựa vào traffic giả định tăng 3x vào mùa cao điểm, tính toán lại min/max replicas cho endpoint.
    

**Ngày 65: Supply chain security**

*   Mục tiêu: Đảm bảo image/model deploy lên production không bị compromise.
    
*   Lý thuyết: Artifact Registry vulnerability scanning, Binary Authorization, khái niệm SLSA framework.
    
*   Thực hành: Bật vulnerability scanning cho Artifact Registry, cấu hình Binary Authorization policy chặn image chưa được attest.
    

**Ngày 66: Secret management**

*   Mục tiêu: Không bao giờ hardcode API key/credential trong code hoặc container.
    
*   Lý thuyết: Secret Manager, Customer-Managed Encryption Keys (CMEK), rotation policy.
    
*   Thực hành: Chuyển 1 API key đang hardcode trong pipeline (từ Tuần 12) sang Secret Manager, cấu hình IAM để chỉ service account cụ thể đọc được.
    

**Ngày 67: Model security**

*   Mục tiêu: Hiểu các vector tấn công nhắm vào chính model, không chỉ hạ tầng xung quanh.
    
*   Lý thuyết: Model extraction (đánh cắp model qua query), model inversion (suy ngược dữ liệu train), prompt injection, data poisoning.
    
*   Thực hành: Viết checklist phòng thủ cho 1 endpoint public-facing (rate limiting, output filtering, input sanitization) áp dụng cho hệ thống đã xây.
    

## Tuần 14: ML System Design (Case Studies)

**Ngày 68: Case study - Fraud detection system**

*   Mục tiêu: Thiết kế hệ thống real-time có yêu cầu latency cực thấp (<100ms) và class imbalance nặng.
    
*   Lý thuyết: Trade-off giữa rule-based pre-filter và model scoring, feature real-time vs precomputed.
    
*   Thực hành: Vẽ full architecture diagram (ingestion → feature → model → decision → feedback loop), ước lượng cost/QPS.
    

**Ngày 69: Case study - Ads ranking system**

*   Mục tiêu: Thiết kế hệ thống ranking ở scale hàng triệu request/giây.
    
*   Lý thuyết: Two-tower model architecture, candidate generation vs ranking (2-stage funnel), online learning.
    
*   Thực hành: Thiết kế kiến trúc 2-stage (candidate retrieval + ranking), xác định latency budget cho từng stage.
    

**Ngày 70: Case study - Recommendation system**

*   Mục tiêu: Cân bằng giữa personalization, cold-start problem, và diversity.
    
*   Lý thuyết: Collaborative filtering vs content-based vs hybrid, cold-start solution (dùng embedding từ Tuần 10).
    
*   Thực hành: Thiết kế hệ thống recommendation cho user mới (cold-start) và user cũ, chọn chiến lược khác nhau cho mỗi nhóm.
    

**Ngày 71: Case study - Demand forecasting system**

*   Mục tiêu: Thiết kế hệ thống forecast ở scale nhiều SKU/nhiều cửa hàng, không phải 1 time series đơn lẻ.
    
*   Lý thuyết: Hierarchical forecasting, global model vs per-series model, retraining cadence.
    
*   Thực hành: Thiết kế pipeline forecast cho 1000+ SKU, quyết định dùng 1 global model hay nhiều model nhỏ, giải thích trade-off.
    

**Ngày 72: Case study - RAG-based support chatbot (tổng hợp GenAI)**

*   Mục tiêu: Ghép toàn bộ Tuần 12 (RAG, Vector Search, Agent) vào 1 case study hoàn chỉnh có SLO.
    
*   Lý thuyết: Kết hợp retrieval quality, hallucination control, và latency budget cho chatbot production.
    
*   Thực hành: Thiết kế full architecture cho chatbot hỗ trợ khách hàng, bao gồm fallback khi retrieval confidence thấp, escalation sang human agent.
    

**Ngày 73-74: Capstone project #2 - End-to-end GenAI + SRE production system**

*   Mục tiêu: Ghép toàn bộ Tuần 9-14 thành 1 hệ thống hoàn chỉnh, bổ sung cho Capstone #1 (predictive ML) ở Tuần 8.
    
*   Lý thuyết: Không có lý thuyết mới - ngày tổng hợp.
    
*   Thực hành: Xây 1 hệ thống RAG production có: streaming ingestion (Beam), vector search, agent với tool calling, eval pipeline tự động, SLO + alerting, secret management đúng chuẩn. Viết postmortem giả định cho 1 sự cố và README kiến trúc đầy đủ.
    

## Tuần 15: Ôn thi & Mock Exam

**Ngày 75: Ôn tập Section 1-3 (exam)**

*   Mục tiêu: Củng cố lại các điểm yếu qua flashcard/quiz tự làm.
    
*   Lý thuyết: Rà lại toàn bộ ghi chú Tuần 1-4.
    
*   Thực hành: Làm 20-30 câu hỏi mô phỏng (tự viết hoặc từ nguồn uy tín) cho Section 1-3.
    

**Ngày 76: Ôn tập Section 4-6 (exam)**

*   Mục tiêu: Củng cố phần serving, pipeline, monitoring.
    
*   Lý thuyết: Rà lại ghi chú Tuần 5-7.
    
*   Thực hành: Làm 20-30 câu hỏi mô phỏng cho Section 4-6.
    

**Ngày 77: Ôn tập khối production mở rộng**

*   Mục tiêu: Đảm bảo các khối bổ sung (Tuần 9-14) không bị quên trước khi thi, vì đề thi có thể hỏi khía cạnh nhẹ của các mảng này (đặc biệt GenAI và data processing).
    
*   Lý thuyết: Rà lại ghi chú Tuần 9-14, tập trung vào phần liên quan trực tiếp đến exam guide (RAG/Vector Search, distributed training, monitoring).
    
*   Thực hành: Làm 15-20 câu hỏi tự soạn dựa trên case study đã làm ở Tuần 14.
    

**Ngày 78: Mock exam đầy đủ + review**

*   Mục tiêu: Kiểm tra sẵn sàng thi thật.
    
*   Lý thuyết: Không có - full mock exam.
    
*   Thực hành: Làm 1 bài mock exam đầy đủ (~50-60 câu, giới hạn thời gian như thi thật), review từng câu sai, quay lại đúng ngày tương ứng trong syllabus để học lại.
