PlatoBlockchain Data Intelligence 테스트를 위해 모델을 Amazon SageMaker에 배포하는 데 걸리는 시간을 줄입니다. 수직 검색. 일체 포함.

테스트를 위해 모델을 Amazon SageMaker에 배포하는 데 걸리는 시간 단축

데이터 과학자는 종종 로컬에서 모델을 훈련하고 모델을 배포할 적절한 호스팅 서비스를 찾습니다. 불행히도 사전 훈련된 모델을 클라우드에 배포하기 위한 정해진 메커니즘이나 가이드가 없습니다. 이 게시물에서는 학습된 모델을 배포하는 방법을 살펴봅니다. 아마존 세이지 메이커 배포 시간을 줄이기 위한 호스팅.

SageMaker는 완전 관리형 머신 러닝(ML) 서비스입니다. SageMaker를 사용하면 ML 모델을 빠르게 구축 및 교육하고 프로덕션 준비 호스팅 환경에 직접 배포할 수 있습니다. 또한 서버를 관리할 필요가 없습니다. 데이터 소스에 쉽게 액세스할 수 있는 통합 Jupyter 노트북 환경을 얻을 수 있습니다. 자체 알고리즘을 사용하여 데이터 분석을 수행하고, 모델을 훈련하고, 테스트하거나 여러 시스템에 분산된 대규모 데이터 세트에 대해 효율적으로 실행하도록 최적화된 SageMaker 제공 ML 알고리즘을 사용할 수 있습니다. 교육 및 호스팅은 최소 요금 및 선불 약정 없이 사용 시간(분)으로 청구됩니다.

솔루션 개요

데이터 과학자는 때때로 IDE를 사용하여 로컬에서 모델을 교육하고 배포를 위해 해당 모델을 ML 엔지니어링 팀에 제공하거나 강력한 머신에서 로컬로 예측을 실행합니다. 이 게시물에서는 SageMaker에 모델을 배포하는 프로세스를 단순화하는 Python 라이브러리를 소개합니다. 호스팅 실시간 또는 서버리스 엔드포인트에서

이 Python 라이브러리는 데이터 과학자에게 낮은 수준의 SageMaker 기능을 몰라도 SageMaker에서 빠르게 시작할 수 있는 간단한 인터페이스를 제공합니다.

선호하는 IDE를 사용하여 로컬에서 훈련된 모델이 있고 클라우드의 규모를 활용하려는 경우 이 라이브러리를 사용하여 모델을 SageMaker에 배포할 수 있습니다. SageMaker를 사용하면 클라우드 기반 ML 플랫폼의 모든 확장 이점 외에도 특수 제작된 교육 도구(분산 교육, 초매개변수 조정), 실험 관리, 모델 관리, 편향 감지, 모델 설명 가능성 등에 액세스할 수 있습니다. ML 수명 주기의 모든 측면에서 도움이 될 수 있는 기능입니다. 가장 널리 사용되는 ML 프레임워크 XNUMX가지(Scikit-learn, PyTorch, TensorFlow) 중에서 선택하고 원하는 컴퓨팅 유형을 선택할 수 있습니다. 이 라이브러리의 사용자는 복잡한 결정을 내리거나 새로운 개념을 배울 필요 없이 모델을 배포할 수 있도록 기본값이 제공됩니다. 이 게시물에서는 이 라이브러리를 시작하고 SageMaker 호스팅에서 ML 모델 배포를 최적화하는 방법을 보여줍니다.

라이브러리는 다음에서 찾을 수 있습니다. GitHub 저장소.

SageMaker 마이그레이션 툴킷

XNUMXD덴탈의 SageMakerMigration 클래스는 GitHub에 게시된 Python 라이브러리를 통해 사용할 수 있습니다. 이 라이브러리를 설치하기 위한 지침은 저장소에서 제공됩니다. README에 따라 환경을 올바르게 설정했는지 확인하십시오. 이 라이브러리를 설치한 후 이 게시물의 나머지 부분에서는 사용 방법에 대해 설명합니다.

XNUMXD덴탈의 SageMakerMigration 클래스는 다음 그림과 같이 SageMaker에 모델을 배포하는 데 필요한 단계를 크게 줄이는 SageMaker API에 대한 상위 수준 추상화로 구성됩니다. 이것은 개발자가 SageMaker를 빠르게 시작하고 테스트할 수 있도록 실험을 위한 것입니다. 프로덕션 마이그레이션을 위한 것이 아닙니다.

Scikit-learn, PyTorch 및 TensorFlow 모델의 경우 이 라이브러리는 SageMaker 실시간 끝점 또는 서버리스 끝점에 훈련된 모델 배포를 지원합니다. SageMaker의 추론 옵션에 대한 자세한 내용은 다음을 참조하십시오. 추론을 위한 모델 배포.

실시간 대 서버리스 엔드포인트

실시간 추론은 실시간, 대화형, 짧은 대기 시간 요구 사항이 있는 추론 워크로드에 이상적입니다. 모델을 SageMaker 호스팅 서비스에 배포하고 추론에 사용할 수 있는 끝점을 얻을 수 있습니다. 이러한 끝점은 완전히 관리되며 자동 크기 조정을 지원합니다.

SageMaker Serverless Inference는 ML 모델을 쉽게 배포하고 확장할 수 있도록 특별히 제작된 추론 옵션입니다. Serverless Inference는 트래픽 급증 사이에 유휴 기간이 있고 콜드 스타트를 허용할 수 있는 워크로드에 이상적입니다. 서버리스 엔드포인트는 컴퓨팅 리소스를 자동으로 시작하고 트래픽에 따라 확장 및 축소하므로 인스턴스 유형을 선택하거나 확장 정책을 관리할 필요가 없습니다. 이렇게 하면 서버 선택 및 관리의 획일적인 무거운 작업이 사라집니다.

사용 사례에 따라 실제로 인스턴스가 항상 켜져 있고 비용이 발생하지 않고 SageMaker에서 모델을 빠르게 호스트할 수 있습니다. 이 경우 서버리스 엔드포인트가 훌륭한 솔루션입니다.

훈련된 모델 및 추론 스크립트 준비

SageMaker에 배포할 모델을 식별한 후에는 모델이 올바른 형식으로 SageMaker에 표시되는지 확인해야 합니다. SageMaker 끝점은 일반적으로 훈련된 모델 아티팩트(.pth, .pkl 등)와 추론 스크립트의 두 가지 구성 요소로 구성됩니다. 추론 스크립트가 항상 필수는 아니지만 제공하지 않으면 사용 중인 서빙 컨테이너의 기본 핸들러가 적용됩니다. 추론을 위해 입력/출력 기능을 사용자 지정해야 하는 경우 이 스크립트를 제공하는 것이 필수적입니다.

훈련된 모델 아티팩트는 단순히 저장된 Scikit-learn, PyTorch 또는 TensorFlow 모델입니다. Scikit-learn의 경우 일반적으로 피클 파일이고 PyTorch의 경우 .pt 또는 .pth 파일이며 TensorFlow의 경우 자산, .pb 파일 및 기타 변수가 있는 폴더입니다.

일반적으로 모델이 입력을 처리하고 추론을 수행하는 방법을 제어하고 응답에 대한 출력 형식을 제어할 수 있어야 합니다. SageMaker를 사용하면 다음을 제공할 수 있습니다. 추론 스크립트 이 사용자 정의를 추가합니다. SageMaker에서 사용하는 모든 추론 스크립트에는 다음 네 가지 처리기 함수 중 하나 이상이 있어야 합니다. model_fn, input_fn, predict_fnoutput_fn.

이 XNUMX가지 기능이 적용된다는 점에 유의하세요. 파이 토치사이 킷 러닝 특히 컨테이너. TensorFlow는 텐서 플로우 서빙. TensorFlow가 있는 추론 스크립트의 경우 두 가지가 있습니다. 모델 핸들러: input_handler 및 output_handler. 다시 말하지만, 이들은 작업할 수 있는 동일한 전처리 및 후처리 목적을 갖지만 다음과 통합하기 위해 약간 다르게 구성됩니다. 텐서 플로우 서빙. PyTorch 모델의 경우 model_fn은 추론 스크립트에 있어야 하는 필수 기능입니다.

model_fn

SageMaker 엔드포인트를 호출할 때 처음 호출되는 함수입니다. 여기에서 모델을 로드하는 코드를 작성합니다. 예를 들어:

def model_fn(model_dir):
    model = Your_Model()
    with open(os.path.join(model_dir, 'model.pth'), 'rb') as f:
        model.load_state_dict(torch.load(f))
    return model

프레임워크 및 모델 유형에 따라 이 코드가 변경될 수 있지만 함수는 초기화된 모델을 반환해야 합니다.

입력_fn

이것은 엔드포인트가 호출될 때 호출되는 두 번째 함수입니다. 이 함수는 추론을 위해 엔드포인트로 전송된 데이터를 가져와 모델이 예측을 생성하는 데 필요한 형식으로 구문 분석합니다. 예를 들어:

def input_fn(request_body, request_content_type):
    """An input_fn that loads a pickled tensor"""
    if request_content_type == 'application/python-pickle':
        return torch.load(BytesIO(request_body))
    else:
        # Handle other content-types here or raise an Exception
        # if the content type is not supported.
        pass

XNUMXD덴탈의 request_body 모델에서 추론을 생성하는 데 사용할 데이터를 포함하고 필요한 형식이 되도록 이 함수에서 구문 분석됩니다.

예측_fn

이것은 모델이 호출될 때 호출되는 세 번째 함수입니다. 이 함수는 다음에서 반환된 전처리된 입력 데이터를 취합니다. input_fn 에서 반환된 모델을 사용합니다. model_fn 예측을 하기 위해. 예를 들어:

def predict_fn(input_data, model):
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    model.to(device)
    model.eval()
    with torch.no_grad():
        return model(input_data.to(device))

선택적으로 추가할 수 있습니다. output_fn 의 출력을 구문 분석하기 위해 predict_fn 클라이언트에게 반환하기 전에. 함수 서명은 def output_fn(prediction, content_type).

사전 훈련된 모델을 SageMaker로 이동

훈련된 모델 파일과 추론 스크립트가 있으면 이러한 파일을 다음과 같은 폴더에 넣어야 합니다.

#SKLearn Model

model_folder/
    model.pkl
    inference.py
    
# Tensorflow Model
model_folder/
    0000001/
        assets/
        variables/
        keras_metadata.pb
        saved_model.pb
    inference.py
    
# PyTorch Model
model_folder/
    model.pth
    inference.py

모델 및 추론 스크립트가 준비되고 이 폴더 구조에 저장되면 SageMaker에서 모델을 배포할 준비가 된 것입니다. 다음 코드를 참조하십시오.

from sagemaker_migration import frameworks as fwk

if __name__ == "__main__":
    ''' '''
    sk_model = fwk.SKLearnModel(
        version = "0.23-1", 
        model_data = 'model.joblib',
        inference_option = 'real-time',
        inference = 'inference.py',
        instance_type = 'ml.m5.xlarge'
    )
    sk_model.deploy_to_sagemaker()

엔드포인트를 배포한 후 SageMaker 콘솔이나 delete_endpoint Boto3 API 호출.

결론

SageMaker Migration Toolkit 프로젝트의 목표는 데이터 과학자가 클라우드 기반 추론을 활용하기 위해 SageMaker에 모델을 쉽게 등록할 수 있도록 하는 것입니다. 리포지토리는 계속해서 발전하고 워크로드를 SageMaker로 마이그레이션하기 위한 더 많은 옵션을 지원할 것입니다. 코드는 오픈 소스이며 pull 요청 및 문제를 통한 커뮤니티 기여를 환영합니다.

확인 GitHub 저장소 SageMaker Migration Toolkit 활용에 대해 자세히 알아보고 프로젝트에 추가할 예제 또는 기능 요청에 자유롭게 기여하십시오!


저자 소개

PlatoBlockchain Data Intelligence 테스트를 위해 모델을 Amazon SageMaker에 배포하는 데 걸리는 시간을 줄입니다. 수직 검색. 일체 포함.키릿 타다카 Amazon SageMaker Service SA 팀에서 일하는 ML 솔루션 설계자입니다. AWS에 합류하기 전에 Kirit은 초기 단계의 AI 스타트업에서 일한 후 AI 연구, MLOps 및 기술 리더십에서 다양한 역할을 컨설팅하는 데 시간을 보냈습니다.

PlatoBlockchain Data Intelligence 테스트를 위해 모델을 Amazon SageMaker에 배포하는 데 걸리는 시간을 줄입니다. 수직 검색. 일체 포함.램 베기라주 SageMaker 서비스 팀의 ML 설계자입니다. 그는 고객이 Amazon SageMaker에서 AI/ML 솔루션을 구축하고 최적화하도록 돕는 데 중점을 두고 있습니다. 여가 시간에는 여행과 글쓰기를 좋아합니다.

타임 스탬프 :

더보기 AWS 기계 학습