Serving 이란?
Serving이란 머신러닝 모델을 실제 운영 환경(production)에서 사용할 수 있도록 배포하는 작업을 의미한다. 이는 모델이 연구 및 개발 환경에서 성공적으로 학습된 이후, 실제 서비스에서 활용되도록 하는 과정이다. Serving의 주요 목표는 모델을 서비스화하여 실시간으로 데이터를 처리하거나 예측 결과를 제공하는 것이다.
즉, Input 값을 Model에게 주입하면 모델이 Output 변환하여 반환 하는 것을 말한다.
Serving 종류
1. Batch Serving
Batch Serving은 데이터를*일정한 묶음 단위(batch)로 처리하여 결과를 제공하는 방식이다. 특정 시간 간격으로 데이터가 수집된 후, 한 번에 예측 작업을 수행한다.
일상적인 예시로는,
- 하루 동안의 주문 데이터를 수집하고 매일 저녁 8시에 서빙받는 정기 배송 서비스
- 많은 양의 데이터를 일정 주기로 처리하여 결과를 제공하는 시스템 (예: 택배, 음식 배달 시스템)
2. Online Serving
Online Serving은 실시간으로 모델이 데이터를 받아 결과를 반환하는 방식이다. 클라이언트가 요청(API Requset)할 때마다 개별적으로 예측을 수행한다.
일상적인 예시로는,
- 커피숍에서 "아이스 커피 주세요"라는 주문을 받고 즉시 커피를 만들어 제공하는 방식
- 주문이 들어오자마자 하나씩 포장하여 배송하는 경우.
그렇다면 어떤 Serving 을 사용해야 할까?
Serving 방식의 선택에는 정해진 답이 없다. 대신, 문제의 성격과 조건을 분석하여 적합한 방식을 결정해야 한다.
고려 요소
- 문제 정의: 실시간 응답이 필요한가, 아니면 일정 주기마다 처리해도 충분한가?
- 데이터 특성: 데이터의 양과 생성 주기
- 제약 조건: 서비스의 성능 요구사항(응답 속도, 처리량), 비용, 인프라
- 개발 리소스: 개발 인력의 역량과 팀 규모
- 확장성 요구: 예상되는 사용량 증가를 어떻게 처리할 것인가?
결정 방법
- 실시간 처리가 필수적이라면 Online Serving.
- 대량의 데이터를 한꺼번에 처리하거나 시간에 덜 민감한 작업이라면 Batch Serving.
- 혼합된 요구사항이 있는 경우, 두 방식을 결합한 하이브리드 방식도 가능하다.
ML에서 단순한 Serving 패턴
우선 패턴이 무엇인가 부터 살펴보자.
패턴이란 되풀이되는 사건이나 물체를 말한다.
예를 들어, 요리 레시피는 맛이 검증된 방법으로 동일한 결과를 반복적으로 재현할 수 있는 패턴이다.
마찬가지로, 소프트웨어와 머신러닝 개발에서도 패턴은 문제 해결을 위한 템플릿 역할을 한다.
1. 소프트웨어에서의 패턴 => 디자인 패턴
소프트웨어 개발에서 디자인 패턴은 단순히 코드의 외관만이 아니라, 소프트웨어 구조, 구성 요소 간의 관계, 시스템 전반의 행동 방식을 포함한다.
즉, 소프트웨어를 어떻게 구성하고, 어떻게 상호 작용할지를 담은 내용을 말한다
디자인 패턴 (템플릿을 말하는 것)
- 반복적으로 등장하는 문제를 해결하기 위해 정립된 방법론
- 소프트웨어를 어떻게 구성하고 상호작용할지에 대한 지침
- 주로 객체 지향 프로그래밍에서 사용되지만, 다른 프로그래밍 패러다임에서도 활용 가능
디자인 패턴의 특징
- 재사용성: 코드와 설계의 재사용성을 높인다.
- 가독성: 코드 구조를 명확히 하여 이해하기 쉽게 만든다.
- 확장성: 새로운 기능 추가 시 유연하게 대응할 수 있다.
- 커뮤니케이션 도구: 팀 간의 효과적인 소통을 지원한다.
- 예: "이번 서빙은 batch serving 패턴을 따릅시다."
2. ML 특수성으로 별도의 디자인 패턴 발전
머신러닝은 소프트웨어 개발과는 다른 특수성을 가지며, 이에 맞는 별도의 디자인 패턴이 존재한다.
- 일반적인 소프트웨어 개발 : Only Code
- 머신러닝 개발의 특수성 : Data, Model, Code
위와 같이 머신러닝은 코드 뿐만 아니라 데이터, 모델, 코드도 모두 관리 대상이다.
어떤 경우에 머신러닝 디자인 패턴이 필요할까??
- 머신러닝 개발 시 발생하는 반복적인 문제들을 해결하기 위해 등장
- 예측 요청 처리, 데이터 전처리, 모델 배포 등 각 단계에서 효율적인 설계 가능
- 현재도 발전 중이며, 특정 상황에 적합한 패턴으로 계속 진화 중
ML 디자인 패턴 활용은
항상 최적의 해답(best solution)은 아니지만, 개발 설계시 참고 할 수 있는 유용한 지침을 제공한다.
그리고 개발할때 설계가 중요하다.
예시로,
아파트 공사를 하면서 설계를 변경하려면 엄청난 리소스가 소모되듯이,
머신러닝 서비스에서도 초기 설계가 매우 중요하다.
그래서 처음 설계할때가 중요하다.
디자인 패턴은 이런게 있구나 하고 인지하고 있으면 되고,
개발할 때 염두해놓고 개발하면 좋다.
3. ML 에서 간단한 Serving 4가지 패턴 종류
1) Batch Serving
- Batch 패턴
2) Online Serving
- Web single 패턴
- Synchronous (동기식) 패턴
- Asynchronous (비동기식) 패턴
다음 블로그에 각각의 Serving 종류에 대해서 작성하겠습니다.
읽어주셔서 감사합니다!!
끝.
'딥러닝 (Deep Learning) > [07] - Serving' 카테고리의 다른 글
딥러닝 파일 확장자의 차이점 *.mar, *.pt, *.pth, *.onnx (0) | 2024.12.19 |
---|---|
TorchServe 모델 배포 방법! (0) | 2024.12.19 |
Model Serving 패턴 종류 (3) | 2024.12.09 |