# Syllabus học AWS AI/ML

# PHASE 0 - Nền tảng bắt buộc (Ngày 1-10)

**Ngày 1: Đại số tuyến tính cho ML**

*   Mục tiêu: Đọc hiểu công thức ma trận trong paper/doc ML mà không hoảng.
    
*   Lý thuyết: Vector, ma trận, phép nhân ma trận, eigenvalue/eigenvector, norm (L1/L2).
    
*   Thực hành: Cài NumPy, tự viết phép nhân ma trận và so sánh với `np.dot`, tính norm của vài vector.
    

**Ngày 2: Xác suất & thống kê**

*   Mục tiêu: Hiểu phân phối, kỳ vọng, phương sai, định lý Bayes.
    
*   Lý thuyết: Phân phối chuẩn/nhị thức, kỳ vọng/phương sai, Bayes theorem, correlation vs causation.
    
*   Thực hành: Dùng Pandas mô phỏng 1 bộ dữ liệu, tính mean/variance/correlation matrix.
    

**Ngày 3: Giải tích cho Deep Learning**

*   Mục tiêu: Hiểu gradient và chain rule đủ để đọc backprop sau này.
    
*   Lý thuyết: Đạo hàm, gradient, chain rule, gradient descent trực quan.
    
*   Thực hành: Viết gradient descent tay bằng NumPy để tối ưu hàm bậc 2 đơn giản.
    

**Ngày 4: Python nâng cao I - NumPy/Pandas**

*   Mục tiêu: Thao tác dữ liệu vector hóa thành thạo, không dùng vòng lặp for thừa.
    
*   Lý thuyết: Broadcasting, vectorization, groupby/merge trong Pandas.
    
*   Thực hành: Xử lý 1 bộ CSV thực tế (Kaggle), làm sạch + groupby + pivot.
    

**Ngày 5: Python nâng cao II - Code sạch & testing**

*   Mục tiêu: Viết code ML module hóa, có test.
    
*   Lý thuyết: Cấu trúc project Python, pytest cơ bản, type hint.
    
*   Thực hành: Refactor code ngày 4 thành module có hàm rõ ràng + viết 3 unit test.
    

**Ngày 6: Git & CI cơ bản**

*   Mục tiêu: Có quy trình version control + CI chạy test tự động.
    
*   Lý thuyết: Git flow cơ bản, GitHub Actions cơ bản.
    
*   Thực hành: Đẩy code lên GitHub, viết workflow CI chạy pytest mỗi lần push.
    

**Ngày 7: Docker cơ bản**

*   Mục tiêu: Đóng gói được 1 script Python thành container chạy được ở máy khác.
    
*   Lý thuyết: Image vs container, Dockerfile, layer caching, multi-stage build.
    
*   Thực hành: Viết Dockerfile cho script ngày 4, build và chạy container.
    

**Ngày 8: AWS IAM sâu**

*   Mục tiêu: Phân biệt rõ role/policy/user, viết policy least-privilege.
    
*   Lý thuyết: IAM role vs user, trust policy, permission policy, principle of least privilege.
    
*   Thực hành: Tạo IAM role chỉ cho phép đọc/ghi 1 bucket S3 cụ thể, gắn vào EC2 instance.
    

**Ngày 9: AWS VPC & Networking cơ bản**

*   Mục tiêu: Hiểu luồng traffic vào/ra 1 resource AWS.
    
*   Lý thuyết: VPC, subnet public/private, security group, NAT gateway, route table.
    
*   Thực hành: Dựng 1 VPC với 1 subnet public + 1 private, đặt EC2 vào private subnet, test kết nối qua bastion.
    

**Ngày 10: S3, chi phí AWS & Dự án tổng hợp Phase 0**

*   Mục tiêu: Deploy hoàn chỉnh script Python lên EC2 với IAM role đúng chuẩn, không hardcode key.
    
*   Lý thuyết: S3 storage class, lifecycle policy, cách AWS tính phí (compute/storage/data transfer).
    
*   Thực hành: Deploy container ngày 7 lên EC2 (dùng role ngày 8, network ngày 9), bật Billing Alert.
    

# PHASE DL - Deep Learning Internals (Ngày 11-20)

**Ngày 11: Neural Network cơ bản**

*   Mục tiêu: Hiểu forward pass của 1 mạng nơ-ron đơn giản.
    
*   Lý thuyết: Perceptron, activation function (ReLU/sigmoid/softmax), fully-connected layer.
    
*   Thực hành: Viết forward pass 1 mạng 2 lớp bằng NumPy thuần (không dùng framework).
    

**Ngày 12: Backpropagation từ tay**

*   Mục tiêu: Tự chứng minh được backprop hoạt động, không chỉ tin framework.
    
*   Lý thuyết: Chain rule áp dụng vào mạng nhiều lớp, computational graph.
    
*   Thực hành: Viết backprop tay cho mạng ngày 11, so kết quả gradient với `torch.autograd`.
    

**Ngày 13: CNN**

*   Mục tiêu: Hiểu vì sao CNN hiệu quả cho dữ liệu ảnh.
    
*   Lý thuyết: Convolution, pooling, receptive field, parameter sharing.
    
*   Thực hành: Train 1 CNN nhỏ (PyTorch) trên MNIST/CIFAR-10 con.
    

**Ngày 14: RNN/LSTM**

*   Mục tiêu: Hiểu vì sao cần kiến trúc tuần tự trước khi học Transformer.
    
*   Lý thuyết: RNN, vanishing gradient, LSTM/GRU gate mechanism.
    
*   Thực hành: Train 1 LSTM nhỏ dự đoán chuỗi thời gian đơn giản.
    

**Ngày 15: Attention Mechanism**

*   Mục tiêu: Hiểu bản chất attention là gì trước khi học Transformer.
    
*   Lý thuyết: Query/Key/Value, scaled dot-product attention, self-attention vs cross-attention.
    
*   Thực hành: Viết attention layer đơn giản bằng NumPy/PyTorch, visualize attention weight.
    

**Ngày 16: Kiến trúc Transformer**

*   Mục tiêu: Đọc hiểu được sơ đồ kiến trúc Transformer gốc (Attention is All You Need).
    
*   Lý thuyết: Multi-head attention, feed-forward block, residual connection, layer norm, encoder vs decoder.
    
*   Thực hành: Vẽ lại kiến trúc Transformer từ trí nhớ, đối chiếu paper gốc.
    

**Ngày 17: Embedding & Positional Encoding**

*   Mục tiêu: Hiểu vì sao FM cần positional encoding, embedding hoạt động thế nào.
    
*   Lý thuyết: Word embedding, sinusoidal positional encoding, rotary embedding (RoPE) tổng quan.
    
*   Thực hành: Trực quan hóa embedding space của vài từ bằng t-SNE/PCA.
    

**Ngày 18: Fine-tuning mechanics & PEFT**

*   Mục tiêu: Phân biệt full fine-tune, LoRA, adapter, prompt tuning.
    
*   Lý thuyết: Parameter-Efficient Fine-Tuning (PEFT), LoRA (low-rank decomposition), adapter layer.
    
*   Thực hành: Fine-tune 1 model nhỏ (HuggingFace) bằng LoRA trên GPU miễn phí (Colab/SageMaker Studio Lab).
    

**Ngày 19: RLHF & DPO**

*   Mục tiêu: Hiểu vì sao model "align" khác model "pretrain" thuần.
    
*   Lý thuyết: Reward model, PPO trong RLHF, Direct Preference Optimization (DPO) - ý tưởng đơn giản hóa RLHF.
    
*   Thực hành: Đọc 1 dataset preference (ví dụ Anthropic HH-RLHF) và mô tả bằng lời cách reward model được train.
    

**Ngày 20: Dự án tổng hợp Phase DL**

*   Mục tiêu: Chứng minh hiểu bản chất, không chỉ gọi API.
    
*   Lý thuyết: Ôn lại toàn bộ pipeline: input → embedding → attention → FFN → output → loss → backprop → fine-tune.
    
*   Thực hành: Viết 1 báo cáo kỹ thuật (2-3 trang) giải thích transformer + LoRA + DPO bằng ngôn ngữ của chính bạn, kèm sơ đồ tay.
    

# PHASE 1 - Data Engineering cho ML (Ngày 21-35)

**Ngày 21: Định dạng dữ liệu**

*   Mục tiêu: Chọn đúng format cho đúng use case.
    
*   Lý thuyết: Parquet vs JSON vs CSV vs ORC vs Avro vs RecordIO - columnar vs row-based, nén, schema evolution.
    
*   Thực hành: Convert 1 file CSV lớn sang Parquet, so sánh dung lượng và tốc độ đọc.
    

**Ngày 22: Batch ingestion với S3 & Glue**

*   Mục tiêu: Ingest dữ liệu batch từ nguồn có cấu trúc.
    
*   Lý thuyết: AWS Glue Crawler, Glue Data Catalog, Glue Job (Spark).
    
*   Thực hành: Viết 1 Glue job đọc dữ liệu từ RDS, ghi ra S3 dạng Parquet.
    

**Ngày 23: Streaming ingestion - Kinesis Data Streams**

*   Mục tiêu: Hiểu ingest dữ liệu thời gian thực.
    
*   Lý thuyết: Shard, partition key, consumer, độ trễ.
    
*   Thực hành: Tạo Kinesis stream, viết producer gửi dữ liệu giả lập, Lambda consumer ghi ra S3.
    

**Ngày 24: Kinesis Firehose & khái niệm Kafka/Flink**

*   Mục tiêu: Phân biệt Firehose (managed, đơn giản) với Kafka/Flink (linh hoạt, phức tạp hơn).
    
*   Lý thuyết: Firehose buffering, Apache Kafka partition/consumer group, Flink stream processing.
    
*   Thực hành: Cấu hình Firehose tự động ghi Kinesis stream ngày 23 ra S3 theo batch thời gian.
    

**Ngày 25: Glue DataBrew & Glue Data Quality**

*   Mục tiêu: Làm sạch dữ liệu không cần code.
    
*   Lý thuyết: Data profiling, transformation recipe, data quality rule.
    
*   Thực hành: Dùng DataBrew làm sạch bộ dữ liệu ngày 22, viết rule Data Quality kiểm tra null/duplicate.
    

**Ngày 26: SageMaker Data Wrangler**

*   Mục tiêu: Trực quan hóa và transform dữ liệu trước khi train.
    
*   Lý thuyết: Data flow trong Data Wrangler, export sang Feature Store/Pipeline.
    
*   Thực hành: Import bộ dữ liệu, thử 3 transform (impute, scale, encode), export flow.
    

**Ngày 27: Feature engineering cơ bản**

*   Mục tiêu: Hiểu và áp dụng đúng kỹ thuật feature engineering theo loại thuật toán.
    
*   Lý thuyết: Scaling/standardization, binning, log transform, feature splitting.
    
*   Thực hành: Áp dụng 3 kỹ thuật trên vào bộ dữ liệu ngày 26, so sánh phân phối trước/sau.
    

**Ngày 28: Encoding techniques**

*   Mục tiêu: Chọn đúng encoding cho biến phân loại.
    
*   Lý thuyết: One-hot, label encoding, binary encoding, tokenization (cho text).
    
*   Thực hành: Encode 1 cột categorical nhiều giá trị bằng 2 phương pháp khác nhau, so sánh chiều dữ liệu.
    

**Ngày 29: SageMaker Feature Store**

*   Mục tiêu: Hiểu và dựng feature store dùng chung train/serving.
    
*   Lý thuyết: Online store vs offline store, feature group, point-in-time query.
    
*   Thực hành: Tạo feature group, ingest feature từ ngày 27-28, query lại từ online store.
    

**Ngày 30: Data quality - outlier, missing, dedup**

*   Mục tiêu: Xây quy trình validate dữ liệu trước khi đưa vào training.
    
*   Lý thuyết: Phương pháp phát hiện outlier (IQR, z-score), chiến lược imputation, dedup logic.
    
*   Thực hành: Viết script phát hiện + xử lý outlier/missing/duplicate cho bộ dữ liệu đang dùng.
    

**Ngày 31: Bias trong dữ liệu - Class Imbalance & DPL**

*   Mục tiêu: Đo được mức độ bias trong dữ liệu trước khi train.
    
*   Lý thuyết: Class Imbalance (CI), Difference in Proportions of Labels (DPL), vì sao bias dữ liệu → bias model.
    
*   Thực hành: Chạy SageMaker Clarify đo CI/DPL trên bộ dữ liệu, đọc report.
    

**Ngày 32: Compliance - PII/PHI & mã hóa**

*   Mục tiêu: Xử lý đúng dữ liệu nhạy cảm theo compliance.
    
*   Lý thuyết: PII/PHI, data residency, mã hóa at-rest/in-transit, anonymization vs masking.
    
*   Thực hành: Dùng Comprehend phát hiện PII trong text, mã hóa bucket S3 bằng KMS.
    

**Ngày 33: Feature engineering nâng cao I - Feature Selection & Leakage**

*   Mục tiêu: Tránh target leakage - lỗi âm thầm phá hỏng model.
    
*   Lý thuyết: Feature selection (filter/wrapper/embedded method), target leakage là gì và vì sao nguy hiểm.
    
*   Thực hành: Rà soát bộ feature đang có, chỉ ra và loại bỏ ít nhất 1 feature có nguy cơ leakage.
    

**Ngày 34: Feature engineering nâng cao II - SHAP & Permutation Importance**

*   Mục tiêu: Giải thích được model dựa vào feature nào để ra quyết định.
    
*   Lý thuyết: SHAP values, permutation importance, feature lineage.
    
*   Thực hành: Train nhanh 1 model baseline, chạy SHAP để xếp hạng feature quan trọng.
    

**Ngày 35: Dự án tổng hợp Phase 1**

*   Mục tiêu: Có pipeline dữ liệu hoàn chỉnh sẵn sàng cho training.
    
*   Lý thuyết: Ôn lại toàn bộ luồng: ingest → clean → feature engineer → bias check → feature store.
    
*   Thực hành: Ghép toàn bộ các bước ngày 21-34 thành 1 pipeline chạy được (Glue job hoặc script), viết báo cáo bias.
    

# PHASE 2 - ML Model Development (Ngày 36-55)

**Ngày 36: Chọn thuật toán - cổ điển vs DL vs Foundation Model**

*   Mục tiêu: Ra quyết định đúng loại model cho đúng bài toán.
    
*   Lý thuyết: Trade-off giữa độ phức tạp bài toán, lượng dữ liệu, chi phí, khả năng diễn giải.
    
*   Thực hành: Viết bảng so sánh 3 hướng tiếp cận cho 1 bài toán cụ thể (ví dụ dự đoán churn).
    

**Ngày 37: Thuật toán tree-based - XGBoost sâu**

*   Mục tiêu: Hiểu cơ chế boosting, không chỉ gọi `.fit()`.
    
*   Lý thuyết: Gradient boosting, cây quyết định, learning rate trong boosting.
    
*   Thực hành: Train XGBoost trên bộ dữ liệu Phase 1, tune 3 hyperparameter tay.
    

**Ngày 38: SageMaker built-in algorithms**

*   Mục tiêu: Biết dùng built-in algorithm cho bài toán chuẩn nhanh chóng.
    
*   Lý thuyết: Danh sách built-in algorithm phổ biến và use case tương ứng.
    
*   Thực hành: Train 1 built-in algorithm (ví dụ Linear Learner) trên SageMaker.
    

**Ngày 39: Elements of training**

*   Mục tiêu: Hiểu và điều chỉnh đúng các tham số training cơ bản.
    
*   Lý thuyết: Epoch, batch size, learning rate, early stopping.
    
*   Thực hành: Thử 3 giá trị learning rate khác nhau, quan sát loss curve.
    

**Ngày 40: Regularization**

*   Mục tiêu: Chống overfitting có chủ đích.
    
*   Lý thuyết: L1/L2 regularization, dropout, weight decay.
    
*   Thực hành: Train cùng 1 model có/không dropout, so sánh gap giữa train/validation loss.
    

**Ngày 41: SageMaker script mode với PyTorch**

*   Mục tiêu: Kiểm soát toàn bộ vòng lặp training thay vì chỉ dùng built-in.
    
*   Lý thuyết: Script mode, entry point, SageMaker training container.
    
*   Thực hành: Viết script PyTorch train model, submit training job qua SageMaker script mode.
    

**Ngày 42: Distributed training - tổng quan (chi tiết ở Phase DIST sau)**

*   Mục tiêu: Nhận diện được khi nào cần train phân tán.
    
*   Lý thuyết: Data parallel vs model parallel ở mức khái niệm.
    
*   Thực hành: Đọc log training job ngày 41, ước tính thời gian nếu dữ liệu tăng 10x - có cần phân tán không?
    

**Ngày 43: Hyperparameter tuning - Random Search**

*   Mục tiêu: Tự động hóa việc tìm hyperparameter thay vì tay.
    
*   Lý thuyết: Random search vs grid search, vì sao random search hiệu quả hơn grid trong không gian nhiều chiều.
    
*   Thực hành: Chạy random search tay (script) trên 2-3 hyperparameter.
    

**Ngày 44: Bayesian Optimization & SageMaker AMT**

*   Mục tiêu: Dùng tuning thông minh hơn random search.
    
*   Lý thuyết: Bayesian optimization - cách nó "học" từ các lần thử trước.
    
*   Thực hành: Chạy SageMaker Automatic Model Tuning, so sánh kết quả với random search ngày 43.
    

**Ngày 45: Ensemble methods**

*   Mục tiêu: Hiểu vì sao ensemble thường thắng single model.
    
*   Lý thuyết: Bagging, boosting, stacking.
    
*   Thực hành: Stack 2-3 model khác nhau (ví dụ XGBoost + Linear), so sánh với từng model riêng lẻ.
    

**Ngày 46: Model evaluation metrics I**

*   Mục tiêu: Đọc hiểu confusion matrix và các metric phân loại.
    
*   Lý thuyết: Confusion matrix, precision/recall/F1, accuracy.
    
*   Thực hành: Tính tay các metric trên trên tập validation, không chỉ dùng hàm có sẵn.
    

**Ngày 47: Model evaluation metrics II**

*   Mục tiêu: Chọn đúng metric theo bài toán kinh doanh.
    
*   Lý thuyết: ROC-AUC, RMSE, khi nào recall quan trọng hơn accuracy (ví dụ gian lận).
    
*   Thực hành: Viết luận điểm ngắn: vì sao metric X phù hợp hơn metric Y cho bài toán đang làm.
    

**Ngày 48: Model size reduction**

*   Mục tiêu: Giảm kích thước model để deploy trong môi trường giới hạn tài nguyên.
    
*   Lý thuyết: Pruning, quantization cơ bản (int8), compression.
    
*   Thực hành: Quantize 1 model nhỏ, so sánh kích thước và độ chính xác trước/sau.
    

**Ngày 49: Fine-tuning qua SageMaker JumpStart**

*   Mục tiêu: Fine-tune model có sẵn nhanh chóng thay vì train from scratch.
    
*   Lý thuyết: SageMaker JumpStart model hub, transfer learning.
    
*   Thực hành: Fine-tune 1 model từ JumpStart trên dữ liệu riêng của bạn.
    

**Ngày 50: Fine-tuning qua Amazon Bedrock**

*   Mục tiêu: So sánh fine-tuning trên FM qua Bedrock với SageMaker.
    
*   Lý thuyết: Bedrock custom model, fine-tuning job, provisioned throughput cho custom model.
    
*   Thực hành: Chạy 1 fine-tuning job nhỏ trên Bedrock (nếu có quyền truy cập) hoặc đọc kỹ tài liệu + mô phỏng cấu hình.
    

**Ngày 51: SageMaker Model Registry**

*   Mục tiêu: Quản lý version model có kỷ luật.
    
*   Lý thuyết: Model package group, model version, approval status.
    
*   Thực hành: Đăng ký 2-3 version model đã train vào Model Registry, gắn metadata.
    

**Ngày 52: SageMaker Debugger & convergence issues**

*   Mục tiêu: Debug được vì sao model không hội tụ.
    
*   Lý thuyết: Vanishing/exploding gradient, loss không giảm - nguyên nhân thường gặp.
    
*   Thực hành: Cố tình set learning rate quá cao để gây exploding gradient, dùng Debugger quan sát và fix.
    

**Ngày 53: SageMaker Clarify cho model interpretability**

*   Mục tiêu: Giải thích được model output cho stakeholder không kỹ thuật.
    
*   Lý thuyết: Global vs local explainability, SHAP tích hợp trong Clarify.
    
*   Thực hành: Chạy Clarify explainability report cho model đã train, viết tóm tắt 3 câu cho người không kỹ thuật.
    

**Ngày 54: AI services có sẵn (khi nào không cần tự train)**

*   Mục tiêu: Biết khi nào dùng AI service thay vì tự xây model.
    
*   Lý thuyết: Rekognition, Transcribe, Translate, Comprehend - use case và giới hạn.
    
*   Thực hành: Thử gọi 1 AI service (ví dụ Comprehend sentiment) trên dữ liệu thật, so sánh chi phí/tốc độ với tự train.
    

**Ngày 55: Dự án tổng hợp Phase 2**

*   Mục tiêu: Có 1 model đã train, tune, đánh giá, và đăng ký version hoàn chỉnh.
    
*   Lý thuyết: Ôn lại toàn bộ vòng đời: chọn thuật toán → train → tune → evaluate → register.
    
*   Thực hành: Viết báo cáo: model có overfit/underfit không, dùng learning curve chứng minh, kèm SHAP explainability.
    

# PHASE 3 - Deployment & Orchestration (MLOps cổ điển) (Ngày 56-70)

**Ngày 56: Real-time vs Serverless endpoint**

*   Mục tiêu: Chọn đúng loại endpoint theo yêu cầu latency/traffic.
    
*   Lý thuyết: Real-time endpoint (luôn bật) vs serverless endpoint (scale-to-zero).
    
*   Thực hành: Deploy cùng 1 model dưới 2 hình thức, đo cold-start latency của serverless.
    

**Ngày 57: Async endpoint & Batch transform**

*   Mục tiêu: Xử lý inference không cần phản hồi ngay lập tức.
    
*   Lý thuyết: Async endpoint (dùng SQS/S3), batch transform cho khối lượng lớn.
    
*   Thực hành: Deploy async endpoint, gửi request lớn, nhận kết quả qua callback.
    

**Ngày 58: Multi-model & Multi-container endpoint**

*   Mục tiêu: Tối ưu chi phí khi có nhiều model ít traffic.
    
*   Lý thuyết: Multi-model endpoint (MME), multi-container endpoint.
    
*   Thực hành: Deploy 2 model nhỏ chung 1 MME, đo chi phí so với 2 endpoint riêng.
    

**Ngày 59: Auto scaling cho endpoint**

*   Mục tiêu: Chọn đúng metric để auto scale.
    
*   Lý thuyết: Invocations per instance, model latency, CPU/GPU utilization - vì sao CPU sai với GPU-bound.
    
*   Thực hành: Cấu hình auto scaling policy dựa trên invocations per instance, load test bằng script gửi request dồn dập.
    

**Ngày 60: Infrastructure as Code - CloudFormation**

*   Mục tiêu: Tự động hóa việc dựng hạ tầng, không click tay trên console.
    
*   Lý thuyết: CloudFormation template, stack, resource dependency.
    
*   Thực hành: Viết template tạo 1 endpoint SageMaker từ model đã có.
    

**Ngày 61: Infrastructure as Code - AWS CDK**

*   Mục tiêu: So sánh cách tiếp cận lập trình (CDK) với khai báo thuần (CloudFormation).
    
*   Lý thuyết: CDK construct, stack, synth ra CloudFormation.
    
*   Thực hành: Viết lại template ngày 60 bằng CDK (Python/TypeScript).
    

**Ngày 62: SageMaker Pipelines**

*   Mục tiêu: Tự động hóa toàn bộ luồng train → evaluate → register → deploy.
    
*   Lý thuyết: Pipeline step, condition step, pipeline execution.
    
*   Thực hành: Xây 1 SageMaker Pipeline gồm bước preprocess → train → evaluate → register.
    

**Ngày 63: Apache Airflow / Amazon MWAA**

*   Mục tiêu: Biết dùng orchestrator ngoài hệ sinh thái SageMaker khi cần.
    
*   Lý thuyết: DAG, task dependency, scheduler.
    
*   Thực hành: Viết 1 DAG đơn giản trên MWAA gọi lại pipeline ngày 62.
    

**Ngày 64: Container hóa nâng cao - BYOC**

*   Mục tiêu: Đóng gói được model không nằm trong framework hỗ trợ sẵn của SageMaker.
    
*   Lý thuyết: Bring Your Own Container, SageMaker container contract (train/serve).
    
*   Thực hành: Đóng gói 1 model custom vào container tuân theo chuẩn SageMaker, push lên ECR.
    

**Ngày 65: CI/CD cho ML - CodePipeline/CodeBuild/CodeDeploy**

*   Mục tiêu: Có pipeline CI/CD tự động deploy khi code thay đổi.
    
*   Lý thuyết: CodePipeline stage, CodeBuild buildspec, CodeDeploy deployment group.
    
*   Thực hành: Dựng CI/CD pipeline: commit code → build → test → deploy staging.
    

**Ngày 66: Quality Gate trong CI/CD**

*   Mục tiêu: Chặn deploy nếu model kém chất lượng, không chỉ chặn khi code lỗi.
    
*   Lý thuyết: Automated quality gate - so sánh metric model mới với model cũ.
    
*   Thực hành: Thêm bước trong pipeline: chỉ deploy nếu F1/accuracy mới ≥ model đang chạy.
    

**Ngày 67: Deployment strategy - Blue/Green & Canary**

*   Mục tiêu: Deploy an toàn, giảm rủi ro khi ra model mới.
    
*   Lý thuyết: Blue/green deployment, canary deployment, linear rollout.
    
*   Thực hành: Cấu hình canary deployment cho endpoint (route 10% traffic sang version mới).
    

**Ngày 68: Rollback strategy**

*   Mục tiêu: Có khả năng revert nhanh khi model mới gây lỗi.
    
*   Lý thuyết: Rollback tự động dựa trên alarm, versioning để rollback nhanh.
    
*   Thực hành: Giả lập model lỗi, kích hoạt rollback tự động qua CloudWatch Alarm.
    

**Ngày 69: Dự án - Đo lường 3 hình thức deploy**

*   Mục tiêu: Có số liệu thực tế để ra quyết định kiến trúc sau này.
    
*   Lý thuyết: Ôn lại trade-off real-time/serverless/batch.
    
*   Thực hành: Deploy model dưới 3 hình thức, đo latency p50/p95 và chi phí ước tính mỗi loại.
    

**Ngày 70: Dự án tổng hợp Phase 3**

*   Mục tiêu: Có pipeline CI/CD hoàn chỉnh từ train đến production.
    
*   Lý thuyết: Ôn lại toàn bộ chuỗi IaC → Pipeline → CI/CD → Quality Gate → Canary → Rollback.
    
*   Thực hành: Ghép toàn bộ thành 1 luồng end-to-end chạy được, viết diagram kiến trúc.
    

# PHASE DIST - Distributed Training (Ngày 71-78)

*(Bổ sung theo góp ý: fine-tune LLM lớn cần train đa GPU)*

**Ngày 71: Data Parallel vs Model Parallel - sâu**

*   Mục tiêu: Phân biệt rõ khi nào cần loại song song hóa nào.
    
*   Lý thuyết: Data parallel (nhân bản model, chia dữ liệu) vs model parallel (chia model ra nhiều GPU khi model quá lớn).
    
*   Thực hành: Vẽ sơ đồ minh họa 2 chiến lược cho 1 model cụ thể (ví dụ 7B parameters trên 4 GPU).
    

**Ngày 72: NCCL & communication primitives**

*   Mục tiêu: Hiểu cơ chế giao tiếp giữa các GPU/node.
    
*   Lý thuyết: All-reduce, all-gather, NCCL (NVIDIA Collective Communications Library).
    
*   Thực hành: Đọc log 1 training job đa GPU (nếu có), tìm thời gian dành cho communication vs compute.
    

**Ngày 73: Horovod**

*   Mục tiêu: Hiểu 1 framework distributed training phổ biến ngoài native PyTorch DDP.
    
*   Lý thuyết: Horovod ring all-reduce, tích hợp với TensorFlow/PyTorch.
    
*   Thực hành: Đọc/chạy thử 1 script mẫu Horovod trên môi trường multi-GPU giả lập (hoặc single-GPU để hiểu cấu trúc code).
    

**Ngày 74: DeepSpeed & ZeRO**

*   Mục tiêu: Hiểu vì sao ZeRO giúp train model lớn hơn trên cùng phần cứng.
    
*   Lý thuyết: ZeRO stage 1/2/3 - sharding optimizer state, gradient, parameter.
    
*   Thực hành: Cấu hình 1 file config DeepSpeed ZeRO cho fine-tuning job (dựa trên model ngày 18).
    

**Ngày 75: FSDP (Fully Sharded Data Parallel)**

*   Mục tiêu: So sánh FSDP (PyTorch native) với DeepSpeed.
    
*   Lý thuyết: FSDP sharding strategy, khi nào chọn FSDP thay vì DeepSpeed.
    
*   Thực hành: Chuyển script fine-tuning ngày 18 sang dùng FSDP, so sánh cấu hình với DeepSpeed.
    

**Ngày 76: Tensor Parallelism & Pipeline Parallelism**

*   Mục tiêu: Hiểu 2 kỹ thuật song song hóa nâng cao dùng cho model cực lớn.
    
*   Lý thuyết: Tensor parallelism (chia layer theo chiều ngang), pipeline parallelism (chia theo chiều sâu, micro-batch).
    
*   Thực hành: Đọc kiến trúc Megatron-LM hoặc tài liệu tương đương, tóm tắt cách 2 kỹ thuật kết hợp với data parallel (3D parallelism).
    

**Ngày 77: Multi-GPU/Multi-node training trên SageMaker**

*   Mục tiêu: Chạy được training job phân tán thật trên AWS.
    
*   Lý thuyết: SageMaker distributed training library, instance type nhiều GPU (p4/p5), cấu hình cluster.
    
*   Thực hành: Submit 1 SageMaker training job dùng nhiều instance/GPU với DeepSpeed hoặc FSDP.
    

**Ngày 78: Dự án tổng hợp Phase DIST**

*   Mục tiêu: Fine-tune 1 LLM mở nguồn cỡ vừa (7B) bằng kỹ thuật phân tán.
    
*   Lý thuyết: Ôn lại toàn bộ: data parallel/model parallel, ZeRO, FSDP.
    
*   Thực hành: Fine-tune model dạng Llama/Mistral/Qwen 7B (LoRA + FSDP/DeepSpeed) trên SageMaker training job đa GPU, ghi lại thời gian/chi phí thực tế.
    

# PHASE K8S - AI trên Kubernetes/EKS (Ngày 79-90)

**Ngày 79: Kubernetes cơ bản**

*   Mục tiêu: Hiểu 3 khái niệm lõi: Pod, Deployment, Service.
    
*   Lý thuyết: Pod, ReplicaSet, Deployment, Service, kubectl cơ bản.
    
*   Thực hành: Cài minikube/kind local, deploy 1 ứng dụng "hello world" bằng kubectl.
    

**Ngày 80: Thiết lập EKS**

*   Mục tiêu: Có 1 cluster EKS chạy thật trên AWS.
    
*   Lý thuyết: EKS control plane, node group, managed vs self-managed node.
    
*   Thực hành: Tạo EKS cluster bằng `eksctl`, deploy lại ứng dụng ngày 79 lên cluster thật.
    

**Ngày 81: GPU Scheduling trên Kubernetes**

*   Mục tiêu: Chạy được workload cần GPU trên K8s.
    
*   Lý thuyết: NVIDIA device plugin, resource request/limit cho GPU, node taint/toleration.
    
*   Thực hành: Deploy 1 pod yêu cầu GPU, verify GPU được gán đúng.
    

**Ngày 82: Karpenter - autoscaling thông minh**

*   Mục tiêu: Tự động scale node theo nhu cầu workload GPU/CPU.
    
*   Lý thuyết: Karpenter vs Cluster Autoscaler, provisioner, consolidation.
    
*   Thực hành: Cài Karpenter, cấu hình provisioner cho node GPU, test scale-up/scale-down.
    

**Ngày 83: Ray cơ bản**

*   Mục tiêu: Hiểu Ray như nền tảng tính toán phân tán cho AI.
    
*   Lý thuyết: Ray cluster, Ray Task/Actor, Ray Train.
    
*   Thực hành: Chạy 1 chương trình Ray đơn giản phân tán 1 tác vụ tính toán trên nhiều worker.
    

**Ngày 84: Ray Serve cho model serving**

*   Mục tiêu: Serve model qua Ray Serve trên EKS.
    
*   Lý thuyết: Ray Serve deployment, autoscaling, batching request.
    
*   Thực hành: Deploy model (từ Phase 2) qua Ray Serve trên cluster EKS ngày 80.
    

**Ngày 85: Kubeflow Pipelines**

*   Mục tiêu: Hiểu orchestration ML trên K8s tương đương SageMaker Pipelines.
    
*   Lý thuyết: Kubeflow component, pipeline DSL, so sánh với SageMaker Pipelines.
    
*   Thực hành: Viết 1 Kubeflow pipeline đơn giản (preprocess → train) chạy trên cluster.
    

**Ngày 86: KServe cho inference serving**

*   Mục tiêu: Serve model production-grade trên K8s với autoscaling to zero.
    
*   Lý thuyết: KServe InferenceService, predictor/transformer/explainer, scale-to-zero.
    
*   Thực hành: Deploy model qua KServe, test scale-to-zero khi không có traffic.
    

**Ngày 87: Argo Workflows**

*   Mục tiêu: Orchestrate pipeline phức tạp dạng DAG trên K8s.
    
*   Lý thuyết: Argo Workflow template, DAG, artifact passing giữa step.
    
*   Thực hành: Viết 1 Argo Workflow chạy lại pipeline train → evaluate → deploy.
    

**Ngày 88: Feature Platform trên Kubernetes (Feast tổng quan)**

*   Mục tiêu: Biết lựa chọn ngoài SageMaker Feature Store khi chạy trên K8s.
    
*   Lý thuyết: Feast architecture, online/offline store tương đương Feature Store.
    
*   Thực hành: Đọc kiến trúc Feast, so sánh bảng tính năng với SageMaker Feature Store.
    

**Ngày 89: So sánh SageMaker vs EKS-based stack**

*   Mục tiêu: Ra quyết định kiến trúc: khi nào chọn SageMaker, khi nào chọn EKS.
    
*   Lý thuyết: Trade-off: managed (nhanh, ít kiểm soát) vs self-hosted trên K8s (linh hoạt, cần đội ngũ platform).
    
*   Thực hành: Viết bảng so sánh chi phí vận hành, độ phức tạp, khả năng tùy biến giữa 2 hướng.
    

**Ngày 90: Dự án tổng hợp Phase K8S**

*   Mục tiêu: Có model serving chạy trên EKS, so sánh với SageMaker endpoint.
    
*   Lý thuyết: Ôn lại toàn bộ: GPU scheduling, Karpenter, KServe/Ray Serve.
    
*   Thực hành: Deploy cùng 1 model qua KServe/Ray Serve trên EKS và qua SageMaker endpoint, so sánh latency/chi phí/độ phức tạp vận hành.
    

# PHASE 4 - Monitoring, Cost, Security cho ML (Ngày 91-100)

**Ngày 91: Data Drift vs Concept Drift**

*   Mục tiêu: Phân biệt 2 loại drift và cách phát hiện từng loại.
    
*   Lý thuyết: Data drift (phân phối input thay đổi) vs concept drift (quan hệ input-output thay đổi).
    
*   Thực hành: Giả lập data drift (đổi phân phối 1 feature) và concept drift (đổi logic label), quan sát ảnh hưởng đến model.
    

**Ngày 92: SageMaker Model Monitor**

*   Mục tiêu: Tự động phát hiện drift trong production.
    
*   Lý thuyết: Baseline, monitoring schedule, violation report.
    
*   Thực hành: Cấu hình Model Monitor cho endpoint, tạo baseline, giả lập drift để xem cảnh báo.
    

**Ngày 93: A/B Testing & Shadow Deployment**

*   Mục tiêu: So sánh model mới với model cũ mà không rủi ro.
    
*   Lý thuyết: Shadow deployment (chạy song song, không ảnh hưởng response thật), A/B test thống kê.
    
*   Thực hành: Cấu hình shadow variant cho endpoint, so sánh output 2 model trên cùng traffic.
    

**Ngày 94: Cost Optimization - Spot/Reserved/Savings Plans**

*   Mục tiêu: Giảm chi phí training/inference đáng kể.
    
*   Lý thuyết: Spot Instance (rẻ, có thể bị thu hồi), Reserved Instance, SageMaker Savings Plans.
    
*   Thực hành: Chạy 1 training job dùng Spot Instance với checkpoint để chịu được gián đoạn.
    

**Ngày 95: Inference Recommender & Rightsizing**

*   Mục tiêu: Chọn đúng instance type, không thừa không thiếu.
    
*   Lý thuyết: SageMaker Inference Recommender, Compute Optimizer.
    
*   Thực hành: Chạy Inference Recommender cho endpoint đang có, áp dụng khuyến nghị.
    

**Ngày 96: CloudWatch Dashboard cho ML**

*   Mục tiêu: Có cái nhìn tổng quan real-time về hệ thống ML.
    
*   Lý thuyết: Custom metric, dashboard widget, alarm.
    
*   Thực hành: Xây dashboard theo dõi latency, error rate, invocation count cho endpoint.
    

**Ngày 97: CloudTrail Audit**

*   Mục tiêu: Có khả năng truy vết ai đã làm gì với hệ thống ML.
    
*   Lý thuyết: CloudTrail event, trail, log file integrity.
    
*   Thực hành: Tạo CloudTrail trail, tìm lại 1 hành động cụ thể (ví dụ update endpoint) trong log.
    

**Ngày 98: VPC Isolation cho Endpoint**

*   Mục tiêu: Bảo vệ endpoint nhạy cảm không public ra internet.
    
*   Lý thuyết: VPC endpoint cho SageMaker, private subnet cho model hosting.
    
*   Thực hành: Cấu hình endpoint chạy hoàn toàn trong VPC, verify không truy cập được từ internet.
    

**Ngày 99: KMS & Secrets Manager**

*   Mục tiêu: Mã hóa dữ liệu và quản lý secret đúng chuẩn.
    
*   Lý thuyết: KMS key policy, envelope encryption, Secrets Manager rotation.
    
*   Thực hành: Mã hóa model artifact bằng KMS key riêng, lưu 1 credential vào Secrets Manager và gọi lại từ code.
    

**Ngày 100: Dự án tổng hợp Phase 4**

*   Mục tiêu: Có hệ thống monitoring + security hoàn chỉnh cho 1 endpoint production.
    
*   Lý thuyết: Ôn lại toàn bộ: drift monitoring, cost optimization, security.
    
*   Thực hành: Ghép Model Monitor + Dashboard + VPC isolation + KMS thành 1 setup hoàn chỉnh, viết runbook xử lý khi có cảnh báo.
    

# PHASE SYS - ML System Design (Ngày 101-108)

*(Bổ sung theo góp ý: kỹ năng thường được hỏi ở level Senior)*

**Ngày 101: Framework tư duy System Design cho ML**

*   Mục tiêu: Có khung tư duy nhất quán để thiết kế bất kỳ hệ thống ML nào.
    
*   Lý thuyết: Functional requirement (bài toán ML là gì) vs non-functional (latency, throughput, freshness, scale).
    
*   Thực hành: Áp dụng framework vào 1 bài toán quen thuộc, liệt kê đầy đủ yêu cầu trước khi thiết kế.
    

**Ngày 102: Thiết kế hệ thống Recommendation**

*   Mục tiêu: Thiết kế được kiến trúc gợi ý sản phẩm/nội dung ở mức production.
    
*   Lý thuyết: Candidate generation, ranking, re-ranking; cold-start problem.
    
*   Thực hành: Viết design doc cho hệ recommendation, xác định offline batch job và online serving path.
    

**Ngày 103: Thiết kế hệ thống Fraud Detection**

*   Mục tiêu: Thiết kế hệ thống phát hiện gian lận real-time.
    
*   Lý thuyết: Trade-off latency cực thấp vs độ chính xác, feature real-time (velocity check), imbalanced label.
    
*   Thực hành: Viết design doc: luồng feature real-time, model, ngưỡng quyết định, human review escalation.
    

**Ngày 104: Thiết kế hệ thống Search Ranking**

*   Mục tiêu: Hiểu kiến trúc ranking cho search engine/e-commerce.
    
*   Lý thuyết: Retrieval + ranking 2 giai đoạn, learning to rank, relevance feedback loop.
    
*   Thực hành: Viết design doc cho search ranking 1 sản phẩm cụ thể (ví dụ tìm kiếm nội bộ).
    

**Ngày 105: Thiết kế hệ thống Personalization**

*   Mục tiêu: Thiết kế cá nhân hóa trải nghiệm người dùng ở quy mô lớn.
    
*   Lý thuyết: User embedding, real-time feature vs batch feature, feedback loop và filter bubble.
    
*   Thực hành: Viết design doc, đặc biệt chú ý phần freshness của user profile.
    

**Ngày 106: Thiết kế hệ thống Demand Forecasting**

*   Mục tiêu: Thiết kế hệ thống dự báo nhu cầu ở quy mô doanh nghiệp.
    
*   Lý thuyết: Time series forecasting ở scale (nhiều SKU/khu vực), retraining cadence.
    
*   Thực hành: Viết design doc, xác định tần suất retrain hợp lý và cách xử lý seasonality.
    

**Ngày 107: Offline/Online Feature & Retraining Cadence**

*   Mục tiêu: Hiểu sâu sự khác biệt giữa feature dùng offline và online trong mọi hệ thống trên.
    
*   Lý thuyết: Feature freshness, retraining trigger (theo lịch vs theo drift), feature store đồng bộ.
    
*   Thực hành: Với 1 trong các design doc đã viết, bổ sung chi tiết chiến lược retraining và freshness.
    

**Ngày 108: Dự án tổng hợp Phase SYS**

*   Mục tiêu: Có 1 design doc đầy đủ, trình bày được như trong phỏng vấn Senior.
    
*   Lý thuyết: Ôn lại toàn bộ 5 hệ thống đã thiết kế, rút ra pattern chung.
    
*   Thực hành: Chọn 1 hệ thống, viết design doc hoàn chỉnh (yêu cầu, kiến trúc, trade-off, metric thành công) và trình bày miệng như thuyết trình thật (ghi âm lại tự nghe).
    

# PHASE 5 - Nền tảng GenAI: Foundation Models, Prompt Engineering, RAG (Ngày 109-128)

**Ngày 109: Ôn Transformer trong bối cảnh Foundation Model**

*   Mục tiêu: Nối kiến thức Phase DL vào bối cảnh FM thương mại.
    
*   Lý thuyết: Decoder-only architecture (GPT-style) mà hầu hết FM hiện dùng, context window là gì về mặt kỹ thuật.
    
*   Thực hành: Đọc model card của 1 FM trên Bedrock, xác định kiến trúc, context window, giá theo token.
    

**Ngày 110: So sánh & lựa chọn Foundation Model**

*   Mục tiêu: Ra quyết định chọn FM dựa trên dữ liệu, không theo cảm tính.
    
*   Lý thuyết: Benchmark phổ biến, capability analysis, limitation evaluation.
    
*   Thực hành: So sánh 3 model trên Bedrock cho cùng 1 tác vụ, ghi lại chất lượng/chi phí/latency.
    

**Ngày 111: Amazon Bedrock - thao tác nền tảng**

*   Mục tiêu: Gọi được Bedrock API thành thạo.
    
*   Lý thuyết: Bedrock API request/response schema, model ID, inference parameter (temperature/top-p/top-k).
    
*   Thực hành: Viết script gọi Bedrock với các tham số khác nhau, quan sát ảnh hưởng đến output.
    

**Ngày 112: Multi-model Architecture**

*   Mục tiêu: Thiết kế hệ thống có thể đổi model không cần sửa code.
    
*   Lý thuyết: AppConfig để quản lý config runtime, Lambda + API Gateway làm lớp trừu tượng.
    
*   Thực hành: Xây lớp abstraction gọi được 2 model khác nhau qua 1 config switch.
    

**Ngày 113: Resilience cho hệ thống FM**

*   Mục tiêu: Hệ thống không sập khi FM service gián đoạn.
    
*   Lý thuyết: Cross-region inference, circuit breaker pattern, graceful degradation.
    
*   Thực hành: Implement circuit breaker đơn giản bằng Step Functions cho lời gọi Bedrock.
    

**Ngày 114: Quyết định Customization - Prompt vs RAG vs Fine-tune**

*   Mục tiêu: Ra quyết định kiến trúc quan trọng nhất trong GenAI.
    
*   Lý thuyết: Cây quyết định: khi nào prompt đủ, khi nào cần RAG, khi nào cần fine-tune/LoRA, khi nào cần train from scratch.
    
*   Thực hành: Áp dụng cây quyết định vào 3 use case giả định, giải thích lựa chọn.
    

**Ngày 115: Chunking Strategy I - Fixed-size**

*   Mục tiêu: Hiểu cách chia nhỏ tài liệu cơ bản nhất.
    
*   Lý thuyết: Fixed-size chunking, overlap giữa chunk, trade-off kích thước chunk.
    
*   Thực hành: Chunk 1 tài liệu dài bằng fixed-size, thử 3 kích thước chunk khác nhau.
    

**Ngày 116: Chunking Strategy II - Hierarchical/Semantic**

*   Mục tiêu: Chunk theo cấu trúc nội dung, giữ ngữ cảnh tốt hơn.
    
*   Lý thuyết: Hierarchical chunking theo heading/section, semantic chunking theo ý nghĩa.
    
*   Thực hành: Chunk cùng tài liệu ngày 115 theo hierarchical, so sánh chất lượng chunk.
    

**Ngày 117: Embedding Model Selection**

*   Mục tiêu: Chọn đúng embedding model theo domain dữ liệu.
    
*   Lý thuyết: Amazon Titan Embeddings, dimensionality, domain fit (văn bản chuyên ngành cần embedding phù hợp).
    
*   Thực hành: Tạo embedding cho các chunk ngày 116 bằng Titan, kiểm tra cosine similarity giữa các cặp liên quan/không liên quan.
    

**Ngày 118: Vector Store - OpenSearch Neural Plugin**

*   Mục tiêu: Dựng vector search tự quản lý, linh hoạt cao.
    
*   Lý thuyết: OpenSearch k-NN, Neural plugin tích hợp Bedrock.
    
*   Thực hành: Index các embedding ngày 117 vào OpenSearch, thử truy vấn vector search.
    

**Ngày 119: Vector Store - Aurora pgvector**

*   Mục tiêu: Biết lựa chọn thay thế khi đã có hệ quản trị quan hệ.
    
*   Lý thuyết: pgvector extension, index type (IVFFlat/HNSW).
    
*   Thực hành: Cài pgvector trên Aurora, index cùng bộ embedding, so sánh trải nghiệm với OpenSearch.
    

**Ngày 120: Vector Store - Bedrock Knowledge Bases (managed)**

*   Mục tiêu: Dùng giải pháp managed để giảm effort vận hành.
    
*   Lý thuyết: Bedrock Knowledge Bases pipeline (ingest → chunk → embed → index tự động).
    
*   Thực hành: Tạo 1 Knowledge Base từ tài liệu ngày 115, so sánh effort với 2 cách tự dựng ở trên.
    

**Ngày 121: Metadata Framework cho Retrieval**

*   Mục tiêu: Tăng độ chính xác truy vấn bằng metadata.
    
*   Lý thuyết: S3 object metadata, custom attribute (tác giả, ngày, domain), filter theo metadata.
    
*   Thực hành: Gắn metadata cho tài liệu, thử truy vấn có filter metadata vs không filter.
    

**Ngày 122: Hybrid Search**

*   Mục tiêu: Kết hợp keyword search và vector search để tăng recall.
    
*   Lý thuyết: BM25 (keyword) + vector similarity, cách kết hợp điểm số.
    
*   Thực hành: Cấu hình hybrid search trên OpenSearch, so sánh kết quả với vector-only search.
    

**Ngày 123: Reranking**

*   Mục tiêu: Cải thiện độ chính xác top-k kết quả truy vấn.
    
*   Lý thuyết: Reranker model, cross-encoder vs bi-encoder.
    
*   Thực hành: Áp dụng Bedrock reranker (hoặc model reranking tương đương) lên kết quả hybrid search ngày 122.
    

**Ngày 124: Retrieval Evaluation**

*   Mục tiêu: Đo lường được chất lượng retrieval bằng số liệu, không chỉ cảm quan.
    
*   Lý thuyết: Recall@K, Precision@K, MRR (Mean Reciprocal Rank), NDCG, Hit Rate.
    
*   Thực hành: Xây 1 bộ query có ground truth (câu hỏi + tài liệu đúng), tính Recall@K và MRR cho hệ thống đang có.
    

**Ngày 125: Prompt Engineering nâng cao**

*   Mục tiêu: Viết prompt có cấu trúc, kiểm soát được output.
    
*   Lý thuyết: Role definition, chain-of-thought, structured output (JSON Schema enforcement).
    
*   Thực hành: Viết 1 prompt yêu cầu output JSON theo schema cố định, test độ ổn định qua nhiều lần gọi.
    

**Ngày 126: Prompt Chaining & Bedrock Prompt Flows**

*   Mục tiêu: Xử lý tác vụ phức tạp bằng chuỗi prompt có điều kiện.
    
*   Lý thuyết: Sequential prompt chain, conditional branching, reusable prompt component.
    
*   Thực hành: Xây 1 Prompt Flow trong Bedrock với ít nhất 1 nhánh điều kiện.
    

**Ngày 127: Prompt Versioning & Governance**

*   Mục tiêu: Quản lý prompt như quản lý code - có review, audit, rollback.
    
*   Lý thuyết: Bedrock Prompt Management, template repository, approval workflow.
    
*   Thực hành: Tạo 2 version của cùng 1 prompt trong Prompt Management, log thay đổi qua CloudTrail.
    

**Ngày 128: Dự án tổng hợp Phase 5**

*   Mục tiêu: Có hệ thống RAG hoàn chỉnh, đo lường được chất lượng.
    
*   Lý thuyết: Ôn lại toàn bộ luồng: ingest → chunk → embed → index → hybrid search → rerank → generate.
    
*   Thực hành: Ghép toàn bộ pipeline RAG (Ngày 109-127) thành 1 hệ thống end-to-end, chạy bộ eval Recall@K/MRR ngày 124 trên toàn hệ thống, viết báo cáo.
    

# PHASE 6 - Agentic AI, API Integration, Enterprise (Ngày 129-148)

**Ngày 129: Agentic AI - Khái niệm & ReAct Pattern**

*   Mục tiêu: Hiểu cách agent "suy nghĩ rồi hành động".
    
*   Lý thuyết: ReAct (Reasoning + Acting) pattern, vòng lặp thought-action-observation.
    
*   Thực hành: Viết tay 1 ví dụ ReAct trace cho 1 câu hỏi cần tra cứu (mô phỏng bằng tay, chưa cần code).
    

**Ngày 130: Chain-of-thought có cấu trúc qua Step Functions**

*   Mục tiêu: Kiểm soát reasoning loop, không để agent chạy tự do vô hạn.
    
*   Lý thuyết: Step Functions state machine, cách encode ReAct loop thành state machine có giới hạn bước.
    
*   Thực hành: Xây 1 Step Functions state machine thực hiện tối đa N bước reasoning, gọi Bedrock ở mỗi bước.
    

**Ngày 131: Agent Memory & State Management**

*   Mục tiêu: Agent nhớ được ngữ cảnh qua nhiều lượt hội thoại.
    
*   Lý thuyết: Short-term memory (context window) vs long-term memory (external store), DynamoDB cho conversation history.
    
*   Thực hành: Lưu và truy xuất lịch sử hội thoại từ DynamoDB, đưa vào prompt của lượt tiếp theo.
    

**Ngày 132: Multi-agent Orchestration**

*   Mục tiêu: Hiểu cách nhiều agent chuyên biệt phối hợp giải quyết 1 bài toán.
    
*   Lý thuyết: Strands Agents, AWS Agent Squad, supervisor-agent pattern.
    
*   Thực hành: Thiết kế (sơ đồ) 1 hệ 2-3 agent chuyên biệt (ví dụ agent tra cứu + agent tổng hợp) phối hợp qua 1 supervisor.
    

**Ngày 133: Model Context Protocol (MCP) - Tổng quan**

*   Mục tiêu: Hiểu chuẩn hóa cách agent gọi tool.
    
*   Lý thuyết: MCP client/server, tool definition, resource/prompt trong MCP.
    
*   Thực hành: Đọc spec MCP, vẽ sơ đồ luồng agent gọi tool qua MCP.
    

**Ngày 134: MCP Server bằng Lambda**

*   Mục tiêu: Xây tool đơn giản, nhẹ cho agent dùng.
    
*   Lý thuyết: Stateless MCP server, phù hợp cho tool nhanh, không cần giữ trạng thái.
    
*   Thực hành: Viết 1 MCP server bằng Lambda cung cấp 1 tool (ví dụ tra cứu thời tiết giả lập).
    

**Ngày 135: MCP Server bằng ECS**

*   Mục tiêu: Xây tool phức tạp, có trạng thái, chạy lâu dài.
    
*   Lý thuyết: Khi nào cần container thay vì Lambda (long-running, cần state, cần thư viện nặng).
    
*   Thực hành: Viết 1 MCP server phức tạp hơn (ví dụ truy vấn database), deploy lên ECS/Fargate.
    

**Ngày 136: Agent Safeguards**

*   Mục tiêu: Ngăn agent chạy mất kiểm soát (rủi ro lớn nhất của agentic AI).
    
*   Lý thuyết: Stopping condition, timeout, resource boundary (IAM), circuit breaker.
    
*   Thực hành: Thêm giới hạn số bước tối đa + timeout + budget cap vào state machine ngày 130.
    

**Ngày 137: Human-in-the-loop Workflow**

*   Mục tiêu: Cho phép con người can thiệp vào quyết định quan trọng của agent.
    
*   Lý thuyết: Approval workflow qua Step Functions + API Gateway, khi nào cần human review.
    
*   Thực hành: Thêm 1 bước "chờ phê duyệt" vào workflow trước khi agent thực hiện hành động có rủi ro (ví dụ gửi email).
    

**Ngày 138: Hệ sinh thái LangChain/LangGraph**

*   Mục tiêu: Hiểu kiến trúc phổ biến ngoài AWS-native để giao tiếp được với team dùng framework khác.
    
*   Lý thuyết: LangChain chain/agent abstraction, LangGraph graph-based agent orchestration.
    
*   Thực hành: Đọc 1 ví dụ LangGraph, so sánh cách nó biểu diễn agent loop với Step Functions của bạn.
    

**Ngày 139: Hệ sinh thái LlamaIndex, DSPy, Haystack**

*   Mục tiêu: Biết bối cảnh công cụ rộng hơn, không bị bó hẹp trong AWS.
    
*   Lý thuyết: LlamaIndex (tập trung data indexing/RAG), DSPy (tối ưu prompt bằng lập trình), Haystack (pipeline NLP/RAG).
    
*   Thực hành: Viết bảng so sánh ngắn: công cụ nào giải quyết vấn đề gì, khi nào bạn sẽ cân nhắc dùng thay vì tự xây trên AWS thuần.
    

**Ngày 140: Deployment FM đặc thù**

*   Mục tiêu: Hiểu deploy FM khác gì deploy ML model truyền thống.
    
*   Lý thuyết: Container tối ưu memory/GPU/token throughput, provisioned throughput vs on-demand Bedrock.
    
*   Thực hành: So sánh chi phí/latency giữa on-demand và provisioned throughput cho 1 model Bedrock ở mức tải giả định.
    

**Ngày 141: API Integration - Streaming**

*   Mục tiêu: Trả kết quả cho người dùng ngay khi model sinh ra, không đợi hoàn tất.
    
*   Lý thuyết: Bedrock streaming API, WebSocket/Server-Sent Events, chunked transfer encoding.
    
*   Thực hành: Xây API Gateway + Lambda trả streaming response từ Bedrock.
    

**Ngày 142: API Integration - Async & Resilience**

*   Mục tiêu: Hệ thống chịu được lỗi tạm thời và tải cao.
    
*   Lý thuyết: SQS cho xử lý bất đồng bộ, exponential backoff, rate limiting, fallback mechanism.
    
*   Thực hành: Thêm retry với exponential backoff cho lời gọi Bedrock, cấu hình SQS cho request nặng.
    

**Ngày 143: Model Routing & Cascading**

*   Mục tiêu: Tiết kiệm chi phí bằng cách route đúng độ khó câu hỏi tới đúng model.
    
*   Lý thuyết: Tiered model usage, model cascading (thử model rẻ trước, fallback model mạnh nếu cần).
    
*   Thực hành: Xây logic routing đơn giản: phân loại độ phức tạp câu hỏi, route tới model tương ứng, đo tiết kiệm chi phí.
    

**Ngày 144: Enterprise Integration - Legacy & Event-driven**

*   Mục tiêu: Tích hợp GenAI vào hệ thống doanh nghiệp có sẵn.
    
*   Lý thuyết: API-based integration với legacy system, event-driven architecture (EventBridge), data synchronization pattern.
    
*   Thực hành: Thiết kế (sơ đồ) tích hợp agent của bạn với 1 hệ thống giả lập (ví dụ CRM) qua EventBridge.
    

**Ngày 145: GenAI CI/CD & Security Scan**

*   Mục tiêu: CI/CD riêng cho component GenAI, có kiểm tra bảo mật.
    
*   Lý thuyết: Automated testing cho prompt/agent, security scan trong pipeline, rollback support.
    
*   Thực hành: Thêm bước test prompt injection cơ bản vào CI/CD pipeline trước khi deploy agent.
    

**Ngày 146: GenAI Gateway Pattern**

*   Mục tiêu: Có lớp trừu tượng tập trung để quản lý toàn bộ truy cập FM trong tổ chức.
    
*   Lý thuyết: Centralized abstraction layer, observability và control mechanism tập trung.
    
*   Thực hành: Thiết kế kiến trúc gateway (API Gateway + Lambda) đứng trước toàn bộ lời gọi Bedrock của hệ thống bạn.
    

**Ngày 147: Dự án - Agent nhiều bước hoàn chỉnh**

*   Mục tiêu: Có agent thực hiện tác vụ nghiệp vụ nhiều bước, an toàn.
    
*   Lý thuyết: Ôn lại: ReAct + safeguards + MCP + human-in-the-loop.
    
*   Thực hành: Xây agent thực hiện: tra cứu dữ liệu (RAG) → gọi tool qua MCP → tổng hợp báo cáo → (nếu hành động rủi ro) chờ phê duyệt.
    

**Ngày 148: Dự án tổng hợp Phase 6**

*   Mục tiêu: Có hệ thống GenAI có agent + streaming API + model routing hoàn chỉnh.
    
*   Lý thuyết: Ôn lại toàn bộ Phase 6.
    
*   Thực hành: Ghép agent ngày 147 với streaming API (ngày 141) và model routing (ngày 143) thành 1 sản phẩm demo được.
    

# PHASE 7 - AI Safety, Security, Governance (Ngày 149-160)

**Ngày 149: Content Filtering - Bedrock Guardrails cơ bản**

*   Mục tiêu: Chặn nội dung không mong muốn ở cả input và output.
    
*   Lý thuyết: Guardrail policy, denied topic, content filter category.
    
*   Thực hành: Cấu hình 1 Guardrail cơ bản cho hệ thống RAG/agent đã xây, test với input vi phạm.
    

**Ngày 150: Prompt Injection & Jailbreak Detection**

*   Mục tiêu: Nhận diện và phòng chống prompt injection.
    
*   Lý thuyết: Direct injection vs indirect injection (qua tài liệu RAG), jailbreak pattern phổ biến.
    
*   Thực hành: Thử tấn công prompt injection vào hệ RAG của bạn (qua tài liệu chèn instruction ẩn), quan sát hệ thống có bị lừa không.
    

**Ngày 151: Adversarial Testing tự động**

*   Mục tiêu: Tự động hóa việc kiểm thử an toàn thay vì thử tay từng lần.
    
*   Lý thuyết: Automated adversarial testing workflow, test case library cho jailbreak/injection.
    
*   Thực hành: Viết 1 bộ test tự động (10-15 case) chạy qua hệ thống, đo tỷ lệ chặn thành công.
    

**Ngày 152: Hallucination Mitigation**

*   Mục tiêu: Giảm tỷ lệ model "bịa" thông tin.
    
*   Lý thuyết: Grounding bằng Knowledge Base, confidence scoring, semantic similarity check giữa câu trả lời và nguồn.
    
*   Thực hành: Thêm bước kiểm tra: câu trả lời có được hỗ trợ bởi context retrieval hay không (semantic similarity threshold).
    

**Ngày 153: Structured Output Enforcement**

*   Mục tiêu: Đảm bảo output luôn đúng định dạng máy đọc được.
    
*   Lý thuyết: JSON Schema enforcement, validation layer sau khi model sinh output.
    
*   Thực hành: Thêm validator kiểm tra output JSON đúng schema, tự động retry nếu sai.
    

**Ngày 154: Defense-in-Depth**

*   Mục tiêu: Không phụ thuộc vào 1 lớp bảo vệ duy nhất.
    
*   Lý thuyết: Pre-processing filter → model guardrail → post-processing validation → API response filter.
    
*   Thực hành: Rà soát hệ thống hiện tại, bổ sung lớp bảo vệ còn thiếu trong chuỗi 4 lớp trên.
    

**Ngày 155: PII Detection - Comprehend & Macie**

*   Mục tiêu: Phát hiện tự động dữ liệu nhạy cảm trong cả input lẫn dữ liệu lưu trữ.
    
*   Lý thuyết: Comprehend PII detection API, Macie quét dữ liệu tại rest trong S3.
    
*   Thực hành: Chạy Comprehend trên log hội thoại của agent, chạy Macie quét bucket S3 chứa tài liệu RAG.
    

**Ngày 156: Data Masking, Anonymization & Retention**

*   Mục tiêu: Xử lý đúng dữ liệu nhạy cảm theo vòng đời.
    
*   Lý thuyết: Masking vs anonymization, S3 Lifecycle policy cho retention.
    
*   Thực hành: Viết logic mask PII trước khi log, cấu hình lifecycle tự xóa log sau N ngày.
    

**Ngày 157: Governance - Model Card & Data Lineage**

*   Mục tiêu: Có tài liệu minh bạch về hệ thống cho kiểm toán/compliance.
    
*   Lý thuyết: Model card structure, data lineage tracking (Glue Data Catalog), metadata tagging cho source attribution.
    
*   Thực hành: Viết model card đầy đủ cho hệ thống RAG/agent: dữ liệu dùng, giới hạn, rủi ro đã biết.
    

**Ngày 158: Decision Logging & Audit Trail**

*   Mục tiêu: Truy vết được mọi quyết định của hệ thống AI.
    
*   Lý thuyết: Comprehensive decision logging, CloudWatch Logs cho request/response, CloudTrail cho hành động hệ thống.
    
*   Thực hành: Đảm bảo mọi lời gọi model + kết quả retrieval + quyết định agent đều được log có cấu trúc, truy vấn lại 1 case cụ thể.
    

**Ngày 159: Responsible AI - Fairness & Bias Drift**

*   Mục tiêu: Giám sát tính công bằng của output theo thời gian.
    
*   Lý thuyết: Fairness evaluation (A/B testing hệ thống), LLM-as-a-judge để đánh giá tự động, bias drift monitoring.
    
*   Thực hành: Thiết kế 1 bộ test fairness đơn giản (câu hỏi tương tự nhau, thay đổi 1 thuộc tính nhạy cảm), so sánh output.
    

**Ngày 160: Dự án tổng hợp Phase 7**

*   Mục tiêu: Có hệ thống an toàn đủ để cân nhắc đưa vào production thật.
    
*   Lý thuyết: Ôn lại toàn bộ Phase 7.
    
*   Thực hành: Hoàn thiện Guardrails + defense-in-depth + adversarial test suite + model card cho toàn bộ hệ thống đã xây dựng đến giờ.
    

# PHASE 8 - Operational Efficiency: Cost & Performance cho GenAI (Ngày 161-170)

**Ngày 161: Token Economics**

*   Mục tiêu: Hiểu và kiểm soát chi phí ở cấp độ token.
    
*   Lý thuyết: Token là đơn vị tính phí chính, context window optimization.
    
*   Thực hành: Đo số token trung bình mỗi request trong hệ thống của bạn, ước tính chi phí/tháng ở quy mô 10,000 request/ngày.
    

**Ngày 162: Prompt Compression & Context Pruning**

*   Mục tiêu: Giảm token mà không giảm chất lượng câu trả lời.
    
*   Lý thuyết: Prompt compression kỹ thuật, context pruning (loại bỏ phần context không cần thiết).
    
*   Thực hành: Nén 1 prompt dài đang dùng, đo chênh lệch chất lượng output trước/sau.
    

**Ngày 163: Model Selection theo Cost-Capability**

*   Mục tiêu: Không dùng model đắt nhất cho mọi việc.
    
*   Lý thuyết: Cost-capability trade-off evaluation, tiered usage theo độ phức tạp query.
    
*   Thực hành: Phân loại 20 câu hỏi mẫu theo độ khó, map với model phù hợp (rẻ/mạnh).
    

**Ngày 164: Semantic Caching**

*   Mục tiêu: Giảm số lời gọi FM trùng lặp về mặt ý nghĩa.
    
*   Lý thuyết: Semantic caching (so khớp theo embedding similarity), result fingerprinting.
    
*   Thực hành: Implement semantic cache đơn giản (embedding + similarity threshold) cho hệ RAG, đo cache hit rate.
    

**Ngày 165: Prompt Caching (Bedrock)**

*   Mục tiêu: Giảm chi phí/latency cho phần prompt lặp lại (ví dụ system prompt dài).
    
*   Lý thuyết: Prompt caching cơ chế của Bedrock, khi nào hiệu quả nhất.
    
*   Thực hành: Bật prompt caching cho hệ thống có system prompt dài, đo chênh lệch latency/chi phí.
    

**Ngày 166: Latency-Cost Trade-off**

*   Mục tiêu: Cải thiện trải nghiệm người dùng mà không tăng chi phí quá mức.
    
*   Lý thuyết: Streaming để giảm perceived latency, pre-computation cho câu hỏi đoán trước được, parallel request.
    
*   Thực hành: So sánh trải nghiệm streaming vs non-streaming trên cùng 1 câu hỏi dài.
    

**Ngày 167: Throughput Optimization**

*   Mục tiêu: Xử lý được nhiều request đồng thời hiệu quả.
    
*   Lý thuyết: Batch inference, concurrent invocation management.
    
*   Thực hành: Thử batch nhiều request nhỏ thành 1 lời gọi (nếu use case cho phép), đo cải thiện throughput.
    

**Ngày 168: Auto-scaling cho GenAI Traffic**

*   Mục tiêu: Xử lý traffic bursty đặc trưng của ứng dụng GenAI.
    
*   Lý thuyết: GenAI traffic pattern khác traffic ML truyền thống - bursty hơn, khó dự đoán hơn.
    
*   Thực hành: Cấu hình auto-scaling cho lớp API/Lambda phía trước Bedrock, load test với traffic giả lập bursty.
    

**Ngày 169: Cost Monitoring - Anomaly Detection**

*   Mục tiêu: Phát hiện sớm chi phí bất thường (ví dụ agent chạy lặp gây tốn token).
    
*   Lý thuyết: Cost Anomaly Detection, Cost Explorer, custom CloudWatch metric cho cost/request.
    
*   Thực hành: Cấu hình Cost Anomaly Detection cho service Bedrock, giả lập chi tiêu bất thường để test cảnh báo.
    

**Ngày 170: Dự án tổng hợp Phase 8**

*   Mục tiêu: Có hệ thống tối ưu chi phí đo lường được bằng số liệu thực tế.
    
*   Lý thuyết: Ôn lại toàn bộ Phase 8.
    
*   Thực hành: Xây dashboard giám sát riêng cho GenAI: token/request, cost/ngày, cache hit rate, latency p50/p95/p99.
    

# PHASE 9 - Testing, Evaluation, Troubleshooting & LLM Observability (Ngày 171-182)

**Ngày 171: Đánh giá FM - Framework tổng quát**

*   Mục tiêu: Hiểu đánh giá GenAI khác đánh giá ML cổ điển thế nào.
    
*   Lý thuyết: Không có "đáp án đúng duy nhất" → relevance, factual accuracy, consistency, fluency.
    
*   Thực hành: Viết rubric đánh giá thủ công (thang điểm 1-5) cho 4 tiêu chí trên, áp dụng lên 10 câu trả lời của hệ thống.
    

**Ngày 172: LLM-as-a-Judge**

*   Mục tiêu: Scale việc đánh giá bằng chính model.
    
*   Lý thuyết: Prompt cho model chấm điểm, vấn đề bias khi dùng LLM tự đánh giá (self-preference bias).
    
*   Thực hành: Viết prompt LLM-as-a-judge dựa trên rubric ngày 171, so sánh điểm số với đánh giá tay.
    

**Ngày 173: RAG Evaluation toàn diện**

*   Mục tiêu: Đánh giá tách biệt chất lượng retrieval và chất lượng generation.
    
*   Lý thuyết: Kết hợp Recall@K/MRR/NDCG (đã học Phase 5) với faithfulness score (câu trả lời có trung thành với context không).
    
*   Thực hành: Chạy full eval suite (retrieval + generation) trên hệ RAG, xác định bottleneck nằm ở retrieval hay generation.
    

**Ngày 174: Agent Evaluation**

*   Mục tiêu: Đo hiệu quả agent qua nhiều bước, không chỉ câu trả lời cuối.
    
*   Lý thuyết: Task completion rate, tool usage effectiveness, reasoning quality qua từng bước.
    
*   Thực hành: Chạy agent ngày 147 qua 10 task mẫu, tính task completion rate và tool call accuracy.
    

**Ngày 175: Quality Gate trong CI/CD cho GenAI**

*   Mục tiêu: Ngăn regression khi đổi prompt/model.
    
*   Lý thuyết: Regression testing cho prompt/model, automated quality gate trước khi deploy.
    
*   Thực hành: Tích hợp eval suite (ngày 173-174) vào CI/CD pipeline, chặn deploy nếu điểm giảm quá ngưỡng.
    

**Ngày 176: Troubleshooting - Context & Integration Issues**

*   Mục tiêu: Debug nhanh các lỗi đặc thù GenAI.
    
*   Lý thuyết: Context window overflow, truncation error, API integration lỗi thường gặp.
    
*   Thực hành: Giả lập lỗi context overflow (đưa tài liệu quá dài), quan sát hành vi hệ thống và fix bằng dynamic chunking.
    

**Ngày 177: LLM Observability - LangSmith**

*   Mục tiêu: Hiểu công cụ trace phổ biến ngoài AWS-native.
    
*   Lý thuyết: LangSmith trace, prompt/token tracing, conversation replay.
    
*   Thực hành: Đọc tài liệu LangSmith, so sánh khả năng trace với CloudWatch Logs Insights hiện có.
    

**Ngày 178: LLM Observability - Arize Phoenix**

*   Mục tiêu: Biết thêm 1 lựa chọn observability mã nguồn mở.
    
*   Lý thuyết: Arize Phoenix cho LLM tracing/evaluation, hallucination tracking.
    
*   Thực hành: Cài thử Phoenix local (nếu khả thi), trace 1 vài request từ hệ thống RAG của bạn.
    

**Ngày 179: Weights & Biases cho LLM**

*   Mục tiêu: Hiểu công cụ theo dõi thực nghiệm phổ biến trong giới ML/LLM.
    
*   Lý thuyết: W&B run tracking, prompt experiment comparison.
    
*   Thực hành: Log 1 vài lần thử nghiệm thay đổi prompt vào W&B (hoặc mô phỏng bằng bảng so sánh nếu không có tài khoản), so sánh kết quả.
    

**Ngày 180: MLflow cho LLM Tracking**

*   Mục tiêu: Biết công cụ quản lý vòng đời model/prompt phổ biến, không khóa vào 1 cloud.
    
*   Lý thuyết: MLflow tracking, model registry, LLM tracking extension.
    
*   Thực hành: So sánh MLflow Model Registry với SageMaker Model Registry đã dùng ở Phase 2 - điểm giống/khác.
    

**Ngày 181: Cost Attribution & Conversation Replay thực hành**

*   Mục tiêu: Có khả năng trả lời "request này tốn bao nhiêu, và tại sao trả lời như vậy".
    
*   Lý thuyết: Cost attribution theo user/feature, conversation replay để debug từng bước agent.
    
*   Thực hành: Xây 1 log structure cho phép replay lại toàn bộ chuỗi quyết định của agent cho 1 request cụ thể, kèm chi phí token.
    

**Ngày 182: Dự án tổng hợp Phase 9**

*   Mục tiêu: Có bộ eval + observability tích hợp CI/CD hoàn chỉnh.
    
*   Lý thuyết: Ôn lại toàn bộ Phase 9.
    
*   Thực hành: Ghép eval suite + quality gate + observability logging thành 1 quy trình chạy tự động mỗi khi thay đổi prompt/model/code.
    

# PHASE 10 - Dự án Capstone: Hệ thống AI Doanh nghiệp Production-grade (Ngày 183-197)

**Ngày 183: Thiết kế kiến trúc tổng thể (ADR)**

*   Mục tiêu: Có bản thiết kế rõ ràng trước khi code.
    
*   Lý thuyết: Architecture Decision Record (ADR) - ghi lại quyết định và lý do.
    
*   Thực hành: Viết ADR cho toàn bộ hệ thống "Trợ lý nội bộ doanh nghiệp": data layer, RAG+agent layer, safety layer, MLOps layer, observability layer, security layer.
    

**Ngày 184: Data layer - Ingest pipeline**

*   Mục tiêu: Có pipeline ingest tài liệu nội bộ đa định dạng.
    
*   Lý thuyết: Ôn lại Phase 1 + Phase 5 (chunking).
    
*   Thực hành: Xây pipeline ingest PDF/HTML/Word → chunk → embed.
    

**Ngày 185: Data layer - PII & Incremental Update**

*   Mục tiêu: Dữ liệu sạch PII và luôn cập nhật.
    
*   Lý thuyết: Ôn lại Phase 1 (compliance) + Phase 5 (data freshness cho vector store).
    
*   Thực hành: Thêm bước xử lý PII vào pipeline ngày 184, cấu hình incremental update khi tài liệu nguồn thay đổi.
    

**Ngày 186: RAG layer - Retrieval + Reranking**

*   Mục tiêu: Có retrieval chất lượng cao, đã được benchmark.
    
*   Lý thuyết: Ôn lại Phase 5 (hybrid search, reranking, retrieval eval).
    
*   Thực hành: Cấu hình hybrid search + reranking, chạy eval Recall@K/MRR để xác nhận chất lượng đạt ngưỡng chấp nhận được.
    

**Ngày 187: Agent layer - MCP Tool Integration**

*   Mục tiêu: Agent gọi được tool nội bộ (ví dụ tra cứu CRM giả lập).
    
*   Lý thuyết: Ôn lại Phase 6 (MCP).
    
*   Thực hành: Xây 1-2 MCP tool nội bộ, tích hợp vào agent.
    

**Ngày 188: Agent layer - Model Routing**

*   Mục tiêu: Tối ưu chi phí vận hành agent.
    
*   Lý thuyết: Ôn lại Phase 6 (model routing/cascading) + Phase 8 (cost).
    
*   Thực hành: Thêm logic routing model theo độ phức tạp câu hỏi vào agent.
    

**Ngày 189: Safety layer - Guardrails**

*   Mục tiêu: Có lớp an toàn cơ bản hoạt động.
    
*   Lý thuyết: Ôn lại Phase 7.
    
*   Thực hành: Cấu hình Bedrock Guardrails đầy đủ cho toàn hệ thống.
    

**Ngày 190: Safety layer - Defense-in-depth & Audit**

*   Mục tiêu: Có nhiều lớp bảo vệ và khả năng truy vết đầy đủ.
    
*   Lý thuyết: Ôn lại Phase 7.
    
*   Thực hành: Hoàn thiện 4 lớp defense-in-depth, đảm bảo mọi request đều có audit log.
    

**Ngày 191: MLOps layer - CI/CD Pipeline**

*   Mục tiêu: Có pipeline tự động cho toàn hệ thống.
    
*   Lý thuyết: Ôn lại Phase 3 + Phase 6 (GenAI CI/CD).
    
*   Thực hành: Dựng CI/CD pipeline cho cả code ứng dụng lẫn prompt/agent config.
    

**Ngày 192: MLOps layer - Quality Gate & Canary**

*   Mục tiêu: Deploy an toàn, có thể rollback nhanh.
    
*   Lý thuyết: Ôn lại Phase 3 + Phase 9 (quality gate GenAI).
    
*   Thực hành: Tích hợp eval suite làm quality gate, cấu hình canary deployment.
    

**Ngày 193: Observability layer - Dashboard**

*   Mục tiêu: Nhìn thấy toàn bộ sức khỏe hệ thống trong 1 màn hình.
    
*   Lý thuyết: Ôn lại Phase 8 + Phase 9.
    
*   Thực hành: Xây dashboard tổng hợp: token/cost/latency/cache hit rate/task completion rate.
    

**Ngày 194: Observability layer - Drift & Hallucination Alerting**

*   Mục tiêu: Được cảnh báo chủ động thay vì phát hiện lỗi qua phản hồi người dùng.
    
*   Lý thuyết: Ôn lại Phase 4 (drift) + Phase 7 (hallucination).
    
*   Thực hành: Cấu hình alarm tự động khi retrieval quality giảm hoặc hallucination rate tăng bất thường.
    

**Ngày 195: Security layer - IAM & VPC Isolation**

*   Mục tiêu: Toàn hệ thống tuân thủ least-privilege và network isolation.
    
*   Lý thuyết: Ôn lại Phase 0 + Phase 4.
    
*   Thực hành: Rà soát toàn bộ IAM role trong hệ thống, siết lại least-privilege; đảm bảo các thành phần nhạy cảm chạy trong VPC riêng.
    

**Ngày 196: Load Testing & Performance Tuning**

*   Mục tiêu: Xác nhận hệ thống chịu được tải thực tế.
    
*   Lý thuyết: Ôn lại Phase 3 (auto scaling) + Phase 8 (throughput).
    
*   Thực hành: Chạy load test giả lập traffic cao, quan sát điểm nghẽn (bottleneck) và tinh chỉnh.
    

**Ngày 197: Tài liệu kiến trúc cuối cùng & Demo**

*   Mục tiêu: Có sản phẩm hoàn chỉnh trình bày được như một kỹ sư senior.
    
*   Lý thuyết: Tổng hợp lại toàn bộ 197 ngày.
    
*   Thực hành: Hoàn thiện tài liệu kiến trúc (cập nhật ADR ngày 183 với các quyết định thực tế đã đưa ra), quay demo hệ thống, viết retrospective: điều gì sẽ làm khác nếu bắt đầu lại.
