피처 저장소 서비스
이 글은 데이터 민주화와 셀프서비스 데이터를 읽고 쓰는 포스트입니다. 이 장에서는 주요하게 다루는 내용이 “ML모델을 학습 및 서빙하는 과점에서 피처를 어떻게 저장 할 것인가”에 대한 내용입니다.
이 부분에 대해서는 잘 모르는 분야였지만, 대체로 모델이 많아지면 공통되게 사용하는 피처의 수는 많아지기 때문에 프로젝트를 진행하는 동안 소요되는 시간과 노력이 줄어든다고 합니다. 이를 위해서는 어떻게 피처를 저장하는 지가 중요하다고 합니다.
피처화 시간 최소화
피처는 기본적으로 학습을 위한 피처와 추론을 위한 피처로 나뉩니다. 학습을 위해서는 대규모의 데이터를 제공해야하며, 추론을 위해서는 지연 시간이 최대한 짧은 피처 값을 제공해야 합니다. 또한 데이터 사용자가 피처 간에 쉽게 검색하고 협업 할 수 있도록 해야 합니다.
주의 해야 할 부분
- 파이프라인 정글 관리의 복잡성
- 피처로 변환하는 과정에 대해서 코너 케이스를 처리해야 합니다.
- 학습과 추론을 위한 별도 파이프라인 작성
- 학습 및 추론 파이프라인 연산의 신선도에 따른 불일치가 발생 할 수 있습니다.
요구 사항 정의
피처 연산
- 지원하는 피처의 다양한 유형을 고려해야 합니다.
- 피처는 개별 데이터 속성과 연관되어 있거나, 복합적으로 집계 된 것일 수 있습니다.
- 공칭 시간에 비례해 지속적으로 변하는 대신 상대적으로 정적일 수 있다고 합니다???
- 일반적으로 데이터 사용자가 현재 사용 중인 기능들과 유사한 원시 기능이 지원 되어야 합니다.
- 여기서 기능은 범주 데이터를 숫자로 변환하던가 원-핫 인코딩, 정규화 등과 같은 기능입니다.
- 피처 엔지니어링을 위해 지원되어야 하는 프로그래밍 라이브러리를 고려해야 합니다.
- Spark이나 Numpy, Pandas와 같은 것들 입니다.
- 피처 데이터가 유지되고 있는 소스 시스템의 유형을 고려해야 합니다.
- 소스 시스템은 RDB나 NoSQL, 스트리밍 플랫폼, 파일 저장소 등이 될 수 있습니다.
피처 제공
피처 그룹
제가 이해 한 내용으로 보면, “특정 도메인에 대한 학습 피처(공통 열)을 하나의 데이터 세트로 결합”하는 방식으로 이해했습니다.
확장
다음의 측면을 고려해야 한다고 합니다.
- 피처 저장소에서 지원 할 피처 수
- 온라인 추론을 위해 피처 저장소를 호출하는 모델 수
- 오프라인 추론 및 학습을 위한 일간 모델 수
- 학습 데이터 세트에 포함되는 과거 데이터의 양
- 새 샘플이 생성될 때 피처 데이터 세트를 다시 채우는 일간 파이프라인 수
검색 가능
검색이 가능해야 합니다.
구현 패턴
하이브리드 피처 연산 패턴
피처 연산 모듈은 시간 단위의 대량의 데이터를 오프라인 학습 및 추론 모듈과 몇 분 주기로 피처 값이 계산되는 온라인 학습 및 추론 모듈이 있습니다.
일괄 처리의 결과를 서빙 저장소와 대량 이력 저장소에 동시 저장하고, 서빙 저장소의 피처 셋을 스트리밍 데이터로 지속적인 처리를 하는 방식으로 동작합니다. 이해 한 내용으로는 “고정적인 피처 혹은 종합된 정보는 배치 파이프라인으로 서빙저장소에 적재하고 스트리밍을 통해 실시간 성의 피처를 저장하여 서빙에 사용한다”고 이해했습니다.
피처 레지스트리 패턴
피처 발견 및 관리 시 피처 및 학습 데이터 세트를 게시하고 발견하는 인터페이스를 구축하는 방식입니다. 각 피처에 대한 버전 정보도 포함되어 사용가능한 피처를 발견하고 메타데이터를 이용한 검색 등을 가능하게 합니다.