paint-brush
Cách mở rộng cơ sở hạ tầng AI với Kubernetes và Dockertừ tác giả@dataengonline
Bài viết mới

Cách mở rộng cơ sở hạ tầng AI với Kubernetes và Docker

từ tác giả Natapong Sornprom6m2025/02/15
Read on Terminal Reader

dài quá đọc không nổi

Các công ty ngày càng sử dụng cơ sở hạ tầng trí tuệ nhân tạo (AI) để lưu trữ và quản lý khối lượng công việc tự động. Khả năng mở rộng đảm bảo rằng các hệ thống AI có thể xử lý khối lượng công việc ngày càng tăng mà không bị mất hiệu suất. Các tổ chức sử dụng Docker và Kubernetes để đáp ứng các nhu cầu như vậy.
featured image - Cách mở rộng cơ sở hạ tầng AI với Kubernetes và Docker
Natapong Sornprom HackerNoon profile picture
0-item
1-item

Các công ty ngày càng sử dụng cơ sở hạ tầng trí tuệ nhân tạo (AI) để lưu trữ và quản lý khối lượng công việc tự động. Do đó, đã có nhu cầu đáng kể về khả năng mở rộng cũng như cơ sở hạ tầng phục hồi có thể đáp ứng các yêu cầu ứng dụng hoặc đám mây không đồng nhất. Các tổ chức sử dụng Kubernetes Người lái tàu để đáp ứng những nhu cầu như vậy vì các công ty nhận ra rằng cả hai đều là những trường hợp sử dụng có hiệu quả cao, mang lại cơ sở hạ tầng AI có khả năng mở rộng.


Việc triển khai cơ sở hạ tầng AI thường cung cấp đủ sức mạnh tính toán để thực thi và xử lý các tập dữ liệu lớn. Những nhu cầu này có thể chuyển thành nhu cầu về các phương pháp có khả năng mở rộng cho phép các mô hình AI chạy trên khối lượng công việc lớn mà không làm giảm hiệu suất.

Tại sao các công ty cần mở rộng cơ sở hạ tầng AI của họ

Hệ thống AI Tuy nhiên, chúng cũng đòi hỏi nhiều tài nguyên, thường đòi hỏi cả khả năng tính toán cao và khả năng xử lý dữ liệu ở mức cao. Khi các ứng dụng AI tiên tiến hơn và quy mô lớn hơn trở nên cần thiết, khả năng mở rộng trở nên quan trọng hơn. Khả năng mở rộng đảm bảo rằng các hệ thống AI có thể xử lý khối lượng công việc ngày càng tăng mà không làm giảm hiệu suất.

Mở rộng khối lượng dữ liệu

Lượng dữ liệu ngày càng tăng là mối quan tâm của các hệ thống AI ở nhiều khía cạnh. Hầu hết các mô hình AI, đặc biệt là các mô hình dựa trên học sâu, phụ thuộc rất nhiều vào lượng dữ liệu lớn trong quá trình đào tạo và suy luận. Tuy nhiên, nếu không có cơ sở hạ tầng có khả năng mở rộng, xử lý và diễn giải các dữ liệu như vậy lượng dữ liệu khổng lồ là một rào cản .

Hiệu suất được tối ưu hóa

Phần cứng AI có thể mở rộng hỗ trợ hiệu suất đáng tin cậy và ổn định mặc dù tải tính toán quá lớn. Với Kubernetes, việc mở rộng theo chiều ngang các tác vụ AI trở nên dễ dàng và việc thay đổi kích thước động của số lượng bản sao có thể được thực hiện theo nhu cầu. Ngược lại, các container Docker hỗ trợ các môi trường tinh gọn, biệt lập để chạy các mô hình AI, nơi xung đột tài nguyên không phải là nút thắt cổ chai về hiệu suất.

Quản lý tài nguyên hiệu quả

Sử dụng hiệu quả tài nguyên là chìa khóa để triển khai AI tiết kiệm chi phí và bền vững. Các yêu cầu và giới hạn tài nguyên của Kubernetes cho phép quản lý tài nguyên CPU và bộ nhớ chi tiết bằng cách tránh cung cấp thiếu và cung cấp quá mức. Quản lý tài nguyên của Docker lấp đầy khoảng trống bằng cách cô lập các tài nguyên container.

Mở rộng cơ sở hạ tầng AI với Kubernetes và Docker

Container hóa là một trong những cột mốc trong quá trình phát triển cơ sở hạ tầng trí tuệ nhân tạo có khả năng mở rộng. Container hóa ứng dụng AI và các phụ thuộc của nó trong một container Docker đảm bảo tính nhất quán trong suốt quá trình phát triển, thử nghiệm và triển khai môi trường.


Trước tiên, bạn phải định nghĩa Dockerfile để cài đặt môi trường. Dockerfile là một loạt các hướng dẫn về cách xây dựng một hình ảnh Docker. Nó khai báo một hình ảnh cơ sở, các phụ thuộc cần thiết và các lệnh thiết lập ban đầu áp dụng cho ứng dụng của bạn. Sau đây là Dockerfile cơ bản cho mô hình học máy Python:


 # Use an official Python runtime as a parent image FROM python:3.9-slim # Set the working directory in the container WORKDIR /usr/src/app # Copy the current directory contents into the container COPY . . # Install any needed packages specified in requirements.txt RUN pip install --no-cache-dir -r requirements.txt # Expose the port the app runs on EXPOSE 5000 # Define environment variable ENV NAME World # Run the app CMD ["python", "./app.py"]


Nếu Dockerfile đã sẵn sàng, bạn có thể xây dựng hình ảnh Docker và chạy container. Chạy các lệnh sau:

 # Build the Docker image docker build -t ml-model:latest . # Run the container docker run -p 5000:5000 ml-model:latest


Triển khai mô hình AI Dockerized cho Kubernetes

Kubernetes cung cấp nhiều tính năng phối hợp cho phép quản lý ứng dụng hiệu quả trong cơ sở hạ tầng chứa. Triển khai hình ảnh Docker trên Kubernetes đảm bảo rằng một số lượng bản sao ứng dụng được chỉ định luôn chạy. Sau đây là một ví dụ về tệp implementation.yaml mà bạn có thể sử dụng để triển khai mô hình máy học Dockerized của bạn :


 apiVersion: apps/v1 kind: Deployment metadata: name: ml-model-deployment spec: replicas: 3 selector: matchLabels: app: ml-model template: metadata: labels: app: ml-model spec: containers: - name: ml-model-container image: ml-model:latest ports: - containerPort: 5000


Đoạn mã trên cho thấy cách triển khai mô hình AI, nhưng bạn cũng cần phải làm cho mô hình có thể truy cập bên ngoài. Bạn sẽ cần phải phơi bày nó bằng cách định nghĩa một Dịch vụ Kubernetes. service.yaml bên dưới minh họa một ví dụ:


 apiVersion: v1 kind: Service metadata: name: ml-model-service spec: selector: app: ml-model ports: - protocol: TCP port: 80 targetPort: 5000 type: LoadBalancer


Sử dụng công cụ dòng lệnh kubectl để áp dụng cấu hình triển khai và dịch vụ:


 # Deploy the application kubectl apply -f deployment.yaml # Expose the service kubectl apply -f service.yaml


Mở rộng quy mô với Kubernetes

Kubernetes cung cấp khả năng mở rộng tuyệt vời cho môi trường AI, tối đa hóa việc sử dụng tài nguyên và hiệu suất. Mở rộng theo chiều ngang được thực hiện bằng cách thêm các container bổ sung và mở rộng theo chiều dọc liên quan đến việc thêm các tài nguyên bổ sung như CPU hoặc bộ nhớ vào một container.

Tỷ lệ ngang

Việc mở rộng theo chiều ngang được sử dụng để mở rộng số lượng bản sao (Pod) của hệ thống AI để xử lý khối lượng công việc cao hơn. Quy trình này yêu cầu bật tính năng mở rộng động tùy thuộc vào số lượng bản sao. Lệnh được sử dụng để bật quy trình như vậy là `kubectl scale`. Lệnh cụ thể được sử dụng để thiết lập triển khai hoạt động lên đến tối đa năm bản sao:


`kubectl scale --replicas=5 triển khai/ml-model-deployment`


Lệnh mở rộng ml-model-deployment để sử dụng năm bản sao của container mô hình học máy. Hệ thống sẽ cung cấp động nhiều Pod hơn để đáp ứng số lượng yêu cầu sau đó.

Tự động điều chỉnh quy mô bằng cách sử dụng Horizontal Pod Autoscaler (HPA)

Kubernetes hỗ trợ tự động mở rộng quy mô bằng cách sử dụng Horizontal Pod Autoscaler (HPA). HPA điều chỉnh động số lượng bản sao dựa trên việc sử dụng tài nguyên, tức là CPU hoặc bộ nhớ, liên quan đến các giới hạn đã đặt. Cấu hình YAML được hiển thị bên dưới là một ví dụ có liên quan về HPA tự động mở rộng quy mô cho ml-model-deployment để đáp ứng việc sử dụng CPU:


 apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: ml-model-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: ml-model-deployment minReplicas: 2 maxReplicas: 10 targetCPUUtilizationPercentage: 50


Trong thiết lập này, scaleTargetRef được sử dụng để xác định Triển khai cần được mở rộng, tức là ml-model-deployment. Số lượng bản sao tối thiểu được đặt bằng MinReplicas, trong khi số lượng bản sao tối đa được kiểm soát bằng maxReplicas. Ngoài ra, tỷ lệ sử dụng CPU được đặt bằng targetCPUUtilizationPercentage, tức là thành 50%.


Việc sử dụng CPU hơn 50% trên tất cả các Pod sẽ dẫn đến việc tự động tăng số lượng bản sao lên tối đa là 10. Ngay khi việc sử dụng CPU giảm xuống dưới tỷ lệ phần trăm đã đặt, Kubernetes sẽ tự động giảm số lượng bản sao để giải phóng tài nguyên.

Tỷ lệ theo chiều dọc

Mở rộng theo chiều ngang chủ yếu là để đối phó với nhiều lưu lượng hơn, trong khi mở rộng theo chiều dọc cung cấp nhiều tài nguyên hơn (như CPU hoặc bộ nhớ) cho các container hiện có. Quy trình này là tăng hoặc giảm các yêu cầu tài nguyên và giới hạn trong Kubernetes Deployment. Để mở rộng các giới hạn CPU và bộ nhớ của ml-model-deployment, người ta cần mở tệp deployment.yaml:


 apiVersion: apps/v1 kind: Deployment metadata: name: ml-model-deployment spec: replicas: 3 selector: matchLabels: app: ml-model template: metadata: labels: app: ml-model spec: containers: - name: ml-model-container image: ml-model:latest ports: - containerPort: 5000 resources: requests: cpu: "1" memory: "2Gi" limits: cpu: "2" memory: "4Gi"


Trong cấu hình cập nhật này:

  • yêu cầu chỉ rõ các tài nguyên tối thiểu cần thiết cho vùng chứa.
  • giới hạn xác định tài nguyên tối đa mà container có thể sử dụng.