Programmers 인공지능 데브코스 - Week 4 Day 2

donchanee·2020년 12월 22일
0

😃[4주차 - Day2]😃

Cloud Computing 운용 모델

  • 프라이빗 클라우드

  • 퍼블릭 클라우드

  • 하이브리드 클라우드
    퍼블릭의 경제성과 프라이빗의 보안성을 모두 고려함.

Cloud Service 제공 모델

  • IaaS
  • PaaS
  • SaaS

클라우드 서비스가 제공 방식에 따라 3가지 형태로 구분됩니다.

SaaS는 소프트웨어까지 전부 제공받아서 사용하는 형태입니다. (MS365와 비슷한 형태) 인공지능 서비스들이 SaaS 형태로 최근 가장 많이 활용되고 있습니다.

피자로 예를 들어보자면, On-Premises는 집에서 재료를 전부 구매하고, 전기 가스 등 피자를 먹기 위해 전부 준비하는 형태이고

IaaS는 밀키트를 제공받아 집에서 굽기만 하고 세팅만 하여 먹는 것으로 비유할 수 있습니다.

PaaS는 피자를 배달받아 식탁에 음료수만 준비하여 먹을 수 있게 한 것으로 비유할 수 있고,

마지막으로 SaaS는 외식하러 나가서, 모든 것을 제공받는 경우를 비유할 수 있습니다. 하지만 이 경우 모든 것이 이미 결정되어 있기에 내가 원하는대로 선별적으로 사용하기 어렵다는 단점이 있습니다.

대표적으로 위의 4가지 서비스가 클라우드 서비스 제공자로 알려져 있습니다.

AWS EC2 사용하기

위와같은 Deep learning AMI를 사용하려고 합니다.

EC2 설정으로 들어가, AMI를 선택하고 나면 인스턴스 유형을 선택해야합니다.

우리는 프리티어에 해당하는 t2.micro, 혹은 가장 저렴한 c5.large 인스턴스를 사용하겠습니다. 하지만 이 AMI는 프리티어에 해당하지 않는것 같습니다.

그 후, 6단계에서, 새로운 포트를 생성하여 원격으로 API 서버에 접근/호출할 수 있도록 포트범위 5000, 소스 0.0.0.0/0으로 새로 설정합니다.

그 후, 시작을 누르면 키페어를 생성하라고 나오는데, 이 키가 있어야 접속을 할 수 있기 때문에 꼭 다운로드 받아 안전한 곳에 보관하여야 합니다.

탄력적 IP 설정

서버를 껐다가 켜도 기존의 IP를 유지하기 위해 탄력적 IP 이용을 활용합니다! 하지만 추후 탄력적 주소를 설정해보겠습니다.

PuTTY

요거를 Linux환경이 아니어서 PuTTY로 진행했습니다.

puttygen 으로 pem 파일을 ppk 파일로 변환시키고,
putty에서 이 파일을 사용하여 EC2 서버에 접속하였습니다.

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

윈도우의 경우 위의 링크에 접속하셔서

putty.exe 와 puttygen.exe를 다운로드 받으신 뒤, puttygen.exe를 먼저 실행시켜봅니다.

import key 부분을 활용하여, 기존에 저장해두었던 pem 파일을 ppk 파일로 변환합니다. 파일을 불러오게 되면, 밑 부분의

Save private key 버튼이 활성화되고, 이를 통해 저장하면 ppk 파일을 얻을 수 있습니다.

얻게되었다면, putty.exe를 실행시켜

Host Name 부분에 ubuntu로 하셨다면, ubuntu@[public_ip] 의 형태로 입력합니다.

Amazon Linux AMI의 경우 ec2-user@[public_ip]를 입력하시면 됩니다. 딥러닝 AMI는 우분투와 Amazon Linux 두 개를 현재 찾을 수 있습니다.

그 후, Connection - SSH - Auth에 가시면,

여기서 Browse 버튼을 눌러 이전에 저장해두었던, ppk 파일을 불러와 Open 버튼을 누릅니다.

성공적으로 접속이 된 것을 확인하실 수 있습니다. 밑의 CLI 환경에서 lscpu, conda env list 등의 명령어를 작성해보며 설치된 EC2 서버에 대해 확인할 수 있습니다.

VSCode로 똑같이 하기.

사실 VSCode를 처음부터 사용한다면, 위의 Putty 과정을 거칠 필요가 없긴 합니다. 하지만 CMD에서 사용해보고자 한다면 좋은 시도였겠죠?

OpenSSH를 사용하는 방법도 있지만 Putty가 더 간단하다고 생각합니다. 맥북이었다면 이런 일을 안해도 됐을텐데..

VSCode의 익스텐션 부분에서

Remote - SSH 와, Remote Development 를 설치해줍니다. 두개만 설치하면 나머지는 알아서 설치가 됩니다.

설치가 끝나면 왼쪽하단에 요런 화살표 모양의 버튼이 생겼을 텐데, 이를 누르면

여기에서 Remote-SSH: Connect 둘 중 하나를 선택합니다.
선택해서 Add New SSH Host... 를 클릭하면,

이렇게 표시가 되고, 표시가 된 창에

ssh -i "[.pem 위치]" ubuntu@[public_ip 주소]

# ssh -i "~/Documents/kdt/kdt.pem" ubuntu@

형태로 작성을 하고, 엔터를 누르면 Host added! 라는 창이 오른쪽 밑에 뜬다면, Connect를 눌러 접속하시면 됩니다. 연결이 잘 되었다면, 왼쪽 하단에 아이피가 생성되어있는 것을 알 수 있습니다.

API to serve ML model

Github Code

위 코드에, ML 및 DL 코드가 첨부되어 있고, 핸들러를 만들었습니다.
너무 어려워서 아직 이해가 조금 더 필요할 것 같습니다.

일단, Flask를 사용해서 API를 구축해보는 경험이었습니다.

model에서 전처리, 후처리를 거쳐 감성에 대한 판단 및 예측을 수행한 뒤, 그 결과 값을 API에 대한 응답으로 돌려주는 방법이었습니다.

현업에서 쓰일 수 있는 API 작동 방식 및 어떻게 ML 엔지니어가 일을 하게 될지 추측해볼 수 있는 아주 좋은 강의였습니다.

import requests
url = "http://18.224.170.3:5000/predict"
data = {"text":["아주 흥미롭고 재미있는 영화였어"], 'use_fast': False}
response = requests.post(url, json=data)

이런 방식으로 Request를 보내봤찌만

ConnectionRefusedError: [WinError 10061] 대상 컴퓨터에서 연결을 거부했으므로 연결하지 못했습니다

돌아오는건 에러... 어렵구만

0개의 댓글