Feature store 란?

JungKap Park
XBrain
Published in
8 min readSep 24, 2020

written by Heeseung Hwang and Jungkap Park

머신러닝 분야에서 feature란 계량할 수 있는 현상의 특성이나 성질을 의미합니다. 센서로 부터 얻은 측정값에서 부터 social media 데이터를 분석하여 추출한 통계값에 이르기까지 다양한 유형의 feature가 존재합니다. 한 조직에서 머신러닝이 더 많은 문제에 적용이 되면서, 다뤄야 하는 feature의 종류와 양 또한 늘어나고 있습니다. 따라서 feature의 특성에 따라 효율적으로 가공, 저장 그리고 관리할 수 있는 시스템에 대한 요구가 커지고 있습니다. 한 예로 차량 공유 서비스 회사인 우버(uber)에서는 2017년부터 자체 머신러닝 플랫폼 Michelangelo에 Palette라는 feature store를 개발, 현재 만개 이상의 feature를 저장하며 사내 많은 data scientist들이 공유할 수 있는 환경을 구축하였습니다. 그 외에도 Goject/Google의 Feast, Logical Clocks 의 Hopsworks 그리고 Netflix의 Mefaflow 등 다양항 형태의 feature store가 개발되고 활용이 되고 있습니다.

Figure 1. Feature store 는 data engineer와 data scientist의 업무를 매개해주는 중앙 창고

Feature store는 data engineer와 data scientist의 업무를 매개해주는 중앙 창고로 볼 수 있습니다(Figure 1). 과거에는 모델 개발자가 원시 데이터에서 feature를 추출하는 업무에서 부터 모델 학습, 배포의 업무까지 구분없이 모두 수행하곤 했습니다. 하지만 관리해야 하는 원시 데이터, feature 그리고 모델의 수가 증가함에 따라 data engineer와 data scientist의 효율적인 분업과 협업이 더욱 중요하게 되었습니다. 즉, data engineer는 대규모의 원시 데이터를 효율적으로 관리하고 처리하며 가공을 통해 분석에 적합한 feature형태로 만드는 역할에 집중을하고, 반면 data scientist는 이렇게 추출된 feature들을 활용하여 데이터 분석 및 시각화 나아가 예측 모델 개발에 이르는 역할에 매진할 수 있어야 합니다. 이 효율적인 분업과 협업을 가능케 하기위하여 feature store 라는 개념이 등장하고 그에 필요한 기술들이 연구 개발되어 왔던 것입니다.

Main components of feature store

일반적으로 Feature Store는 막대한 양의 원시 데이터를 저장할 수 있는 Data Lake 위에 구축되며 다음과 같이 크게 4가지 구성 요소가 있습니다 (Figure 2):

  1. 대규모의 원시 데이터를 처리 및 가공하여 feature 를 생성하는 data engineering job
  2. 생성된 feature 를 저장하는 data warehouse
  3. Feature의 메타정보를 저장하는 metadata storage
  4. Data scientist가 feature에 접근할 수 있는 API
Figure 2. Main components and workflow in feature store

Feature store에 feature가 저장되어 활용되기 까지의 대략적인 과정은 다음과 같습니다. 먼저 data engineer는 data lake 에 저장되어 있는 원시 데이터를 가져와서 데이터를 처리, 가공하는 코드를 작성합니다. 이 과정에서 대용량의 데이터를 효율적으로 처리하기 위해 Spark/Flint/Samza 등의 데이터 처리 프레임워크가 활용되곤 합니다. 하나의 원시 데이터 소스에서 추출된 feature 들을 논리적인 단위로 feature group(또는 feature set)으로 묶여서, data warehouse에 저장되어 관리되며, 메타 정보는 metadata storage에 별도로 저장됩니다. 원시 데이터 소스와 feature group의 일대일 맵핑은 원시 데이터로부터 feature store의 효율적인 갱신을 용이하게 합니다. Data scientist는 모델에 따라 다양한 feature group들에서 필요한 feature들을 선별하여 하나의 dataset을 구성할 수 있으며, dataset의 구성 관련 메타 정보 역시 metadata storage에 저장되어 관리됩니다. 이러한 feature store를 중심으로 feature의 저장과 활용의 workflow가 구분되어 운영될 수 있습니다.

Online feature store for low latency access

Feature store가 일반적인 data warehouse와 구분되어지는 중요한 특징 중 하나가 바로 low latency를 통해 배포된 모델의 빠른 응답 속도를 보장해 줄 수 있다는 것입니다. 대규모의 feature를 저장하고 있는 Hive, BigQuery같은 관계형 데이터베이스 기반의 data warehouse는 일반적으로 latency가 높기 때문에, 빠른 접근을 가능케하기 위하여 비관계형 데이터베이스 기반의 online feature store를 분리하여 운영합니다. 배포된 모델을 운영할 때는 학습에 쓰인 전체 feature 데이터가 필요하지 않으므로, 예측에 사용될 feature 데이터만 선택적으로 MySQL Cluster, Cassandra, Redis 와 같은 비관계형 데이터베이스 시스템을 통해서 제공함으로써 low latency를 유지할 수 있도록 합니다.

Offline 과 online 으로 분리된 feature store의 구조에서는 원시 데이터의 특성에 따라 먼저 저장되는 위치를 달리하게 됩니다. 즉, batch 작업으로 가공되는 feature의 경우 보통 offline feature store에 먼저 저장이 되고, 실시간의 streaming data에서 추출되는 feature의 경우에는 바로 serving이 이루어 져야 하므로 online feature store에 먼저 저장이 됩니다. 따라서 feature store는 offline 과 online 저장소의 일관성(consistency)를 유지하는 기능이 필수적입니다 (Figure 3). Offline store에 batch 작업으로 갱신된 feature 데이터는 주기적으로 online store 에 보내지고 (data disposal), 반대로 online store에 먼저 입력되는 streaming data 를 가공하여 얻은 실시간 feature는 offline store 에 복사가 이루어 집니다 (backfill).

Figure 3. Keeping consistency between offline and online feature stores.

Feature store in MLOps

MLOps는 머신러닝 파이프라인을 설계하고 개발 및 운영하는 과정을 효율적으로 관리하기 위한 프레임워크를 제공합니다 (참고: “MLOps란 무엇일까?” ). 그리고 머신러닝 파이프라인에서 데이터가 갖는 의미는 아무리 강조해도 지나치지 않을 것입니다. Data scientist들은 데이터를 가공하고 검증하는 과정에 많은 시간을 소요하고 있습니다. 하지만 feature store를 구축하게 되면 data scientist가 저장된 feature를 활용하여 문제를 푸는데 집중을 할 수 있게 되며, feature의 재활용도 용이하게 됩니다. Feature 데이터의 관리의 효율성을 높이기 위한 feature store는 MLOps의 핵심적인 구성요소로 여겨지고 있습니다.

글을 마치며…

Feature Store 는 빠르게 고도화되는 머신러닝 파이프라인을 더 효율적으로 관리하기 위해 구현된 프레임워크입니다. 현재 Logical Clocks의 Hopsworks와 Gojek/Google 의 Feast 라는 open source framework 가 개발되어 있으며, Uber, Comcast, Netflix, Amazon, Facebook 등 상당수의 IT 대기업들은 자체적으로 feature store 을 구축하여 data engineer와 scientist간의 분업과 협업을 획기적으로 개선해 나가고 있습니다.

XBrain에서는 MLOps의 주요 컴포넌트의 하나로 feature store를 개발하고 적용하고 있습니다. XBrain에서는 feature 데이터의 효율적인 관리를 위한 기술 개발에 관심이 있으신 개발자를 환영합니다.

MLOps 엔지니어 채용 공고 확인하러 가기

--

--