AWS MLOps Retail Prediction là một hệ thống MLOps end-to-end hoàn chỉnh được xây dựng trên AWS Cloud, tự động hóa toàn bộ quy trình từ xây dựng hạ tầng, huấn luyện mô hình, triển khai inference API, đến giám sát và tối ưu chi phí. Dự án được thiết kế để đảm bảo tính mở rộng, độ tin cậy và bảo mật cao cho các ứng dụng Machine Learning trong thực tế.

Tự động hóa hoàn toàn quy trình MLOps:
Infrastructure → Training → Deployment → Monitoring → CI/CD → Cost Optimization
Nguồn dữ liệu: dunnhumby Source Files
Tập dữ liệu sử dụng: transaction.csv (≈ 2.67 triệu dòng, 22 cột)
Mô tả: Mỗi dòng dữ liệu đại diện cho một sản phẩm trong một lần mua hàng của khách hàng.
| Tên cột | Kiểu dữ liệu | Mô tả / Ý nghĩa | Ví dụ giá trị |
|---|---|---|---|
SHOP_WEEK |
int64 |
Tuần mua hàng (theo định dạng YYYYWW) | 200807 |
SHOP_DATE |
int64 |
Ngày mua hàng (định dạng YYYYMMDD) | 20080407 |
SHOP_WEEKDAY |
int64 |
Thứ trong tuần (1=Chủ nhật, 2=Thứ hai, …, 7=Thứ bảy) | 2 |
SHOP_HOUR |
int64 |
Giờ giao dịch (0–23) | 14 |
QUANTITY |
int64 |
Số lượng sản phẩm mua trong dòng giao dịch | 1 |
SPEND |
float64 |
Số tiền chi tiêu (đơn vị: bảng Anh £) cho dòng giao dịch (sản phẩm × số lượng) | 1.01 |
PROD_CODE |
object |
Mã sản phẩm chi tiết (cấp thấp nhất) | PRD0900005 |
PROD_CODE_10 |
object |
Mã nhóm sản phẩm cấp 1 (chuyên mục chính) | CL00155 |
PROD_CODE_20 |
object |
Mã nhóm sản phẩm cấp 2 | DEP00053 |
PROD_CODE_30 |
object |
Mã nhóm sản phẩm cấp 3 | G00016 |
PROD_CODE_40 |
object |
Mã nhóm sản phẩm cấp 4 (có thể mô tả danh mục con) | NaN / G00420 |
CUST_CODE |
object |
Mã định danh khách hàng (ẩn danh) | CUST0000123 |
seg_1 |
object |
Nhóm phân khúc khách hàng cấp 1 (phân loại hành vi tổng quan) | BG / AZ / NaN |
seg_2 |
object |
Nhóm phân khúc khách hàng cấp 2 (chi tiết hơn seg_1) |
DI / CZ / BU |
BASKET_ID |
int64 |
Mã định danh giỏ hàng (mỗi lần mua của khách) | 994110500233340 |
BASKET_SIZE |
object |
Kích thước giỏ hàng (Small/Medium/Large) | S / M / L |
BASKET_PRICE_SENSITIVITY |
object |
Mức độ nhạy cảm với giá của khách hàng trong giao dịch (Low/Medium/High hoặc mã viết tắt như LA, MM, UM) | MM / LA / UM |
BASKET_TYPE |
object |
Loại giỏ hàng (Full Shop / Small Shop / Top Up / Fresh / Nonfood…) | Full Shop |
BASKET_DOMINANT_MISSION |
object |
Mục đích chính của giỏ hàng (Mixed, Grocery, Fresh, Nonfood, …), thể hiện loại sản phẩm chủ yếu | Mixed / Fresh |
STORE_CODE |
object |
Mã cửa hàng nơi giao dịch diễn ra | STORE00001 |
STORE_FORMAT |
object |
Định dạng cửa hàng (LS = Large Store, SS = Small Store, Express, v.v.) | LS |
STORE_REGION |
object |
Khu vực địa lý của cửa hàng (E01–E05, tương ứng các vùng tại Anh quốc) | E02 |
| Nhóm | Cột | Ý nghĩa |
|---|---|---|
| 🛒 Giỏ hàng | BASKET_SIZE, BASKET_TYPE, BASKET_DOMINANT_MISSION |
Kích cỡ, loại và mục đích giỏ hàng |
| 💸 Chi tiêu | SPEND, QUANTITY |
Số tiền và số lượng mua |
| 🏬 Cửa hàng | STORE_REGION, STORE_FORMAT |
Khu vực và loại cửa hàng |
| 📦 Sản phẩm | PROD_CODE_20, PROD_CODE_30 |
Nhóm sản phẩm chính |
| 🎯 Nhãn | BASKET_PRICE_SENSITIVITY |
Độ nhạy giá – Low / Medium / High |
Xây dựng mô hình machine learning phân loại đa lớp (multi-class) để dự đoán mức độ nhạy giá (Low / Medium / High) của khách hàng trong mỗi giao dịch, dựa trên đặc trưng của giỏ hàng, cửa hàng và hành vi mua sắm.
💡 Ứng dụng: Phân nhóm khách hàng theo độ nhạy giá → định giá linh hoạt, cá nhân hoá khuyến mãi và tối ưu doanh thu.
Loại: Phân loại đa lớp (Supervised Learning)
Mô hình dự kiến:
| Mô hình | Lý do |
|---|---|
| Decision Tree | Dễ giải thích feature impact |
| Random Forest | Độ chính xác cao, giảm overfitting |
| Logistic Regression (multi-class) | Baseline so sánh |
| XGBoost | Hiệu quả với tabular data |
Đánh giá: Accuracy, Precision, Recall, F1-score, Confusion Matrix
Luồng xử lý:
Dữ liệu gốc (CSV)
→ S3 raw zone
→ ETL (Glue/EKS Job)
→ S3 silver/gold zone
→ SageMaker Feature Store
→ Training (SageMaker Training Job)
→ Model Registry
→ Deployment (EKS FastAPI + ALB)
→ CloudWatch Monitoring
Thành phần chính:
STORE_REGION, BASKET_TYPE| Nhóm | Chỉ số | Mục tiêu |
|---|---|---|
| ML | Accuracy | ≥ 0.75 |
| ML | Macro F1 | ≥ 0.70 |
| ML | Precision (per class) | ≥ 0.65 |
| Ops | P95 latency (API) | < 200 ms |
| Ops | Throughput (requests/s) | ≥ 100 |
| Business | Giảm sai sót định giá | ≥ 10% |
| Cost | Infrastructure cost/month | < $500 |
Dự án được tổ chức theo cấu trúc modularity với separation of concerns rõ ràng:
retail-forecast/
├── README.md # Project overview & setup guide
├── .gitignore # Git ignore patterns
├── aws/ # AWS-specific configurations
│ ├── .travis.yml # Travis CI configuration
│ ├── Jenkinsfile # Jenkins pipeline configuration
│ ├── infra/ # Terraform infrastructure
│ │ ├── main.tf # Main infrastructure config
│ │ ├── variables.tf # Input variables
│ │ └── output.tf # Output values
│ ├── k8s/ # Kubernetes manifests
│ │ ├── deployment.yaml # Application deployment
│ │ ├── service.yaml # Service configuration
│ │ ├── hpa.yaml # Horizontal Pod Autoscaler
│ │ └── namespace.yaml # Namespace definition
│ └── script/ # Automation scripts
│ ├── create_training_job.py # SageMaker training job
│ ├── register_model.py # Model registry script
│ ├── deploy_endpoint.py # Model deployment
│ └── autoscaling_endpoint.py # Auto-scaling setup
├── azure/ # Azure-specific configurations
│ ├── azure-pipelines.yml # Azure DevOps pipeline
│ ├── aml/ # Azure ML configurations
│ │ ├── train-job.yml # Training job definition
│ │ ├── train.Dockerfile # Training container
│ │ └── infer.Dockerfile # Inference container
│ ├── infra/ # Bicep infrastructure
│ │ └── main.bicep # Azure infrastructure
│ └── k8s/ # AKS manifests
│ ├── deployment.yaml # Application deployment
│ ├── service.yaml # Service configuration
│ └── hpa.yaml # Horizontal Pod Autoscaler
├── core/ # Shared ML core modules
│ └── requirements.txt # Core Python dependencies
├── server/ # Inference API server
│ ├── DockerFile # Container definition
│ ├── requirements.txt # Server dependencies
│ └── Readme.md # Server documentation
└── tests/ # Test suites
└── (test files) # Unit & integration tests
📂 aws/ - AWS Implementation
infra/: Terraform Infrastructure as Codek8s/: Kubernetes manifests cho EKS deploymentscript/: Python scripts cho SageMaker automation📂 azure/ - Azure Implementation
infra/: Bicep templates cho Azure resourcesaml/: Azure ML configurationsk8s/: AKS manifests📂 core/ - Shared Components
📂 server/ - Inference API
📂 tests/ - Testing Framework
Terraform Infrastructure as Code
Network Architecture
SageMaker Training Pipeline
Data Management Strategy
EKS Deployment Architecture
Monitoring & Observability
Automated Pipeline Flow
1. Code/Data Change → Git Webhook
2. Jenkins/Travis Build → Run Tests
3. SageMaker Training → Model Validation
4. Docker Build → Push to ECR
5. Kubernetes Deploy → Rolling Update
6. Health Check → Monitor Performance
DataOps Workflow
✅ Complete Infrastructure: Terraform IaC cho toàn bộ AWS resources
✅ ML Training: SageMaker distributed training với hyperparameter tuning
✅ Container Deployment: EKS với autoscaling và load balancing
✅ Security Best Practices: KMS encryption, CloudTrail audit, IAM least privilege
✅ Monitoring & Alerting: CloudWatch comprehensive monitoring
✅ CI/CD Automation: End-to-end pipeline từ code đến production
✅ Cost Optimization: Auto-scaling, spot instances, lifecycle policies
❌ Multi-region deployment (focus on ap-southeast-1)
❌ Advanced ML features (A/B testing, canary deployments)
❌ Real-time streaming inference (batch-focused)
❌ Custom monitoring solutions (CloudWatch-only)
🎯 Production-Ready MLOps Platform: Scalable, reliable, cost-effective
🎯 Automated ML Lifecycle: Từ data ingestion đến model deployment
🎯 Infrastructure Reproducibility: Terraform state management
🎯 Operational Excellence: Comprehensive monitoring và alerting
🎯 Cost Efficiency: Optimized resource usage với auto-scaling
Kiến trúc này được thiết kế để support enterprise-grade ML workloads với khả năng scale từ proof-of-concept đến production với hàng triệu requests/day.
Prerequisites: AWS account với permissions cho EKS, SageMaker, ECR, S3, CloudWatch, IAM. Terraform >= 1.0, kubectl, AWS CLI, Docker, Python 3.8+.