본문 바로가기

Python/AWS

[AWS SageMaker] 저장된 모델로 배포하기

How to deploy using pre-trained model in SageMaker 

 

sagemaker 는 머신러닝 모델 학습부터 배포까지 한번에 진행할 수 있다고 이야기 하고 있다. 

테스트를 진행하다보니 모델을 저장하는 단계와 배포하는 단계에 대해서는 어느정도 알게 된 것 같다.

그런데 이 테스트 코드의 단점은 이미 저장한 모델을 활용하는 부분이 빠져있다는 것이다.

모델에 데이터를 학습하고 바로 모델을 배포하고 예측하기도 하지만,

학습된 모델을 이후 다른 작업이나 프로젝트에도 활용이 가능해야 한다. 

 

그래서 학습된 모델을 저장하고 나서 이 모델을 활용하기 위한 방법을 찾아보았다. 

 

# STEP 1. 학습된 모델의 저장 위치 와  What kind ? 

이전에 학습을 진행한 모델이 S3의 어느 위치에 저장되어 있는지 알아야 한다. 

모델은 traing_job_name  아래의 output 폴더 내 model.tar.gz 의 이름으로 저장이 된다. 

배포하고자 하는 모델의 위치가 model_data 인자의 값으로 지정이 된다. 

 

그리고 저장된 모델이 어떤 알고리즘을 활용하였는지 알아야 한다. 

여기서는 sagemaker 의 image_uri에 저장된 위치를 지정해야 한다. 

 

built-in 된 모델을 활용했다면 get_image_uri 을 통해 위치를 찾을 수 있다. 

# STEP 2. sagemaker.model.Model 객체 생성 

이제 s3에 저장된 모델을 가지고 오기 위해 객체를 생성한다. 이때 객체의 인자로 활용되는 것은 아래와 같다. 

- model_data : 학습 모델이 저장된 s3의 위치 

- image_uri : 활용 알고리즘의 이미지 도커의 위치 

- role : bucket 접근 권한 

- predictor_cls : predictor 객체 생성을 위한 인자 

- sagemaker_session  : sagemaker의 세션 

 

 

Model 객체를 가져와서 예측에 활용하기 위해서는 predictor_cls 을 지정해주어야 한다. 

 

# STEP 3. Deploy 배포 

Model 객체를 생성하고 나면 deploy을 할 수 있다. 이전에 했던 방식과 동일하다. 

deploy를 실행하고 나면 return 값으로 predictor 객체가 생성됨과 동시에 endpoint 가 생성된다. 

 

# STEP 4. Predict 

생성된 predictor 객체를 통해 새로운 데이터에 대한 predict 값을 구할 수 있다. 

 

# STEP 5. Delete Endpoint 

원하는 예측까지 완료하고 나면 해당 predictor 모델의 endpoint 을 삭제해주어야 aws 리소스 의 비용 관리를 할 수 있다.