Feature Store
학습-서빙 편차(training-serving skew)를 오프라인 및 온라인 스토어가 방지하는 방식과 확장 가능한 MLOps에서 피처 관리가 중요한 이유인 피처 스토어가 무엇인지 알아보세요.
피처 스토어(Feature Store)는 머신러닝 모델이 사용하는 데이터 피처를 관리, 저장, 검색, 서빙하기 위한 중앙 집중형 시스템입니다. 팀이 학습과 프로덕션 추론 과정에서 동일한 피처 정의를 적용하도록 도와주어 중복 작업과 불일치를 줄여줍니다. 예를 들어, 여러 파이프라인에서 고객의 “최근 30일 동안의 구매” 값을 반복해서 빌드하는 대신, 팀은 이를 한 번 정의하고 이력을 유지하며 모델이 예측할 때 최신 값을 검색할 수 있습니다.
피처 스토어의 작동 방식#
피처는 계정 연령, 평균 거래 금액, 감지된 객체 수, 이미지 임베딩과 같이 모델에 전달되는 측정 가능한 입력값입니다. 원시 데이터는 피처 엔지니어링 또는 자동화된 피처 추출을 통해 유용한 모델 입력으로 변환됩니다.
일반적인 피처 스토어는 다음과 같은 여러 구성 요소를 조율합니다:
- 피처 정의: 스키마는 각 피처의 이름, 데이터 타입, 소유자, 변환 로직, 엔티티 키, 버전을 설명합니다. Amazon SageMaker Feature Store concepts에 설명된 대로 관련 피처는 피처 그룹 또는 뷰로 구성될 수 있습니다.
- 오프라인 스토어: 과거 데이터 값은 탐색, 학습, 검증, 배치 추론을 지원합니다. Feast offline store documentation에서는 과거 시계열 피처가 기본 데이터 소스에서 어떻게 검색되는지 설명합니다.
- 온라인 스토어: 실시간 예측을 위해 최신 값이 저지연 데이터베이스에 유지됩니다. 예를 들어 Feast online store는 일반적으로 각 엔티티 키에 대한 최신 값을 보관합니다.
- 머테리얼라이제이션(Materialization): 예약된 작업이나 스트리밍 프로세스를 통해 계산된 피처 값을 온라인 스토어로 이동시킵니다.
- 레지스트리 및 메타데이터: 검색 가능한 정의를 통해 팀은 피처를 검색, 거버넌스 관리, 버전 관리, 재사용할 수 있습니다.
엔티티는 피처가 무엇을 설명하는지 식별합니다. 고객 ID, 제품 ID, 머신 ID 또는 카메라 ID일 수 있습니다. 이벤트 타임스탬프는 값이 실제로 작성된 시점이 아니라 해당 값이 유효했던 시점을 기록합니다.
피처 스토어가 중요한 이유#
주요 이점 중 하나는 학습과 서빙 간의 일관성입니다. 모델이 한 가지 계산 방식으로 학습되었으나 프로덕션에서 약간 다른 계산을 받게 되면, 학습-서빙 편향으로 인해 예측 품질이 저하될 수 있습니다. 중앙 집중식 정의와 공유 검색 로직은 이러한 가능성을 줄여줍니다.
시점 인식(Time-aware) 검색도 마찬가지로 중요합니다. 학습 행에는 예측된 이벤트가 발생했을 당시 존재했던 정보만 포함되어야 합니다. Point-in-time joins in Feast는 이러한 과거 값을 재구성하여 미래 정보로부터의 데이터 유출을 방지하는 데 도움을 줍니다. Google Cloud의 feature-serving guidance 역시 시간 민감형 피처를 위해 타임스탬프와 시점 기반 조회(Point-in-time lookup)를 강조합니다.
피처 스토어는 또한 다음을 지원합니다:
- 재사용: 여러 모델이 파이프라인을 다시 구축하지 않고도 신뢰할 수 있는 피처를 사용할 수 있습니다.
- 최신성: 스트리밍 업데이트를 통해 실시간 입력값을 최신 상태로 유지할 수 있습니다.
- 거버넌스: 소유권, 리니지, 액세스 제어, 버전을 통해 피처를 더 쉽게 감사할 수 있습니다.
- 모니터링: 팀은 누락된 값, 오래된 레코드, 스키마 변경 및 데이터 드리프트를 감지할 수 있습니다.
이러한 기능 덕분에 피처 스토어는 프로덕션 MLOps의 중요한 부분이 되며, 특히 많은 모델과 팀이 공유 데이터에 의존할 때 더욱 그렇습니다.
관련 시스템과 피처 스토어 비교#
피처 스토어는 단순히 또 다른 데이터베이스가 아닙니다.
- 데이터 레이크는 대용량의 원시 또는 처리된 데이터를 보유하는 반면, 피처 스토어는 모델 지향적 정의, 타임스탬프, 검색 로직 및 서빙 인터페이스를 추가합니다.
- 벡터 데이터베이스는 벡터에 대한 유사도 검색에 특화되어 있습니다. 피처 스토어는 임베딩을 관리할 수 있을 뿐만 아니라 스칼라, 범주형, 집계 및 시계열 피처도 보유할 수 있습니다.
- 피처 엔지니어링 파이프라인은 피처를 계산하고, 피처 스토어는 결과 값을 관리하고 서빙합니다.
- 모델 레지스트리는 모델 버전과 아티팩트를 관리하는 반면, 피처 스토어는 모델 입력값을 관리합니다.
관리형 시스템은 이러한 책임 중 여러 가지를 결합할 수 있습니다. 예를 들어 Azure Machine Learning managed feature stores는 피처 검색, 버전 관리, 머테리얼라이제이션 및 과거 데이터 검색을 제공합니다.
실제 애플리케이션 사례#
사기 감지: 결제 모델은 거래 속도, 평균 구매 금액, 계정 연령, 최근 결제 실패 횟수를 사용할 수 있습니다. 오프라인 스토어는 학습을 위해 과거 값을 재구성하고, 온라인 스토어는 새로운 거래가 도착할 때 밀리초 단위로 현재 값을 제공합니다.
컴퓨터 비전 검사: 제조 시스템은 생산 라인 및 타임스탬프를 키로 하는 롤링 결함 수, 장비 상태, 교대 근무 메타데이터, 시각적 임베딩을 저장할 수 있습니다. 과거 피처는 재학습을 지원하고, 현재 값은 배포된 모델이 새로운 감지 결과를 해석하는 데 도움을 줍니다. 팀은 Ultralytics Platform을 통해 이미지, 주석, 학습, 배포, 모니터링을 관리할 수 있으며, 별도의 피처 스토어가 운영 입력값을 서빙합니다.
Ultralytics YOLO26은 나중에 엔티티 ID, 타임스탬프, 버전 메타데이터와 함께 등록할 수 있는 이미지 피처를 생성할 수 있습니다:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
images = [
"https://ultralytics.com/images/bus.jpg",
"https://ultralytics.com/images/zidane.jpg",
]
embeddings = model.embed(images)
first_image_features = embeddings[0]
print(len(embeddings))
print(first_image_features.shape)이 예시는 완전한 피처 스토어 관리가 아닌 피처 추출을 수행합니다. 프로덕션 워크플로는 Google Cloud ML quality guidelines에 있는 관행과 같은 방법을 사용하여 벡터를 검증하고, 레코드 및 이벤트 시간과 연결하며, 과거 버전을 저장하고, 최신성과 품질을 모니터링합니다.






