데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      [Cloud 비용 효율화] Sagemaker Notebook Instance 안쓸 땐 끕시다.

      도선 24.07.02
      1,789 3 0
      DEVOTEE 요약
      본 블로그에서는 AWS Sagemaker의 Notebook Instance를 자동으로 종료하여 불필요한 비용을 줄이는 AutoStop 기능에 대해 알아보겠습니다. 이 기능을 통해 미사용 시간을 감지하여 인스턴스를 종료하는 방법과 구체적인 구현 방법을 설명했습니다. 이는 클라우드 비용을 절감하는 데 크게 도움이 될 것입니다.
      DEVOTEE 추천 블로그

      안녕하세요, 도선입니다.

      저는 SK텔레콤에서 Cloud Radar의 AI/ML 서비스를 개발 및 운영하고 있습니다.

      Cloud FinOps 플랫폼인 Cloud Radar는 SKT의 Cloud 고객에게 제공하는 CMP(Cloud Management Platform) 솔루션의 이름 입니다.


      지난 시간에는 Cloud 비용 최적화를 위한 전반적인 사항에 대해서 이야기 했었는데요,

      ([Cloud FinOps] 당신의 Cloud 비용은 안녕하신가요???)

      이번 시간에는 구체적인 내용 중 하나인 AutoStop에 대해서 알아보겠습니다.

      그 중에서도 AWS SageMaker의 Notebook Instance 를 자동 종료하여 불필요한 비용을 줄이는 방법에 대해서 알아보겠습니다.


      Notebook Instance Auto Stop이 필요한 이유

      AI/ML 모델을 만들고 운영하기 위해서 AWS에서는 Sagemaker라는 서비스를 제공하고 있습니다.

      그래서 Sagemaker에는 모델의 개발과 운영에 도움이 되는 많은 기능들이 통합되어 있는데요.

      예를 들면, ML 통합 개발 환경인 Studio, No Code 기반의 모델 개발을 위한 Canvas, R 모델 개발을 위한 RStudio, Jupyter Notebook 개발 환경을 제공하는 Notebook 등이 있습니다.

      image.png

      저 같은 경우에는 Noetbook 서비스를 주로 사용하고 있습니다.

      물론 기본 로직은 로컬에서 만들기도 하지만 결국 AWS 상에 올라가 있는 다른 서비스 및 데이터들을 사용하기 위해서는 SageMaker Notebook 에서 실행 시키면서 작업 하는 것이 필요합니다.

      여기서 비용을 효율화 할 수 있는 포인트가 발생합니다 SageMaker 서비스가 다른 서비스 보다 단가가 높기 때문에 특히 신경을 써주면 좋습니다.

      물론 절대적으로 비교할 수는 없겠지만 EC2 t4g.2xlarge의 경우 시간당 0.3328 달러인데 노트북 인스턴스 ml.t3.2xlarge는 0.499 달러로 34%이상 비싸네요.

      이처럼 비용이 비싸기 때문에 최대한 사용 시간에만 인스턴스를 실행 시키려 합니다.

      즉, 출근해서 작업 전에 인스턴스를 실행 시키고 퇴근 전에는 종료 시키는 작업을 하는데요.

      깜빡해서 퇴근전에 종료 하는 것을 잊을 수도 있고, 근무 중에 다른 업무로 실제로는 사용하지 않으면서 인스턴스는 실행 상태이기 때문에 비용이 발생하는 경우가 있게 됩니다.

      이와 같은 비효율을 막기위해서, 사용하지 않는 시간에 자동으로 인스턴스를 종료하여 비용을 절감하는 방법이 Auto Stop 입니다.


      Auto Stop 기능

      다시 말하면 Notebook Instance를 사용하지 않을 때는 자동으로 종료하도록 만드는 것이 바로 Notebook-Instance Auto Stop 입니다.

      이를 코드로 구현하기 위해서는 두가지의 기능이 필요한데요.

      첫번째는 노트북이 사용중인지 아닌지 확인하고 미사용중으로 판단되면 노트북 인스턴스를 Stop 시키는 기능이 필요합니다.

      그리고 두번째로는 첫번째 기능을 정해진 주기마다 실행하는 것이 필요합니다.

      이러한 기능 구현 코드를 AWS 예제 github에서도 아래와 같이 제공 되고 있습니다.

      image.png

      Gighub 바로가기


      autostop.py가 첫번째로 이야기한 사용 여부를 확인 및 종료하는 기능이고, on-start.sh이 autostop.py를 주기적으로 실행시키는 두번째 기능 입니다.


      Auto Stop 적용

      Auto stop을 나의 노트북 인스턴스에 적용 시키는 방법은 간단합니다.

      노트북 인스턴스를 실행(Start) 시킨 다음에 터미널을 열고 on-start.sh을 가져와서 실행 시키면 됩니다.

      가져오는 코드는 아래와 같습니다.

       sh-4.2$ wget https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples/raw/master/scripts/auto-stop-idle/on-start.sh

      실행을 위해 모드를 바꾸어주고 "ROOT"로 실행 시킵니다.

      sh-4.2$ chmod +x on-start.sh 
      sh-4.2$ sudo ./on-start.sh 

      정상적으로 실행되었는지 확인을 위해서 root의 crontab list를 확인해 보면 아래와 같은 리스트가 나옵니다.

      sh-4.2$ sudo crontab -l
      */5 * * * * /home/ec2-user/anaconda3/envs/JupyterSystemEnv/bin/python /home/ec2-user/SageMaker/autostop.py --time 3600 --ignore-connections >> /var/log/jupyter.log

      cron job이 잘 등록되었고 실행중임을 알 수 있습니다.


      그런데 이런 작업을 노트북 인스턴스를 실행 시킬때 마다 해줘야 한다면 너무 불편한 일이겠죠?!

      빠르신 분들을 이미 아셨겠지만, 이처럼 노트북 인스턴스를 실행시키거나 종료할 때 필요한 스크립트를 미리 등록해서 관리/적용 할 수 있습니다.

      이것이 바로 Lifecycle configurations(수명 주기 구성) 입니다. 아래 이미지에서와 같이 노트북 뿐만 아니라 JupyterLab, Studio 등에서 활용할 수 있도록 만들 수 있습니다.

      image.png

      SageMaker Lifecycle configurations 메뉴로 들어가서 생성을 크릭하면 아래와 같은 화면이 나옵니다.

      여기에서 이름을 입력하고 Scripts에 Start notebook 탭의 내용으로 on-start.sh의 내용을 입력해주면 됩니다.

      이것은 다시 말하면, 노트북 인스턴스가 시작 할 때 실행시킬 내용을 정의하는 것 입니다.

      image.png

      이렇게 등록된 Lifecycle configurations의 이름을 아래와 같이 노트북을 생성 할 때 Additional configuration에서 리스트 중 선택해주면 연결이 완료 됩니다.

      image.png


      마치며......

      이번 시간에는 AWS Sagemaker Notebook Instance를 특정시간 동안 사용하지 않는 경우 자동으로 인스턴스를 종료하는 Auto Stop과 그 상세 구현 방법에 대해서 알아보았습니다.

      위에서 말씀드렸던 git repo를 보면 Auto Stop 뿐만아니라 다양한 Lifecycle configurations의 예시를 제공하고 있으니 참고하시면 좋을 것 같습니다.


      여러분의 클라우드 비용을 최적화하는데 조금이라도 도움이 되셨기를 바랍니다.

      참고로 Cloud Radar에서는 직접적이고 빠르게 비용 효과를 확인할 수 있는 자원최적화와 약정최적화 관련된 다양한 서비스를 제공 및 고도화하고 있습니다.


      감사합니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      도선 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기