네이버 AI 부스트캠프 4기 : AI 서비스 기초 1

nask·2022년 11월 9일

AI 서비스 개발 기초 1강 : 강의 소개

강의 소개

MLOps 개론 : 각종 개발 지식을 총 망라한 강의

강의 범위

1) Prototype(Voila, Streamlit)

2) Linux

3) Cloud

4) CI/CD

5) Docker

6) Logging

7) MLflow

8) BentoML

9) Airflow

10) 머신러닝 디자인 아키텍처

체크포인트

  • 아직 최고라고 할 만한 라이브러리가 없고, 특정 라이브러리를 깊게 공부해도 나중에 거의 안 쓰일 수도 있음

  • 라이브러리에 종속되지 말고, 그 라이브러리가 왜? 무슨 문제를 해결하기 위해 등장했는지에 집중

  • CV, NLP 등 특정 영역에서 특별히 어떤 부분이 더 불편할 것인지, 추가로 어떤 걸 더 할 수 있을지 고민

소스코드 : https://github.com/zzsza/Boostcamp-AI-Tech-ㅍProduct-Serving

추천 학습 방식

  • 강의는 1회만 수강하고 흐름 위주로 키워드 필기, 이후 지속적으로 반추

  • 암기가 아닌 스토리와 기술의 등장 배경과 why를 고민

  • 추가 자료와 등 다양한 자료를 꾸준히 습득

  • 복습 시 강의 자료를 최대한 활용하고, 복습 후에는 자료를 보지 않고 강의의 큰 뼈대를 스스로 떠올려보기

  • 뼈대가 존재하지 않는 강의는 프레임워크 사용 방법을 충분히 경험
    (+ 시간 여유되면 오픈소스 코드 분석 : https://zzsza.github.io/development/2020/07/19/opensource-analysis/)

  • 강의 내용을 자신의 언어로 정리 : 강의와 동일한 포멧으로만 정리하기 보다 why을 생각하며 더 나은 방식으로 정리하기

  • 수평학습 이후 수직 확장 추천


AI 서비스 개발 기초 2강 : MLOps 개론

1. MLOps 개론

모델 개발 프로세스

1) Research
문제정의 -> EDA -> Feature Engineering -> Train -> Predict

  • 보통 자신의 컴퓨터나 서버 인스턴스 등에서 고정된 데이터를 사용해 학습함

  • 학습된 모델을 앱, 웹 서비스에서 사용할 수 있도록 Real World, Production 환경에 모델을 배포해야 함

2) Production
문제정의 -> EDA -> Feature Engineering -> Train -> Predict -> Deploy

  • 모델이 배포되었다고 가정

  • 모델의 결과값이 이상한 경우, 원인 파악해 조치 필요

  • 모델 성능이 계속 변경되기 때문에 이를 트랙킹해야 하는데, 비정형 데이터에서는 어려울 수 있음

  • 그 외에도 다양한 이슈 존재

MLOps란?

  • ML + Ops(Operations)

  • 머신러닝 모델을 운영하면서 반복적으로 필요한 업무를 자동화시키는 과정

  • 머신러닝 엔지니어링 + 데이터 엔지니어링 + 클라우드 + 인프라

  • 머신러닝 모델 개발(ML Dev)과 머신러닝 모델 운영(Ops)에서 사용되는 문제, 반복을 최소화하고 비즈니스 가치를 창출하는 것이 목표

  • 모델링에 집중할 수 있도록 관련된 인프라를 만들고, 자동으로 운영되도록 만드는 일

  • Research의 모델을 Production 환경에 배포하기 위해서는 모델이 재현 가능해야하고, 현실의 Risky 환경에서 잘 버텨야 함

  • MLOps의 목표는 빠른 시간 내에 가장 적은 위험을 부담하며 아이디어 단계부터 Production 단계까지 ML 프로젝트를 진행할 수 있도록 기술적 마찰을 줄이는 것

요즘 MlOps

  • 춘추 전국 시대

  • 클라우드에서도 MlOps 시장 점유를 목표로 함

  • 학습 방법 : MLOps의 각 Component에서 해결하려는 문제와 해결방식을 학습

MLOps Component

  • 타코 사업에 비유

Infra

요리 환경


  • Research 환경

  • 매장
    Production 환경(Server 인프라)

요리도구

  • 로컬/클라우드 GPU(GPU 인프라)

Experiment, model management

요리의 시행착오

  • 식재료 -> 요리과정 -> 타코
    data / feature -> train -> model

  • 레시피
    parameter, model architecture

  • 요리의 부산물
    model artifact, image

  • 메뉴의 다양화
    여러 모델 운영

Serving

타코 서빙 방식

  • 정기 배송
    batch serving : 많은 데이터를 일정 주기로 한꺼번에 예측

  • 일반 판매
    online serving : 실시간 예측으로, 병목이 없고 확장 가능해야 함

Feature store

음식 간 중복되는 식재료를 저장하는 냉장고

Data Validation

식재료가 전과 비슷한지 확인

  • feature의 분포 확인

  • Performance decay, Data Drift, Model Drift, Concept Drift

Continuous Training

신선한 재료로 다시 요리

1) 신선한 재료 도착 시(새로운 데이터 들어올 시)
2) 일정 기간마다
3) 매출 줄어든 경우(Metric 기반)
4) 고객 요청 시

Monitoring

레스토랑 매출, 시간대 별 손님 수 기록

AutoML

간편하게 에어프라이어 사용

정리

  • 본 강의는 인프라(서버, GPU)와, Serving에 중점

  • 비즈니스/모델 운영 상황에 따라 MLOps의 우선 순위가 달라지며, 모든 요소가 항상 존재하는 것도 아님

  • 초기부터 MLOps을 하는 것보다 MVP(Minimal Value Product)로 시작해서 반복되는 요소가 많고 운영 리소스가 많이 소요될 때 하나씩 구축하는 방식 활용

Further Question

1. MLOps가 필요한 이유 이해하기

: 실험실에서 좋은 연구를 해도 실제 응용을 할 수 없으면 의미가 없듯이, 모델을 production 환경에서 serving하는 과정이 중요하다. 이때 Machine learnig cycle 전 과정을 효율화, 자동화하기 위해 MLOps가 필요하다.

2. MLOps의 각 Component에 대해 이해하기(왜 이런 Component가 생겼는가?)

1) Infra

모델을 serving하기 위해서는 결국 서버가 필요하고, 주어진 작업을 처리하기 위해 로컬이든 클라우드든 GPU가 필요하다

2) Experiment, model management

여러 개의 모델들을 여러 세팅에서 실험하고 필요할 경우 실험 정보를 저장해서 다음에 편하게 불러와 사용한다.

3) Serving

만들어진 모델을 serving하는데, 주어진 상황에 맞게 batch serving이나 online serving 중에서 선택해야 한다.

4) Feature store

반복적으로 사용되는 데이터를 미리 저장해두어 효율성을 높인다.

5) Data validation

시간의 흐름에 따라 feature의 분포가 처음과 비슷한지 확인해 달라졌을 경우 업데이트하기 위해 확인 과정이 필요하다.

6) Monitoring

모델의 성능을 주기적으로 파악하여 성능 하락 시 조치를 취할 수 있다.

7) Continuous Training

Data validation을 통해 데이터 분포의 변화가 감지된 경우, 혹은 Monitoring을 통해 특정 메트릭이 일정 영역을 벗어난 경우에 새로운 데이터를 가지고 재학습을 시켜줘야 현실 세계의 흐름에 맞는 모델을 유지할 수 있다.

8) AutoML

복잡한 사이클을 거치지 않고 보다 편하게 ML을 이용할 수 있음

3. MLOps 관련된 자료, 논문 읽어보며 강의 내용 외에 어떤 부분이 있는지 파악해보기

추후 공부하고 정리할 예정

4. MLOps Component 중 내가 매력적으로 생각하는 TOP3을 정해보고 왜 그렇게 생각했는지 작성해보기

1) Data validation
데이터 분포의 변화를 파악하는 과정이 재미있을 것 같다.

2) Continuous Training
힘들게 설계한 모델을 고정된 데이터로 한번 사용하고 버리는 것이 아니라, 재학습을 통해 재사용이 가능하게 만들 수 있다는 점이 흥미롭다.

3) AutoML
아직 완벽하지는 않겠지만, 머신러닝 자체를 자동화한다는 점이 매력적이다.

0개의 댓글