IT

배치처리 및 실시간처리 시스템 구성 방법

e냥냥 2019. 4. 4. 17:28
728x90

오늘은 모델 학습 및 예측 과정을 시스템에 통합하는 방식에 대해 정리해보았습니다.

(※ 'Machine Learning at Work 머신러닝 실무 프로젝트' 책을 참고하였습니다.)

 

시스템 통합 방식은 학습이 일어나는 시점에 따라 배치처리 시 이뤄지는 방식과 실시간으로 이뤄지는 방식으로 나뉠 수 있습니다. 배치처리와 배치학습은 다른 의미이지만 일반적으로 머신러닝에서 배치라고 하면 대개 배치학습을 말합니다.

 

그렇다면 처리방법에 따라 학습하는 방법의 차이가 있는지 알아보도록 하겠습니다.

 

1. 배치 처리로 일괄 학습(배치학습, Batch learning)

2. 배치 처리로 순차 학습(실시간학습, Online learning)

3. 실시간 처리로 일괄 학습

4. 실시간 처리로 순차 학습

위의 조합에서 실제 가능한 조합은 무엇일까요? 3번을 제외한 모든 조합이 가능합니다. 실제로 학습을 수행할 때는 메모리의 제약이 없다면 배치 처리를 적용하는 편이 좋습니다.

 

예측 단계에서는 학습 단계에서 적용한 학습 방식이나 처리 방법과 상관없이 배치 처리와 실시간 처리가 모두 가능합니다.  아래와 같이 배치 처리를 적용한 학습 패턴 3가지와 실시간 처리로 학습하는 패턴이 어떻게 구성되는지 알아보도록 하겠습니다.

 

1. 배치 처리로 학습 + 예측 결과를 웹 애플리케이션에서 직접 산출(예측을 실시간 처리)

2. 배치 처리로 학습 + 예측 결과를 API를 통해 사용(예측을 실시간 처리)

3. 배치 처리로 학습 + 예측 결과를 DB에 저장하고 사용(예측을 배치 처리)

4. 실시간 처리로 학습

 

1. 배치 처리로 학습 + 예측 결과를 웹 애플리케이션에서 직접 산출(예측을 실시간 처리)

배치 처리로 학습해서 예측 모델을 생성하고, 웹 애플리케이션에서 예측을 실시간으로 처리 합니다.  예측 결과 자체는 라이브러리의 API를 통해 구한 다음 이 결과를 웹 애플리케이션에서 이용합니다.

 

학습단계

배치 시스템이 미리 DB에 축적한 로그와 사용자 정보를 이용하여 특징을 추출하고, 모델을 학습해 직렬화하여 저장소에 저장합니다.

 

예측단계

특정 이벤트가 발생하면 웹 애플리케이션이 예측을 요청합니다. 예측해야 할 대상에 관한 정보를 DB에서 얻은 다음 특징을 추출해서 예측모델을 태워 예측 결과를 출력합니다.

 

패턴특성

1) 예측에 실시간 처리가 필요

테스트 목적의 소규모 시스템에 적합한 패턴이며, 전체 과정의 수행시간이 짧아야 하므로 전처리된 데이터 혹은 추출된 특징을 관계형 데이터베이스나 키값 저장소에 캐싱해 두기도 합니다. 예측 모델은 메모리에 올리기 부담스럽지 않은 크기로 관리하고, 예측 처리에 드는 연산 부하가 낮은 알고리즘을 택하여 모델의 시간 복잡도와 공간 복잡도를 억제하는 것이 좋습니다.

2) 웹 애플리케이션과 머신러닝을 수행하는 배치 시스템이 동일한 언어로 구현

 

2. 배치 처리로 학습 + 예측 결과를 API를 통해 사용(예측을 실시간 처리)

예측을 수행하는 부분을 별도 API 서버에 맡기는 패턴으로 예측 결과는 실시간으로 처리되어 API를 통해 웹 애플리케이션에 전달됩니다. 학습이 배치 처리로 이뤄진다는 점은 다른 패턴과 동일하지만 HTTP나 RPC 요청의 응답으로 예측 결과를 전달하는 API 서버를 둔다는 점이 특징입니다.

 

3. 배치 처리로 학습 + 예측 결과를 DB에 저장하고 사용(예측을 배치 처리)

가장 무난한 방법으로 웹 애플리케이션과 머신러닝 부분을 서로 다른 언어로 구현해도 된다는 장점이 있고, API 패턴과 달리 웹 애플리케이션의 응답 시간에 영향을 주지 않습니다. 예측빈도가 하루 한 번 정도 혹은 적어도 수시간 간격일 때 적용하는 것이 좋고, 학습 배치를 실행하는 간격은 예측을 실행하는 간격보다 길도록 설정해야합니다.

모델을 자주 재학습하거나 특징이나 알고리즘을 바꿔가며 모델을 여러 개 학습하는 경우에는 예측에 걸리는 시간에 충분히 주의를 기울여야하고, 병렬 작업 수를 늘리거나 스파크 같은 분산처리 환경에서 수행하면 소요시간을 줄일 수 있을 것입니다.

 

4. 실시간 처리로 학습

흔히 알려져 있는 알고리즘에 대해서 배치학습과 실시간 학습 가능여부에 대해서 간단하게 표로 정리하였습니다.

  배치학습 온라인학습
퍼셉트론  
로지스틱 회귀
SVM
K-NN  
트리형태  

 

 

 

혼자 공부하면서 정리하는 개념으로 작성하여 많이 부족합니다 ㅠ_ㅠ
틀린부분이나 첨언해주실 내용 있으시면 댓글 부탁드려요 ^^*

728x90

'IT' 카테고리의 다른 글

[git] 깃허브 사용법  (0) 2023.01.11
[Linux] Windows에서 Ubuntu 서버의 도커로 파일 옮기기(복사)  (0) 2022.05.11
loading