반응형

 안녕하세요, 이번 시간에는 AWS에서 Machine Learning 기반 어플리케이션을 제작하고, 배포하기 위해서 사용되는 주요 서비스들을 정리하려고 합니다.

 아래 사진은 AWS에서 제공하는 서비스들을 일부 캡처한 것입니다. 보시는 바와 같이, 다양한 목적에 따라 세분화된 걸 볼 수 있습니다. 따라서 Machine Learning 기반 어플리케이션을 제작, 배포하기 위해서는 여러 서비스를 함께 사용해야 합니다.

AWS에서 제공하는 다양한 서비스들

 이번 글에서는 제가 실습에 사용했던 서비스들만 정리하도록 하겠습니다. 이것들만 있어도 Machine Learning 기반 어플리케이션을 제작, 배포할 수 있습니다. 위 사진에서 이미 즐겨찾기 되어있네요 ㅎㅎ.

 

  • EC2 (Elastic Compute Cloud)
    • 한 줄 요약 - 클라우드의 가상 서버
    • GPU가 없는 나만의 컴퓨터라고 생각할 수 있습니다. (GPU는 특수한 업무를 수행할 때만 필요하므로, 따로 그 업무를 실행할 때 설정해서 사용할 수 있습니다.)
    • 필요에 따른 CPU, RAM, 네트워크 사양에 따라 적절한 EC2 intance를 생성하면, 사용가능합니다.  
  • IAM (Identity and Acess Management)
    • 한 줄 요약 - 사용자 엑세스 및 암호화 키 관리
    • 우리처럼 튜토리얼 수준이 아닌, 여러 명이 AWS를 활용해서 대규모 프로젝트를  수행할 수 있죠, 이때 명시적인 역할 분담을 돕는 서비스가 IAM이라고 할 수 있습니다. (1명인 경우에도 IAM은 필요합니다! root 처럼요.)
    • IAM을 사용해서 협업하는 사람들의 역할을 정하고, 각각 사용할 수 있는 서비스, 자원 등의 접근 권한을 부여합니다. 그래야 혹시 모를 자원의 낭비나, 실수로 인한 피해를 방지할 수 있죠!
    • policy (정책), user (사용자), role (역할)을 설정해서 사용할 수 있습니다.
  • Cloud9
    • 한 줄 요약 - 클라우드 기반 IDE (통합 개발 환경)
    • 코드의 작성, 실행 및 디버깅을 위한 IDE를 클라우드 (web) 상에서 다룰 수 있게 해주는 서비스입니다.
    • Cloud9 instance를 생성할 때, IDE를 실행할 EC2 instance도 함께 만들어집니다.
    • 터미널을 통한 data 다운로드 및 코드 실행 (application 배포까지)도 가능합니다.
  • S3 (Simple Storage Service)
    • 한 줄 요약 - 클라우드 기반 데이터 저장소
    • 우리가 프로젝트를 진행할 때, 필요한 데이터를 저장하고 검색할 수 있는 기능을 지원하는 서비스입니다.
    • 예를 들어, 아래에 있는 SageMaker의 jupyter notebook instance를 통해서 training dataset을 다운로드 할 때, 다운로드 받을 파일이 저장된 위치나, 다운로드한 파일을 저장할 S3 instance (bucket이라고도 합니다.) 의 주소?를 통해 접근할 수 있습니다.   
  • SageMaker (Sage: 현자)
    • 한 줄 요약 - Machine Learning 모델의 구축, 학습, 및 배포
    • Cloud9에서, Machine Learning과 관련된 기능을 따로 때왔다고 볼 수 있습니다.
    • 크게 jupyter notebook, inference (endpoint)로 구성되어있습니다.
    • 다양한 기능을 수행할 수 있는 GUI를 제공하지만, jupyter notebook instance에서 EDA, 모델 훈련, 모델 배포 등 거의 대부분의 기능을 수행할 수 있습니다.
      • EDA를 위한 기본적인 library가 설치되어있고, 터미널도 지원합니다.
    • 모델을 배포해서 새로운 data에 대해서 inference를 수행하기 위해서는 endpoint가 필요합니다.
      • 새로운 data를 학습된 모델에게 전달하고, 그 output을 다시 돌려주는 역할을 합니다.  
  • Lambda
    • 한 줄 요약 - 배포된 어플리케이션의 트래픽 자동 관리
    • 어플리케이션을 배포하는 걸로 끝이 아닙니다. Cloud9 instance를 통해 어플리케이션을 성공적으로 배포했다고 해도, Cloud9이 구동되는 EC2 instance의 사양은 동적으로 변하지 않고 그대로 입니다.
    • 하지만 우리가 배포한 어플리케이션을 사용하고자 하는 사용자들은 몰릴 때도 있고, 그렇지 않을 때도 있죠.
    • 따라서 트래픽이 변해도 안정적으로 어플리케이션을 서비스할 수 있도록, 부하를 관리해주는 load balancer 역할을 해주는 서비스가 Lambda 입니다.

이렇게 실습을 위해 필요한 AWS 서비스들에 대한 정리가 끝났습니다!

다음 글부터는 본격적인 실습에 들어가면서, 이 글에서 소개해드린 서비스들이 어떻게 서로 연결되어서, 하나의 어플리케이션을 배포할 수 있게 되는지 정리해보겠습니다.

글 읽어주셔서 감사합니다!

 

반응형

'[Machine Learning]' 카테고리의 다른 글

HNE - proximity preserving methods(2)  (0) 2021.09.27
HNE - proximity preserving methods(1)  (0) 2021.09.27
HNE (Heterogeneous Network Embedding) - 소개  (0) 2021.08.31
AWS (1) 시작하기  (0) 2021.04.27

+ Recent posts