AWS에서 머신러닝 기반 구축

본업이 웹 엔지니어이기 때문에 기계 학습의 예의를 모르기 때문에 우선 AWS에서 기계 학습을 할 수 있는 환경을 구축하고 싶습니다.
머신러닝용 서버(이하 GPU 서버)는 전용 서브넷에 배치하기로 결정했습니다.
※ 페달을 납치당하면 의미가 없다는 의견도 있는데...
또 기계를 배우고 싶어서 GPU 서버에 Jupyter Notebook과 Tensor Flow를 추가할 계획이다.나는 먼저 안전 그룹의 포트를 설정하고 싶다.나중에 GPU 서버에 TensorFlow 또는 CUDA cuDNN을 설치하는 방법에 대해 설명합니다.

프로비저닝


기본 구성

  • GPU 서버: 1대(GPU 인스턴스)
  • 페달 서버: 1대(Bastian 인스턴스)
  • 클라우드 스토리지: 1개(S3-Bucket)...마운트 결정

  • ※ S3 설치는 여기

    생성 과정


    VPC 만들기

  • 공통 서브넷이 있는 VPC 선택
  • 이 옵션을 선택하면 VPC와 함께 Bastian-Subnet
  • 을 생성할 수 있습니다.
  • RouteTable도 VPC와 함께 제작
  • 이때 Pablic이 사용하는 인터넷 게이트웨이는attach
  • 에 의해
    IPv4CIDR 블록
    VPC 이름
    사용 가능한 영역
    10.0.0.0/16
    GPU-VPC
    us-east-1a
    이름 표시
    VPC
    사용 가능한 영역
    IPv4 CIDR
    Pablic/Private
    Bastian-Subnet
    GPU-VPC
    us-east-1a
    10.0.0.0/24
    Pablic
    ※ 좀 싸게 주고 싶어서 가용성 구역을 버지니아 북부로 변경했습니다.
    역시 SSH가 느려서 익숙해지면 신경 안 써요.

    서브넷 생성

  • GPU 서버용 Subnet 제작(※ GPU는 VPC 제작 시 동시 제작)
  • Pablic/Private는 RouteTable에서 Internet Gateway 설정을 정의하여 결정합니다
  • 이름 표시
    VPC
    사용 가능한 영역
    IPv4 CIDR
    Pablic/Private
    GPU-Subnet1
    GPU-VPC
    us-east-1a
    10.0.1.0/24
    Private
    ※ GPU용 서브넷 확장 가정하기

    인터넷 게이트웨이 확인 및 구성

  • VPC 제작 시 자동으로 제작되기 때문에 이번 할애
  • 라우팅 테이블 확인 및 구성


    Bastian-Subnet에 Route Table을 설치했기 때문에 인터넷에 바로 연결할 수 있습니다.

    보안 그룹 만들기


    GPU 서버 제작용과 페달 서버용 두 가지.다음과 같이 설정합니다.
    스프링보드 서버용 보안 그룹
    보안 그룹 이름
    VPC
    설명
    Bastian-Security
    GPU-VPC
    Use for Bastian
    인바운드 규칙(※ 아웃바운드 모두)
    유형
    포트 범위
    소스(유형)
    소스(IP/SG)
    설명
    SSH
    22
    사용자 정의
    접속 소스당 글로벌 IP
    SSH@
    TCP 규칙 사용자 정의
    6006
    사용자 정의
    접속 소스당 글로벌 IP
    TesnsorBoard
    TCP 규칙 사용자 정의
    19999
    사용자 정의
    접속 소스당 글로벌 IP
    JupyterNotebook
  • SSH 연결: 22
  • JuptyerNotebook: 19999(옵션 포트 번호)
  • TensorBoarf: 6006(기본 포트 번호)
  • GPU 서버의 보안 그룹
    보안 그룹 이름
    VPC
    설명
    GPU-Security
    GPU-VPC
    Use for GPU
    인바운드 규칙(※ 아웃바운드 모두)
    유형
    포트 범위
    소스(유형)
    소스(IP/SG)
    설명
    SSH
    22
    사용자 정의
    Bastian-Security
    SSH from Bastian
    TCP 사용자 정의
    6066
    사용자 정의
    Bastian-Security
    TesnsorBoard from Bastian
    SSH
    19999
    사용자 정의
    Bastian-Security
    JupyterNotebook from Bastian
  • SSH 연결: 22
  • JuptyerNotebook: 19999(페달 서버와 동일)
  • TensorBoarf: 6006(기본값)
  • 스프링보드 서버 만들기


  • STEP1AMI 선택
  • 빠른 시작 에서 Ubuntu Server 16.04를 선택합니다.

  • STEP2 인스턴스 유형 작성
  • GPU 인스턴스/p2.micro를 선택합니다.(비계만 사용하기 때문에 실례 크기는 t2.micro로 하면 된다)

  • STEP3 인스턴스 설정
  • 네트워크에서 제작된 VPC를 선택하고 서브넷에서 VPC와 동시에 제작된 공용 서브넷을 선택합니다.이제 IAM 역할을 선택하지 않습니다(나중에 설정할 수 있습니다).또한 삭제 보호의 유효성을 검사합니다.

  • STEP4 스토리지 추가
  • 스토리지 크기를 8GB로 변경할 필요가 없습니다.

  • 단계 5 태그 인스턴스
  • 나중에 구분할 수 있도록 표시합니다.여기서 키를 "Name", "Client", "Owner"세 개로 각각 임의의 값을 추가합니다.

  • STEP6 보안 그룹 설정
  • 기존 보안 그룹에서 서버를 밟는 보안 그룹인 Bastian-Security를 선택합니다.
    (연결 소스에 따라 Bastian-Security의 입구를 변경해야 함)

  • STEP7 확인
  • STEP6에서 확인과 제작을 선택하고 문제가 없으면 제작을 누르면 아래의 팝업이 뜨기 때문에 기존 키 쌍에서 선택하고 제작 실례를 누르면 실례를 만들기 시작한다.

    전자 IP 할당


    발판 서버가 외부에 연결되어 있기 때문에 전자 IP를 미리 분배하는 것이 비교적 수월할 수 있다.

    현재 페달 서버의 준비 작업이 이미 끝났다.

    GPU 서버 만들기


    기본적으로 페달 서버의 제작 방법과 같다.

  • STEP1AMI 선택
  • 빠른 시작 에서 Ubuntu Server 16.04를 선택합니다.
  • STEP2 인스턴스 유형 작성
  • 인스턴스 유형은 GPU 인스턴스/p2입니다.xlarge를 선택합니다.
    (NVIDIA Tesla K80GPU 탑재 p2.xlarge)

  • STEP3 인스턴스 설정
  • 네트워크에서 페달 서버와 동일한 VPC를 선택하고 서브넷은 GPU 서버로 제작된 GPU-Subnet1을 선택합니다.이제 IAM 역할을 선택하지 않습니다(나중에 설정할 수 있습니다).또한 삭제 보호의 유효성을 검사합니다.

  • STEP4 스토리지 추가
  • 스토리지 크기를 8GB에서 20GB로 변경합니다.(여유가 있다면 30GB)

  • 단계 5 태그 인스턴스
  • 나중에 구분할 수 있도록 표시합니다.여기서 키를 "Name", "Client", "Owner"세 개로 각각 임의의 값을 추가합니다.

  • STEP6 보안 그룹 설정
  • 기존 보안 그룹에서 GPU 서버의 보안 그룹 GPU-Security를 선택합니다.

  • STEP7 확인
  • STEP6에서 확인과 제작을 선택하고 문제가 없으면 제작을 누르면 아래의 팝업이 뜨기 때문에 기존 키 쌍에서 선택하고 제작 실례를 누르면 실례를 만들기 시작한다.
    이렇게 하면 GPU 서버와 페달 서버를 구축할 수 있고 이후에 SSH로 연결하면 완성된다.

    SSH 연결 GPU 서버


    페달 서버에서 GPU 서버에 간단하게 연결하기 위해 페달 서버의 아래 디렉터리에 키 파일을 저장합니다.
    /home/ubuntu/.ssh
    
    참조할 수 있는 권한을 변경합니다.
    $ chmod 600 GPU-Key.pem
    
    .ssh/config 파일에 다음과 같은 내용을 기록합니다.
    # GPU-Srver host
    # Hostnameは内部IP
    Host GPU
      Hostname 10.0.0.24
      User ubuntu
      IdentityFile /home/ubuntu/.ssh/GPU-Key.pem
    
    ※ 글로벌 IP를 통해 페달 서버와 연결되지만 GPU 서버는 동일한 VPC에 있기 때문에 내부 IP를 통해 연결됩니다.또한 내부 IP는 다시 시작해도 실례가 바뀌지 않기 때문에 conf 파일에 기록하는 데 문제가 없습니다.
    config 파일이 없을 때 다음 명령으로 만들기
    $ cd /home/ubuntu/.ssh
    $ touch config
    
    이 설정을 하면...
    $ ssh GPU
    
    이렇게 하면 페달 서버에서 간단하게 SSH를 GPU 서버에 연결할 수 있습니다.

    총결산


    이번에 먼저 환경을 만들어 보았지만 여기서부터 GPU 서버 SSH 연결까지 다양한 것들(CUDA, NVIDIA 드라이버, cuDNN 등)을 넣어야 하기 때문에 거기가 심각합니다.
    또한 여기에 GPU 실례를 개인 서브넷에 두기 때문에 실제로 GPU 서버에 여러 가지 물건을 설치할 때 루트 테이블을 공공 서브넷으로 설정하는 것이 편리하다.

    좋은 웹페이지 즐겨찾기