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.