Trí thông minh dữ liệu tạo

Sử dụng Toán tử Kubernetes để có khả năng suy luận mới trong Amazon SageMaker giúp giảm chi phí triển khai LLM trung bình 50% | Dịch vụ web của Amazon

Ngày:

Chúng tôi vui mừng thông báo phiên bản mới của Toán tử Amazon SageMaker cho Kubernetes bằng cách sử dụng Bộ điều khiển AWS dành cho Kubernetes (ACK). ACK là một khung để xây dựng bộ điều khiển tùy chỉnh Kubernetes, trong đó mỗi bộ điều khiển giao tiếp với API dịch vụ AWS. Các bộ điều khiển này cho phép người dùng Kubernetes cung cấp các tài nguyên AWS như bộ chứa, cơ sở dữ liệu hoặc hàng đợi tin nhắn chỉ bằng cách sử dụng API Kubernetes.

Phát hành v1.2.9 của Nhà khai thác ACK SageMaker bổ sung hỗ trợ cho thành phần suy luận, cho đến nay chỉ khả dụng thông qua API SageMaker và Bộ công cụ phát triển phần mềm (SDK) AWS. Các thành phần suy luận có thể giúp bạn tối ưu hóa chi phí triển khai và giảm độ trễ. Với các khả năng của thành phần suy luận mới, bạn có thể triển khai một hoặc nhiều mô hình nền tảng (FM) trên cùng một Amazon SageMaker điểm cuối và kiểm soát số lượng bộ tăng tốc cũng như lượng bộ nhớ dành riêng cho mỗi FM. Điều này giúp cải thiện việc sử dụng tài nguyên, giảm trung bình 50% chi phí triển khai mô hình và cho phép bạn mở rộng quy mô điểm cuối cùng với các trường hợp sử dụng của mình. Để biết thêm chi tiết, xem Amazon SageMaker bổ sung khả năng suy luận mới để giúp giảm chi phí và độ trễ triển khai mô hình nền tảng.

Tính khả dụng của các thành phần suy luận thông qua bộ điều khiển SageMaker cho phép khách hàng sử dụng Kubernetes làm mặt phẳng điều khiển tận dụng các thành phần suy luận trong khi triển khai mô hình của họ trên SageMaker.

Trong bài đăng này, chúng tôi trình bày cách sử dụng Toán tử SageMaker ACK để triển khai các thành phần suy luận SageMaker.

ACK hoạt động như thế nào

Để lam sang tỏ ACK hoạt động như thế nào, hãy xem một ví dụ sử dụng Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3). Trong sơ đồ sau, Alice là người dùng Kubernetes của chúng tôi. Ứng dụng của cô ấy phụ thuộc vào sự tồn tại của nhóm S3 có tên my-bucket.

ACK hoạt động như thế nào

Quy trình làm việc bao gồm các bước sau:

  1. Alice thực hiện cuộc gọi tới kubectl apply, chuyển vào một tệp mô tả Kubernetes tài nguyên tùy chỉnh mô tả thùng S3 của cô ấy. kubectl apply chuyển tệp này, được gọi là biểu hiện, tới máy chủ API Kubernetes đang chạy trong nút bộ điều khiển Kubernetes.
  2. Máy chủ API Kubernetes nhận được bảng kê khai mô tả nhóm S3 và xác định xem Alice có quyền để tạo một tài nguyên tùy chỉnh của loại s3.services.k8s.aws/Bucketvà tài nguyên tùy chỉnh được định dạng đúng.
  3. Nếu Alice được ủy quyền và tài nguyên tùy chỉnh hợp lệ, máy chủ API Kubernetes sẽ ghi tài nguyên tùy chỉnh vào etcd kho dữ liệu.
  4. Sau đó nó trả lời Alice rằng tài nguyên tùy chỉnh đã được tạo.
  5. Tại thời điểm này, dịch vụ ACK điều khiển dành cho Amazon S3, đang chạy trên nút công nhân Kubernetes trong bối cảnh Kubernetes bình thường Pod, được thông báo rằng một loại tài nguyên tùy chỉnh mới s3.services.k8s.aws/Bucket Đã được tạo ra.
  6. Sau đó, bộ điều khiển dịch vụ ACK cho Amazon S3 sẽ giao tiếp với API Amazon S3, gọi tới API CreateBucket của S3 để tạo nhóm trong AWS.
  7. Sau khi liên lạc với API Amazon S3, bộ điều khiển dịch vụ ACK gọi máy chủ API Kubernetes để cập nhật tài nguyên tùy chỉnh tình trạng với thông tin nó nhận được từ Amazon S3.

Các thành phần chính

Khả năng suy luận mới được xây dựng dựa trên điểm cuối suy luận thời gian thực của SageMaker. Như trước đây, bạn tạo điểm cuối SageMaker bằng cấu hình điểm cuối xác định loại phiên bản và số lượng phiên bản ban đầu cho điểm cuối. Mô hình được cấu hình trong một cấu trúc mới, một thành phần suy luận. Tại đây, bạn chỉ định số lượng bộ tăng tốc và dung lượng bộ nhớ bạn muốn phân bổ cho mỗi bản sao của mô hình, cùng với các tạo phẩm mô hình, hình ảnh vùng chứa và số lượng bản sao mô hình để triển khai.

Bạn có thể sử dụng khả năng suy luận mới từ Xưởng sản xuất Amazon SageMaker, Các SDK Python của SageMaker, AWS SDKGiao diện dòng lệnh AWS (AWS CLI). Họ cũng được hỗ trợ bởi Hình thành đám mây AWS. Bây giờ bạn cũng có thể sử dụng chúng với Nhà điều hành SageMaker cho Kubernetes.

Tổng quan về giải pháp

Đối với bản demo này, chúng tôi sử dụng bộ điều khiển SageMaker để triển khai bản sao của Mô hình Dolly v2 7B và một bản sao của Mẫu FLAN-T5 XXL từ Trung tâm mô hình khuôn mặt ôm trên điểm cuối thời gian thực của SageMaker bằng cách sử dụng các khả năng suy luận mới.

Điều kiện tiên quyết

Để làm theo, bạn nên cài đặt cụm Kubernetes có cài đặt bộ điều khiển SageMaker ACK v1.2.9 trở lên. Để biết hướng dẫn về cách cung cấp một Dịch vụ Kubernetes đàn hồi của Amazon (Amazon EKS) cụm với Đám mây điện toán đàn hồi Amazon (Amazon EC2) Các nút được Linux quản lý bằng eksctl, xem Bắt đầu với Amazon EKS – eksctl. Để biết hướng dẫn cài đặt bộ điều khiển SageMaker, hãy tham khảo Học máy với Bộ điều khiển ACK SageMaker.

Bạn cần quyền truy cập vào các phiên bản được tăng tốc (GPU) để lưu trữ LLM. Giải pháp này sử dụng một phiên bản ml.g5.12xlarge; bạn có thể kiểm tra tính khả dụng của các phiên bản này trong tài khoản AWS của mình và yêu cầu các phiên bản này nếu cần thông qua yêu cầu tăng Định mức dịch vụ, như minh họa trong ảnh chụp màn hình sau.

Yêu cầu tăng định mức dịch vụ

Tạo thành phần suy luận

Để tạo thành phần suy luận của bạn, hãy xác định EndpointConfig, Endpoint, ModelInferenceComponent Các tệp YAML, tương tự như các tệp được hiển thị trong phần này. Sử dụng kubectl apply -f <yaml file> để tạo tài nguyên Kubernetes.

Bạn có thể liệt kê trạng thái của tài nguyên thông qua kubectl describe <resource-type>; ví dụ, kubectl describe inferencecomponent.

Bạn cũng có thể tạo thành phần suy luận mà không cần tài nguyên mô hình. Tham khảo hướng dẫn được cung cấp trong Tài liệu API để biết thêm chi tiết.

YAML cấu hình điểm cuối

Sau đây là mã cho tệp EndpointConfig:

apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: EndpointConfig
metadata:
  name: inference-component-endpoint-config
spec:
  endpointConfigName: inference-component-endpoint-config
  executionRoleARN: <EXECUTION_ROLE_ARN>
  productionVariants:
  - variantName: AllTraffic
    instanceType: ml.g5.12xlarge
    initialInstanceCount: 1
    routingConfig:
      routingStrategy: LEAST_OUTSTANDING_REQUESTS

Điểm cuối YAML

Sau đây là mã cho tệp Điểm cuối:

apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: Endpoint
metadata:
  name: inference-component-endpoint
spec:
  endpointName: inference-component-endpoint
  endpointConfigName: inference-component-endpoint-config

mô hình YAML

Sau đây là mã cho tệp Mô hình:

apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: Model
metadata:
  name: dolly-v2-7b
spec:
  modelName: dolly-v2-7b
  executionRoleARN: <EXECUTION_ROLE_ARN>
  containers:
  - image: 763104351884.dkr.ecr.us-east-1.amazonaws.com/huggingface-pytorch-tgi-inference:2.0.1-tgi0.9.3-gpu-py39-cu118-ubuntu20.04
    environment:
      HF_MODEL_ID: databricks/dolly-v2-7b
      HF_TASK: text-generation
---
apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: Model
metadata:
  name: flan-t5-xxl
spec:
  modelName: flan-t5-xxl
  executionRoleARN: <EXECUTION_ROLE_ARN>
  containers:
  - image: 763104351884.dkr.ecr.us-east-1.amazonaws.com/huggingface-pytorch-tgi-inference:2.0.1-tgi0.9.3-gpu-py39-cu118-ubuntu20.04
    environment:
      HF_MODEL_ID: google/flan-t5-xxl
      HF_TASK: text-generation

YAML thành phần suy luận

Trong các tệp YAML sau đây, do phiên bản ml.g5.12xlarge có 4 GPU nên chúng tôi đang phân bổ 2 GPU, 2 CPU và 1,024 MB bộ nhớ cho mỗi kiểu máy:

apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: InferenceComponent
metadata:
  name: inference-component-dolly
spec:
  inferenceComponentName: inference-component-dolly
  endpointName: inference-component-endpoint
  variantName: AllTraffic
  specification:
    modelName: dolly-v2-7b
    computeResourceRequirements:
      numberOfAcceleratorDevicesRequired: 2
      numberOfCPUCoresRequired: 2
      minMemoryRequiredInMb: 1024
  runtimeConfig:
    copyCount: 1

apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: InferenceComponent
metadata:
  name: inference-component-flan
spec:
  inferenceComponentName: inference-component-flan
  endpointName: inference-component-endpoint
  variantName: AllTraffic
  specification:
    modelName: flan-t5-xxl
    computeResourceRequirements:
      numberOfAcceleratorDevicesRequired: 2
      numberOfCPUCoresRequired: 2
      minMemoryRequiredInMb: 1024
  runtimeConfig:
    copyCount: 1

Gọi mô hình

Bây giờ bạn có thể gọi các mô hình bằng mã sau:

import boto3
import json

sm_runtime_client = boto3.client(service_name="sagemaker-runtime")
payload = {"inputs": "Why is California a great place to live?"}

response_dolly = sm_runtime_client.invoke_endpoint(
    EndpointName="inference-component-endpoint",
    InferenceComponentName="inference-component-dolly",
    ContentType="application/json",
    Accept="application/json",
    Body=json.dumps(payload),
)
result_dolly = json.loads(response_dolly['Body'].read().decode())
print(result_dolly)

response_flan = sm_runtime_client.invoke_endpoint(
    EndpointName="inference-component-endpoint",
    InferenceComponentName="inference-component-flan",
    ContentType="application/json",
    Accept="application/json",
    Body=json.dumps(payload),
)
result_flan = json.loads(response_flan['Body'].read().decode())
print(result_flan)

Cập nhật thành phần suy luận

Để cập nhật thành phần suy luận hiện có, bạn có thể cập nhật các tệp YAML và sau đó sử dụng kubectl apply -f <yaml file>. Sau đây là ví dụ về tệp được cập nhật:

apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: InferenceComponent
metadata:
  name: inference-component-dolly
spec:
  inferenceComponentName: inference-component-dolly
  endpointName: inference-component-endpoint
  variantName: AllTraffic
  specification:
    modelName: dolly-v2-7b
    computeResourceRequirements:
      numberOfAcceleratorDevicesRequired: 2
      numberOfCPUCoresRequired: 4 # Update the numberOfCPUCoresRequired.
      minMemoryRequiredInMb: 1024
  runtimeConfig:
    copyCount: 1

Xóa một thành phần suy luận

Để xóa thành phần suy luận hiện có, hãy sử dụng lệnh kubectl delete -f <yaml file>.

Tính khả dụng và giá cả

Khả năng suy luận SageMaker mới hiện có sẵn tại các Khu vực AWS Đông Hoa Kỳ (Ohio, N. Virginia), Tây Hoa Kỳ (Oregon), Châu Á Thái Bình Dương (Jakarta, Mumbai, Seoul, Singapore, Sydney, Tokyo), Canada (Miền Trung), Châu Âu ( Frankfurt, Ireland, London, Stockholm), Trung Đông (UAE) và Nam Mỹ (São Paulo). Để biết chi tiết về giá, hãy truy cập Amazon SageMaker Giá.

Kết luận

Trong bài đăng này, chúng tôi đã giới thiệu cách sử dụng Toán tử SageMaker ACK để triển khai các thành phần suy luận SageMaker. Hãy kích hoạt cụm Kubernetes và triển khai FM của bạn bằng khả năng suy luận SageMaker mới ngay hôm nay!


Về các tác giả

Rajesh Ramchander là Kỹ sư ML chính về Dịch vụ chuyên nghiệp tại AWS. Anh ấy giúp đỡ khách hàng ở nhiều giai đoạn khác nhau trong hành trình AI/ML và GenAI của họ, từ những người mới bắt đầu cho đến những người đang dẫn đầu doanh nghiệp của họ bằng chiến lược ưu tiên AI.

Amit Arora là Kiến trúc sư chuyên gia về AI và ML tại Amazon Web Services, giúp khách hàng doanh nghiệp sử dụng các dịch vụ máy học dựa trên đám mây để nhanh chóng mở rộng quy mô đổi mới của họ. Ông cũng là giảng viên phụ trợ trong chương trình phân tích và khoa học dữ liệu MS tại Đại học Georgetown ở Washington DC

Suryansh Singh là Kỹ sư phát triển phần mềm tại AWS SageMaker và làm việc trong việc phát triển các giải pháp cơ sở hạ tầng phân tán ML cho khách hàng AWS trên quy mô lớn.

Saurabh Trikande là Giám đốc sản phẩm cấp cao của Amazon SageMaker Inference. Anh ấy đam mê làm việc với khách hàng và được thúc đẩy bởi mục tiêu dân chủ hóa việc học máy. Ông tập trung vào những thách thức cốt lõi liên quan đến việc triển khai các ứng dụng ML phức tạp, mô hình ML nhiều người thuê, tối ưu hóa chi phí và làm cho việc triển khai các mô hình học sâu dễ tiếp cận hơn. Khi rảnh rỗi, Saurabh thích đi bộ đường dài, tìm hiểu về các công nghệ tiên tiến, theo dõi TechCrunch và dành thời gian cho gia đình.

Johna LiuJohna Liu là Kỹ sư phát triển phần mềm trong nhóm Amazon SageMaker. Công việc hiện tại của cô tập trung vào việc giúp các nhà phát triển lưu trữ hiệu quả các mô hình máy học và cải thiện hiệu suất suy luận. Cô đam mê phân tích dữ liệu không gian và sử dụng AI để giải quyết các vấn đề xã hội.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?