Mục lục bài viết

1. Giới thiệu về Amazon SageMaker Serverless Inference

Amazon SageMaker Serverless Inference là một tính năng mới cho phép triển khai và mở rộng quy mô mô hình ML theo cách serverless. Tương tự như AWS Lambda, các endpoint serverless tự động khởi chạy tài nguyên tính toán và điều chỉnh quy mô dựa trên lưu lượng truy cập.

Các ưu điểm của Serverless Inference:

  • Tự động mở rộng quy mô
  • Tối ưu chi phí với mô hình thanh toán theo sử dụng
  • Phù hợp cho workload không thường xuyên hoặc không dự đoán được

Giới hạn:

  • Memory size: 1024 MB – 6144 MB
  • Concurrent invocations: 50 mỗi region
  • Cold starts: ms đến vài giây

Có thể được theo dõi bằng Số liệu ‘ModelSetupTime’ Cloudwatch

2. Thiết lập Môi trường Development

2.1 Cài đặt Thư viện

```python

!pip install sagemaker --upgrade

import sagemaker

assert sagemaker.__version__ >= "2.86.0"

```

2.2 Cấu hình Session và IAM Role

```python

import sagemaker

import boto3

# Thiết lập SageMaker session

sess = sagemaker.Session()

sagemaker_session_bucket = None

if sagemaker_session_bucket is None and sess is not None:

    sagemaker_session_bucket = sess.default_bucket()

# Lấy IAM role

try:

    role = sagemaker.get_execution_role()

except ValueError:

    iam = boto3.client('iam')

    role = iam.get_role(RoleName='sagemaker_execution_role')['Role']['Arn']

sess = sagemaker.Session(default_bucket=sagemaker_session_bucket)

print(f"sagemaker role arn: {role}")

print(f"sagemaker bucket: {sess.default_bucket()}")

print(f"sagemaker session region: {sess.boto_region_name}")

```

3. Triển khai Mô hình DistilBERT

3.1 Cấu hình Mô hình và Serverless

Sử dụng mô hình `distilbert-base-uncased-finetuned-sst-2-english` – một phiên bản fine-tuned của DistilBERT cho tác vụ phân loại cảm xúc, với độ chính xác 91.3% trên tập dev.

```python

from sagemaker.huggingface.model import HuggingFaceModel

from sagemaker.serverless import ServerlessInferenceConfig

# Cấu hình Hub Model

hub = {

    'HF_MODEL_ID':'distilbert-base-uncased-finetuned-sst-2-english',

    'HF_TASK':'text-classification'

}

# Tạo Hugging Face Model Class

huggingface_model = HuggingFaceModel(

   env=hub,                      # cấu hình cho việc load model từ Hub

   role=role,                    # IAM role có quyền tạo Endpoint

   transformers_version="4.12",  # phiên bản transformers

   pytorch_version="1.9",        # phiên bản pytorch

   py_version='py38',           # phiên bản python

)

# Cấu hình Serverless với memory và concurrency

serverless_config = ServerlessInferenceConfig(

    memory_size_in_mb=4096,

    max_concurrency=10,

)

```

3.2 Deploy Endpoint

```python

# Deploy endpoint

predictor = huggingface_model.deploy(

    serverless_inference_config=serverless_config

)

```

4. Sử dụng Endpoint cho Inference

4.1 Gửi Request

```python

data = {

  "inputs": "the mesmerizing performances of the leads keep the film grounded and keep the audience riveted.",

}

res = predictor.predict(data=data)

print(res)

```

Lưu ý: Request đầu tiên có thể có cold start (2-5s).

4.2 Dọn dẹp Tài nguyên

```python

predictor.delete_model()

predictor.delete_endpoint()

```

Kết luận

Serverless Inference với Hugging Face Transformers trên Amazon SageMaker cung cấp một giải pháp linh hoạt và hiệu quả về chi phí cho việc triển khai mô hình ML. Với khả năng tự động mở rộng và mô hình thanh toán theo sử dụng, nó đặc biệt phù hợp cho:

  • Các dự án trong giai đoạn PoC
  • Workloads với lưu lượng không dự đoán được
  • Tổ chức muốn tối ưu chi phí vận hành