오늘은 Amazon SageMaker가 어떤 서비스이며 어떤 기능들이 있는지 알아보고자 한다.
https://aws.amazon.com/ko/sagemaker/
Amazon SageMaker는 소개 페이지에 나와있는 것처럼 개발자 및 데이터 사이언티스트가 다양한 규모의 ML 모델을 쉽고 빠르게 구축하며 배포할 수 있도록 지원하고 있는 완전 관리형 서비스이다.
즉, Amazon SageMaker를 이용하면 데이터를 라벨링하는 과정부터 모델 학습, 모델 평가, 배포, 추론 과정을 AWS 환경에서 구축하여 운영할 수 있다.
사실 Amazon SageMaker에는 다양한 기능들이 있기 때문에 모든 기능들을 한번에 살펴보는 것을 사실상 힘들 수도 있다. 그래서 오늘은 간단하게 Amazon SageMaker에서 제공하는 ML 환경에 대해 알아보고자 한다.
Amazon SageMaker Studio
사실 기존에 있는 Amazon SageMaker Studio 환경이 Amazon SageMaker Studio Classic으로 명명되지 그리 크게 오래되지 않았다. 현재는 이전에 있던 Amazon SageMaker Studio를 Studio Classic이라고 부르고 쓰고 있고 최근에 나온 새로운 환경의 웹 기반 ML 워크플로우 환경을 Amazon SageMaker Studio라고 부르고 있다.
Amazon SageMaker Studio에서는 애플리케이션은 아래와 같이 JupyterLab, Code Editor, RStudio, Canvas, Studio Classic이 있다. 사용자는 Amazon SageMaker Studio의 애플리케이션을 활용해서 자신만의 머신 러닝 모델링을 위한 코드를 개발하고 관리할 수 있으며 JumpStart를 활용해서 기존에 이미 prebuilt로 준비된 솔루션(ex. FM)을 사용할 수도 있다.
이외에도 SageMaker Studio는 고객이 이미 가지고 있는 Amazon EFS를 마운팅 할 수 있도록 지원하고 있고 만약 사용하고 있지 않는 (즉, Idle 상태) 애플리케이션을 종료할 수 있는 기능도 갖추고 있다. 추가적으로 Lifecycle configuration이나 Local Mode를 지원함으로써 고객의 초기 셋팅이나 로컬 환경에서 구동해볼 수 있는 기능을 제공하고 있다.
Amazon SageMaker Studio Classic
Amazon SageMaker Studio Classic은 사실 앞서 설명한 Studio와 크게 다르지 않다. 단지 예전 버전이어서 현재 Studio보다는 기능이 조금 덜 들어가 있는 수준이다. 마찬가지로 Studio Classic에서도 Jupyter 노트북을 활용하여 데이터 준비부터 학습, 배포까지 관리할 수 있다. 기존에 사용하고 있던 사용자들은 Studio Classic을 사용할 수 있지만 공식 문서에 마이그레이션과 참고에 안내를 한 것처럼 지원 범위가 좁혀지고 있기 때문에 새로운 사용자는 Studio를 활용하는 방법이 더 나은 선택일 수도 있다.
Amazon SageMaker Notebooks
Amazon SageMaker Notebook instance는 JupyterLab이나 Jupyter를 실행할 수 있는 컴퓨팅 인스턴스이다. 사용자는 앞서 언급했던 SageMaker Studio를 활용하는 방식 이외에도 Notebook instance를 통해서 Jupyter 환경에서 코드를 개발할 수 있고 자신이 원하는 인스턴스 타입을 고르거나 VPC 환경을 셋팅하는 등의 작업을 할 수 있다.
Amazon SageMaker Notebook의 Jupyter환경에서 사용자는 AWS가 제공하는 Amazon SageMaker Python SDK와 AWS SDK for python(boto3), AWS CLI, Conda, Pandas등 다양한 라이브러리를 활용해서 모델을 개발할 수 있다. 추가적으로 Git repositories를 등록해서 초반에 자신의 git repository를 셋팅해놓을 수 있고 Lifecycle Configuration을 통해 초기에 설정할 환경 (패키지 설치 같은)을 셋팅할 수 있다.
Amazon SageMaker Canvas
Amazon SageMaker에서는 또 다른 환경으로 Canvas라는 환경을 지원하고 있다. 이 환경에서는 사용자는 이전에 JupyterLab으로 코딩을 하는 등의 작업 필요 없이 단순히 클릭만으로 (즉, 노코드 환경) 데이터를 넣고 모델을 구축할 수 있다.
사실 이러한 환경은 개발에 대한 경험이 크지 않고 빠르게 모델을 배포하고 예측 결과를 도출하고 싶어하는 사용자에게 적합한 기능이라고 생각한다. Python 코드를 보고 공식문서를 뒤져가면서 함수명과 적합한 파라미터 명, 데이터 parsing 하는 등의 작업은 많은 시간 투자를 요구할 수 있다. 그럴 때 Amazon SageMaker Canvas를 이용한다면 손쉽게 가지고 있는 데이터를 이용해서(다양한 Data connector를 제공해주고 있기 때문) AWS에서 제공해주는 FM을 학습시키고 개인에게 맞는 모델을 개발(추가적인 custom 작업인 파라미터 튜닝 등)하고 Inference를 하기 위해 활용할 수 있다.
Amazon SageMaker RStudio
마지막으로는 RStudio에 대해 알아보려고 한다. RStudio는 이름 그대로 R을 위한 개발 환경을 제공해주는 기능으로 코드를 실행하거나 디버깅 및 작업 관리 등을 할 수 있다. R언어 개발자는 손쉽게 SageMaker RStudio를 활용해 AWS 환경에서 모델 구축을 할 수 있다. 또한, 다양한 코드 샘플도 제공해주고 있기 때문에 R을 쉽게 활용할 수 있다.
https://github.com/aws/amazon-sagemaker-examples/tree/main/r_examples
그리고 추가적으로 RStudio를 사용하기 위해서는 라이선스를 받는 과정 등이 필요하다.
Conclusion
사실 오늘 글에서 다 다루지 못했지만 SageMaker는 개발 환경 제공 이외에도 AutoML이나 Data Wrangler, Pipelines 등 다양한 기능들을 제공해주고 있다. 또한, Studio나 RStudio 등의 환경을 사용하기 위해서 사용자는 Domain과 User Profile이라는 컴포넌트가 필요하다. 이 글에서는 해당 내용에 대한 글을 작성하진 않았지만 추후에 더 많은 기능들을 소개하고 실제로 구축도 해보면서 언급할 계획이다.
요즘 ML, AI가 핫해지면서 많은 사람들이 ML을 이용해서 모델을 개발하고 있는데 Amazon SageMaker는 ML을 하기에 최적화된 환경(FM이나 개발 환경, 서버 인프라 제공)을 제공해주고 있어서 사용자가 더 빠르게 모델을 개발할 수 있게 만들고 온전히 개발과 모델 튜닝에만 집중할 수 있도록 도움을 주고 있다는 생각이 든다.
비록 이러한 클라우드 환경이 단순히 비용만 놓고 봤을때 비쌀 수는 있지만 해당 인프라 환경을 개인이 구축하고 사용하기엔 어려움도 있고 관리도 어려울 수 있다고 생각한다. 또한, AWS에서는 자세한 공식 문서나 샘플 코드도 같이 제공해주니까 학생일 때도 활용하기 쉽고 접근하기도 쉬웠던 것 같다. 그래서 앞으로도 많은 사람들이 잘 활용할 수 있게 샘플에 대한 설명 글이나 활용 가이드에 대해 작성해보려고 한다.
+++ 공식 문서도 참고할 수 있지만 더 추가적으로 활용하면 좋은 링크들을 아래 공유하고자 한다.
https://aws.amazon.com/ko/blogs/tech/category/artificial-intelligence/sagemaker/
https://github.com/aws/sagemaker-python-sdk
https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples
https://github.com/aws/amazon-sagemaker-operator-for-k8s
https://github.com/aws/studio-lab-examples
'Cloud > AWS' 카테고리의 다른 글
AWS Code Series를 이용한 자동화 구성하기 (0) | 2024.04.15 |
---|---|
AWS Lambda 내용 정리 (0) | 2023.05.28 |
AWS Cloudtrail & EventBridge를 이용해서 s3 작업에 대한 컨테이너 작업 (0) | 2023.04.05 |
AWS CodeDeploy에 대해 알아보기 (0) | 2023.04.02 |
AWS Kinesis Data Firehose를 consumer로 이용해서 AWS S3로 데이터 스트리밍 (0) | 2023.03.25 |