머신러닝을 위한 피처 플랫폼(Feature Flatform)이란 무엇인가요?

2년 전까지만 해도 거대 기술 기업만이 머신러닝 시스템에 전적으로 의존하는 제품을 구축할 수 있는 리소스와 전문성을 갖추고 있었습니다. 광고 경매를 지원하는 Google, 콘텐츠를 추천하는 TikTok, 동적으로 가격을 조정하는 Uber를 생각해 보세요. 가장 중요한 애플리케이션을 머신러닝으로 구동하기 위해 이 팀들은 머신러닝 시스템 배포의 고유한 요구사항 을 충족하는 맞춤형 인프라를 구축했습니다.
몇 년이 지난 지금, 프로덕션에서 머신러닝을 대중화하기 위한 전체 MLOps 도구 생태계가 생겨났습니다. 하지만 수백 가지의 다양한 도구가 있기 때문에 각각의 도구가 어떤 역할을 하는지 이해하는 것은 이제 온전히 시간을 쏟아야 하는 작업이 되었습니다. 피처 플랫폼과 그와 밀접하게 관련된 특징점은 해당 생태계의 인기 있는 구성 요소입니다. 요컨대, 피처 플랫폼은 기존 데이터 인프라(데이터 웨어하우스, Kafka와 같은 스트리밍 인프라, Spark/Flink와 같은 데이터 프로세서 등)를 운영 ML 애플리케이션에 사용할 수 있게 해줍니다. 이 게시물에서는 피처 플랫폼이 무엇이며 어떤 문제를 해결하는지에 대해 더 자세히 설명합니다.
운영 머신러닝을 구축하는 것은 어렵습니다
피처 플랫폼은 운영 머신러닝 (ML)을 지원합니다. 운영 머신러닝은 고객 대면 애플리케이션이 ML을 사용하여 비즈니스에 실시간으로 영향을 미치는 의사 결정을 자율적이고 지속적으로 내리는 경우에 발생합니다. 제가 공유한 Google, TikTok, Uber의 예는 모두 운영 ML 애플리케이션입니다. 모든 머신러닝 프로젝트는 항상 네 가지 단계로 구성됩니다.

대부분의 프로젝트는 개발 단계를 통과하지 못합니다. 머신러닝 애플리케이션을 프로덕션에 적용하고 운영하는 것은 팀의 주요 걸림돌로 남아 있습니다. 그리고 ML을 프로덕션에 적용하고 운영하는 데 있어 가장 어려운 부분은 이러한 애플리케이션에 지속적으로 데이터를 공급해야 하는 데이터 파이프라인을 관리하는 것입니다.
피처 플랫폼은 프로덕션화 및 운영과 관련된 데이터 문제 를 해결합니다. 프로덕션으로 가는 경로를 만듭니다. 이것이 무엇을 의미하는지 구체적으로 알아보기 전에, 먼저 피처가 무엇인지 설명해 보겠습니다.
머신러닝 특성이란 무엇인가요?
머신러닝에서 피처는 ML 모델이 예측을 수행하는 데 입력으로 사용되는 데이터입니다. 가공되지 않은 데이터는 ML 모델이 사용할 수 있는 형식인 경우가 드물기 때문에 피처로 변환해야 합니다. 이 프로세스를 피처 엔지니어링이라고 합니다.
예를 들어, 신용카드 회사가 사기 거래를 탐지하려는 경우 해외에서 발생한 거래는 사기를 나타내는 좋은 지표가 될 수 있습니다. 피처는 결국 모델로 전송되는 데이터의 열이 됩니다.

ML의 고유한 특징은 피처가 두 가지 다른 방식으로 사용된다는 점입니다.
- 모델을 훈련시키려면 대량의 과거 데이터가 필요합니다.
- 실시간 예측을 하려면 모델에 최신 피처만 제공해야 하며, 이 정보는 밀리초 내에 제공되어야 합니다. 이를 온라인 추론 이라고도 합니다. 이 예에서 모델은 현재 거래 가 해외에서 발생했는지 여부만 알면 되며, 거래가 발생하는 동안 해당 정보를 처리해야 합니다.
피처 플랫폼은 어떤 문제를 해결하나요?
머신러닝 프로젝트의 개발 단계에서 데이터 사이언티스트는 가장 높은 예측 정확도로 이어지는 피처를 찾기 위해 대규모 엔지니어링을 수행합니다. 해당 프로세스가 완료되면 일반적으로 해당 피처 엔지니어링 파이프라인을 프로덕션에 적용할 엔지니어링 동료에게 프로젝트를 전달합니다.
데이터 사이언티스트라면 데이터가 어떻게 사용 가능해지는지 또는 어떻게 compute되는지에 대해 신경 쓰고 싶지 않을 것입니다. 여러분은 어떤 피처를 원하는지 알고 있으며, 모델이 실시간 예측을 할 수 있도록 해당 피처를 사용할 수 있기를 원합니다. 반면에 엔지니어는 프로덕션 환경에서 해당 데이터 파이프라인을 다시 구현해야 하는데, 실시간 또는 거의 실시간 데이터가 관련되면 이는 매우 빠르게 복잡해집니다. 운영 ML 애플리케이션을 지원하려면 이러한 파이프라인은 중단 없이 계속 실행되고, 장애가 발생하지 않아야 하며, 매우 빠르고, 비즈니스에 따라 확장 가능해야 합니다.
데이터 파이프라인을 프로덕션 환경에 다시 구현하는 것이 운영 ML 프로젝트의 주요 걸림돌입니다. 사기 탐지 예시로 돌아가서, 기업이 구현할 현실적인 피처는 다음과 같습니다.
- 사용자의 집 위치와 거래가 발생하는 위치 사이의 거리로, 거래가 발생할 때 compute됩니다.
- 현재 거래 금액이 해당 판매점의 과거 평균보다 1 표준 편차 이상 높은지 여부입니다.
- 매초 업데이트되는 사용자의 최근 30분 동안의 거래 수.
이러한 피처 엔지니어링 파이프라인은 구현하기 어렵습니다. 이러한 파이프라인은 데이터 웨어하우스에서 직접 compute할 수 없으며, 데이터를 실시간으로 처리하기 위한 스트리밍 인프라를 설정해야 합니다. 피처 플랫폼은 이러한 피처를 프로덕션에 적용하는 엔지니어링 문제를 해결하고, 이를 통해 프로덕션으로 가는 쉬운 경로를 만듭니다. 구체적으로 피처 플랫폼은 다음과 같은 역할을 합니다.
- 데이터 파이프라인을 오케스트레이션하고 지속적으로 실행하여 compute하고 오프라인 학습 및 온라인 추론에 사용할 수 있도록 합니다.
- 피처를 코드로 관리하여 팀이 코드 검토, 버전 관리를 수행하고 피처 변경 사항을 CI/CD 파이프라인에 통합할 수 있도록 합니다.
- 피처 라이브러리를 만들고, 피처 정의를 표준화하며, 데이터 사이언티스트들이 팀 간에 피처를 공유하고 발견할 수 있도록 합니다.
사용자가 피처 플랫폼과 상호 작용하는 방식과 그 구성 요소가 무엇인지 더 자세히 살펴보겠습니다.
피처 플랫폼이란 무엇인가요?
피처 플랫폼은 기존 데이터 인프라를 오케스트레이션하여 운영 머신러닝 애플리케이션을 위한 데이터를 지속적으로 변환, 저장, 제공하는 시스템입니다.
사용자가 피처 플랫폼과 상호 작용하는 두 가지 주요 방법은 다음과 같습니다.
- 피처 생성 및 발견
- 사용자는 선언적 프레임워크를 사용하여 Python 파일에 코드로 새로운 피처를 정의 합니다. 피처 정의는 git 리포지토리에서 관리됩니다.
- 사용자는 다른 팀에서 정의한 기존 피처를 발견합니다.
- 피처 검색
- 학습 시 사용자는 노트북 내에서 특성 플랫폼을 호출하여 모델 학습에 필요한 모든 기록 데이터를 가져올 수 있습니다. 이 작업은 get_historical_features(fraud_model)과 같은 호출로 수행할 수 있습니다. 피처 플랫폼은 피처를 백필링하고 올바른 특정 시점 조인을 수행하는 복잡성을 처리하며, 그 결과로 생성된 데이터 프레임은 XGBoost, Scikit-learn 등과 같은 모든 모델 학습 도구에서 수집할 수 있습니다.
- 추론 시 피처 플랫폼은 라이브 애플리케이션에서 호출할 수 있는 REST endpoint를 노출합니다. 이는 모델이 예측에 사용할 지정된 엔터티 ID에 대한 최신 피처 벡터를 밀리초 단위로 반환합니다.
피처 플랫폼은 기존 인프라를 대체하는 것이 아니라, 운영 머신러닝 애플리케이션을 위해 기존 인프라를 활성화합니다.즉, (1) 데이터 레이크 및 데이터 웨어하우스와 같은 배치 데이터 소스와 (2) Kafka와 같은 스트리밍 소스에 연결됩니다. 또한 (3) 데이터 웨어하우스나 Spark와 같은 기존 compute 인프라와 (4) S3, DynamoDB 또는 Redis와 같은 기존 스토리지 인프라를 사용합니다. 최신 피처 플랫폼은 조직의 기존 데이터 인프라에 유연하게 연결됩니다.

특성 플랫폼의 네 가지 구성요소인 특성 리포지토리, 특성 파이프라인, 특징점, 모니터링에 대해 더 자세히 살펴보겠습니다.
피처 리포지토리
많은 데이터 사이언티스트들이 노트북에서 특성 엔지니어링을 수행합니다. 상호작용적이며, 사용하기 쉽고, 빠른 개발 주기로 이어집니다. 이러한 피처를 프로덕션에 적용해야 할 때 어려움이 시작됩니다. 피처를 CI/CD 파이프라인에 통합하고 기존 소프트웨어에서 사용하는 제어 기능을 갖추는 것이 불가능합니다.
운영 ML 애플리케이션을 성공적으로 배포하는 팀은 피처를 코드 자산으로 관리합니다. 이를 통해 DevOps 의 모든 이점을 얻을 수 있습니다. 즉, 팀은 코드 검토, 계보 추적, CI/CD 파이프라인 통합을 수행할 수 있으며, 결과적으로 더 빠르고 안정적으로 변경 사항을 제공할 수 있습니다. 피처를 코드로 관리하지 않는 팀에서 흔히 볼 수 있는 증상은 모델의 첫 번째 버전을 넘어 반복 작업을 할 수 없는 경우가 많다는 것입니다.
피처 플랫폼에서 사용자는 다음 세 가지 요소를 포함하는 선언적 인터페이스를 사용하여 피처를 코드로 정의합니다.
- 피처 compute 빈도에 대한 구성.
- 공유 및 검색 기능을 활성화하기 위한 피처 이름 및 설명과 같은 메타데이터.
- SQL 또는 Python으로 정의된 변환 로직입니다.

이러한 피처는 중앙에서 사용할 수 있게 되어 모든 팀이 자체 모델에서 발견하고 사용할 수 있습니다. 다양한 사용 사례에 대해 피처를 여러 번 계산할 필요가 없으므로 개발 시간이 절약되고 팀 간의 일관성이 생성되며 컴퓨팅 비용이 절감됩니다.
피처 파이프라인
운영 머신러닝 애플리케이션은 모델이 최신 정보를 사용하여 예측할 수 있도록 새로운 데이터를 지속적으로 처리해야 합니다. 사용자가 리포지토리에서 피처를 정의하면 피처 플랫폼이 데이터 파이프라인을 자동으로 처리하여 해당 피처를 compute합니다.
피처 플랫폼이 지원해야 하는 데이터 변환에는 세 가지 유형이 있습니다.
| 변환 | 정의 | 데이터 소스 | 예제 |
|---|---|---|---|
| 배치(일괄) | 저장된 데이터에만 적용되는 변환 | 데이터 웨어하우스, 데이터 레이크, 데이터베이스 | 판매자별 평균 거래 금액, 매일 업데이트됨 |
| 스트리밍 | 스트리밍 소스에 적용되는 변환 | Kafka, Kinesis, PubSub, Flink | 최근 30분간 사용자 트랜잭션 수, 매초 업데이트됨 |
| 온디맨드 | 예측 시에만 사용할 수 있는 데이터를 기반으로 피처를 생성하는 데 사용되는 변환. 이러한 피처는 미리 compute할 수 없습니다. | 사용자용 애플리케이션, RPC 서비스용 APIs, 인메모리 데이터 | 현재 거래 금액이 거래 시점에 계산된 사용자의 평균 거래 금액보다 2 표준편차를 초과하나요? |
이러한 변환은 피처 플랫폼이 연결된 데이터 처리 엔진(Spark, Snowflake, Python)에서 실행됩니다. 피처 플랫폼은 사용자가 정의한 변환 코드를 기본 데이터 처리 엔진에 1:1로 전달합니다. 이는 피처 플랫폼에 자체적인 맞춤형 SQL 방언이나 맞춤형 Python DSL이 없어야 함을 의미합니다. 이는 피처 플랫폼에 대한 온보딩 경험과 디버깅 경험을 모두 단순화합니다.
배치 변환은 간단하게 실행됩니다. 데이터 웨어하우스에 대한 SQL query를 통하거나 Spark 작업을 실행하여 수행할 수 있습니다. 그러나 운영 ML 애플리케이션은 스트리밍 및 온디맨드 변환을 통해서만 액세스할 수 있는 최신 정보로부터 가장 큰 이점을 얻습니다. 사기 탐지 예시에서 모델이 최상의 예측을 할 수 있도록 하는 피처는 금액, 판매자, 위치와 같은 현재 트랜잭션에 대한 정보 또는 최근 몇 분 내에 발생한 트랜잭션에 대한 정보를 포함합니다.
우리가 이야기를 나누는 모든 팀은 최신 데이터에 액세스하면 대부분의 모델 성능이 향상될 것이라는 데 동의합니다. 스트리밍 및 온디맨드 변환 관리가 복잡하기 때문에 대부분의 조직에서는 여전히 배치 변환만 사용하고 있습니다. 피처 플랫폼은 이러한 복잡성을 추상화하여 사용자가 변환 로직을 정의하고 배치, 스트리밍 또는 온디맨드 변환으로 실행할지 선택할 수 있도록 합니다.
개발 단계에서 새로운 피처를 반복 작업할 때 학습 데이터 세트를 생성하려면 데이터를 백필해야 합니다. 예를 들어, 오늘 새로운 피처 merchant_fraud_rate를 개발할 수 있는데, 이 피처는 모델을 학습시키려는 전체 기간에 대해 백필해야 합니다. 피처 플랫폼은 새로운 피처를 정의할 때 이러한 변환을 자동으로 실행하여 개발 과정에서 빠른 반복 주기를 가능하게 합니다.

특징점
특징점은 2017년 저희가 Uber Michelangelo를 통해 처음 개념을 도입한 이래로 점점 더 인기를 얻고 있습니다. 두 가지 목적을 수행합니다. 즉, 오프라인 학습과 온라인 추론 환경에서 일관되게 피처를 저장하고 제공하는 것입니다.
두 환경 모두에서 특성이 일관되게 저장되지 않으면 모델이 학습되는 특성과 온라인 추론에 사용하는 특성 간에 미묘한 차이가 있을 수 있습니다. 이 현상은 훈련-서빙 편향이라고 불리며, 이는 디버그하기가 매우 어려운, 눈에 띄지 않으면서도 치명적인 방식으로 모델의 성능을 저하시킬 수 있습니다. 특징점은 두 환경 모두에 일관된 데이터를 유지하여 이 문제를 해결합니다.
오프라인 학습을 위해 특징점에는 수개월 또는 수년 분량의 데이터가 포함되어야 합니다. 이 데이터는 S3, BigQuery, Snowflake 또는 Redshift와 같은 데이터 웨어하우스나 데이터 레이크에 저장됩니다. 이러한 데이터 소스는 대규모 검색에 최적화되어 있습니다.
온라인 추론을 위해 애플리케이션은 소량의 데이터에 대한 초고속 액세스가 필요합니다. 지연 시간이 짧은 조회를 지원하기 위해 이 데이터는 DynamoDB, Redis 또는 Cassandra와 같은 온라인 스토어에 보관됩니다. 각 엔터티의 최신 피처 값만 온라인 스토어에 보관됩니다.

오프라인으로 데이터를 검색하기 위해 피처 값은 일반적으로 노트북 친화적인 SDK를 통해 액세스됩니다. 온라인 추론의 경우 특징점은 가장 최신 데이터가 포함된 단일 피처 벡터를 제공합니다. 각 요청에 포함된 데이터의 양은 적지만 특징점은 초당 수천 개의 요청까지 확장할 수 있어야 합니다. 이러한 응답은 REST 엔드포인트를 통해 라이브 애플리케이션에 밀리초 단위로 제공됩니다. 고성능 특징점은 가용성 및 지연 시간에 대한 SLA를 제공해야 합니다.

모니터링
운영 중인 ML 시스템에서 문제가 발생하면 일반적으로 데이터 문제입니다. 피처 플랫폼은 가공되지 않은 데이터에서 모델에 이르는 프로세스를 관리하므로 데이터 문제를 감지하기에 가장 적합합니다. 피처 플랫폼이 지원하는 모니터링에는 두 가지 유형이 있습니다.
데이터 품질 모니터링
특성 플랫폼은 수신 데이터의 분포와 품질을 추적할 수 있습니다. 모델을 마지막으로 훈련한 이후 데이터 분포에 상당한 변화가 있었나요? 결측값이 갑자기 더 많이 발생하고 있나요? 이것이 모델의 성능에 영향을 미치고 있나요?
운영 모니터링
프로덕션 시스템을 실행할 때는 운영 메트릭을 모니터링하는 것도 중요합니다. 피처 플랫폼은 피처 부실성을 추적하여 데이터가 예상 속도로 업데이트되지 않는 시점을 감지하고, 피처 저장(가용성, 용량, 사용률) 및 feature serving(throughput, 지연 시간, 초당 query 수, 오류율)과 관련된 기타 메트릭을 추적합니다. 피처 플랫폼은 또한 피처 파이프라인이 예상대로 작업을 실행하는지 모니터링하고, 작업이 성공하지 못할 때를 감지하며, 자동으로 문제를 해결합니다.
피처 플랫폼은 기존 모니터링 인프라에서 이러한 측정항목을 사용할 수 있도록 합니다. 운영 ML 애플리케이션은 기존 관측 가능성 도구로 관리되는 다른 모든 프로덕션 애플리케이션과 마찬가지로 추적되어야 합니다.
모두 종합하기
피처 플랫폼의 묘미 중 하나는 ML 팀이 새로운 피처 를 신속하게 프로덕션화할 수 있다는 점입니다. 하지만 여러 팀이 피처 플랫폼을 사용하고 여러 사용 사례를 지원할 때 그 가치는 폭발적으로 증가합니다.

피처 플랫폼을 사용하면 데이터 엔지니어가 이전보다 더 많은 수의 데이터 사이언티스트를 지원할 수 있습니다. 피처 플랫폼이 없는 경우 데이터 사이언티스트 1명을 지원하는 데 데이터 엔지니어 2명이 필요했던 많은 팀과 이야기를 나눴습니다. 피처 플랫폼을 통해 그 비율을 역전시킬 수 있었습니다. 피처 플랫폼이 널리 채택되면 데이터 사이언티스트는 이미 계산된 피처를 모델에 쉽게 추가할 수 있습니다. 우리는 동일한 패턴이 반복되는 것을 보았습니다. 팀은 첫 번째 사용 사례를 완전히 배포하는 데 몇 달, 두 번째 사용 사례에 몇 주가 걸리며, 그 이후에는 새로운 사용 사례를 배포하거나 기존 사용 사례를 반복하는 데 며칠밖에 걸리지 않습니다.
피처 플랫폼을 도입해야 할 때와 그렇지 않을 때
저는 지난 몇 년 동안 등장한 MLOps 도구의 전체 생태계를 따라잡는 것이 얼마나 어려운지에 대해 설명하면서 이 기사를 시작했습니다. 사실 스택은 가능한 한 단순하게 유지하고, 도구는 정말 필요할 때만 도입해야 합니다.
다음과 같은 경우 팀은 피처 플랫폼에서 가치를 찾습니다.
- 데이터 사이언티스트와 데이터 엔지니어 간의 인계 프로세스와 프로덕션을 위해 데이터 파이프라인을 재구현하는 데 따르는 어려움을 경험한 경우.
- 엄격한 SLA를 충족하고, 확장성을 달성해야 하며, 프로덕션에서 장애가 발생하지 않아야 하는 운영 머신러닝 애플리케이션을 배포하는 경우.
- 표준화된 피처 정의를 원하고 모델 간에 피처를 재사용하려는 여러 팀이 있는 경우.
팀은 다음과 같은 경우에 피처 플랫폼 도입을 피해야 합니다.
- 아이디어 구상 또는 개발 단계에 있으며 프로덕션에 배포할 준비가 되지 않은 경우.
- 배치 데이터로만 작업하는 단일 팀만 있습니다.
시작하는 방법
시작하기 위한 몇 가지 옵션은 다음과 같습니다.
- Tecton 은 관리형 피처 플랫폼 입니다. Tecton은 위에서 설명한 모든 구성 요소를 포함하며, 고객은 솔루션을 직접 관리할 필요 없이 프로덕션 SLA와 엔터프라이즈급 기능이 필요하기 때문에 Tecton을 선택합니다. Tecton은 기술 Startup부터 다수의 Fortune 500대 기업에 이르기까지 다양한 ML 팀에서 사용됩니다.
- Feast 는 가장 인기 있는 오픈 소스 특징점 입니다. 이미 피처를 compute하는 변환 파이프라인이 있고 해당 피처를 프로덕션에서 저장하고 제공하려는 경우 훌륭한 옵션입니다. 시간이 지남에 따라 Feast는 피처 파이프라인 및 모니터링 기능을 계속 추가하여 완전한 피처 플랫폼으로 거듭날 것입니다.
운영 머신러닝 애플리케이션 스택의 핵심 구성요소로 자리 잡은 피처 플랫폼에 대한 공통된 정의를 제공하기 위해 이 블로그 게시물을 작성했습니다.