Mục lục bài viết
- 1. Giới thiệu về Amazon SageMaker Serverless Inference
- 2. Thiết lập Môi trường Development
- 3. Triển khai Mô hình DistilBERT
- 4. Sử dụng Endpoint cho Inference
- Kết luận
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
Để lại một bình luận