반응형
Machine Learning의 Feature Store란?
머신러닝의 모델링 과정
- 머신러닝 모델링 업무의 큰 흐름은 다음과 같음
- 데이터 적재
- 데이터 EDA 및 분석
- Feature Engineering
- 모델링(모델 선정, 하이퍼 파라미터 튜닝, metric 선정 과정 포함)
- Test Set에 성능 개선되었는지 확인
- 모델이 완성되면, 그 후에 실제 서비스에 활용하기 위해 아래와 같은 과정을 거침(Production, Serving 과정)
- 실시간 데이터 적재 확인
- 실시간 데이터에 기반한 Feature Engineering
- 모델 학습
- 필요시 모델 업데이트
- Inference
Production시 발생할 수 있는 문제
- 1) 데이터 스트리밍 파이프라인 존재 유무
- 데이터 ETL 파이프라인은 초반엔 배치성으로 생성해 관리하는 경우가 있음(더 쉽고, 빠르게 가능)
- 이 경우, 모델을 Production화하기 위해 데이터를 실시간으로 적재해야 함
- Kafka, Redis, GCP Pub/Sub, REST API 등을 활용해 데이터를 적재
- 단, 예측하려는 문제에 따라 실시간보다 배치성으로 예측해도 괜찮은 경우가 있음
- 2) Feature Engineering 소요되는 시간
- 실시간으로 생성되는 데이터를 기반으로 Feature Engineering 수행
- Spark나 BigQuery 같은 SQL 기반으로 전처리할 수도 있고, Python의 Pandas 등을 사용할 수도 있음
- 그러나 Feature Engneering의 연산이 복잡한 경우, Feature를 생성하는 시간이 오래 걸릴 수 있음
- 3) 오프라인과 온라인에서 사용한 Feature의 차이
- 오프라인 : 실시간이 아닌 데이터를 사용하는 환경(주로 배치성)
- 온라인 : 실시간으로 데이터가 스트리밍되는 환경
- 오프라인은 주로 배치성으로 적재되기 때문에, 그 과정에서 미리 복잡한 연산을 해서 저장할 수 있음. 그러나 온라인 적재는 복잡한 연산을 하지 못하거나(혹은 개발 리소스의 부족으로) 따로 처리해야할 수 있음
- 같은 로직으로 처리하려 했으나, 처리하는 시간에 따라 값이 다르게 계산되는 경우가 존재함
- 4) 데이터 프로토콜의 부재
- 데이터를 실시간으로 적재하는 부분은 데이터 엔지니어 직군이, 모델링을 위해 데이터 전처리하는 부분은 데이터 사이언티스트(혹은 머신러닝 엔지니어)가 진행하는데, 두 조직의 프로토콜이 없는 경우도 있음
- 5) 서비스에서 많은 머신러닝 모델이 생기는 경우
- 머신러닝 모델이 소수인 경우(1-2개) 단일 모델을 위해 시스템을 구축하는 것은 비효율적이라 판단할 수 있음
- 하지만 모델이 많아지고, 동일한 Feature를 사용할 경우엔 각각의 모델링 과정에서 Feature Engineering을 진행하면 모델의 개수만큼 연산을 진행해야 함
- 즉, 재사용성이 떨어짐
- 6) 과거 Feature를 사용해야 하는 경우
- 보통 시간과 관련된 Feature들이 많은데, 이 Feature들은 시간이 지나며 점점 값이 바뀜(1월 1일 시점에 최근 1시간 전 데이터와 1월 5일 시점에 최근 1시간 전 데이터는 다름)
- 이럴 경우 index가 있거나, Backfill 기능이 있어야 함
- 혹시 잠시 Feature 관련 코드가 장애날 경우에 과거 값을 계산해야할 수 있음
- Backfill : 간단히 말해서 예전 데이터를 계산
Feature Store
- 발생할 수 있는 문제들을 위해 Feature Store를 구축
- Feature Store Layer를 추가한다고 표현함
- Feature Store의 오픈소스는 Hopsworks와 feast가 존재
- 데이터를 Train, Serving 할 때 모두 사용할 수 있도록 통합해서 저장함
어떻게 해야할까?
- 현재 주어진 요구사항에 따라 다른 접근이 필요
- 처음부터 Feature Store를 구축하면 좋으나, 지속적으로 모델링하며 어떤 요구사항이 있을지 알 수 없음
- 따라서 처음엔 나이브하게 시작하는 것도 좋다고 생각
- 자주 사용하는 Feature를 Airflow 등에서 스케쥴링
- 1시간별 수요를 Table로 N분 단위로 스케줄링해서 특정 Table에 저장
- 그러다가 점점 모델이 많아질 때 고도화하면 좋을듯
- Feature Store도 중요하지만, Data가 들어올 때 Validation 체크하는 것도 매우 중요함
- Hopsworks를 직접 실행시켜서 아이디어를 얻은 후, 직접 개발하는 것이 더 좋을 수 있음(Hopsworks는 엄청 큰데, 모두 회사에 필요할까?란 고민이 필요)
- 다음 글은 Hopsworks를 직접 띄워서, 어떤 구성 요소가 있고 어떻게 활용할지에 대해 작성하겠습니다 :
#직장인인강 #직장인자기계발 #패스트캠퍼스후기#온라인패키지:머신러닝서비스구축을위한실전MLOps#머신러닝서비스구축을위한실전MLOps온라인패키지Online.
https://bit.ly/37BpXiC
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
반응형
'MLops' 카테고리의 다른 글
패스트캠퍼스 챌린지 37일차 (0) | 2022.03.01 |
---|---|
패스트캠퍼스 챌린지 36일차 (0) | 2022.02.28 |
패스트캠퍼스 챌린지 34일차 (0) | 2022.02.26 |
패스트캠퍼스 챌린지 33일차 (0) | 2022.02.25 |
패스트캠퍼스 챌린지 32일차 (0) | 2022.02.24 |