Amazon SageMaker를 사용하여 기존 ML 및 LLM을 쉽게 패키징 및 배포, 1부: PySDK 개선 | 아마존 웹 서비스

Amazon SageMaker를 사용하여 기존 ML 및 LLM을 쉽게 패키징 및 배포, 1부: PySDK 개선 | 아마존 웹 서비스

아마존 세이지 메이커 개발자와 데이터 과학자가 모든 규모의 기계 학습(ML) 모델을 쉽고 빠르게 구축, 교육 및 배포할 수 있도록 지원하는 완전 관리형 서비스입니다. SageMaker를 사용하면 서비스에 대한 API 호출을 통해 모델을 프로덕션에 직접 배포하는 것이 간단해집니다. 모델은 강력하고 확장 가능한 배포를 위해 컨테이너로 패키징됩니다. SageMaker Python SDK, AWS SDK, SageMaker 콘솔 및 아마존 세이지 메이커 스튜디오 대규모로 ML 모델을 교육하고 배포하는 프로세스를 단순화하기 위해 노트북을 사용하는 동안 고객은 여전히 ​​놀이터 테스트를 위해 모델을 배포하고 프로덕션 배포를 최적화하는 더 나은 방법을 찾고 있습니다.

우리는 SageMaker를 사용하여 모델 패키징 및 배포 프로세스를 단순화하는 두 가지 새로운 방법을 출시합니다.

이 게시물에서는 새로운 SageMaker Python SDK를 소개합니다. ModelBuilder 이는 데이터 과학자와 같은 새로운 SageMaker 사용자의 학습 곡선을 최소화하는 동시에 숙련된 MLOps 엔지니어가 SageMaker 호스팅 서비스 활용도를 극대화하도록 돕는 것을 목표로 합니다. 초기 설정 및 배포의 복잡성을 줄이고 SageMaker의 전체 기능을 활용하기 위한 모범 사례에 대한 지침을 제공합니다. 우리는 이 새로운 SageMaker 기능에 대한 자세한 정보와 GitHub 예제를 제공합니다.

또 다른 새로운 출시는 SageMaker Studio의 새로운 대화형 배포 환경을 사용하는 것입니다. 이에 대해서는 2부에서 논의합니다.

SageMaker 엔드포인트에 모델을 배포하려면 SageMaker 엔드포인트에서 모델을 호스팅할 수 있도록 준비하는 일련의 단계가 필요합니다. 여기에는 올바른 형식과 구조로 모델 아티팩트를 가져오고, 추론 코드를 생성하고, 모델 이미지 URL과 같은 필수 세부 정보를 지정하는 작업이 포함됩니다. 아마존 단순 스토리지 서비스 (Amazon S3) 모델 아티팩트의 위치, 직렬화 및 역직렬화 단계 및 필수 AWS 자격 증명 및 액세스 관리 (IAM) 역할을 통해 적절한 액세스 권한을 촉진합니다. 그런 다음 엔드포인트 구성에서는 추론 유형을 결정하고 인스턴스 유형, 개수, 모델 변형 간의 트래픽 분포와 같은 각 매개변수를 구성해야 합니다.

고객이 SageMaker 호스팅을 사용할 때 더 많은 도움을 주기 위해 새로운 기능을 도입했습니다. ModelBuilder SageMaker Python SDK의 클래스입니다. SageMaker 엔드포인트에 모델을 배포할 때 다음과 같은 주요 이점을 제공합니다.

  • 프레임워크 전반에 걸쳐 배포 환경을 통합합니다. – 새로운 환경은 PyTorch, TensorFlow 및 XGBoost와 같은 다양한 프레임워크를 사용하여 구축된 모델을 배포하기 위한 일관된 워크플로를 제공합니다. 이렇게 하면 배포 프로세스가 단순화됩니다.
  • 모델 배포 자동화 – 적절한 컨테이너 선택, 종속성 캡처, 직렬화/역직렬화 처리 등의 작업이 자동화되어 배포에 필요한 수동 작업이 줄어듭니다.
  • 로컬에서 SageMaker 호스팅 엔드포인트로 원활한 전환을 제공합니다. – 최소한의 코드 변경으로 모델을 로컬 테스트에서 SageMaker 엔드포인트 배포로 쉽게 전환할 수 있습니다. 라이브 로그를 사용하면 디버깅이 원활해집니다.

전반적으로 SageMaker ModelBuilder 낮은 수준의 세부 정보를 처리하여 SageMaker 추론을 위한 모델 패키징 프로세스를 단순화 및 간소화하고 엔드포인트의 테스트, 검증 및 최적화를 위한 도구를 제공합니다. 이를 통해 개발자 생산성이 향상되고 오류가 줄어듭니다.

다음 섹션에서는 이 새로운 기능에 대해 자세히 살펴보겠습니다. 또한 다음을 사용하여 SageMaker 호스팅에 모델을 배포하는 방법에 대해서도 논의합니다. ModelBuilder, 이는 프로세스를 단순화합니다. 그런 다음 기존 ML 모델과 생성 AI 사용 사례를 지원하는 기초 모델을 모두 배포하기 위한 다양한 프레임워크에 대한 몇 가지 예를 안내합니다.

SageMaker ModelBuilder 알아보기

새로운 ModelBuilder XGBoost 또는 PyTorch와 같은 프레임워크를 사용하여 구축된 ML 모델을 SageMaker에 배포할 준비가 된 모델로 변환하는 데 중점을 둔 Python 클래스입니다. ModelBuilder 를 제공합니다 build() 모델 서버에 따라 아티팩트를 생성하는 함수와 deploy() 로컬로 또는 SageMaker 엔드포인트에 배포하는 기능입니다. 이 기능을 도입하면 모델과 SageMaker 환경의 통합이 단순화되어 성능과 확장성을 최적화할 수 있습니다. 다음 다이어그램은 방법을 보여줍니다. ModelBuilder 높은 수준에서 작동합니다.

Amazon SageMaker를 사용하여 기존 ML 및 LLM을 쉽게 패키징 및 배포, 1부: PySDK 개선 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.

ModelBuilder 클래스

XNUMXD덴탈의 모델 빌더 클래스는 사용자 정의를 위한 다양한 옵션을 제공합니다. 그러나 프레임워크 모델을 배포하기 위해 모델 빌더는 모델, 입력, 출력 및 역할만 예상합니다.

class ModelBuilder( model, # model id or model object role_arn, # IAM role schema_builder, # defines the input and output mode, # select between local deployment and depoy to SageMaker Endpoints ...
)

스키마 빌더

XNUMXD덴탈의 스키마 빌더 클래스를 사용하면 엔드포인트에 대한 입력 및 출력을 정의할 수 있습니다. 이를 통해 스키마 빌더는 입력 및 출력을 직렬화 및 역직렬화하기 위한 해당 마샬링 함수를 생성할 수 있습니다. 다음 클래스 파일은 사용자 정의를 위한 모든 옵션을 제공합니다.

class SchemaBuilder( sample_input: Any, sample_output: Any, input_translator: CustomPayloadTranslator = None, output_translator: CustomPayloadTranslator = None
)

그러나 대부분의 경우 샘플 입력 및 출력만 작동합니다. 예를 들어:

input = "How is the demo going?"
output = "Comment la démo va-t-elle?"
schema = SchemaBuilder(input, output)

샘플 입력 및 출력을 제공함으로써, SchemaBuilder 필요한 변환을 자동으로 결정하여 통합 프로세스를 더욱 간단하게 만들 수 있습니다. 고급 사용 사례의 경우 입력과 출력 모두에 대해 사용자 지정 번역 기능을 제공할 수 있는 유연성이 있으므로 더 복잡한 데이터 구조도 효율적으로 처리할 수 있습니다. 다음 섹션에서는 다음을 사용하여 다양한 프레임워크로 다양한 모델을 배포하여 이를 보여줍니다. ModelBuilder.

로컬 모드 경험

이 예에서는 다음을 사용합니다. ModelBuilder XGBoost 모델을 로컬로 배포합니다. 모드를 사용하여 로컬 테스트와 SageMaker 엔드포인트 배포 간에 전환할 수 있습니다. 먼저 XGBoost 모델(로컬 또는 SageMaker에서)을 훈련하고 모델 아티팩트를 작업 디렉터리에 저장합니다.

# Train the model
model = XGBClassifier()
model.fit(X_train, y_train)
model.save_model(model_dir + "/my_model.xgb")

그런 다음 실제 모델 객체를 전달하여 ModelBuilder 객체를 생성합니다. SchemaBuilder 이는 샘플 테스트 입력 및 출력 개체(모델을 훈련하고 테스트할 때 사용한 것과 동일한 입력 및 출력)를 사용하여 필요한 직렬화를 추론합니다. 참고로 우리는 Mode.LOCAL_CONTAINER 로컬 배포를 지정합니다. 그 후, 우리는 빌드 지원되는 프레임워크 컨테이너 이미지를 자동으로 식별하고 종속성을 검색하는 기능입니다. 다음 코드를 참조하세요.

model_builder_local = ModelBuilder( model=model, schema_builder=SchemaBuilder(X_test, y_pred), role_arn=execution_role, mode=Mode.LOCAL_CONTAINER
)
xgb_local_builder = model_builder_local.build()

마지막으로 호출할 수 있습니다. deploy 더 쉬운 디버깅을 위해 라이브 로깅도 제공하는 모델 객체의 함수입니다. 모델이 로컬로 배포되므로 인스턴스 유형이나 개수를 지정할 필요가 없습니다. 이러한 매개변수를 제공한 경우 해당 매개변수는 무시됩니다. 이 함수는 테스트 데이터로 예측하는 데 사용할 수 있는 예측 개체를 반환합니다.

# note: all the serialization and deserialization is handled by the model builder.
predictor_local = xgb_local_builder.deploy(
# instance_type='ml.c5.xlarge',
# initial_instance_count=1
) # Make prediction for test data. predictor_local.predict(X_test)

선택적으로 다음을 사용하여 모델 로드와 전처리 및 후처리를 제어할 수도 있습니다. InferenceSpec. 이 게시물의 뒷부분에서 자세한 내용을 제공합니다. 사용 LOCAL_CONTAINER SageMaker 엔드포인트에 배포하기 전에 로컬에서 스크립트를 테스트할 수 있는 좋은 방법입니다.

자세한 내용은 모델 빌더-xgboost.ipynb 다음을 사용하여 로컬 및 SageMaker 엔드포인트에 배포를 테스트하는 예 ModelBuilder.

SageMaker 엔드포인트에 기존 모델 배포

다음 예에서는 사용 방법을 보여줍니다. ModelBuilder 기존 ML 모델을 배포합니다.

XGBoost 모델

이전 섹션과 유사하게 다음을 변경하여 XGBoost 모델을 SageMaker 엔드포인트에 배포할 수 있습니다. mode 매개변수를 생성할 때 ModelBuilder 목적:

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(sample_input=sample_input, sample_output=sample_output), role_arn=execution_role, mode=Mode.SAGEMAKER_ENDPOINT
)
xgb_builder = model_builder.build()
predictor = xgb_builder.deploy( instance_type='ml.c5.xlarge', initial_instance_count=1
)

SageMaker 엔드포인트에 배포할 때 호출 시 인스턴스 유형과 인스턴스 수를 지정해야 합니다. deploy 기능.

자세한 내용은 모델 빌더-xgboost.ipynb XGBoost 모델을 배포하는 예입니다.

트리톤 모델

당신이 사용할 수 ModelBuilder PyTorch 모델을 제공하기 위해 트리톤 추론 서버. 이를 위해서는 다음을 지정해야 합니다. model_server 매개 변수 ModelServer.TRITON, 모델을 통과하고 SchemaBuilder 모델의 샘플 입력 및 출력이 필요한 개체입니다. 나머지는 ModelBuilder가 알아서 처리해 드립니다.

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(sample_input=sample_input, sample_output=sample_output), role_arn=execution_role, model_server=ModelServer.TRITON, mode=Mode.SAGEMAKER_ENDPOINT
) triton_builder = model_builder.build() predictor = triton_builder.deploy( instance_type='ml.g4dn.xlarge', initial_instance_count=1
)

인용하다 모델 빌더-triton.ipynb Triton을 사용하여 모델을 배포합니다.

포옹하는 얼굴 모델

이 예에서는 Hugging Face에서 제공하는 사전 훈련된 변환기 모델을 SageMaker에 배포하는 방법을 보여줍니다. 포옹 얼굴을 사용하고 싶습니다. pipeline 모델을 로드하기 위해 다음에 대한 사용자 정의 추론 사양을 만듭니다. ModelBuilder:

# custom inference spec with hugging face pipeline
class MyInferenceSpec(InferenceSpec): def load(self, model_dir: str): return pipeline("translation_en_to_fr", model="t5-small") def invoke(self, input, model): return model(input) inf_spec = MyInferenceSpec()

또한 다음을 정의하여 추론 워크로드의 입력과 출력을 정의합니다. SchemaBuilder 모델 입력 및 출력을 기반으로 하는 객체:

schema = SchemaBuilder(value,output)

그런 다음 우리는 ModelBuilder 다른 예에 표시된 것과 동일한 논리에 따라 모델을 개체화하고 SageMaker 엔드포인트에 배포합니다.

builder = ModelBuilder( inference_spec=inf_spec, mode=Mode.SAGEMAKER_ENDPOINT, # you can change it to Mode.LOCAL_CONTAINER for local testing schema_builder=schema, image_uri=image,
)
model = builder.build( role_arn=execution_role, sagemaker_session=sagemaker_session,
)
predictor = model.deploy( initial_instance_count=1, instance_type='ml.g5.2xlarge'
)

인용하다 모델 빌더-huggingface.ipynb Hugging Face 파이프라인 모델을 배포합니다.

SageMaker 엔드포인트에 기초 모델 배포

다음 예에서는 사용 방법을 보여줍니다. ModelBuilder 기초 모델을 배포합니다. 앞서 언급한 모델과 마찬가지로 필요한 것은 모델 ID뿐입니다.

허깅 페이스 허브

다음에서 기초 모델을 배포하려는 경우 허깅 페이스 허브, 사전 훈련된 모델 ID를 전달하기만 하면 됩니다. 예를 들어 다음 코드 조각은 메타-라마/Llama-2-7b-hf 로컬에서 모델을 만듭니다. 모드를 다음으로 변경할 수 있습니다. Mode.SAGEMAKER_ENDPOINT SageMaker 엔드포인트에 배포합니다.

model_builder = ModelBuilder( model="meta-llama/Llama-2-7b-hf", schema_builder=SchemaBuilder(sample_input, sample_output), model_path="/home/ec2-user/SageMaker/LoadTestResources/meta-llama2-7b", #local path where artifacts will be saved mode=Mode.LOCAL_CONTAINER, env_vars={ # Llama 2 is a gated model and requires a Hugging Face Hub token. "HUGGING_FACE_HUB_TOKEN": "<YourHuggingFaceToken>" }
)
model = model_builder.build()
local_predictor = model.deploy()

Hugging Face Hub의 게이트 모델의 경우 Hugging Face Hub를 통해 액세스를 요청하고 관련 키를 환경 변수로 전달하여 사용해야 합니다. HUGGING_FACE_HUB_TOKEN. 일부 Hugging Face 모델은 원격 코드를 신뢰해야 할 수도 있습니다. 다음을 사용하여 환경 변수로 설정할 수도 있습니다. HF_TRUST_REMOTE_CODE. 기본적으로, ModelBuilder 포옹하는 얼굴 텍스트 생성 추론(TGI) 컨테이너를 Hugging Face 모델의 기본 컨테이너로 사용합니다. AWS 대형 모델 추론(LMI) 컨테이너, 당신은 설정할 수 있습니다 model_server 매개 변수 ModelServer.DJL_SERVING 구성할 때 ModelBuilder 목적.

깔끔한 특징 ModelBuilder 사용할 때 컨테이너 매개변수의 로컬 튜닝을 실행하는 기능입니다. LOCAL_CONTAINER 방법. 이 기능은 간단히 실행하여 사용할 수 있습니다. tuned_model = model.tune().

인용하다 데모-모델-빌더-huggingface-llama2.ipynb Hugging Face Hub 모델을 배포합니다.

세이지메이커 점프스타트

Amazon SageMaker 점프스타트 또한 사전 훈련된 다양한 기초 모델을 제공합니다. Hugging Face Hub에서 모델을 배포하는 과정과 마찬가지로 모델 ID가 필요합니다. SageMaker JumpStart 모델을 SageMaker 엔드포인트에 배포하는 것은 다음 코드를 실행하는 것만큼 간단합니다.

model_builder = ModelBuilder( model="huggingface-llm-falcon-7b-bf16", schema_builder=SchemaBuilder(sample_input, sample_output), role_arn=execution_role
) sm_ep_model = model_builder.build() predictor = sm_ep_model.deploy()

사용 가능한 모든 SageMaker JumpStart 모델 ID는 다음을 참조하십시오. 사전 훈련된 모델 테이블이 있는 내장 알고리즘. 인용하다 모델 빌더-점프스타트-falcon.ipynb SageMaker JumpStart 모델을 배포합니다.

추론 구성요소

ModelBulder SageMaker의 새로운 추론 구성 요소 기능을 사용하여 모델을 배포할 수 있습니다. 추론 구성요소에 대한 자세한 내용은 다음을 참조하세요. SageMaker의 최신 기능을 사용하여 모델 배포 비용을 평균 50% 절감. 배포를 위해 추론 구성 요소를 사용할 수 있습니다. ModelBuilder 지정하여 endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED FBI 증오 범죄 보고서 deploy() 방법. 다음을 사용할 수도 있습니다. tune() 최적의 액셀러레이터 수를 가져오고 필요한 경우 이를 수정하는 메서드입니다.

resource_requirements = ResourceRequirements( requests={ "num_accelerators": 4, "memory": 1024, "copies": 1, }, limits={},
) goldfinch_predictor_2 = model_2.deploy( mode=Mode.SAGEMAKER_ENDPOINT, endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED, ... )

인용하다 모델 빌더-추론-컴포넌트.ipynb 모델을 추론 구성요소로 배포합니다.

ModelBuilder 클래스 사용자 정의

XNUMXD덴탈의 ModelBuilder 클래스를 사용하면 다음을 사용하여 모델 로딩을 사용자 정의할 수 있습니다. InferenceSpec.

또한 다음을 사용하여 페이로드와 응답 직렬화 및 역직렬화를 제어하고 전처리 및 후처리를 사용자 정의할 수 있습니다. CustomPayloadTranslator. 또한 SageMaker에서 모델 배포를 위해 사전 구축된 컨테이너를 확장해야 하는 경우 다음을 사용할 수 있습니다. ModelBuilder 모델 패키징 프로세스를 처리합니다. 다음 섹션에서는 이러한 기능에 대해 자세히 설명합니다.

추론 사양

추론 사양 추가 사용자 정의 계층을 제공합니다. 모델을 로드하는 방법과 들어오는 추론 요청을 처리하는 방법을 정의할 수 있습니다. 을 통해 InferenceSpec를 사용하면 기본 로딩 메커니즘을 우회하여 모델에 대한 사용자 정의 로딩 절차를 정의할 수 있습니다. 이러한 유연성은 비표준 모델이나 사용자 정의 추론 파이프라인으로 작업할 때 특히 유용합니다. 호출 방법을 사용자 정의하여 모델이 들어오는 요청을 처리하는 방법(전처리 및 후처리)을 조정할 수 있는 기능을 제공합니다. 추론 프로세스가 모델의 특정 요구 사항에 맞게 조정되도록 하려면 이러한 사용자 정의가 필수적일 수 있습니다. 다음 코드를 참조하세요.

class InferenceSpec(abc.ABC): @abc.abstractmethod def load(self, model_dir: str): pass @abc.abstractmethod def invoke(self, input_object: object, model: object): pass

다음 코드는 이 클래스를 사용하는 예를 보여줍니다.

class MyInferenceSpec(InferenceSpec): def load(self, model_dir: str): return // model object def invoke(self, input, model): return model(input)

CustomPayload번역기

SageMaker 엔드포인트를 호출하면 데이터는 다양한 MIME 유형을 사용하는 HTTP 페이로드를 통해 전송됩니다. 예를 들어 추론을 위해 엔드포인트로 전송된 이미지는 클라이언트 측에서 바이트로 변환되고 HTTP 페이로드를 통해 엔드포인트로 전송되어야 합니다. 엔드포인트가 페이로드를 수신하면 바이트 문자열을 모델에서 예상하는 데이터 유형(또는 서버측 역직렬화). 모델이 예측을 마친 후 결과는 HTTP 페이로드를 통해 사용자 또는 클라이언트로 다시 보낼 수 있는 바이트로 직렬화되어야 합니다. 클라이언트가 응답 바이트 데이터를 수신하면 클라이언트 측 역직렬화를 수행하여 바이트 데이터를 JSON과 같은 예상 데이터 형식으로 다시 변환해야 합니다. 최소한, 다음 데이터를 변환해야 합니다. (다음 다이어그램에 번호가 매겨져 있음):

  1. 추론 요청 직렬화(클라이언트에서 처리)
  2. 추론 요청 역직렬화(서버 또는 알고리즘에서 처리)
  3. 페이로드에 대해 모델 호출
  4. 응답 페이로드를 다시 보내는 중
  5. 추론 응답 직렬화(서버 또는 알고리즘에서 처리)
  6. 추론 응답 역직렬화(클라이언트에서 처리)

다음 다이어그램은 호출 프로세스 중 직렬화 및 역직렬화 프로세스를 보여줍니다.

Amazon SageMaker를 사용하여 기존 ML 및 LLM을 쉽게 패키징 및 배포, 1부: PySDK 개선 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.

다음 코드 조각에서는 다음의 예를 보여줍니다. CustomPayloadTranslator 클라이언트 측과 서버 측에서 각각 직렬화 및 역직렬화를 처리하기 위해 추가 사용자 정의가 필요한 경우:

from sagemaker.serve import CustomPayloadTranslator # request translator
class MyRequestTranslator(CustomPayloadTranslator): # This function converts the payload to bytes - happens on client side def serialize_payload_to_bytes(self, payload: object) -> bytes: # converts the input payload to bytes ... ... return //return object as bytes # This function converts the bytes to payload - happens on server side def deserialize_payload_from_stream(self, stream) -> object: # convert bytes to in-memory object ... ... return //return in-memory object # response translator class MyResponseTranslator(CustomPayloadTranslator): # This function converts the payload to bytes - happens on server side def serialize_payload_to_bytes(self, payload: object) -> bytes: # converts the response payload to bytes ... ... return //return object as bytes # This function converts the bytes to payload - happens on client side def deserialize_payload_from_stream(self, stream) -> object: # convert bytes to in-memory object ... ... return //return in-memory object

. 데모 모델 빌더-pytorch.ipynb 노트북에서는 다음을 사용하여 PyTorch 모델을 SageMaker 엔드포인트에 쉽게 배포하는 방법을 보여줍니다. ModelBuilder 와 더불어 CustomPayloadTranslator 그리고 InferenceSpec 클래스입니다.

배포를 위한 단계 모델

추론을 위해 또는 모델 레지스트리에서 모델을 준비하려는 경우 다음을 사용할 수 있습니다. model.create() or model.register(). 활성화된 모델이 서비스에 생성된 후 나중에 배포할 수 있습니다. 다음 코드를 참조하세요.

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(X_test, y_pred), role_arn=execution_role, )
deployable_model = model_builder.build() deployable_model.create() # deployable_model.register() for model registry

커스텀 컨테이너 사용

SageMaker는 사전 빌드된 Docker 이미지 훈련 및 추론에 사용되는 내장 알고리즘과 지원되는 딥 러닝 프레임워크 때문입니다. 사전 구축된 SageMaker 컨테이너가 모든 요구 사항을 충족하지 못하는 경우 필요에 맞게 기존 이미지를 확장할 수 있습니다. 사전 구축된 이미지를 확장하면 처음부터 이미지를 생성할 필요 없이 포함된 딥 러닝 라이브러리 및 설정을 사용할 수 있습니다. 사전 구축된 컨테이너를 확장하는 방법에 대한 자세한 내용은 SageMaker 문서를 참조하십시오. ModelBuilder 사전 구축된 Docker 컨테이너에서 확장된 자체 컨테이너를 가져올 때 사용 사례를 지원합니다.

이 경우 자체 컨테이너 이미지를 사용하려면 필드를 설정해야 합니다. image_urimodel_server 정의 할 때 ModelBuilder:

model_builder = ModelBuilder( model=model, # Pass in the actual model object. its "predict" method will be invoked in the endpoint. schema_builder=SchemaBuilder(X_test, y_pred), # Pass in a "SchemaBuilder" which will use the sample test input and output objects to infer the serialization needed. role_arn=execution_role, image_uri=image_uri, # REQUIRED FOR BYOC: Passing in image hosted in personal ECR Repo model_server=ModelServer.TORCHSERVE, # REQUIRED FOR BYOC: Passing in model server of choice mode=Mode.SAGEMAKER_ENDPOINT, dependencies={"auto": True, "custom": ["protobuf==3.20.2"]}
)

여기, image_uri 계정에 저장되는 컨테이너 이미지 ARN이 됩니다. Amazon Elastic Container Registry (Amazon ECR) 리포지토리. 한 가지 예는 다음과 같습니다.

# Pulled the xgboost:1.7-1 DLC and pushed to personal ECR repo
image_uri = "<your_account_id>.dkr.ecr.us-west-2.amazonaws.com/my-byoc:xgb"

image_uri 설정되었습니다. ModelBuilder 빌드 프로세스에서는 이미지 URI가 제공되므로 이미지 자동 감지를 건너뜁니다. 만약에 model_server ModelBuilder에 설정되어 있지 않으면 다음과 같은 유효성 검사 오류 메시지가 표시됩니다.

ValueError: Model_server must be set when image_uri is set. Supported model servers: {<ModelServer.TRITON: 5>, <ModelServer.DJL_SERVING: 4>, <ModelServer.TORCHSERVE: 1>}

이 게시물이 게시되는 시점을 기준으로, ModelBuilder 당사에서 확장된 자체 컨테이너 가져오기를 지원합니다. 사전 구축된 DLC 컨테이너 이미지 또는 다음과 같은 모델 서버로 구축된 컨테이너 딥 자바 라이브러리(DJL), TGI(텍스트 생성 추론), 횃불Triton 추론 서버.

사용자 정의 종속성

달리기 중일 때 ModelBuilder.build(), 기본적으로 Python 환경을 자동으로 캡처합니다. requirements.txt 파일을 다운로드하고 컨테이너에 동일한 종속성을 설치합니다. 그러나 로컬 Python 환경이 컨테이너의 환경과 충돌하는 경우가 있습니다. ModelBuilder 사용자 지정 구성을 제공하여 이러한 종속성 충돌을 해결하기 위해 캡처된 종속성을 수정하는 간단한 방법을 제공합니다. ModelBuilder. 이는 TorchServe 및 Triton에만 해당됩니다. InferenceSpec. 예를 들어 다음과 같이 ModelBuilder에서 Python 사전인 입력 매개 변수 종속성을 지정할 수 있습니다.

dependency_config = { "auto" = True, "requirements" = "/path/to/your/requirements.txt" "custom" = ["module>=1.2.3,<1.5", "boto3==1.16.*", "some_module@http://some/url"]
} ModelBuilder( # Other params dependencies=dependency_config,
).build()

우리는 다음 필드를 정의합니다:

  • 자동 – 환경에서 종속성을 자동으로 캡처할지 여부.
  • 기타 요건 – 자신만의 길을 가리키는 문자열 requirements.txt 파일. (이것은 선택사항입니다.)
  • 관습 – 추가하거나 수정하려는 기타 사용자 정의 종속성의 목록입니다. (이것은 선택사항입니다.)

동일한 모듈이 여러 곳에 지정되어 있는 경우 custom 우선순위가 가장 높을 것입니다. requirementsauto 가장 낮은 우선순위를 가지게 됩니다. 예를 들어 자동 감지 중에 ModelBuilder 검색 numpy==1.25requirements.txt 지정하는 파일이 제공됩니다. numpy>=1.24,<1.26. 또한 사용자 정의 종속성이 있습니다. custom = ["numpy==1.26.1"]. 이 경우 numpy==1.26.1 컨테이너에 종속성을 설치할 때 선택됩니다.

정리

모범 사례에 따라 모델 테스트를 마친 후 엔드포인트가 더 이상 필요하지 않은 경우 엔드포인트를 삭제하여 비용을 절약하는 것이 좋습니다. 당신은 정리 섹션을 삭제하거나 다음 코드를 사용하여 데모에서 생성된 모델과 엔드포인트를 삭제합니다.

predictor.delete_model()
predictor.delete_endpoint()

결론

새로운 SageMaker ModelBuilder 기능은 ML 모델을 SageMaker의 프로덕션에 배포하는 프로세스를 단순화합니다. ModelBuilder는 이면의 많은 복잡한 세부 사항을 처리함으로써 신규 사용자의 학습 곡선을 줄이고 숙련된 사용자의 활용도를 극대화합니다. 단 몇 줄의 코드만으로 XGBoost, PyTorch, Triton 및 Hugging Face와 같은 내장 프레임워크가 포함된 모델과 SageMaker JumpStart에서 제공하는 모델을 SageMaker의 강력하고 확장 가능한 엔드포인트에 배포할 수 있습니다.

모든 SageMaker 사용자가 다음을 참조하여 이 새로운 기능을 시험해 볼 것을 권장합니다. 모델 빌더 문서 페이지. ModelBuilder는 이제 모든 SageMaker 사용자가 추가 비용 없이 사용할 수 있습니다. 이 단순화된 워크플로를 활용하여 모델을 더 빠르게 배포하세요. ModelBuilder가 어떻게 모델 개발 수명주기를 가속화하는지 듣기를 기대합니다!

Sirisha Upadhyayala, Raymond Liu, Gary Wang, Dhawal Patel, Deepak Garg 및 Ram Vegiraju에게 특별히 감사드립니다.


저자 소개

Amazon SageMaker를 사용하여 기존 ML 및 LLM을 쉽게 패키징 및 배포, 1부: PySDK 개선 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.멜라니 리, PhD는 호주 시드니에 본사를 둔 AWS의 수석 AI/ML 전문가 TAM입니다. 그녀는 기업 고객이 AWS에서 최신 AI/ML 도구를 사용하여 솔루션을 구축하도록 돕고 모범 사례로 ML 솔루션을 설계하고 구현하는 방법에 대한 지침을 제공합니다. 여가 시간에는 자연을 탐험하고 가족 및 친구들과 시간을 보내는 것을 좋아합니다.

Amazon SageMaker를 사용하여 기존 ML 및 LLM을 쉽게 패키징 및 배포, 1부: PySDK 개선 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.마크 카프 Amazon SageMaker 서비스 팀의 ML 설계자입니다. 그는 고객이 규모에 맞게 ML 워크로드를 설계, 배포 및 관리하도록 돕는 데 중점을 둡니다. 여가 시간에는 여행과 새로운 장소 탐색을 즐깁니다.

Amazon SageMaker를 사용하여 기존 ML 및 LLM을 쉽게 패키징 및 배포, 1부: PySDK 개선 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.샘 에드워즈는 기계 학습 및 Amazon SageMaker를 전문으로 하는 AWS 시드니의 클라우드 엔지니어(AI/ML)입니다. 그는 고객이 기계 학습 워크플로와 관련된 문제를 해결하도록 돕고 고객을 위한 새로운 솔루션을 만드는 데 열정을 쏟고 있습니다. 업무 외에는 라켓 스포츠와 여행을 즐깁니다.

Amazon SageMaker를 사용하여 기존 ML 및 LLM을 쉽게 패키징 및 배포, 1부: PySDK 개선 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.라구 라메샤 Amazon SageMaker 서비스 팀의 수석 ML 솔루션 설계자입니다. 그는 고객이 ML 프로덕션 워크로드를 대규모로 구축, 배포 및 SageMaker로 마이그레이션하도록 돕는 데 중점을 두고 있습니다. 그는 기계 학습, AI 및 컴퓨터 비전 분야를 전문으로 하며 UT 달라스에서 컴퓨터 과학 석사 학위를 취득했습니다. 여가 시간에는 여행과 사진 촬영을 즐깁니다.

Amazon SageMaker를 사용하여 기존 ML 및 LLM을 쉽게 패키징 및 배포, 1부: PySDK 개선 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.시바 라즈 코티니 Amazon SageMaker 추론 제품 포트폴리오의 주요 제품 관리자로 일하고 있습니다. 그는 추론을 위해 SageMaker에서 모델 배포, 성능 조정 및 최적화에 중점을 두고 있습니다.

Amazon SageMaker를 사용하여 기존 ML 및 LLM을 쉽게 패키징 및 배포, 1부: PySDK 개선 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.모한 간디 AWS의 선임 소프트웨어 엔지니어입니다. 그는 지난 10년 동안 AWS에서 근무했으며 EMR, EFA 및 RDS와 같은 다양한 AWS 서비스에서 일했습니다. 현재 그는 SageMaker Inference Experience 개선에 주력하고 있습니다. 여가 시간에는 하이킹과 마라톤을 즐깁니다.

타임 스탬프 :

더보기 AWS 기계 학습