Amazon Web Services 한국 블로그

Amazon SageMaker – 안내식 워크플로를 통한 모델 패키징 및 배포 가속화

이제 Amazon SageMaker에서 개선된 모델 배포 경험을 통해 기존 기계 학습(ML) 모델과 파운데이션 모델(FM)을 더 빠르게 배포할 수 있습니다.

데이터 사이언티스트 또는 ML 실무자는 이제 SageMaker Python SDK의 새로운 ModelBuilder 클래스를 사용하여 모델을 패키징하고 로컬 추론을 수행하여 런타임 오류를 검증하며 로컬 IDE 또는 SageMaker Studio 노트북에서 SageMaker를 배포할 수 있습니다.

SageMaker Studio의 새로운 대화형 모델 배포 워크플로는 최적의 엔드포인트 구성을 찾기 위해 선택해야 하는 인스턴스 유형에 대한 단계별 지침을 제공합니다. 또한 SageMaker Studio는 배포된 엔드포인트에 모델을 추가하고, 추론을 테스트하며, Auto Scaling 정책을 활성화하기 위한 추가 인터페이스를 제공합니다.

SageMaker Python SDK의 새로운 도구
SageMaker Python SDK가 새로운 도구로 업데이트되었습니다. ModelBuilderSchemaBuilder 클래스를 포함하는 이 도구를 사용하면 통합 경험에서 ML 프레임워크 및 모델 서버 전반의 모델을 SageMaker 배포 가능 모델로 변환할 수 있습니다. 모델 빌더는 호환되는 SageMaker 컨테이너를 선택하고 개발 환경에서 종속성을 캡처하여 모델 배포를 자동화합니다. 스키마 빌더는 모델 입력 및 출력의 직렬화 및 역직렬화 태스크를 관리하는 데 도움이 됩니다. 이 도구를 사용하여 로컬 개발 환경에 모델을 배포하여 실험하고, 런타임 오류를 수정한 다음, 준비가 되면 로컬 테스트에서 전환하여 코드 한 줄로 SageMaker에 모델을 배포할 수 있습니다.

Amazon SageMaker ModelBuilder

실제 작동 방식을 살펴보도록 하겠습니다. 다음 예에서는 Hugging Face 모델 허브에서 Falcon-7B 모델을 선택합니다. 먼저 모델을 로컬로 배포하고, 샘플 추론을 실행하고, 로컬 벤치마킹을 수행하여 최적의 구성을 찾고, 마지막으로 제안된 구성으로 모델을 SageMaker에 배포합니다.

먼저 업데이트된 SageMaker Python SDK를 가져와서 선택한 모델의 프롬프트 형식과 일치하는 샘플 모델 입력 및 출력을 정의합니다.

import sagemaker
from sagemaker.serve.builder.model_builder import ModelBuilder
from sagemaker.serve.builder.schema_builder import SchemaBuilder
from sagemaker.serve import Mode

prompt = "Falcons are"
response = "Falcons are small to medium-sized birds of prey related to hawks and eagles."

sample_input = {
    "inputs": prompt,
    "parameters": {"max_new_tokens": 32}
}

sample_output = [{"generated_text": response}]

그런 다음 Hugging Face 모델 ID를 사용하여 ModelBuilder 인스턴스를 만들고, 샘플 모델 입력 및 출력을 사용하여 SchemaBuilder 인스턴스를 생성하고, 로컬 모델 경로를 정의하고, 모드를 LOCAL_CONTAINER로 설정하여 모델을 로컬에 배포합니다. 스키마 빌더는 모델 입력과 출력을 직렬화 및 역직렬화하는 데 필요한 함수를 생성합니다.

model_builder = ModelBuilder(
    model="tiiuae/falcon-7b",
    schema_builder=SchemaBuilder(sample_input, sample_output),
    model_path="/path/to/falcon-7b",
    mode=Mode.LOCAL_CONTAINER,
	env_vars={"HF_TRUST_REMOTE_CODE": "True"}
)

다음으로 build()를 직접적으로 호출하여 PyTorch 모델을 SageMaker 배포 가능 모델로 변환합니다. 이 build 함수는 inferency.pyserving.properties 등 모델 서버에 필요한 아티팩트를 생성합니다.

local_mode_model = model_builder.build()

Falcon과 같은 FM의 경우 로컬 벤치마킹을 수행하는 로컬 컨테이너 모드에서 tune()을 선택적으로 실행하여 최적의 모델 서비스 구성을 찾을 수 있습니다. 여기에는 사용 가능한 GPU가 여러 개 있는 환경에서 사용할 GPU 수를 지정하는 텐서 병렬도가 포함됩니다. 준비가 되면 deploy()를 직접적으로 호출하여 로컬 개발 환경에 모델을 배포합니다.

tuned_model = local_mode_model.tune()
tuned_model.deploy()

모델을 테스트해 보겠습니다.

updated_sample_input = model_builder.schema_builder.sample_input
print(updated_sample_input)

{'inputs': 'Falcons are',
 'parameters': {'max_new_tokens': 32}}
 
local_tuned_predictor.predict(updated_sample_input)[0]["generated_text"]

이 데모에서 모델은 다음과 같은 응답을 반환합니다.

a type of bird that are known for their sharp talons and powerful beaks. They are also known for their ability to fly at high speeds […]

SageMaker에 모델을 배포할 준비가 되면 deploy()를 다시 직접적으로 호출하고 모드를 SAGEMAKLER_ENDPOINT로 설정한 다음 적절한 권한이 있는 AWS Identity and Access Management(IAM) 역할을 제공합니다.

sm_predictor = tuned_model.deploy(
    mode=Mode.SAGEMAKER_ENDPOINT, 
	role="arn:aws:iam::012345678910:role/role_name"
)

그러면 SageMaker 엔드포인트에 모델이 배포되기 시작됩니다. 엔드포인트가 준비되면 예측을 실행할 수 있습니다.

new_input = {'inputs': 'Eagles are','parameters': {'max_new_tokens': 32}}
sm_predictor.predict(new_input)[0]["generated_text"])

SageMaker Studio의 새로운 모델 배포 경험
모델 랜딩 페이지 또는 SageMaker JumpStart 모델 세부 정보 페이지에서 배포할 모델을 하나 이상 선택하거나 엔드포인트 세부 정보 페이지에서 새 엔드포인트를 생성하여 새로운 대화형 모델 배포 워크플로를 시작할 수 있습니다.

Amazon SageMaker - 새로운 모델 배포 경험

새로운 워크플로는 최소한의 입력으로 선택한 모델을 신속하게 배포하는 데 도움이 됩니다. SageMaker Inference Recommender를 사용하여 모델을 벤치마킹한 경우 드롭다운에 해당 벤치마킹의 권장 추론이 표시됩니다.

SageMaker Studio의 모델 배포 경험

모델을 벤치마킹하지 않은 경우에는 SageMaker가 자체 휴리스틱을 기반으로 적합할 것으로 예측한 예상 인스턴스가 드롭다운에 표시됩니다. 가장 인기 있는 일부 SageMaker JumpStart 모델의 경우 AWS 사전 테스트를 거친 최적의 인스턴스 유형이 표시됩니다. 다른 모델의 경우 일반적으로 권장되는 인스턴스 유형이 표시됩니다. 예를 들어 SageMaker JumpStart에서 Falcon 40B Instruct 모델을 선택하면 권장되는 인스턴스 유형을 볼 수 있습니다.

SageMaker Studio의 모델 배포 경험

SageMaker Studio의 모델 배포 경험

하지만 특정 사용 사례에 맞게 비용 또는 성능을 중심으로 배포를 최적화하려면 Alternate configurations(대체 구성) 패널을 열어 벤치마킹 이전의 데이터를 기반으로 추가 옵션을 확인할 수 있습니다.

SageMaker Studio의 모델 배포 경험

배포한 후에는 추론을 테스트하거나 Auto Scaling 정책을 관리할 수 있습니다.

SageMaker Studio의 모델 배포 경험

알아야 할 사항
다음은 알아두어야 할 몇 가지 주요 사항입니다.

지원되는 ML 모델 및 프레임워크 – 새로운 SageMaker Python SDK 도구는 출시 시점에 XGBoost 및 PyTorch 모델에 대한 모델 배포를 지원합니다. SageMaker LMI 컨테이너 또는 Hugging Face TGI 기반 컨테이너를 사용하여 Hugging Face 모델 ID 또는 SageMaker JumpStart 모델 ID를 지정하는 방법으로 FM을 배포할 수 있습니다. 자체 컨테이너를 사용(BYOC)하거나 ONNX 형식의 Triton 모델 서버를 사용하여 모델을 배포할 수도 있습니다.

지금 사용 가능
오늘부터 Amazon SageMaker 실시간 추론을 사용할 수 있는 모든 AWS 리전에서 이 새로운 도구 세트를 사용할 수 있습니다. 새로운 도구 세트를 사용하는 데 비용은 들지 않습니다. 생성된 기본 SageMaker 리소스에 대한 요금만 부과됩니다.

자세히 알아보기

시작하기
지금 바로 AWS Management Console에서 SageMaker의 새로운 모델 배포 경험을 살펴보세요!

— Antje