이 글은 아래 글을 읽은 사람을 대상으로 쓰여졌습니다.
- 1편 : Feature Store - why?
Feature를 저장한 후 사용하려면 feautre에 대한 key가 존재해야 한다.
이 Feature key를 사용자가 알아서 보관하는 것이 아닌 Feature store
에서 관리해야 하는 걸까?
Feature key가 존재해야 하는 이유는 Serving에 있다.
대규모의 데이터속에서 서빙환경의 요구사항인 특정 데이터를 빠르게 가져오기 위해서는 key-value 기반 nosql이 적절하다.
때문에 online store에서는 get 명령어를 제외하고 SQL과 같은 쿼리를 날리기는 힘들다.
모델이 production에서 서빙될 때에는 유저 id 1번에 대해서 feature가 필요하거나, 뉴스기사 id 1번에 대해서 feature가 필요할 것이다.
이때 어떤 key로 feature를 가져올지 알아야 feature store에 해당 key로 Online store에 데이터를 효율적으로 저장할 수 있다.
그래서 보통 feature store는 key를 feature마다 정해두고 서빙할 때 가져오게 된다.
이 feature key는 꼭 online store가 아니더라도 offline store에서도 충분히 쓰일 수 있다.
feature key
와 key에 해당하는 feature 값
들이 저장되어야 한다.event time은 feature store라는 개념을 처음 접할 때 제일 헷갈리는 개념이다.
반드시 정확하게 알아두자.
User의 뷰티 광고 한달간 클릭 횟수
를 Feature로 쓰려고 함 online store에는 가장 최근의 feature 값만, offline store에는 모든 시점(Event time) 에서의 데이터가 필요하다.
아래 처럼 유저가 활동했다고 가정해보자
그럼 유저의 User의 뷰티 광고 한달간 클릭 횟수 Feature
는 아래와 같이 변화 한다.
각 행동에서는 아래 처럼 시점 별로 Feature store에 Feature Value를 저장하게 된다.
- 이때 Serving 환경에서는 과거 이력이 필요 없다. 즉 Feature Store에서는 가장 최근에 만들어진 Feature Value만 가지고 있으면 된다.
- 매 시점에서 추천을 위해 Feature를 쓰려면 가장 최근의 Feature Value만 있으면 된다 필요하다.
point-in-time join
은 기능을 제공해주는 Feature store도 있고 그냥 Event-time만 기록하게 하는 Feature store도 있다.