Amazon SageMaker
Amazon SageMaker란
- SageMaker는 종합 관리형 기계 학습 서비스입니다.
- SageMaker를 통해 데이터 사이언티스트와 개발자들은 기계 학습 모델을 빠르고 쉽게 구축하고 훈련시킬 수 있으며, 그리고 나서 이들 모델을 프로덕션 지원 호스팅 환경에 직접 배포할 수 있습니다.
- 탐색 및 분석에 필요한 데이터 원본에 대한 쉬운 액세스를 위해 내장형 Jupyter 작성 노트북 인스턴스를 제공하기 때문에 서버를 관리할 필요가 없습니다.
- 분산된 환경 내 대규모 데이터를 효율적으로 실행하는 데 최적화된 일반 기계 학습 알고리즘 또한 제공합니다.
Amazon SageMaker Prerequiste
Amazon SageMaker를 시작하기 이전에 S3를 생성해야 합니다.
S3 콘솔로 이동합니다. Create bucket 버튼을 클릭합니다.
Bucket 이름은 필수로 “sagemaker-” 로 시작되어야 합니다. 추후에 notebook instance가 어느 곳에 데이터를 저장할지 확인할 수 있습니다. 나머지 설정은 default로 진행합니다.
Bucket이 생성되었습니다.
Amazon SageMaker Notebook
Amazon SageMaker 콘솔로 이동합니다.
서브 메뉴에서 Notebook > Notebook instances를 클릭합니다.
instance 이름을 입력합니다.
Permissions and encryption에서 Create a new role 버튼을 클릭합니다.
다음 팝업 창에서 Specific S3 buckes를 선택하고 위에서 생성한 S3의 이름을 입력합니다.
하단에 Create nodebook instance 버튼을 클릭합니다.
notebook instances가 생성 되었습니다.
이름을 클릭합니다. 생성한 notebook instance의 상세 정보가 확인됩니다. Status가 Pending에서 inService로 변경이되면 서비스 이용이 가능합니다.
Open Jupyter를 클릭합니다.
해당 주소로 리다이렉트 됩니다.
탭 메뉴에서 SageMaker Examples을 클릭하여 Object Detection 샘플 예제를 돌려보겠습니다.
Amazon_JumpStart_Object_Detection.ipynb의 Use 버튼을 클릭합니다.
다음의 팝업창에서 ipynb 파일 이름을 수정하고 Create copy 버튼을 클릭합니다.
해당 Notebook이 생성 되었습니다. Shift+Enter를 누르면서 Cell을 하나씩 실행해봅니다.
Amazon SageMaker Model Deploy
2번 서부터는 이미 선학습된(Pre-trained)된 모델을 추론하는 예제가 됩니다.
해당 모델을 Deploy를 합니다.
Amazon SageMaker 콘솔 서브 메뉴에서 Inference > Models로 이동하면 생성된 모델이 확인됩니다.
Deploy된 해당 Inference 모델의 Endpoint 주소를 확인하기 위해서는 Inference > Endpoints로 이동합니다.
생성된 Endpoint의 이름을 클릭하면 해당 URL을 통해 API를 호출할 수 있습니다.
Endpoint도 inService로 변경됩니다.
추론에 사용될 이미지를 다운 받습니다.
생성된 Enpoint로 추론 API를 호출합니다.
예측 결과를 확인합니다.
2.6은 생성된 endpoint 삭제를 진행합니다.
Amazon SageMaker Model Train
3번 서부터는 이미 학습된 pre-trained 모델을 다시 학습하여 Fine-tunning을 진행해보도록 하겠습니다.
학습 데이터셋과 Instance 타입을 지정 받습니다.
학습 파라미터를 설정합니다.
Hyperparameter 튜닝을 활용한 모델 튜닝을 자동화합니다.
학습을 진행하려 합니다만 에러가 발생됩니다.
ResourceLimitExceeded: An error occurred (ResourceLimitExceeded) when calling the CreateHyperParameterTuningJob operation: The account-level service limit 'ml.p3.2xlarge for training job usage' is 1 Instances, with current utilization of 0 Instances and a request delta of 2 Instances. Please contact AWS support to request an increase for this limit.
p3.2xlarge 인스턴스 타입 사용에 대한 제한이 걸려 있는 상황입니다.
Amazon EC2 콘솔로 이동합니다. 서브 메뉴에 Limits로 이동합니다. AWS Service Quotas console 버튼을 클릭합니다.
서브 메뉴에서 AWS services로 이동합니다.
Service quotas에서 p3.2xlarge를 입력하고 ml.p3.2xlarge for tarining job usage를 클릭합니다.
Request quota Increase 버튼을 클릭합니다.
다음의 팝업창에서 Change quota value를 2로 입력하고 Request 버튼을 입력합니다.
Request가 정상적으로 전송됩니다.
이후에 Quota request approved를 통해 승인이 완료됩니다.
다시 학습을 진행합니다. 정상적으로 학습이 시작됩니다.
학습이 완료되었습니다.
Amazon SageMaker 콘솔에서 사이드 메뉴에서 Training을 클릭하고 Training Jobs을 클릭합니다.
학습 완료된 Training Jobs 리스트를 확인할 수 있습니다.
Amazon SageMaker Fine-tunning Model Deploy
Fine tunning된 모델을 배포해봅시다. 테스트를 위한 데이터를 다운받습니다.
추론 테스트를 진행합니다.
이상으로 Amaon SageMaker Notebook를 통해 학습, 배포, 추론을 진행하였습니다.
감사합니다.
'AWS' 카테고리의 다른 글
AWS Cloud9을 활용한 Kubernetes 개발 환경 구축 (0) | 2023.05.19 |
---|---|
AWS Cloud9 (0) | 2023.05.19 |
AWS Certified Cloud Practitioner 클라우드 자격증 AWS Well-Architected 프레임워크 (1) | 2022.06.06 |
AWS Certified Cloud Practitioner 클라우드 자격증 실전 문제를 활용한 준비-[7] (0) | 2022.02.02 |
AWS Certified Cloud Practitioner 클라우드 자격증 실전 문제를 활용한 준비-[6] (0) | 2022.02.01 |