ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Model Serving
    CS 공부/AI 2023. 4. 27. 02:18

    Model Serving


    • Serving: 머신러닝 모델을 개발하고, 현실 세계에서 사용할 수 있게 만드는 행위 (서비스화)
      • Batch Serving: 많은 양의 데이터를 일정 주기로 서빙
      • Online Serving: 한번에 하나씩 실시간으로 서빙
      • 클라이언트(모바일 기기, IoT 기기 등)에서 Edge Serving도 존재

     

    • Serving과 Inference 차이
      • Serving: 모델을 웹/앱 서비스에 배포하는 과정, 모델 활용 방식, 모델 서비스화 관점
      • Inference: 모델에 데이터가 제공되어 예측하는 경우, 모델 사용 관점

     

     

    Online Serving


    기본 용어

    • Client가 Serving 해주는 사람(Server)에게 Request 보내면 Server가 Client에게 Response 보냄
    • Web 서버: HTTP를 통해 웹에서 요청하는 HTML 문서나 오브젝트를 전송
    • Machine Learning 서버: Client의 다양한 요청을 처리해주는 역할 (데이터 전처리, 모델 기반 예측 등),
      • 데이터(Input)을 제공하며 예측해달라고 request하면 모델을 사용해 예측 값을 반환(response)하는 서버

     

    • API: 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
      • 특정 서비스에서 해당 기능을 사용할 수 있도록 함: 기상청 API, 지도 API
      • 라이브러리 함수도 API로 표현 가능 (Pandas, Tensorflow, Pytorch)

     

    Online Serving

    • 요청이 올 때마다 실시간으로 예측
    • 클라이언트에서 ML 서버에 HTTP 요청하고, ML 서버에서 예측한 후 예측 값을 반환
    • 단일 데이터를 받아 실시간으로 예측하는 예제
      • 기계 고장 예측 모델: 기계 부품이 n분 안에 고장날지 예측
      • 음식 배달 소요 시간 예측
    • ML 서버에서 데이터 전처리를 포함하는 경우도 있고 아닌 경우도 있음

     

    • Online Serving 구현 방식
      1. 직접 API 웹 서버 개발 : Flask, FastAPI 등 사용하여 서버 구축
      2. 클라우드 서비스 활용: AWS SageMaker, GCP의 Vertex AI
        • 장점: 직접 구축해야되는 것들도 Pytorch 사용하듯 학습 코드만 제공하면 API 서버가 만들어짐
        • 단점: 클라우드 서비스가 익숙해야함, 비용 문제
      3. Serving 라이브러리 활용: tensorflow serving, torch serve, MLFlosw, BentoML 등
        • 단점: 서버에 대한 이해가 충분해야함, 다양한 방식으로 개발할 수 있지만 추상화된 패턴을 가질 수 있음

     

    • Serving 추천 방식 (서버 프로그래밍 먼저 해보고 Serving 라이브러리 학습 추천)
      1. 비용이 괜찮으면 프로토타입 모델을 클라우드 서비스를 활용해 배포
      2. FastAPI 활용해 서버 개발
      3. Serving 라이브러리를 활용해 개발

     

    Online Serving에서 고려할 부분

    • Dependency가 아주 중요!! (python 버전, 패키지 버전 등)
    • 재현 가능해야함
    • 지연시간(Latency)를 최소화 해야함
      • Latency: 하나의 예측을 요청하고 반환값을 받는데까지 걸리는 시간

     

    1. Input 데이터를 기반으로 데이터베이스에 있는 데이터를 추출해서 모델을 예측해야 하는 경우
      • 데이터 추출을 위한쿼리 실행, 결과 받는 시간이 소요
    2. 모델이 수행하는 연산
      •  많은 연산은 오래 걸림. 모델 경량화 작업이 필요
    3. 결과 값에 대한 보정이 필요한 경우
      • 유효하지 않은 예측값이 반환되면 결과를 보정하는 코드가 필요

     

     

    Batch Serving


    Workflow Scheduler, 작업을 특정 기간 단위에 실행

     

    • 주기적으로 학습을 하거나 예측을 하는 경우 (한번에 많은 예측을 실행)
      • 추천 시스템
      • 매장별 제품 수요 예측
      • 스포티파이의 예측 알고리즘

     

    •  실시간이 필요없는 대부분의 방식에서 활용 가능
    • 특정 시간에 반복해서 실행
    • 관련 라이브러리가 따로 존재하지 않음, 함수 단위를 주기적으로 실행
      • 10시에 python main.py
      • 11시에 python main.py

     

    • Airflow, Cron Job 등으로 스케쥴링 작업(Workflow Scheduler)
    • 장점: online serving보다 구현이 수월하며 간단함, 한번에 많은 데이터 처리해서 latency 문제가 없음
    • 단점: Cold Start 문제(오늘 새로 생긴 컨텐츠 추천 불가)

     

    Online Serving vs Batch Serving


    Online Serving Batch Serving
    데이터 하나씩 요청하는 경우 여러 데이터가 한번에 처리되는 경우
    API 형태로 바로 결과를 반환해야 하는 경우 1시간에 한번씩 예측해도 되는 경우
    서버와 통신이 필요한 경우 예측해도 활용이 되지 않은 경우

    Batch Serving으로 모델 운영하면서 점점 Online Serving 형태로 변환

     

     

    Further Question

    1. Rules of Machine Learning: Best Practices for ML Engineering 문서 읽고 정리하기

     

    Rules of Machine Learning: Best Practices for ML Engineering 정리

    Google의 Research Scientist인 Martin Zinkevich가 작성하신 Rules of Machine Learning: Best Practices for ML Engineering 나름대로 번역하고 정리한 글입니다 Machine Learning Guides에 언어를 한국어로 조정하면 번역본이 나

    zzsza.github.io

    2. Online Serving / Batch Serving 기업들의 Use Case 찾아서 정리하기

    'CS 공부 > AI' 카테고리의 다른 글

    [Object Detection] 2 stage Detectors  (0) 2023.05.03
    [Object Detection] Overview  (0) 2023.05.02
    MLOps 개론  (0) 2023.04.27
    Linux 쉘 스크립트  (0) 2023.04.25
    파이썬 버전 관리  (0) 2023.04.25
Designed by Tistory.