AWS SageMaker로 효율적인 머신러닝 프로세스 구축하기ㅣSageMaker pipelines와 SageMaker Autopilot까지

신 영·2024년 3월 27일
1

AWS

목록 보기
3/4
post-thumbnail

✅Amazon SageMaker

SageMaker를 사용하면 단일 통합 개발 환경(IDE)에서 노트북, 디버거, 프로파일러, 파이프라인, MLOP 등의 도구를 사용하여 대규모로 ML 모델을 구축, 훈련 및 배포할 수 있다.

SageMaker 활용의 장점

파이썬으로 하나의 파일에 전체 코드를 작성하여 머신러닝을 진행하는 것과 AWS SageMaker로 진행하는 것의 주요 차이를 정리해 보면 세이지메이커를 사용하는 장점이 명확히 드러난다.

항목Python ScriptAWS SageMaker
환경 설정 및 관리사용자가 직접 관리해야 함AWS가 환경 설정 및 관리를 관리함
인프라 관리 및 확장성사용자가 인프라를 직접 관리해야 함AWS가 인프라를 관리하고 필요에 따라 자동으로 확장함
리소스 및 비용 관리사용자가 리소스 및 비용을 관리해야 함AWS가 리소스를 관리하고 사용한 만큼만 비용을 지불함
개발 및 테스트 시간모든 개발 및 테스트가 로컬에서 수행됨개발 및 테스트를 클라우드에서 수행 가능
머신러닝 모델 배포 및 관리모델 배포 및 관리에 사용자의 노력이 필요함AWS가 모델 배포 및 관리를 자동화함
확장성 및 성능로컬 환경에서 제한된 성능과 확장성AWS의 무한한 확장성 및 높은 성능을 활용함
협업 및 공유코드 및 모델을 직접 공유해야 함AWS의 공유 및 협업 기능을 활용함
보안 및 규정 준수사용자가 보안 및 규정 준수를 담당함AWS는 보안 및 규정 준수를 관리하고 제공함
유지 보수 및 업데이트모든 업데이트 및 유지 보수는 사용자가 담당함AWS는 시스템 및 서비스를 업데이트하고 유지 보수함

하나씩 들여다 보자.

모델 개발을 위한 노트북 띄우기

인스턴스와 개발할 머신러닝 환경을 구축한다. 이미 자주 쓰이는 환경은 만들어져 있다.

코드 개발을 위해 별도의 환경 셋업을 할 필요가 없다.

노트북 공유도 바로 가능하다.

전체적으로는 Jupyter notebook에 기능을 추가한 올인원 머신러닝 프로그램 느낌이다. AWS SageMaker에서는 깃 연동을 해서 소스 코드를 바로 클론하여 가져올 수도 있다. 또한, vpc 안쪽에 있어서 보안도 강화할 수 있다.


Build & Train models

모델을 학습시키고 튜닝하는 과정이다. Amazon SageMaker에서는 모델 build, train, deploy까지 하나의 환경에서 가능하다.

코드로는 model.fit() 하는 작업은 어떻게 진행될까?

먼저 학습을 위한 인스턴스 생성된다. 도커의 이미지 형태로 elastic container registry에서 들어가게 되고, 결과물은 s3에 기록된다.

이 과정을 코드로 보면 다음과 같다. 이 작업을 위해서는 Python용 AWS SDK인 Boto3 import가 필요하다.

전체 코드에서 코드별 진행 과정은 다음과 같다.

코드 실행 후 training 중인 모습이다.

이때, 온디맨드로 쓰면 비용 비싸기 때문에 스팟 인스턴스를 활용할 수 있다. 별도 작업 없이 use_spot_instances = True 코드만 추가해 주면 된다. 그럼 spot instances 요청하여 최대 90% 비용 절감이 가능하다.

📌스팟 인스턴스 관련 참고

  1. https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/using-spot-instances.html
  2. https://data-engineer-tech.tistory.com/21

만약 세이지메이커에서 모델을 빌드하지 않고 이미 만들어져 있는 도커 이미지나 모델 활용하려면?

세이지메이커는 사용 가능한 알고리즘을 옵션으로 제공한다.


1. Built-in algorithms

  1. Script mode
    코드를 이렇게 구동만 해줘도 활용 가능하다.

  1. Docker container (BYOC)
    이 주소로 도커 이미지 다운 받아서 트레이닝 할 수도 있다.

  1. AWS ML marketplace : 만들어져 있는 모델을 사용하려면 AWS ML marketplace도 활용 가능하다.


Tune models

모델을 그냥 학습시키면 학습 시간이 길거나 성능 떨어져서 튜닝이 필요하다. 이때, 보통 하이퍼파라미터를 튜닝한다. 하이퍼파라미터는 머신러닝에서 사용자가 설정할 수 있는 값이다.

세이지메이커에서는 estimator 클래스로 하이퍼파라미터 값을 튜닝한다. 성능 측정 기준 메트릭을 만들어주고 작업 명세서로 같이 넣어준다. 모델 fit 하듯이 튜닝도 fit 하면 된다.

그런데 하이퍼파라미터 값을 일일히 조정하면서 실행하면 시간이 오래 걸린다. 세이지메이커는 여러 트레이닝을 동시에 진행하고 이중 가장 좋은 모델을 자동으로 추천해 준다. 그리고 바로 디플로이까지 가능하다.

이때, 다양한 하이퍼파라미터 조합을 만들어내는 방식에는 두 가지가 있다.

  • Bayesian Search : 이전 결과를 바탕으로 다음 하이퍼파라미터 선택, 더 좋은 모델/최적화된 하이퍼파라미터를 알고 싶을 때 사용
  • Random Search : 랜덤하게 하이퍼파라미터 조합 선정 추출, 하이퍼파라미터 작업을 동시에 빠르게 진행해야 할 때 사용

Deploy

모델을 배포하기 위해 training, inference image를 가져오고 직접 쓸 수 있도록 endpoint와 연계한다.

모델을 서빙하는 서버는 세이지 메이커 내에 있어서 실제로 모델의 엔드포인트에 접근하고자 하는 클라이언트는 vpc 앞쪽이나 aws 내부에서만 접속하게 되는 것이다. 즉, 프라이빗 api 형태이다.

만약 퍼블릭하게 만들고 싶다면 api gateway, lambda로 퍼블릭한 클라이언트로 보내주도록 구성이 가능하다. 이 구성과 관련된 설명은 이전 포스팅을 참고할 수 있다.

함수 두 개로 코드를 실행해서 웹페이지를 만들 수 있다?ㅣ서버리스로 가능하다!

세이지메이커 엔드포인트는 자동 오토스케일링 되고 있어서 신경 쓸 필요 없다.

배포 시 모델을 변경한 경우 엔드포인트를 업데이트 하려면 두 가지 방식이 있다.

먼저 블루그린 방식이다. 블루그린 방식은 일종의 A/B 테스트이다. 기존 버전(블루)과 새 버전(그린)의 두 개의 환경을 사용하여 업데이트를 진행한다.

블루그린 방식은 여러 엔드포인트를 필요로 하기 때문에 비용이 많이 든다는 문제가 있다. 따라서 사용하는 방식이 다중 모델 엔드포인트를 호출하는 방식이다.


✅SageMaker pipelines

지금까지 Amazon SageMaker를 활용하여 training부터 deployment까지의 전 과정을 나타내면 다음과 같다.

그런데 머신러닝을 여러 번 반복적으로 하는 것도 힘들다. 그럼 이 전 과정을 자동화하는 방법은 없을까? 세이지메이커는 파이프라인을 통해 머신러닝 워크플로우를 쉽게 관리하고 전체 단계를 자동화하는 기능을 제공한다.

✅SageMaker Autopilot

세이지메이커 파이프라인을 활용하면 다음의 전 과정을 한 번에 관리할 수 있다.

하지만 여전히 머신러닝이 어렵다면? AWS는 오토파일럿으로 데이터만 있으면 머신러닝을 할 수 있도록 해준다.

problem type도 auto로 설정 가능하다.

실행된 머신러닝을 기반으로 또 새로 학습 시킬 수도 있다.

빌트인 알고리즘도 제공해줘서 어떤 경우에 어떤 알고리즘을 활용해야 하는지 알 수 있다.


✅정리

세이지메이커의 전체적인 기능을 살펴보았다.

머신러닝 개발에는 랩탑, 서버, 클라우드 방식이 있었는데 여기서 AWS와 같은 클라우드 환경의 유리함은 무엇일지 마지막으로 정리해 보자.

실제 머신러닝을 하려면 infrasturucture 구축과 운영, 민감한 데이터에 대한 보안까지 신경 써야 하는데 개발자 PC에서는 하기 어렵고 GPU 장비 사서 해도 작업에 노력이 든다. 하지만 클라우드 환경에서는 AWS 환경에서 제공해주기 때문에 TCO 비용을 줄이고 인프라도 잘 구축되어 있다. 따라서 개발자는 비즈니스를 머신러닝으로 풀어내는 데에만 집중할 수 있다.


🔍Amazon SageMaker 통해 머신러닝 시작하기 의 내용을 바탕으로 작성하였습니다.

2개의 댓글

comment-user-thumbnail
2024년 3월 29일

우와 최고다👍👍 늘 응원합니다👍👍👍

1개의 답글