[부스트캠프 AI Tech] 5주차 Day 2

Mattaaa·2022년 2월 15일
0

[부스트캠프 AI Tech]

목록 보기
17/23

오늘 학습 내용


1. Docker

2. MLflow




1. Docker

  • 가상화란 개발을 진행 한 후 배포하는 단계에 있어, 동일한 실행 환경을 보장하기 위해서 사용하는 개념이다.

  • 주로 호스트 머신위에 OS를 포함한 가상화 소프트웨어를 두는 VM(Virtual Machine) 방식을 사용한다.

  • VM의 무거움을 덜어주면서, 좀더 경량화된 프로세서의 개념을 적용시킨 Container 기법을 사용하면, 빠르고 가볍게 가상화 구현이 가능하다.

  • 이러한 Container 기술을 쉽게 사용할 수 있도록 개발된 도구가 Docker이다.


Docker Image VS Docker Contianer

  • Docker Image
    Container를 실행할 때 사용할 수 있는 "Template"
    Read Only

  • Docker Container
    Docker Image를 활용해 실행된 Instance
    Writable


  • 다른 사람이 만든 Docker Image를 이용하여, 어느 환경에서나 동일하게 실행할 수 있다.

  • Container Registry 원격 저장소를 이용하여, Image를 공유하고 사용할 수 있음.


Basic Command

  • docker pull "Image name : Tag"
    : 필요한 Image 다운로드
  • docker images
    : 다운받은 이미지 List 확인
  • docker run "이미지 이름:태그"
    : 이미지를 기반으로 컨테이너 생성
  • docker ps
    : 실행중인 컨테이너 목록 확인
  • docker exec -it "컨테이너 이름(ID)" /bin/bash
    : 컨테이너에 진입
  • docker stop "컨테이너 이름(ID)"
    : 실행중인 컨테이너를 중지
  • docker rm "컨테이너 이름(ID)"
    : 중지된 컨테이너 삭제

Docker Image 만들기

  1. pip freeze > requirements.txt 명령어를 통해 사용 라이브러리 list 저장
  1. Dockerfile 작성 및 생성
    FROM 으로 베이스 Image 지정
    COPY 로 로컬 내 디렉토리 및 파일을 컨테이너 내부로 복사
    WORKDIR로 RUN, CMD 등을 실행할 컨테이너 내 디렉토리 지정
    CMD로 이미지 실행 시 바로 실행할 명령어를 지정
  1. docker build "Dockerfile 경로" 명령어를 통해 이미지 Build
  1. docker run "이미지 이름:태그" 명령어를 통해 실행



2. MLflow

  • 과거 ML 시, 사용한 Parameter, Metric, Weigth File을 따로 기록하며 저장하고, 이로 인해 생긴 메모리 초과로 OOM 에러가 자주 발생 하였다.

  • 또한, Trackig, 코드 재현, 패키징 및 배포가 어렵고 모델을 Management 하기 위한 저장소가 없었기에 많이 불편했다.

  • MLflow 는 이런 문제점들을 해결하여, ML 실험 및 배포를 쉽게 관리할 수 있는 오픈소스이다.


MLflow의 핵심 기능

  • Experiment Management & Tracking
    1. ML 관련 실험들을 관리하고, 각 내용들을 기록 및 저장할 수 있음
    2. 여러 사람이 하나의 MLflow 서버 위에서 각자 자신의 실험을 만들고 공유 가능
    3. 각 실험에 사용한 소스 코드, HyperParameter, Meteric, Artifact 등을 저장
  • Model Registry
    1. MLflow로 실행한 모델을 Model Registry에 등록 가능
    2. Model Registry에 모델이 저장될 때마다 자동으로 버전 갱신
  • Model Serving
    1. Model Registry에 등록한 모델을 REST API 형태로 Serving 가능
    2. 직접 Docker Image를 만들지 않아도 생성 가능

MLflow Component

  • MLflow Tracking
    1. ML 코드 실행, Logging을 위한 API
    2. Tracking 을 이용하여, 결과를 Local 및 Server에 저장 후 여러 결과와 비교 가능
  • MLflow Project
    1. 머신러닝 코드를 재사용 가능하고 재현 가능한 형태로 포장
    2. 패키징을 위한 표준이다
    3. 소스 코드가 저장된 폴더라고 볼 수 있다.
  • MLflow Model
    1. 모델은 모델 파일과 코드로 저장
    2. 다양한 플랫폼에서 배포가능토록 여러 도구 제공
  • MLflow Registry
    1. MLflow Model의 전체 Lifecycle에서 사용할 수 있는 중앙 모델 저장소

  • MLflow 에서는 Experiment가 가장 기본 단위이다.

  • Experiment에서는 정해진 Metric(RMSE, MSE, MAE, Acc)으로 모델을 평가하고, 하나의 Experiment는 여러 Run(실행)을 가진다.

  • Run에서 Log 하는 것 들

    1. Source : 실행한 Project 이름
    2. Version : 실행 Hash
    3. Start, End time
    4. Parameters
    5. Metrics
    6. Tags
    7. Artifacts (Image, Pickle 객체 등)
  • MLProject는 MLflow를 사용한 코드의 프로젝트 Meta 정보를 저장
    프로젝트를 어떤 환경에서 어떻게 실행시킬지 정의

  • autolog 를 이용하여, 코드 작성 시 매번 Parameter를 명시하지 않아도 된다.
    (모든 프레임워크에서 사용가능 한 것은 아님, 대표적으로 pytorch.nn.Module 사용 불가)

  • Tracking 과 Artifact Store Step 에서 외부 DB 서버와 스토리지 이용이 가능하다
    (DB : CloudSQL, Aurora RDS / Storage : GCS, S3)

0개의 댓글