사전 준비

가입 : https://www.kaggle.com/

 

 

 

머신러닝이란?

 

알고리즘이란?

  • 💡  머신러닝에 들어가기에 앞서 알고리즘이란 수학과 컴퓨터 과학, 언어학 또는 관련 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것, 계산을 실행하기 위한 단계적 절차
  •  

    • 문제 A. 시험 전 날 커피를 몇 잔 마시면, 다음 날 시험에서 몇 점을 받을 수 있을까?

선형, 비선형

    정확히 말하면 딥러닝은 머신러닝 방법 중 하나입니다. 머신러닝(ML, 기계학습)이라는 포괄적인 범위 안에 딥러닝(Deep learning 심층 학습)이 포함되어 있죠. 딥러닝은 인공 신경망을 기반으로 한 특수한 머신러닝 기법으로, 주로 자연어 처리, 이미지, 비디오 분석 같은 목적으로 사용됩니다. 딥러닝은 입력층과 출력층 사이에 은닉층을 두고 작동시킨다는 특징이 있습니다.

     연구 초반에는 MLP(Multi-Layer Perceptron)이라고 불렸으나 사람들의 유행을 타기 시작하면서 어감이 좋은 딥러닝으로 굳어지게 되었습니다. 요즘들어 우리가 말하는 인공지능과 머신러닝이라고 하는 것은, 여러 방법 중에서 월등하게 성능이 좋은 딥러닝을 말합니다. 최근 10년간 모든 학문 분야 중 가장 많은 연구가 이루어졌고 덕분에 파이썬이라는 언어가 덩달아 전성기를 맞게 되었죠.

 

인공지능과 머신러닝과 딥러닝의 관계

 

 

 

 

 

 

 

머신러닝 학습 방법

 

  • 💡 머신러닝은 크게 3가지로 분류해요. 바로 지도/비지도/강화 학습이죠. 각각의 개념과 차이점에 대해서 알아볼까요?

 

지도 학습(Supervised learning)

    정답을 알려주면서 학습시키는 방법을 말합니다. 위에서 배웠던 회귀와 분류 문제가 대표적인 지도 학습에 속합니다. 지도 학습은 기계에게 입력값과 출력값을 전부 보여주면서 학습시키죠. 단, 정답(출력값)이 없으면 이 방법으로 학습시킬 수 없습니다.

    여러분이 회사에서 머신러닝 엔지니어로 근무한다면 회사에서 필요로 하는 문제를 풀기 위해 많은 데이터를 필요로 할 겁니다. 근데 대부분 회사에는 데이터가 없거나 혹은 입력값에 해당하는 데이터는 있어도 출력값(정답)에 해당하는 데이터가 없는 경우가 비일비재합니다. 따라서 입력값에 정답을 하나씩 입력해주는 작업을 라벨링(Labeling, 레이블링) 또는 어노테이션(Annotation)이라고 합니다.

 

 

 

비지도 학습 (Unsupervised learning)

 

 

 

    정답을 알려주지 않고 군집화(Clustering)하는 방법을 말합니다. 비지도 학습은 그룹핑 알고리즘(Grouping algorithm)의 성격을 띄고 있습니다. 예를 들어 음악을 분석하여 장르를 구분하는 문제를 푼다고 가정해봅시다.

 

    ❓ 음원 파일을 분석하여 장르를 팝, 락, 클래식, 댄스로 나누는 문제

 

    우리가 가지고 있는 데이터에 입력값(음원파일)과 출력값(장르) 둘 다 존재한다면 우리는 지도 학습으로 이 문제를 풀 수 있지만 출력값에 해당하는 장르 데이터가 없을 때 비지도 학습 방법을 사용합니다. 비지도 학습 방법은 라벨(Label 또는 Class)이 없는 데이터를 가지고 문제를 풀어야 할 때 큰 힘을 발휘하죠!

 

    ☝ 우리에게는 수 백만개의 음원 파일이 있는데, 각 음원 파일에 대한 장르 데이터는 없어. 그러니까 기계에게 음원 파일을 들려주고 알아서 비슷한 것끼리 분류하게 해보자! 분류한 것에 나중에 명칭만 입력해 줄게.

비지도 학습의 종류

 

 

 

 

 

강화 학습(Reinforcement learning)

 

    주어진 데이터없이 실행과 오류를 반복하면서 학습하는 방법(알파고를 탄생시킨 머신러닝 방법!!)을 말합니다. 행동 심리학에서 나온 이론으로 분류할 수 있는 데이터가 존재하지 않거나, 데이터가 있어도 정답이 따로 정해져 있지 않고, 자신이 한 행동에 대해 보상(Reward)를 받으며 학습하는 것을 말합니다.

  • 강화학습의 개념
    • 에이전트(Agent)
    • 환경(Environment)
    • 상태(State)
    • 행동(Action)
    • 보상(Reward)

    게임을 예로 들면 게임의 규칙을 따로 입력하지 않고 자신(Agent)이 게임 룰(Environment)에서 현재 상태(State)에서 높은 점수(Reward)를 얻는 방법을 찾아가며 행동(Action)하는 학습 방법으로 특정 학습 횟수를 초과하면 높은 점수(Reward)를 획득할 수 있는 전략이 형성되게 됩니다. 단, 행동(Action)을 위한 행동 목록(방향키, 버튼)등은 사전에 정의가 되어야 합니다.

 

 

 

 

지도학습 회귀와 분류

  • 💡 머신러닝에서 문제를 풀 때, 해답을 내는 방법을 크게 회귀 또는 분류로 나눌 수 있습니다. 각각이 무엇을 의미하는지 배워봅시다!

 

회귀 (Regression)

 

    ❓ 사람의 얼굴 사진을 보고 몇 살인지 예측하는 문제

 

    모든 문제를 풀기 위해서는 먼저 입력값(Input)과 출력값(Output)을 정의해야 합니다.

    • 이 문제에서 입력값은 [얼굴 사진]이 되고 출력값은 [예측한 나이]가 됩니다.
    • 나이의 값은 연속적이죠. 이런 식으로 출력값이 연속적인 소수점으로 예측하게 하도록 푸는 방법을 회귀라고 합니다.
    • 이런 연속적인 문제는 보통 회귀로 푼다.
    • 머신러닝에서는 보통 출력값을 소수점(float)으로 표현합니다.

 

 

분류 (Classification)

 

    ❓ 대학교 시험 전 날 공부한 시간을 가지고 해당 과목의 이수 여부(Pass or fail)를 예측하는 문제

    • 이 문제는 pass 와  fail 중간이 연속적이지 않으므로 분류입니다.
    • 이런 분류 종류를 클래스(class)라고 합니다.
    • 입력값은 [공부한 시간] 그리고 출력값은 [이수 여부]가 됩니다.
    • 우리는 이수 여부를 0, 1 이라는 이진 클래스(Binary class)로 나눌 수 있습니다. 0이면 미이수(Fail), 1이면 이수(Pass) 이런식으로요. 이런 경우를 이진 분류(Binary classification)이라고 부릅니다

                * 이진 클래스의 클래스는 나눈 값을 뜻합니다.

 

 

    ❓ 대학교 시험 전 날 공부한 시간을 가지고 해당 과목의 성적(A, B, C, D, F)을 예측하는 문제

    • 이 방법을 다중 분류(Multi-class classification, Multi-label classification)라고 부릅니다.

 

 

회귀와 분류 둘 다 가능한 문제

 

    ❓ 사람의 얼굴 사진을 보고 몇 살인지 예측하는 문제 (분류)

    • 만약 나이를 범위로 쪼개어 생각하면 어떨까요?
나이 범위 클래스
0 - 9세 0
10 - 19세 1
...  
90 - 99세 9
100 - 109세 10

 

 

 

머신러닝 프로세스

    ① 데이터 수집  →  ② 데이터 전처리  →  ③ 모델 학습  →  ④ 모델 평가  →  ⑤ 모델 베포

 

 

'머신러닝' 카테고리의 다른 글

extra [머신러닝] 넘파이  (1) 2023.05.19
extra [머신러닝] 판다스  (0) 2023.05.18

Relational Database Service(RDS) 소개

 

RDS는 EC2 인스턴스 내에서 호스팅될 수 있지만, EC2를 사용하여 RDS를 생성할 필요는 없습니다. RDS는 관리형 데이터베이스 서비스로, Amazon RDS 서비스를 통해 데이터베이스 엔진을 선택하고 필요한 크기 및 용량을 선택하여 인프라를 자동으로 프로비저닝할 수 있습니다. 따라서 EC2 인스턴스 내에 직접 데이터베이스를 설치하고 구성하는 대신 RDS 서비스를 사용하여 데이터베이스를 생성, 관리 및 확장할 수 있습니다.

  • SQL을 쿼리언어로 사용하는 관계형DB를 위한 서비스
    • Postgres, MySQL, MariaDB, Oracle, Microsoft SQL service ...
  • EC2 상에 DB만들기보다 RDS가 나은점
    • RDS는 DB를 위한 인프라를 자동으로 구축(provisioning), 업데이트 
    • 지속적인 백업과 복구 기능 지원
    • 모니터 대시보드 지원
    • 성능향상을 위한 read replicas 지원Disaster Recovery를 위한 multi AZ 지원
    • 수평/수직 확장성 지원
    • EBS 백업 지원
  • SSH로 접속 불가능
  • 서비스 중간에 옮길 때 까다로움

 

 

 

Storage Auto Scaling

  • DB 용량의 한계치까지 왔을 때 자동으로 용량을 늘려준다 (수직 확장성)
  • 사용을 위해 Maximum Storage Threshold를 지정해줘야 한다.
  • 예측불가능한 트래픽이 있을때 유용하다!

 

 

  • wirte 보다 read양이 압도적으로 많다.
  • 본 DB에 데이터가 쌓이면 비동기적으로 복제DB를 만든다.
  • DB에서 read replica로 복사하는데 시간이 걸릴 수 있다.
  • read replica(Read용 복제품)는 오직 SELECT문만 가능하다. INSERT, UPDATE, DELETE는 불가능!

 

  • Multi AZ에 백업한다
  • 가용성을 높여준다
  • 확장성을 높여주지 않는다
  • 수동으로 설정할 필요가 없다
  • read replica도 multi az로 쓰일 수 있다

 

 

 

 

RDS 생성하기

※ 비용이 부담스럽다면 템플릿을 프리티어로 설정※

 

마스터 사용자, 마스터 암호 : DB 접속할 때 필요

 

> 데이터베이스 생성

 

 

 

 

 

 

 

 

 

 

 

  • 다중 AZ 배포로 변환 : 다운타임(내릴 필요) 없이 바로 다른 AZ에서 백업 할 수 있다.
  • 읽기 전용 복제본 생성 : read replica 생성
  • 스냅샷 생성, 스냅샷 마이그레이션

 

'aws' 카테고리의 다른 글

06. [aws] DNS, CNAME vs Alias  (0) 2023.05.23
05.5 [aws] Sqlectron  (0) 2023.05.23
04.5. [aws] SSL과 HTTPS  (0) 2023.05.14
04. [aws] ELB  (0) 2023.05.07
03. [aws] EBS(Elastic Block Store)  (0) 2023.05.07

SSL(Secure Sockets Layer)과 HTTPS

SSL 이란 ? 

    인터넷 상에서 정보를 안전하게 전송하기 위한 프로토콜입니다. SSL은 클라이언트와 서버 사이에 안전한 접속을 만들어주며, 전송되는 데이터를 암호화하여 정보의 안전성을 보장합니다.

TLS(Transport Layer Security)란? 

    SSL을 보완한 기술로 현재는 사실 SSL이 아니라 TLS 기술입니다. 그러나 모두가 아직까지 SSL이라고 부르고 있으며 이 SSL이 적용된 통신이 바로 HTTPS입니다.

 

 

 

비대칭키 

잠그는 키(암호화)와 여는 키(복호화) 두가지의 키를 가집니다.

※단점 : 리소스를 많이 소모합니다.

 

브라우저 요청 -> 서버가 공개 키가 포함된 인증서를 회신 -> 브라우저가 고유키를 생성할 때 둘 다 사용할 수 있도록 사전 마스터 키(양방향 대칭 키)를 생성 -> 대칭 키를 암호화 -> 서버로 송신

 

 

 

 

ALB에 SSL 적용하기

aws 구매한 도메인 등록하기 > 리스너 (SSL) > 인증서 선택 > 추가

 

'aws' 카테고리의 다른 글

05.5 [aws] Sqlectron  (0) 2023.05.23
05. [aws] RDS  (0) 2023.05.14
04. [aws] ELB  (0) 2023.05.07
03. [aws] EBS(Elastic Block Store)  (0) 2023.05.07
02. [aws] EC2  (0) 2023.05.07

Scalability(확장성) vs Availability(고가용성)

    Scalability는 시스템이 커지거나 작아질 수 있는 능력을 의미합니다. 이는 사용자 수, 데이터 양, 처리량 등이 증가할 때 시스템의 성능과 처리 능력을 유지하거나 향상시키는 것을 말합니다. 이를 위해서는 확장성 있는 시스템 디자인과 구현이 필요합니다.

1. 수평적 확장: AMI등을 이용해 인스턴스를 여러개 늘리는 것

2. 수직적 확장 : 인스턴스의 성능을 높이는 것

 

     Availability는 시스템이 정상적으로 작동하고 사용 가능한 상태를 유지하는 능력을 의미합니다. 즉, 사용자가 요청하는 서비스를 항상 이용 가능한 상태로 유지하는 것입니다. 이를 위해서는 시스템의 안정성을 높이고 장애 대응 능력을 강화하는 것이 중요합니다.

 

 

 

 

ELB(Elastic Load Balancer)

 

ELB는 AWS에서 제공하는 로드 밸런싱 서비스로, 다수의 EC2 인스턴스를 사용하여 트래픽을 분산시킵니다. 

  1. Application Load Balancer: OSI 모델 7계층에서 동작하며, HTTP/HTTPS 트래픽을 처리합니다. 또한, 컨테이너화된 애플리케이션과 연동하여 사용할 수 있습니다.
  2. Network Load Balancer: OSI 모델 4계층에서 동작하며, TCP/UDP 트래픽을 처리합니다. 높은 처리량을 필요로 하는 애플리케이션에 적합합니다.
  3. Classic Load Balancer: OSI 모델 4~7계층에서 동작하며, HTTP/HTTPS, TCP/UDP 트래픽을 처리합니다. 가장 오래된 형태의 로드 밸런서입니다.
  4. Gateway Load Balancer : 방화벽이랑 third party의 어플리케이션들을 사용할 때 사용합니다.

각각의 로드 밸런서는 다양한 기능과 구성을 제공하며, 선택적으로 사용할 수 있습니다. 대부분의 경우 Application Load Balancer나 Network Load Balancer를 사용하는 것이 좋습니다. 이러한 로드 밸런서는 고가용성과 확장성을 제공하므로, 인스턴스의 장애와 부하 분산에 대한 대응을 용이하게 해줍니다.

 

로드 밸런스 사용 이유

  • 요청 분산(EC2와 연동)
  • 단일 액세스 포인트 공개(Route 53과 연동)   ex) google.com에 사람 많다고 googles.com에 접속시키지 않음
  • 인스턴스에 대한 헬스 체크 (살아있는 인스턴스 확인)
  • HTTPS 제공(ACM과 연동)
  • 고가용성 제공
  • 공개 트래픽과 내부 트래픽 분리

 

 

 

 

 

Application Loadbalancer 특징

  • HTTP 요청을 여러 타깃 그룹에 나워줄 수 있습니다.
  • 한 머신안이라도 여러 어플리케이션(컨테이너)에 나눠 줄 수 있습니다.
  • HTTP/2와 웹소켓을 지원합니다.
  • HTTPS로 리다이렉트 지원합니다.
  • URL, hostname, query string, header에 기반해서 다른 타깃 그룹으로 보낼 수 있습니다.

 

 

 

ELB 생성하기

 

 

사용자 데이터에 아래 코드를 붙여넣기

 

#!/bin/bash
apt-get update
apt-get install -y nginx
cat <<EOF > /var/www/html/index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Nginx</title>
</head>
<body>
<h1>Hello World!</h1>
<p>AWS deployed by Me!</p>
<p>private ip is $(hostname -f)</p>
</body>
</html>
EOF
sudo systemctl start nginx

 

+) EC2 하나당 월별 750시간 가동이 기준입니다. 만일 EC2를 동시에 2개를 돌린다면 375시간만(15일) 무료가 됩니다.

 

 

퍼블릭 IPv4 주소에 접속하면 프라이빗 IPv4 주소가 보여지도록 설정했다.

두 개의 인스턴스는 서로 다른 프라이빗 IPv4 주소를 가진다.

 

 

 

로드 밸러서 이름 > 매핑 전부&nbsp; 체크 (사진은 체크 안 한 상태)
대상 그룹 이름 설정(mytargetgroup)

인스턴스 모두 체크 > 아래에 보류 중인 것으로 포함 > 대상 그룹 생성

 

로드 밸런스 생성

로드 밸런스 > DNS 이름 복사 > 주소창 붙여넣기

 

로드 밸런스가 작동하면서 ip 주소가 왔다갔다 합니다.

만약, 인스턴스가 고장등의 이유로 하나를 중지시키면 새로고침해도 하나의 주소만 접속됩니다.

 

 

 

 

로드 벨런스에게만 EC2 공개하기

  • 퍼블릭 IP 끊기

인바운드 규칙 - 위에서 만든 로드 밸런스 규칙

인스턴스 (2개 다)  >  작업  >  보안  >  보안 그룹 변경  >  (추가)ec2-alb (기존) 삭제

'aws' 카테고리의 다른 글

05. [aws] RDS  (0) 2023.05.14
04.5. [aws] SSL과 HTTPS  (0) 2023.05.14
03. [aws] EBS(Elastic Block Store)  (0) 2023.05.07
02. [aws] EC2  (0) 2023.05.07
01. [aws] IAM  (0) 2023.05.05

Elastic Block Store (EBS)

    Amazon EC2 인스턴스에 연결할 수 있는 블록 수준 스토리지 볼륨입니다. EBS 볼륨은 네트워크를 통해 Amazon EC2 인스턴스에 연결되므로 데이터 지속성, 스냅샷 백업 및 다른 인스턴스에서 쉽게 사용할 수 있습니다. EBS 볼륨은 데이터의 지속성을 보장하기 위해 AWS 내에서 복제 및 백업되므로 안정적이고 내결함성이 높은 스토리지 옵션입니다.

 

 

EBS 특징

  • EC2 인스턴스를 백업하기 위한 USB
  • 인스턴스를 종료 한 후에도 데이터를 유지
  • 한 번에 하나의 EC2에만 연결 가능
  • EC2는 여러 EBS를 연결 가능
  • 아무 인스턴스에나 연결 가능
  • 하나의 AZ에서만 사용 가능
  • EBS를 여러개 가지는 것 보다 EBS Snapshot으로 보관하는 것이 저렴

 

 

EBS 생성하기

 

 

EC2의 가용영역과 EBS의 가용영역이 일치하게 만들어 주어야 합니다.

추가 생성한 볼륨 기본 값은 종료 시 삭제 No이므로 인스턴스가 삭제될 때 함께 삭제되지 않습니다.

 

- 스냅샷 설정

 

스냅샷 복사 : 다른 지역으로 이동 가능

과금이 발생할 수 있으므로 사용하지 않을 시 분리하고 삭제 or 삭제하기를 해주셔야 합니다.

 

 

 

 

 

 

 

Amazon Machine Image(AMI)

  • EC2 인스턴스를 생성할 때 사용되며 운영 체제와 애플리케이션, 라이브러리 등이 포함되어 있습니다.
  • 이러한 이미지를 사용하면 개발자는 이미 구성된 환경을 더 쉽게 설정할 수 있습니다.
  • AMI는 Amazon에서 제공하는 것뿐만 아니라 개발자가 직접 생성할 수도 있습니다.
  • 개발자는 자신이 구성한 인스턴스를 이미지로 만들어서 사용할 수 있으며, 이를 다른 사람과 공유할 수도 있습니다.

 

 

 

 

 

EBS와 AMI의 차이

    EBS는 EC2 인스턴스에서 사용되는 스토리지 볼륨입니다. 이 볼륨은 인스턴스에 연결되어 인스턴스에 데이터를 저장하고 보존하는 데 사용됩니다. EBS는 인스턴스를 종료해도 볼륨에 저장된 데이터를 보존합니다.

    AMI는 EC2 인스턴스를 시작할 때 사용되는 이미지입니다. AMI는 이미 설치된 운영 체제와 애플리케이션을 포함하여 인스턴스를 구성하는 데 필요한 모든 정보를 포함합니다. 이를 통해 AMI를 사용하여 손쉽게 EC2 인스턴스를 시작하고, 중지하고, 삭제하고, 복제하고, 복원할 수 있습니다.

    AMI는 EBS 스냅샷을 사용하여 생성될 수 있습니다. EBS 스냅샷은 EBS 볼륨의 이미지입니다. AMI를 생성할 때 EBS 스냅샷을 사용하면 인스턴스를 시작할 때 EBS 볼륨이 생성되고, 해당 볼륨에는 이전 인스턴스와 동일한 데이터가 저장됩니다.

 

 

 

AMI 생성하기

 

 

> 이미지 이름 설정 > 이미지 생성

 

 

> 이름 > 키페어 > 보안그룹 설정

 

 

'aws' 카테고리의 다른 글

04.5. [aws] SSL과 HTTPS  (0) 2023.05.14
04. [aws] ELB  (0) 2023.05.07
02. [aws] EC2  (0) 2023.05.07
01. [aws] IAM  (0) 2023.05.05
00. [aws] AZ  (0) 2023.05.01

+ Recent posts