SageMaker: Algorithm Hyperparameters

#exam-tip

Mục lục

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ả l1wd để 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ị: true hoặc false
    • 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ý)

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_precision HOẶC target_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_type
    • binary_classifier - Phân loại nhị phân
    • multiclass_classifier - Phân loại đa lớp
    • regressor - 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=truetarget_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

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ảm max_depth, tăng min_child_weight
    • Áp dụng chung: Bổ sung dữ liệu huấn luyện, sử dụng cross-validation

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

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)

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

  1. GPU vs CPU:
    • Deep learning (CNNs, RNNs) → Dùng GPU (P3, G4dn)
    • Classical ML (XGBoost, trees) → Dùng CPU (M5, C5)
  2. Training vs Inference:
    • Training: Dùng P3, P4d (Hiệu năng cao)
    • Inference: Dùng G4dn, Inf1, C5 (Tối ưu chi phí)
  3. 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)
  4. 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