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={}

)
  1. 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!