얼마 전 부터 AWS SageMaker 공부를 시작했다.
SageMaker 는 AWS 상에서 쉽게 데이터 처리와 머신러닝 모델 구축 그리고 배포까지 도와주는 서비스라고 한다.
모델을 학습시켜본 적은 있지만 모델을 저장하고 배포한 적이 없어서 어떤 식으로 진행이 되는 것인지 배우려고 한다.
일단 그 전에 SageMaker 자체에 좀 익숙해지기 위해 테스트를 진행해보는 중이다.
브랜디 랩스 개발자 분이 올려주신 코드를 활용해보았다.
SageMaker 기본 세팅
이후 s3에 학습 데이터를 저장하기 위해 sagemaker의 제한을 두는 role을 지정하여 사용해야 한다.
데이터 저장 및 활용
손글씨 숫자 데이터인 MNIST 이미지 데이터를 활용하기 위해 우선적으로 다운로드가 필요했다.
참고했던 사이트에서 활용하려고 했지만 해당 링크 자체가 현재 close 되어서 인가 사용할 수 없어 다른 방식을 찾았다.
해당 링크에서 train 과 label 데이터를 gz 파일로 저장을 했다.
그리고 해당 gz 파일은 압축 파일이기 때문에 압축해제 하여 활용해야 하기 때문에 푸는 작업을 진행했다.
손글씨 숫자 데이터가 어떻게 생겼는지 확인하기 위한 시각화 코드도 작성하였다.
모델 구축 및 학습
train 과 test 셋을 구축하고 있기 때문에 이를 활용해 KMeans 모델을 구축해보고자 한다.
우선 다른 테스트를 진행하기 위해서 이미 S3 Bucket을 생성해두었다.
S3 Bucket을 새로 생성해주기 위해선 아래의 코드를 활용할 수 있다.
import boto3
bucket = 'bucket 이름 : 유니크한 값으로 설정해야 함'
s3 = boto3.resource('s3')
my_region = boto3.session.Session().region_name
try:
# us-east-1 이 아닐 경우 지역을 지정해주어야 함.
if my_region =='us-east-1':
s3.create_bucket(Bucket = bucket)
else :
s3.create_bucket(Bucket = bucket,
CreateBucketConfiguration = {'LocationConstraint': my_region})
except Exception as e :
print('S3 error ', e)
학습된 데이터를 S3에 저장하기 위한 path을 지정해주어야 한다.
그리고 SageMaker에서 사전에 구축해보는 머신러닝 모델들이 있다.
쉽게 생각하면 sci-kit learn 라이브러리에서 제공하고 있는 것처럼 SageMaker 라이브러리 안에 있는 모델을 활용하는 방식이라고 생각하면 편할 것 같다.
그레서 sklearn.cluster.kmeans 를 import 하는 대신 sagemaker.Kmeans를 import 하는 것이다.
숫자가 0부터 9까지 있기 때문에 10개로 분류해야 하기 때문에 k=10 으로 둔 것이다.
instance_type을 어떻게 두는냐에 따라 모델 구축 및 학습의 차이가 있고, 즉 MONEY에도 차이가 있다.
(무료 2개월 동안 열심히 써야지...)
그리고 본격적으로 학습을 시작했다.
6만건의 데이터가 약 4분 만에 학습이 끝난다.
그리고 학습된 모델에 새로운 test 데이터를 통해 예측해보았다.
모델 배포하는 것이 모델을 저장하는 것인듯 하다. " deploy "
그리고 클러스터별로 실제 잘 묶였는지 확인하기 위한 시각화 작업을 진행해보았다.
클러스터 4번이라고 해서 라벨 4을 의미하는 것이 아니기 때문에 실제 데이터를 통해 잘 묶였는지 확인해봐야 한다.
클러스터에 묶인 이미지를 확인해본 결과 비슷한 숫자로 묶이는 것도 볼 수 있지만 튀는 값 역시 들어 있다는 것을 알 수 있다.
인스턴스 종료
모델 예측을 마치고 나서 더 이상의 인스턴스를 사용하고자 않을 때에는 인스턴스를 종료해줌으로써 비용관리를 해주어야 한다.
아래의 코드 경우 s3에 저장된 학습 데이터까지 모두 지워주었다.
다음에는 모델을 저장하고 난 이후 다른 파일에서 해당 모델을 가져와 예측해보는 상황도 해보면 좋을 듯 하다.
AWS와 SageMaker를 처음 해보다 보니 낯설기는 하지만 새로운 것을 하다보니 재밌다.
sagemaker에서 제공하는 다른 테스트들이나 이미 리뷰한 경우들을 계속해서 해봐야겠다.
그리고 실제 서비스 적용하는 날이 오기를
Amazon SageMaker는 처음이지?
Overview브랜디 랩스를 사랑해주시는 여러분, 안녕하세요. 개발자 오-연주입니다. 지난 4월, Brandi Back-end 개발자 분들과 코엑스에서 열렸던 AWS Summit(04.18 - 04.19)에 다녀왔습니다!
labs.brandi.co.kr
'Python > AWS' 카테고리의 다른 글
[Amazon Personalize] Personalize Python SDK 전체 프로세스 정리 (0) | 2021.12.23 |
---|---|
[AWS SageMaker] 저장된 모델로 배포하기 (0) | 2021.12.17 |
[AWS SageMaker] US census data for population segmentation (0) | 2021.12.16 |