MLOps Toàn Diện Trên AWS: Xây Dựng Pipeline Với EC2, S3, ECR và ECS

DevOps Infinity Loop

Hình 1: Mô tả Vòng lặp Vô tận (Infinity Loop) của DevOps [1]

Hãy nhìn vào biểu tượng này – Vòng lặp Vô tận (Infinity Loop) của DevOps. Nó đại diện cho sự kết hợp liền mạch giữa phát triển (Dev) và vận hành (Ops), thông qua các giai đoạn lặp đi lặp lại như CODE, BUILD, TEST, DEPLOY, MONITOR, và OPERATE. Đây là kim chỉ nam giúp các đội ngũ phần mềm phân phối ứng dụng nhanh hơn, đáng tin cậy hơn.
Tuy nhiên, khi nói đến Machine Learning, chúng ta cần một vòng lặp phức tạp hơn... một vòng lặp phải quản lý không chỉ code mà còn cả dữ liệu và mô hình.
Đó chính là lúc chúng ta cần đến MLOps (Machine Learning Operations) – cầu nối then chốt giữa khoa học dữ liệu và vận hành. MLOps không chỉ là DevOps cho ML; đó là việc làm chủ toàn bộ vòng đời của mô hình, từ dữ liệu, huấn luyện, đến giám sát hiệu suất trong môi trường thực tế.

  • AWS S3: Lưu trữ dữ liệu và mô hình vô hạn, bền bỉ.
  • AWS EC2: Cung cấp năng lực tính toán linh hoạt cho huấn luyện và phục vụ mô hình.
  • AWS ECR: Quản lý an toàn các Docker Image của ứng dụng ML.
  • AWS ECS: Điều phối container, tự động hóa việc triển khai và mở rộng.

I. MLOps và DevOps: Khái Niệm Nền Tảng

Devops là gì?

DevOps là sự kết hợp giữa Development (Phát triển) và Operations (Vận hành), là một triết lý văn hóa, các phương pháp và công cụ giúp tự động hóa và tích hợp các quy trình giữa nhóm phát triển và nhóm vận hành. Mục tiêu chính là tăng tốc độ phát hành sản phẩm, cải thiện hiệu suất, chất lượng và độ tin cậy bằng cách xây dựng một quy trình làm việc liền mạch, cộng tác chặt chẽ và liên tục cải tiến.

Chu trình DevOps Truyền thống

Hình 2: Chu trình DevOps (Truyền thống) [1]

MLOps là gì?

MLOps là tập hợp các thực hành, triết lý văn hóa và công cụ mở rộng các nguyên tắc của DevOps sang vòng đời của Machine Learning. Nó tập trung vào việc tự động hóa và tiêu chuẩn hóa quy trình phát triển, triển khai, giám sát và quản lý các mô hình ML.

  • Mục tiêu: Quản lý hiệu quả dữ liệu, mô hình và các thử nghiệm.
  • Tầm quan trọng: Cần thiết cho việc quản lý phiên bản dữ liệu (Data versioning), huấn luyện lại mô hình (Model retraining), và giám sát mô hình (Model monitoring).

So sánh MLOps và DevOps

Giai đoạn Chu trình MLOps (Mở rộng) Mô tả DevOps tập trung
Lập kế hoạch (Plan) Dữ liệu (Data), Lập kế hoạch (Plan) Thu thập, khám phá, xác thực, và tạo phiên bản dữ liệu (Data Versioning).
Code Phát triển (Develop) & Xây dựng Mô hình (Model Build) Phát triển code, thử nghiệm mô hình, quản lý thử nghiệm (Experiment Management), huấn luyện lại (Re-Train).
Xây dựng (Build) Đóng gói (Packaging) Đóng gói mô hình, code dự đoán và các dependencies vào một Container Image (ví dụ: Docker).
Kiểm tra (Test) Kiểm tra (Test) & Thẩm định Mô hình (Model Validation) Kiểm thử đơn vị (Unit Test) cho code, kiểm thử mô hình (Model Testing) và kiểm thử chất lượng dữ liệu.
Phát hành (Release) Đánh giá (Review) Đánh giá mô hình đã được thẩm định và phê duyệt cho việc triển khai sản phẩm.
Triển khai (Deploy) Triển khai (Deploy) Triển khai container image chứa mô hình ra môi trường sản phẩm để phục vụ dự đoán.
Vận hành (Operate) Phục vụ Dự đoán (Predict Serving) & Suy luận (Inference) Ứng dụng/API phục vụ dự đoán cho người dùng theo thời gian thực hoặc theo lô.
Giám sát (Monitor) Giám sát Hiệu suất (Performance Monitor) Giám sát hiệu suất kỹ thuật (latency, uptime) và hiệu suất mô hình (độ chính xác, Data Drift, Model Drift), thu thập phản hồi.

Về cốt lõi, MLOps áp dụng chu trình lặp đi lặp lại của DevOps (Lập kế hoạch → Code → Xây dựng → Kiểm tra → Phát hành → Triển khai → Vận hành → Giám sát) vào bối cảnh ML.

Chu trình DevOps (Truyền thống) Chu trình MLOps (Mở rộng)
Plan, Code, Build, Test, Release, Deploy, Operate, Monitor Data, Model Build, Test, Packaging, Deploy, Predict Serving, Performance Monitor

Mô tả chu trình của MLOps

Hình 3: Mô tả chu trình của MLOps mở rộng[1]

MLOps Lifecycle bổ sung các giai đoạn tập trung vào dữ liệu và mô hình như Thu thập dữ liệu, Xử lý dữ liệu, Huấn luyện mô hình, Thẩm định mô hình, Triển khai và Vòng lặp phản hồi (Feedback loop).


II. Các Thành Phần AWS Cốt Lõi Trong MLOps Pipeline

Pipeline MLOps điển hình trên AWS sử dụng một bộ dịch vụ linh hoạt để xử lý từ lưu trữ dữ liệu đến triển khai ứng dụng.

1. Amazon S3 (Simple Storage Service)

S3 là dịch vụ lưu trữ đối tượng có khả năng mở rộng cao (unlimited), bền bỉsẵn sàng của AWS.

Chức năng và vai trò của Amazon S3 (Simple Storage Service)

Hình 4: Mô tả chức năng và vai trò của Amazon S3 (Simple Storage Service) [2]

  • Vai trò trong MLOps:
    • Data Lake: Lưu trữ dữ liệu thô, dữ liệu đã xử lý và các tập tin lớn khác.
    • Lưu trữ Model: Lưu trữ các mô hình ML đã huấn luyện (trained models) dưới dạng đối tượng (object) để có thể truy cập khi triển khai.
    • Đặc điểm: Dữ liệu được tổ chức thành Bucket với tên duy nhất toàn cầu và được định nghĩa ở cấp độ vùng (region).

2. Amazon EC2 (Elastic Compute Cloud)

EC2 cung cấp năng lực tính toán có thể mở rộng theo yêu cầu dưới dạng Infrastructure as a Service (IaaS).

  • Vai trò trong MLOps:
    • Huấn luyện Mô hình: Cung cấp các máy ảo (Virtual Machines) mạnh mẽ, đặc biệt là các Instance Type chuyên biệt như Accelerated Computing (P5, G6) với GPU/FPGA, lý tưởng cho Machine Learning và Deep Learning.
    • Triển khai/Phục vụ Mô hình: Nơi lưu trữ (hosting) và phục vụ các mô hình ML/DL đã được container hóa.

3. Amazon ECR (Elastic Container Registry)

ECR là dịch vụ lưu trữ registry Docker riêng tư, được quản lý toàn phần.

Chức năng và vai trò của Amazon ECR (Elastic Container Registry)

Hình 5: Mô tả chức năng và vai trò của Amazon ECR (Elastic Container Registry) [1]

  • Vai trò trong MLOps:
    • Lưu trữ Container Image: Nơi chứa các Docker Image đã được xây dựng từ code backend của ứng dụng ML.
    • Tích hợp: Các dịch vụ như ECS có thể dễ dàng kéo (pull) image từ ECR để triển khai.

4. Amazon ECS (Elastic Container Service)

ECS là dịch vụ điều phối container được quản lý toàn phần, cho phép bạn chạy, dừng và quản lý các Docker Container trên một cụm (cluster).

Chức năng và vai trò của Amazon ECS (Elastic Container Service)

Hình 6: Mô tả chức năng và vai trò của Amazon ECS (Elastic Container Service) [1]

  • Vai trò trong MLOps:
    • Triển khai Mô hình Tự động: Tự động hóa việc triển khai, mở rộng (scaling) và giám sát các ứng dụng được container hóa.
    • Cấu phần: Sử dụng Task Definition (JSON template định nghĩa container, CPU, bộ nhớ, port,...) và Service (đảm bảo số lượng task chạy ổn định).
    • Lựa chọn nền tảng: Có thể chạy trên EC2 Clusters (tự quản lý instance) hoặc Fargate Clusters (serverless, dễ dàng scale).

III. Ứng Dụng Thực Tế: Pipeline Phân Tích Cảm Xúc Phim IMDb

Hãy xem xét một ví dụ thực tế: xây dựng hệ thống phân tích cảm xúc (Sentiment Analysis) cho các đánh giá phim IMDb.

1. Training Phase (Giai đoạn Huấn luyện)

  1. Data & Code: Dữ liệu IMDb Movie Dataset được sử dụng.
  2. Model Training: Huấn luyện mô hình (ví dụ: trên Google Colab).
  3. Model Storage: Mô hình đã huấn luyện được lưu trữ an toàn trong S3.

2. Inference Phase (Giai đoạn Suy luận & Triển khai)

  1. Backend & Containerization:
    • Code Backend (ví dụ: một ứng dụng FastAPI) được viết để tải mô hình từ S3 và phục vụ các yêu cầu dự đoán.
    • Backend được đóng gói thành Docker Image.
    • Code Mở rộng (Dockerfile):
# Tải image cơ sở
FROM python:3.10-slim
# Thiết lập môi trường
WORKDIR /app
# Cài đặt dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copy code ứng dụng
COPY . .
# Mở cổng (port) của FastAPI
EXPOSE 8000
# Khởi chạy ứng dụng với Uvicorn
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
  1. Image Registry: Docker Image được Push lên ECR.
    • Code Mở rộng (Push Image to ECR):
# 1. Đăng nhập vào Amazon ECR
aws ecr get-login-password --region <region> | docker login \
  --username AWS \
  --password-stdin <account_id>.dkr.ecr.<region>.amazonaws.com

# 2. Gắn thẻ (tag) image Docker
docker tag myapp:latest <account_id>.dkr.ecr.<region>.amazonaws.com/myapp:latest

# 3. Đẩy (push) image lên ECR
docker push <account_id>.dkr.ecr.<region>.amazonaws.com/myapp:latest
  1. Deployment: ECS (sử dụng EC2 hoặc Fargate) Pull Image từ ECR và Deploy thành các Task.
    • Các EC2/Fargate Instances này sẽ chạy container FastAPI, tải file mô hình từ S3 khi khởi động (nếu cần thiết) và sẵn sàng phục vụ User Input.
  2. Scaling & Availability: Một Elastic Load Balancer (ELB) sẽ tự động phân phối traffic đến nhiều ECS Tasks/EC2 Instances để đảm bảo tính sẵn sàng và khả năng mở rộng.

IV. Tóm tắt và Mở rộng

Việc kết hợp MLOps với các dịch vụ AWS như S3 (lưu trữ), ECR (registry image), EC2/Fargate (tính toán) và ECS (điều phối) cho phép bạn xây dựng một quy trình làm việc tự động, ổn định và có khả năng mở rộng cho các mô hình Machine Learning của mình.

Để mở rộng hơn, bạn có thể tích hợp:

  • AWS CodePipeline/GitHub Actions: Để tự động hóa quy trình CI/CD (liên tục tích hợp/liên tục triển khai) khi có code/mô hình mới.
  • MLflow/SageMaker: Để theo dõi và quản lý các thí nghiệm, mô hình và phiên bản.
  • CloudWatch/Prometheus & Grafana: Để giám sát hiệu suất và độ trôi dạt (drift) của mô hình đã triển khai.

Kiểm tra video này để xem cách triển khai ML end-to-end với MLflow, FastAPI và AWS Fargate, một mô hình tương tự sử dụng ECS.

How to Deploy ML Solutions with FastAPI, Docker, & AWS

Video này là một ví dụ thực tế về việc triển khai ML model end-to-end, rất phù hợp với phần mở rộng về code, hình ảnh và ứng dụng.


Refernces

[1] Ảnh được lấy từ tài liệu khóa học AIO Module 05 Tuần 03
[2] DeepMind, "Gemini," Large language model, 2025. [Online]. Available: https://gemini.ai/. [Accessed: Oct. 19, 2025].