SageMaker: Algorithm Hyperparameters
#exam-tip
Mục lục
- SageMaker: Algorithm Hyperparameters
1. Siêu tham số của thuật toán (Algorithm Hyperparameters) #important
1.1 Siêu tham số của Linear Learner #exam-tip
Chuẩn hóa (Regularization)
l1- Chuẩn hóa L1 (Lasso)- Khoảng giá trị: 0 đến 1
- Tác dụng: Chọn lọc đặc trưng (Feature selection), tạo ra các mô hình thưa (sparse models)
- Khi nào nên dùng: Có quá nhiều features, muốn chọn lọc feature quan trọng
wd(weight decay) - Chuẩn hóa L2 (Ridge)- Khoảng giá trị: 0 đến 1
- Tác dụng: Thu nhỏ tất cả các trọng số, ngăn ngừa overfitting
- Khi nào nên dùng: Khi các features có tính tương quan với nhau
- Elastic Net: Thiết lập cả
l1vàwdđể kết hợp tác dụng của cả hai
Thông số huấn luyện (Training Parameters)
learning_rate- Khoảng giá trị: 0.0001 đến 1.0
- Mặc định: Auto-tuned (Tự động tinh chỉnh)
- Rất quan trọng đối với tốc độ hội tụ (convergence speed)
mini_batch_size- Khoảng giá trị: 1 đến 10000
- Mặc định: 1000
- Ảnh hưởng đến tốc độ huấn luyện và khả năng tổng quát hóa (generalization)
Xử lý mất cân bằng lớp (Class Imbalance Handling)
balance_multiclass_weights#exam-tip- Các giá trị:
truehoặcfalse - Mục đích: Xử lý tình trạng mất cân bằng giữa các lớp (imbalanced classes)
- Tác dụng: Gán trọng số cao hơn cho các lớp thiểu số
- Khi nào nên dùng:
- Phân loại mất cân bằng (như phát hiện gian lận, phát hiện bất thường)
- Khi một lớp xuất hiện hiếm hơn rất nhiều so với lớp khác
- Muốn tránh việc mô hình bị thiên vị về phía lớp đa số
- Giải pháp thay thế: Sử dụng class weights, SMOTE (trong khâu tiền xử lý)
- Các giá trị:
Mục tiêu tối ưu hóa (Optimization Objectives) #exam-tip
Tiêu chí Quyết định: Hãy tự hỏi “Cái giá phải trả cho việc dự đoán sai là gì?”
target_precision- Khoảng giá trị: 0 đến 1
- Dành riêng cho Linear Learner
- Dùng khi FALSE POSITIVES (Dương tính giả) gây hậu quả nghiêm trọng (Dự đoán là Positive nhưng thực ra là sai)
- Sự đánh đổi: Có thể bỏ lỡ một vài ca Positive thật (làm recall thấp đi) để đổi lấy việc không bị báo động giả
- Ví dụ:
- Phát hiện thư rác (không ai muốn một email quan trọng bị đánh dấu là spam)
- Sàng lọc xét nghiệm y tế (không muốn chẩn đoán nhầm ai đó mắc bệnh ung thư)
- Gợi ý sản phẩm (không muốn làm phiền người dùng bằng những gợi ý tồi)
- Mô hình sẽ tối ưu hóa để đạt được mục tiêu precision này
target_recall- Khoảng giá trị: 0 đến 1
- Dành riêng cho Linear Learner
- Dùng khi FALSE NEGATIVES (Âm tính giả) gây hậu quả nghiêm trọng (Bỏ sót ca Positive thực sự)
- Sự đánh đổi: Có thể báo động giả nhiều hơn (làm precision thấp đi) để đổi lấy việc bắt được toàn bộ ca Positive
- Ví dụ:
- Phát hiện gian lận (phải bắt được hết gian lận, có báo động nhầm chút cũng chấp nhận được)
- Sàng lọc bệnh (không thể bỏ sót bất kỳ bệnh nhân nào đang ủ bệnh)
- Các mối đe dọa an ninh (thà điều tra nhầm báo động giả còn hơn bỏ sót mối đe dọa thật)
- Mô hình sẽ tối ưu hóa để đạt được mục tiêu recall này
- Không thể đặt cả hai: Phải chọn
target_precisionHOẶCtarget_recall, không được chọn cả hai cùng lúc - Mặc định: Nếu không thiết lập gì cả, mô hình sẽ tối ưu hóa độ chính xác tổng thể (overall accuracy)
Loại dự đoán (Predictor Type)
predictor_typebinary_classifier- Phân loại nhị phânmulticlass_classifier- Phân loại đa lớpregressor- Hồi quy
1.2 Siêu tham số của XGBoost #exam-tip
Thông số Cây (Tree Parameters)
max_depth- Khoảng giá trị: 1 đến 10+
- Mặc định: 6
- Cơ chế: Giới hạn độ sâu mà mỗi cây có thể phát triển
- Tác dụng: Kiểm soát độ phức tạp của cây (càng sâu = càng nhiều nhánh = nguy cơ overfitting càng cao)
- Giá trị thấp = cây đơn giản hơn, ít bị overfitting hơn
num_round- Số vòng boosting (số lượng cây cần xây dựng)
- Nhiều vòng hơn = mô hình phức tạp hơn
min_child_weight- Trọng số tối thiểu của các mẫu (số lượng samples) cần thiết để tạo thành một leaf node (nút lá)
- Cơ chế: Ngăn chặn việc chẻ nhánh nếu các nút con có quá ít sample
- Giá trị cao hơn = thận trọng hơn (dừng việc chẻ nhánh trên các nhóm dữ liệu nhỏ)
- Tác dụng: Ngăn ngừa overfitting bằng cách tránh tạo ra các quy tắc quá đặc thù
Chuẩn hóa (Regularization)
alpha- Chuẩn hóa L1- Mặc định: 0
- Tăng giá trị này lên để phục vụ chọn lọc đặc trưng (feature selection)
lambda- Chuẩn hóa L2- Mặc định: 1
- Tăng giá trị này lên để ngăn ngừa overfitting
Thông số Học (Learning)
eta(learning rate / step size shrinkage)- Khoảng giá trị: 0 đến 1
- Mặc định: 0.3
- Tác dụng: Kiểm soát kích thước của việc cập nhật trọng số trong mỗi vòng lặp
- Ngăn chặn overfitting bằng cách cập nhật trọng số nhỏ hơn, từ từ hơn
- Giá trị thấp = huấn luyện chậm hơn, mô hình ổn định (robust) hơn, ít overfitting hơn
subsample- Tỷ lệ dữ liệu huấn luyện được lấy mẫu (sample) cho mỗi cây (stochastic gradient boosting)
- Khoảng giá trị: 0 đến 1
- Mặc định: 1
- Cơ chế: Đưa tính ngẫu nhiên vào mô hình bằng cách huấn luyện từng cây trên một tập hợp con ngẫu nhiên
- Giá trị thấp hơn (ví dụ: 0.7-0.8) ngăn ngừa overfitting thông qua việc giảm phương sai (variance reduction)
Mất cân bằng lớp (Class Imbalance)
scale_pos_weight- Tỷ lệ giữa lớp Negative so với lớp Positive
- Dùng cho bài toán phân loại nhị phân mất cân bằng
- Cách tính: (Số lượng mẫu negative) / (Số lượng mẫu positive)
1.3 So sánh Siêu tham số #exam-tip
| Siêu tham số | Linear Learner | XGBoost | Mục đích |
|---|---|---|---|
| Chuẩn hóa L1 | l1 | alpha | Chọn lọc feature |
| Chuẩn hóa L2 | wd | lambda | Ngăn ngừa overfitting |
| Tốc độ học | learning_rate | eta | Tốc độ hội tụ |
| Kích thước Batch | mini_batch_size | Không có | Tốc độ huấn luyện |
| Trọng số các lớp | balance_multiclass_weights | scale_pos_weight | Xử lý mất cân bằng |
| Mục tiêu Metric | target_precision, target_recall | Không có | Tối ưu hóa metric cụ thể |
1.4 Kịch bản bài thi #exam-tip
Kịch bản 1: Phát hiện gian lận (99% bình thường, 1% gian lận)
- Vấn đề: Mất cân bằng lớp nghiêm trọng, bắt buộc phải bắt được gian lận (cần recall cao)
- Giải pháp:
- Linear Learner: Đặt
balance_multiclass_weights=trueVÀtarget_recall=0.95 - XGBoost: Đặt
scale_pos_weight=99(Tỷ lệ 99:1) - Tiền xử lý: Dùng thuật toán SMOTE để cân bằng dữ liệu huấn luyện
- Linear Learner: Đặt
Kịch bản 2: Mô hình bị overfitting (hoàn hảo trên tập train, nhưng quá kém trên tập test)
- Giải pháp:
- Linear Learner: Tăng
wd(Chuẩn hóa L2) - XGBoost: Tăng
lambda, giảmmax_depth, tăngmin_child_weight - Áp dụng chung: Bổ sung dữ liệu huấn luyện, sử dụng cross-validation
- Linear Learner: Tăng
Kịch bản 3: Quá nhiều features (Hơn 1000+), cần một mô hình dễ diễn giải (interpretable)
- Giải pháp:
- Linear Learner: Tăng
l1để tiến hành chọn lọc feature - XGBoost: Tăng
alpha(Chuẩn hóa L1) - Kết quả: Có được mô hình thưa (sparse) chỉ giữ lại các features quan trọng
- Linear Learner: Tăng
Kịch bản 4: Phát hiện Email rác (Precision rất quan trọng - tuyệt đối không được đánh dấu nhầm email bình thường thành spam)
- Giải pháp:
- Linear Learner: Đặt
target_precision=0.95 - Đánh đổi: Có thể bỏ lọt vài email rác (recall thấp) để tránh báo động nhầm (false positives)
- Linear Learner: Đặt
2. Huấn luyện (Training)
Training Jobs
- Cần chỉ định: thuật toán, tài nguyên tính toán (compute resources), vị trí lưu dữ liệu
- Input modes: File, Pipe (streaming)
2.1 Các loại Instance dành cho Training #exam-tip
Đa mục đích (General Purpose - Dòng M)
- ml.m5, ml.m6i - Cân bằng giữa CPU và bộ nhớ
- vCPUs: 2-96, Memory: 8-384 GB
- Use cases:
- Tập dữ liệu từ nhỏ đến trung bình
- ML truyền thống (XGBoost, Linear Learner)
- Dựng bản mẫu (Prototyping) và phát triển
- Baseline tối ưu chi phí
- Khi nào nên dùng: Dữ liệu tabular, các mô hình dựa trên Tree, không cần tới GPU
Tối ưu tính toán (Compute Optimized - Dòng C)
- ml.c5, ml.c6i - Hiệu năng CPU cao
- vCPUs: 2-96, Memory: 4-192 GB
- Use cases:
- Thuật toán tốn nhiều tài nguyên CPU
- Batch transform yêu cầu thông lượng cao
- Inference bằng CPU
- Khi nào nên dùng: Cần nhiều CPU nhưng không cần GPU, ưu tiên tiết kiệm chi phí
Huấn luyện bằng GPU (GPU Training - Dòng P) #important
- ml.p3 - Card đồ họa NVIDIA Tesla V100
- GPUs: 1-8 trên mỗi instance
- GPU Memory: 16 GB mỗi GPU
- Use cases: Huấn luyện Deep learning (CNNs, RNNs, Transformers)
- Tốt nhất cho: Thị giác máy tính (Computer vision), NLP, mạng nơ-ron quy mô lớn
- ml.p4d - Card đồ họa NVIDIA A100 (Mạnh nhất)
- GPUs: 8 trên mỗi instance
- GPU Memory: 40 GB mỗi GPU
- Use cases: Huấn luyện quy mô lớn, huấn luyện phân tán (distributed training)
- Tốt nhất cho: Các mô hình khổng lồ (như GPT), tốc độ huấn luyện nhanh nhất
- Chi phí: Đắt nhất (thường dùng cho production, không dùng cho chạy thử nghiệm)
- ml.p4de - Card đồ họa NVIDIA A100 với 80 GB memory
- Tốt nhất cho: Các mô hình cực kỳ lớn có yêu cầu dung lượng memory khổng lồ
Huấn luyện bằng GPU (Dòng G)
- ml.g4dn - Card đồ họa NVIDIA T4
- GPUs: 1-8 trên mỗi instance
- GPU Memory: 16 GB mỗi GPU
- Use cases: Huấn luyện bằng GPU tối ưu chi phí, kết hợp vừa training/inference
- Tốt nhất cho: Mô hình kích cỡ trung bình, cần GPU nhưng ngân sách hạn hẹp
- Sự đánh đổi: Chậm hơn P3 nhưng rẻ hơn nhiều
- ml.g5 - Card đồ họa NVIDIA A10G
- Tốt nhất cho: Sự cân bằng tuyệt vời giữa chi phí và hiệu năng
Tính toán tăng tốc (Accelerated Computing - Dòng Inf/Trn) #exam-tip
- ml.inf1 - Sử dụng chip AWS Inferentia
- Mục đích: Tối ưu chi phí cho Inference (không dùng để training)
- Use cases: Triển khai mô hình chuyên dùng cho inference
- Tốt nhất cho: Các luồng công việc inference đòi hỏi thông lượng cực cao
- ml.trn1 - Sử dụng chip AWS Trainium
- Mục đích: Tối ưu chi phí cho Training
- Use cases: Huấn luyện mô hình deep learning với chi phí thấp hơn P3/P4
- Tốt nhất cho: Huấn luyện quy mô lớn với mong muốn tối ưu chi phí
Hướng dẫn lựa chọn Loại Instance: #exam-tip
| Loại Workload | Instance Type | Lý do |
|---|---|---|
| Dữ liệu Tabular (XGBoost, Linear Learner) | ml.m5 | Không cần GPU, tài nguyên cân bằng |
| Dựng bản mẫu Mạng nơ-ron nhỏ | ml.g4dn | GPU giá rẻ, tối ưu chi phí |
| Huấn luyện phân loại ảnh kích thước lớn | ml.p3 | GPU V100 chuyên cho deep learning |
| Các mô hình transformer khổng lồ | ml.p4d | GPU A100, mạnh nhất |
| Huấn luyện bằng GPU ngân sách thấp | ml.g4dn hoặc ml.trn1 | Chi phí rẻ hơn P3 |
| Inference chỉ dùng CPU | ml.c5 hoặc ml.m5 | Tránh lãng phí vì không cần GPU |
| Inference đòi hỏi thông lượng cao | ml.inf1 | Tối ưu hóa riêng cho AWS Inferentia |
| Huấn luyện phân tán (nhiều GPUs) | ml.p3.8xlarge hoặc ml.p4d.24xlarge | 8 GPUs trên một instance |
Các khái niệm quan trọng cho bài thi: #exam-tip
- GPU vs CPU:
- Deep learning (CNNs, RNNs) → Dùng GPU (P3, G4dn)
- Classical ML (XGBoost, trees) → Dùng CPU (M5, C5)
- Training vs Inference:
- Training: Dùng P3, P4d (Hiệu năng cao)
- Inference: Dùng G4dn, Inf1, C5 (Tối ưu chi phí)
- Tối ưu chi phí (Cost Optimization):
- GPU rẻ nhất: G4dn (T4)
- Nhanh nhất: P4d (A100)
- Cân bằng nhất: P3 (V100)
- CPU: M5 (Đa mục đích), C5 (Thiên về CPU)
- Khi nào nên dùng loại nào:
- M5: Là lựa chọn mặc định cho các workload không dùng GPU
- C5: Khi chạy ngốn CPU, cần tỷ lệ CPU nhiều hơn Memory
- P3: Tiêu chuẩn chung cho training bằng GPU (Đáp án thi phổ biến nhất)
- P4d: Mô hình siêu lớn, cần huấn luyện phân tán
- G4dn: Training/inference bằng GPU dành cho hệ budget
- Inf1: Chỉ dành riêng cho high-volume inference
Managed Spot Training (Huấn luyện dùng Spot instance) #exam-tip
- Tiết kiệm chi phí lên đến 90%
- Bắt buộc dùng checkpoints để xử lý trường hợp bị gián đoạn ngắt quãng (interruption)
- Chạy được với bất kỳ loại instance nào
- Best practice: Chỉ nên dùng cho Training, tuyệt đối không dùng cho Inference
Automatic Model Tuning (Tối ưu hóa Siêu tham số)
- Tối ưu hóa Bayes (Bayesian optimization)
- Tối đa 750 training jobs cho mỗi một tuning job