Mục lục bài viết
Amazon vừa công bố hai phiên bản GPU là G6e tối ưu hóa cho suy luận (được hỗ trợ bởi GPU NVIDIA L40S Tensor Core) và P5e (được hỗ trợ bởi GPU NVIDIA H200 Tensor Core) trên Amazon SageMaker.
1. Instance GPU Mới cho Inference
1.1. P5e Instance (NVIDIA H200)
Thông số kỹ thuật:
- 8 GPU NVIDIA H200 Tensor Core
- 1128 GB GPU memory
- 30 TB NVMe SSD
- 192 vCPU
- 2 TiB system memory
Ứng dụng cho các hệ thống như:
- Mô hình ngôn ngữ lớn (100B+ parameters)
- Mô hình đa phương thức
- Tạo dữ liệu tổng hợp
- Ứng dụng AI tạo sinh phức tạp
1.2. G6e Instance (NVIDIA L40S)
Thông số kỹ thuật:
- 8 GPU NVIDIA L40S
- 48 GB memory/GPU
- AMD EPYC thế hệ 3
- Hiệu suất gấp 2.5x so với G5
Ứng dụng phù hợp:
- LLM đến 13B parameters
- Mô hình diffusion cho tạo ảnh/video
- Xử lý âm thanh AI
2. Công Cụ Triển Khai Mô Hình ModelBuilder
2.1. Tổng Quan về ModelBuilder
ModelBuilder là một công cụ mạnh mẽ giúp đơn giản hóa quá trình chuẩn bị và triển khai mô hình ML trên SageMaker AI. Công cụ này tự động hóa nhiều công đoạn phức tạp:
- Chuyển đổi mô hình từ các framework khác nhau (XGBoost, PyTorch,…) thành mô hình có thể triển khai
- Tự động lựa chọn container phù hợp dựa trên framework
- Xử lý serialization/deserialization dữ liệu
- Tự động phát hiện và đóng gói các dependencies
2.2. Khởi Tạo và Cấu Hình ModelBuilder
from sagemaker.serve.builder.model_builder import ModelBuilder
from sagemaker.serve.builder.schema_builder import SchemaBuilder
# Khởi tạo ModelBuilder với cấu hình cơ bản
model_builder = ModelBuilder(
model=model,
schema_builder=SchemaBuilder(input, output),
role_arn="execution-role",
)
# Cấu hình tài nguyên cho instance GPU
resource_requirements = ResourceRequirements(
requests={
"num_accelerators": 8, # Số GPU cần thiết
"memory": 1024, # Memory tối thiểu (MB)
"copies": 1, # Số bản sao mô hình
},
limits={}
)
- Cấu Hình Cơ Bản
# Khởi tạo với các tham số tối thiểu
from sagemaker.serve.builder.model_builder import ModelBuilder
from sagemaker.serve.builder.schema_builder import SchemaBuilder
model_builder = ModelBuilder(
model=model,
schema_builder=SchemaBuilder(input, output),
role_arn="execution-role",
)
# Khởi tạo với inference specification
model_builder = ModelBuilder(
mode=Mode.LOCAL_CONTAINER,
model_path=model_artifact_directory,
inference_spec=your_inference_spec,
schema_builder=SchemaBuilder(input, output),
role_arn=execution_role,
dependencies={"auto": True}
)
b. Tùy Chỉnh Resource cho GPU Instances
# Cấu hình chi tiết cho GPU instances
resource_requirements = ResourceRequirements(
requests={
"num_accelerators": 8, # Số GPU cần thiết
"memory": 1024, # Memory tối thiểu (MB)
"copies": 1, # Số bản sao mô hình
},
limits={}
)
2.3. Xử Lý Dữ Liệu và Serialization
a. SchemaBuilder Cơ Bản
# Ví dụ đơn giản với text
input = "How is the demo going?"
output = "Comment la démo va-t-elle?"
schema = SchemaBuilder(input, output)
b. Custom Serialization với Translators
from sagemaker.serve import CustomPayloadTranslator
class MyRequestTranslator(CustomPayloadTranslator):
def serialize_payload_to_bytes(self, payload: object) -> bytes:
# Chuyển đổi input thành bytes
return bytes_data
def deserialize_payload_from_stream(self, stream) -> object:
# Chuyển đổi bytes thành object
return object_data
# Tích hợp translator với schema
my_schema = SchemaBuilder(
sample_input=input_data,
sample_output=output_data,
input_translator=MyRequestTranslator(),
output_translator=MyResponseTranslator()
)
2.4. Custom Model Loading với InferenceSpec
from sagemaker.serve.spec.inference_spec import InferenceSpec
from transformers import pipeline
class MyInferenceSpec(InferenceSpec):
def load(self, model_dir: str):
# Tùy chỉnh cách load mô hình
return pipeline("translation_en_to_fr", model="t5-small")
def invoke(self, input, model):
# Tùy chỉnh xử lý inference
return model(input)
# Sử dụng InferenceSpec
inf_spec = MyInferenceSpec()
model_builder = ModelBuilder(
inference_spec=inf_spec,
schema_builder=SchemaBuilder(X_test, y_pred)
)
2.5. Triển Khai và Inference
a. Build Mô hình
# Tạo mô hình có thể triển khai
model = model_builder.build()
b. Triển Khai Endpoint
# Triển khai cơ bản
predictor = model.deploy(
initial_instance_count=1,
instance_type="ml.p5e.48xlarge" # Hoặc ml.g6e.48xlarge
)
# Triển khai với resource requirements
predictor = model.deploy(
mode=Mode.SAGEMAKER_ENDPOINT,
endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED,
resources=resource_requirements,
role="role"
)
# Xây dựng mô hình
model = model_builder.build()
# Triển khai với instance phù hợp
predictor = model.deploy(
mode=Mode.SAGEMAKER_ENDPOINT,
endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED,
resources=resource_requirements,
instance_type="ml.p5e.48xlarge" # Hoặc "ml.g6e.48xlarge"
)
2.6. Sử Dụng Container Tùy Chỉnh (BYOC)
model_builder = ModelBuilder(
model=model,
model_server=ModelServer.TORCHSERVE,
schema_builder=SchemaBuilder(X_test, y_pred),
image_uri="123123123123.dkr.ecr.ap-southeast-2.amazonaws.com/byoc-image:xgb-1.7-1"
)
2.7. Local Mode Development
# Lưu mô hình locally
model = XGBClassifier()
model.fit(X_train, y_train)
model.save_model(model_dir + "/my_model.xgb")
# Khởi tạo ModelBuilder trong local mode
model_builder_local = ModelBuilder(
model=model,
schema_builder=SchemaBuilder(X_test, y_pred),
role_arn=execution_role,
mode=Mode.LOCAL_CONTAINER
)
# Build và deploy locally
xgb_local_builder = model_builder_local.build()
predictor_local = xgb_local_builder.deploy()
Kết Luận
Các instance GPU mạnh mẽ cho inference mà Amazon vừa công bố giúp các doanh nghiệp dễ dàng scale các ứng dụng AI/ML của mình một cách hiệu quả.
Cảm ơn các bạn đã đọc đến cuối bài viết!
Để lại một bình luận