MLOps: CI/CD & Model Registry
#exam-tip
Mục lục
- MLOps: CI/CD & Model Registry
1. Tổng quan
CI/CD cho Machine Learning tự động hóa quá trình xây dựng, kiểm thử và triển khai các mô hình ML thông qua các pipeline có khả năng lặp lại (repeatable).
2. Luồng MLOps Pipeline Hoàn chỉnh #important
2.1 Luồng ML Pipeline End-to-End
graph TB
subgraph "1. Data Pipeline"
A[Dữ liệu thô trên S3] --> B[Xử lý Dữ liệu<br/>SageMaker Processing]
B --> C[Kỹ nghệ Đặc trưng<br/>Feature Engineering]
C --> D[Kho Đặc trưng<br/>Feature Store<br/>Online + Offline]
end
subgraph "2. Model Development"
D --> E[Chia Dữ liệu<br/>Train/Val/Test]
E --> F[Huấn luyện Mô hình<br/>SageMaker Training Job]
F --> G[Tinh chỉnh Siêu tham số<br/>HPO Jobs]
G --> H[SageMaker Experiments<br/>Theo dõi mọi trials]
end
subgraph "3. Model Evaluation"
H --> I[Chọn Mô hình Tốt nhất]
I --> J[Đánh giá Mô hình<br/>Metrics: Accuracy, AUC, F1]
J --> K{Đạt<br/>Ngưỡng?}
K -->|Không| F
end
subgraph "4. Model Registry"
K -->|Có| L[Đăng ký Mô hình<br/>Model Registry]
L --> M[Model Package<br/>Version 1.0]
M --> N{Phê duyệt<br/>Thủ công}
N -->|Từ chối| F
N -->|Phê duyệt| O[Mô hình được Phê duyệt]
end
subgraph "5. Deployment Pipeline"
O --> P[SageMaker Pipeline<br/>Triển khai Tự động]
P --> Q[Môi trường Dev<br/>Kiểm thử]
Q --> R{Vượt qua<br/>Test?}
R -->|Không| F
R -->|Có| S[Môi trường Staging]
S --> T{A/B Test<br/>Thành công?}
T -->|Không| F
T -->|Có| U[Production Endpoint<br/>Lưu lượng Thực]
end
subgraph "6. Monitoring & Feedback"
U --> V[Thu thập Dữ liệu<br/>Đầu vào + Dự đoán]
V --> W[Model Monitor<br/>Chất lượng Dữ liệu]
W --> X{Phát hiện<br/>Drift?}
X -->|Có| Y[Báo động CloudWatch]
Y --> Z[Kích hoạt Huấn luyện lại]
Z --> F
X -->|Không| V
V --> AA[Nhãn Ground Truth<br/>Bị trễ]
AA --> AB[Giám sát<br/>Chất lượng Mô hình]
AB --> AC{Giảm<br/>Hiệu suất?}
AC -->|Có| Y
AC -->|Không| V
end
style A fill:#e1f5ff
style D fill:#fff4e1
style H fill:#f0e1ff
style O fill:#e1ffe1
style U fill:#ffe1e1
style Y fill:#ffcccc
2.2 Ánh xạ các Thành phần Pipeline sang Dịch vụ AWS
| Giai đoạn | Dịch vụ AWS | Mục đích |
|---|---|---|
| Tiếp nhận Dữ liệu (Ingestion) | S3, Kinesis, Glue | Thu thập và lưu trữ dữ liệu thô |
| Xử lý Dữ liệu | SageMaker Processing, EMR, Glue | Làm sạch, biến đổi, feature engineering |
| Feature Store | SageMaker Feature Store | Kho lưu trữ đặc trưng tập trung |
| Huấn luyện (Training) | SageMaker Training Jobs | Huấn luyện mô hình ở quy mô lớn |
| Theo dõi Thử nghiệm | SageMaker Experiments | Theo dõi mọi lượt chạy huấn luyện |
| Tinh chỉnh Siêu tham số | SageMaker HPO | Tối ưu hóa siêu tham số |
| Model Registry | SageMaker Model Registry | Quản lý phiên bản và phê duyệt mô hình |
| CI/CD Pipeline | SageMaker Pipelines, CodePipeline | Tự động hóa workflow |
| Triển khai (Deployment) | SageMaker Endpoints | Lưu trữ mô hình để phục vụ inference |
| Giám sát (Monitoring) | SageMaker Model Monitor, CloudWatch | Phát hiện drift và vấn đề hiệu suất |
3. Model Registry & Quản lý Phiên bản #important
3.1 SageMaker Model Registry
Mục đích: Lập danh mục và quản lý các phiên bản mô hình
Tính năng:
- Quản lý phiên bản (Model versioning) - Theo dõi mọi phiên bản của mô hình
- Luồng phê duyệt (Approval workflow) - Pending → Approved → Rejected
- Theo dõi Metadata - Các metrics huấn luyện, gia phả (lineage), artifacts
- Gia phả mô hình (Model lineage) - Truy xuất ngược từ dữ liệu → huấn luyện → mô hình → endpoint
- Tích hợp: Các pipeline CI/CD, triển khai tự động
Model Package Groups:
- Nhóm các phiên bản mô hình có liên quan lại với nhau
- Phê duyệt/từ chối để đưa lên production
- Theo dõi hiệu suất mô hình theo thời gian
Trạng thái Phê duyệt (Approval Status): #exam-tip
- PendingManualApproval - Đang chờ xem xét
- Approved - Đã sẵn sàng để triển khai lên production
- Rejected - Không phù hợp cho production
4. CI/CD cho ML #exam-tip
4.1 SageMaker Pipelines
Mục đích: Điều phối (Orchestrate) các workflow ML end-to-end
Thành phần:
- Các bước (Pipeline steps):
- Processing (chuẩn bị dữ liệu, feature engineering)
- Training (huấn luyện mô hình)
- Tuning (tối ưu hóa siêu tham số - HPO)
- Model evaluation (đánh giá mô hình)
- Conditional execution (thực thi có điều kiện)
- Model registration (đăng ký mô hình)
- Tham số (Parameters) - Các đầu vào có thể cấu hình cho pipeline
- Bộ nhớ đệm (Caching) - Bỏ qua các bước không có sự thay đổi
- Theo dõi thực thi - Giám sát các lượt chạy pipeline
Use Cases:
- Tự động huấn luyện lại trên dữ liệu mới
- Các workflow A/B testing
- Kiểm định mô hình (Model validation) trước khi triển khai
- Các workflow ML có khả năng tái tạo (Reproducible)
Tích hợp:
- Kích hoạt thông qua EventBridge, Lambda, Step Functions
- Tích hợp Git để kiểm soát phiên bản (version control)
- Model Registry cho việc triển khai
4.2 SageMaker Projects #exam-tip
Mục đích: Cung cấp các template MLOps cho những workflow phổ biến
Các Template xây sẵn:
- Xây dựng, huấn luyện, triển khai mô hình
- Triển khai mô hình tích hợp với CI/CD
- Triển khai đa tài khoản (Multi-account deployment)
- Sử dụng CloudFormation, CodePipeline, CodeBuild bên dưới
Thành phần:
- Mã nguồn (Source control) - CodeCommit/GitHub
- Build - CodeBuild cho huấn luyện/triển khai
- Deploy - CodePipeline cho staging/production
- Giám sát (Monitoring) - Cài đặt tự động
4.3 SageMaker Operators cho Kubernetes #exam-tip
Mục đích: Quản lý các jobs của SageMaker từ các Kubernetes clusters (ví dụ EKS)
Tổng quan:
- Chức năng: Cho phép bạn dùng Kubernetes để điều phối các tác vụ training, tuning, và inference của SageMaker
- Cách hoạt động: Cài đặt các Custom Resource Definitions (CRDs) của Kubernetes để ánh xạ tới các APIs của SageMaker
- Use case: Dành cho các team đang sử dụng Kubernetes và muốn tận dụng sức mạnh ML managed của SageMaker
Tính năng chính:
- Quản lý tài nguyên SageMaker bằng các lệnh
kubectl - Định nghĩa các SageMaker jobs bằng YAML manifests
- Tích hợp Kubernetes bản địa (pods, services, ConfigMaps)
- Giám sát jobs thông qua Kubernetes dashboard
Các Hoạt động Hỗ trợ:
- Training Jobs - Định nghĩa các training jobs như một resource của K8s
- Hyperparameter Tuning Jobs - Chạy HPO từ Kubernetes
- Batch Transform Jobs - Điều phối inference hàng loạt (batch inference)
- Hosting Endpoints - Triển khai và quản lý các SageMaker endpoints
Ví dụ Kubernetes Manifest:
apiVersion: sagemaker.aws.amazon.com/v1
kind: TrainingJob
metadata:
name: xgboost-training
spec:
algorithmSpecification:
trainingImage: xgboost-container-image
roleArn: arn:aws:iam::123456789012:role/SageMakerRole
inputDataConfig:
- channelName: train
dataSource:
s3DataSource:
s3Uri: s3://bucket/train
outputDataConfig:
s3OutputPath: s3://bucket/output
resourceConfig:
instanceType: ml.m5.xlarge
instanceCount: 1
volumeSizeInGB: 30
Khi nào Nên Dùng:
- ✅ Team đang sử dụng sẵn Kubernetes/EKS làm hạ tầng
- ✅ Muốn có một hệ thống điều phối hợp nhất (SageMaker + các workloads khác nằm chung trong K8s)
- ✅ Muốn tận dụng chuyên môn và công cụ sẵn có về Kubernetes
- ✅ Cần tích hợp SageMaker vào các K8s CI/CD pipelines hiện tại
Khi nào KHÔNG NÊN Dùng:
- ❌ Chưa có hạ tầng Kubernetes (vậy thì hãy dùng SageMaker Pipelines)
- ❌ Team không quen thuộc với Kubernetes (làm phức tạp vấn đề)
- ❌ Các workflows ML đơn giản (SageMaker Pipelines dễ dùng hơn)
So sánh với SageMaker Pipelines:
| Tiêu chí | SageMaker Operators cho K8s | SageMaker Pipelines |
|---|---|---|
| Điều phối | Kubernetes | Trực tiếp trên SageMaker |
| Độ khó học | Cao (Yêu cầu kiến thức K8s) | Thấp (Tập trung vào ML) |
| Use case | Đã có sẵn hạ tầng K8s | Thuần túy là các workflow SageMaker |
| Tích hợp | Bất kỳ workload nào của K8s | Chỉ các dịch vụ của SageMaker |
| Phù hợp cho | DevOps teams dùng K8s | Data scientists / ML engineers |
4.4 Các Component SageMaker cho Kubeflow Pipelines #exam-tip
Mục đích: Sử dụng SageMaker từ bên trong Kubeflow Pipelines
Tổng quan:
- Chức năng: Cung cấp các Kubeflow pipeline components xây dựng sẵn để gọi các dịch vụ SageMaker
- Cách hoạt động: Các Python SDK components có khả năng submit jobs lên SageMaker từ Kubeflow
- Use case: Dành cho các team đang sử dụng Kubeflow Pipelines nhưng muốn hưởng lợi từ môi trường huấn luyện/inference managed của SageMaker
Tính năng chính:
- Chạy SageMaker training jobs ngay từ Kubeflow pipelines
- Tận dụng các thuật toán built-in của SageMaker trong các luồng Kubeflow
- Không cần quản lý hạ tầng training (SageMaker lo việc đó)
- Ghép nối các bước SageMaker vào trong các workflow lớn hơn của Kubeflow
Các Components hiện có:
- Training - Các SageMaker training jobs
- Hyperparameter Tuning - SageMaker HPO
- Batch Transform - Batch inference
- Deploy - Triển khai mô hình lên SageMaker endpoints
- Ground Truth - Các jobs gán nhãn dữ liệu
- Processing - Các SageMaker Processing jobs
Ví dụ Kubeflow Pipeline:
import kfp
from kfp import components
# Load SageMaker components
sagemaker_train_op = components.load_component_from_url(
'https://raw.githubusercontent.com/kubeflow/pipelines/master/components/aws/sagemaker/train/component.yaml'
)
sagemaker_deploy_op = components.load_component_from_url(
'https://raw.githubusercontent.com/kubeflow/pipelines/master/components/aws/sagemaker/deploy/component.yaml'
)
# Define pipeline
@kfp.dsl.pipeline(name='SageMaker Training Pipeline')
def pipeline():
# Step 1: Train model in SageMaker
training = sagemaker_train_op(
region='us-east-1',
algorithm_specification={
'TrainingImage': 'xgboost-image',
'TrainingInputMode': 'File'
},
role='arn:aws:iam::123:role/SageMakerRole',
# ... more config
)
# Step 2: Deploy to SageMaker endpoint
deploy = sagemaker_deploy_op(
region='us-east-1',
model_name=training.outputs['model_artifact']
)
Khi nào Nên Dùng:
- ✅ Team đang sử dụng sẵn Kubeflow Pipelines
- ✅ Muốn dùng training managed của SageMaker mà không phải lo cấu hình máy móc
- ✅ Cần kết hợp SageMaker với các bước pipeline khác (Spark, custom containers)
- ✅ Chiến lược đa đám mây (Multi-cloud: Kubeflow chạy được mọi nơi, còn SageMaker chuyên lo mảng ML trên AWS)
Khi nào KHÔNG NÊN Dùng:
- ❌ Chưa có hạ tầng Kubeflow (hãy dùng SageMaker Pipelines)
- ❌ Môi trường thuần túy AWS/SageMaker (SageMaker Pipelines dễ hơn)
- ❌ Team mù tịt về Kubeflow (gây thêm phiền toái)
So sánh:
| Tiêu chí | Kubeflow Components | SageMaker Pipelines |
|---|---|---|
| Nền tảng | Kubeflow (Dựa trên K8s) | Trực tiếp trên SageMaker |
| Độ cơ động | Đa đám mây (Multi-cloud) | Chỉ dùng được trên AWS |
| Độ phức tạp | Cao (K8s + Kubeflow) | Thấp (Dịch vụ managed) |
| Tùy biến | Cực kỳ linh hoạt | Chỉ tập trung vào ML |
| Phù hợp cho | Người đang dùng sẵn Kubeflow | Các team rễ gốc ở AWS |
Kịch bản Bài thi (Exam Scenarios): #exam-tip
- “Team đang dùng Kubernetes/EKS, muốn sử dụng SageMaker” → Chọn SageMaker Operators cho Kubernetes
- “Team đang dùng Kubeflow Pipelines, muốn tận dụng SageMaker training” → Chọn Các Component SageMaker cho Kubeflow
- “Môi trường thuần túy AWS, muốn tự động hóa luồng ML” → Chọn SageMaker Pipelines
- “Chưa có công cụ điều phối nào, cần xây một ML pipeline” → Chọn SageMaker Pipelines (đơn giản nhất)
- “Cần một công cụ điều phối chung cho cả ML và các workloads phi-ML trên K8s” → Chọn SageMaker Operators cho Kubernetes
Khung ra Quyết định (Decision Framework): #exam-tip
Bạn có đang dùng Kubernetes/EKS không?
├─ Có → Bạn có đang dùng riêng thằng Kubeflow Pipelines không?
│ ├─ Có → Chọn Các Component SageMaker cho Kubeflow Pipelines
│ └─ Không → Chọn SageMaker Operators cho Kubernetes
└─ Không → Chọn SageMaker Pipelines