Batch pattern
Usecase
- 예측 결과를 실시간 또는 거의 실시간으로 얻을 필요가 없는 경우.
- 대량의 데이터에 대해 예측을 하려는 경우.
- 예측 실행이 스케줄링이 가능한 경우: 시간별, 일별, 주별, 월별
Architecture
만약 예측을 실시간으로 실행할 필요가 없는 경우, 정기적으로 예측을 실행할 배치 패턴을 선택할 수 있습니다. 매일 대량의 데이터를 배치 예측을 스케줄링하고 결과를 저장할 수 있습니다. 물론 사용 사례에 따라 매시간 또는 매월이 될 수 있습니다. 이 패턴에는 작업 관리 서버가 배치 작업을 트리거해야 합니다. 서버는 정의된 규칙에 따라 작업을 시작합니다. 배치 작업 시작과 함께 예측 서버가 배포됩니다. 클라우드 서비스 또는 쿠버네티스를 사용하는 경우 작업을 기반으로 서버를 시작하고 삭제하면 비용을 절감할 수 있습니다.
Diagram
Pros
- 서버 리소스를 유연하게 관리할 수 있습니다.
- 오류가 발생할 경우 작업을 재실행할 수 있습니다.
Cons
- 작업 운영 서버가 필요합니다.
Needs consideration
- 한 작업에서 예측할 수 있는 데이터 집합의 양 또는 범위를 고려해야 합니다.
- 예측 결과를 얻는데 시간 제한이 있는 경우, 배치 작업 스케줄 및 서버 리소스를 고려해야 합니다. 야간 배치 작업이면, 다음 날 아침까지 일을 끝내야 하는 경우가 많습니다.
- 작업이 실패시 재실행하는 방법:
- 모두 재시도: 배치의 전체 예측을 다시 실행합니다. 예측이나 데이터가 다른 것에 의존할 때 사용됩니다.
- 부분 재시도: 실패한 데이터세트에서 다시 실행합니다. 의존성이 없을 때 사용됩니다.
- 재시도 없음: 다음 배치에서 실패한 데이터 세트에 대해 예측을 실행합니다. 엄격한 시간 제한이 없을 때 사용됩니다.
- 만약 배치 기간이 매월 1회 또는 1년에 1번 같이 긴 경우, 모델 또는 시스템이 오래되었을 수 있으므로 배치 실행을 모니터링하거나 임시로 실행하는 것이 좋습니다.
Sample
https://github.com/shibuiwilliam/ml-system-in-actions/tree/main/chapter4_serving_patterns/batch_pattern