Computer >> 컴퓨터 >  >> 프로그램 작성 >> Redis

Feast With Redis 시작하기:기계 학습 기능 저장소 빠른 시작 자습서

이 자습서에서는 단계별 Feast for Redis 빠른 시작 을 제공합니다. 머신 러닝을 위한 온라인 기능 저장소로 Feast with Redis를 사용하는 엔드 투 엔드 예제를 안내합니다. Feast Quickstart 튜토리얼을 기반으로 하지만 기본 온라인 스토어 대신 Redis 온라인 스토어를 사용하여 대규모 실시간 예측을 제공합니다. Feast 또는 Redis에 익숙하지 않은 경우 Redis를 사용하여 Feast를 시작하는 가장 빠른 방법은 이 자습서를 사용하는 것입니다. 자세한 소개는 이 기능 저장소 및 Feast using Redis 블로그 기사를 참조하세요. Redis 및 Feast에 대한 자세한 정보와 추가 리소스는 이 튜토리얼의 끝 부분에서 확인할 수 있습니다.

이 자습서에서는 다음을 수행합니다.

  1. Parquet 파일 오프라인 스토어 및 Redis 온라인 스토어를 사용하여 로컬 기능 스토어를 배포합니다.
  2. Parquet 파일의 데모 시계열 기능을 사용하여 교육 데이터 세트를 구축합니다.
  3. 오프라인 스토어에서 Redis 온라인 스토어로 기능 값을 구체화(로드)합니다.
  4. 추론을 위해 Redis 온라인 스토어의 최신 기능을 읽어보세요.

아래 안내된 단계에 따라 Google Colab 또는 로컬 호스트에서 튜토리얼을 실행할 수 있습니다.

Feast With Redis 시작하기:기계 학습 기능 저장소 빠른 시작 자습서

Feast는 Python 라이브러리 + 선택적 CLI입니다. 이 튜토리얼에서 곧 설명하겠지만 pip를 사용하여 Feast를 설치할 수 있습니다.

Feast with Redis는 이 흐름에서 몇 가지 일반적인 문제를 해결합니다.

  1. 훈련 제공 편향 및 복잡한 데이터 결합 :기능 값은 종종 여러 테이블에 존재합니다. 이러한 데이터 세트를 결합하는 것은 복잡하고 느리며 오류가 발생하기 쉽습니다.
    • Feast는 미래의 기능 값이 모델에 누출되지 않도록 특정 시점의 정확성을 보장하는 전투 테스트를 거친 논리로 이러한 테이블을 결합합니다.
  2. 낮은 지연 시간과 대규모 온라인 기능 가용성: 추론할 때 모델은 쉽게 사용할 수 없고 실시간으로 다른 데이터 소스에서 미리 계산해야 하는 기능에 액세스해야 하는 경우가 많습니다.
    • Feast with Redis를 배포하면 짧은 지연 시간과 높은 처리량으로 필요한 기능을 일관되게 사용할 수 있고 추론 시점에 새로 계산할 수 있습니다.
  3. 기능 재사용성 및 모델 버전 관리: 조직 내 여러 팀이 프로젝트 전체에서 기능을 재사용할 수 없는 경우가 많아 기능 생성 로직이 중복됩니다. 모델에는 모델 버전에서 A/B 테스트를 실행할 때와 같이 버전 관리가 필요한 데이터 종속성이 있습니다.
    • Feast를 사용하면 이전에 사용된 기능을 검색하고 협업할 수 있으며 기능 세트의 버전 관리가 가능합니다(기능 서비스를 통해).
    • Feast는 기능 변환을 지원하므로 사용자는 온라인/오프라인 사용 사례 및 모델에서 변환 로직을 재사용할 수 있습니다.

Feast with Redis 튜토리얼 개요

이 자습서에서는 기능 저장소를 사용하여 교육 데이터를 생성하고 승차 공유 운전자 만족도 예측 모델에 대한 온라인 모델 추론을 강화합니다. 데모 데이터 시나리오에서: 

  • 차량 공유 앱 사용 경험에 얼마나 만족하는지 알아보기 위해 일부 운전자에게 설문조사를 실시했습니다.
  • 우리는 잠재적으로 불만족할 가능성이 있는 사용자에게 다가갈 수 있도록 나머지 사용자의 운전자 만족도에 대한 예측을 생성하고자 합니다.

자습서 단계:

  1. Redis 설치 및 백그라운드에서 Redis-Server 실행
  2. Redis로 Feast 설치
  3. 기능 저장소 생성 및 Redis를 온라인 스토어로 정의
  4. 기능 정의 등록 및 기능 저장소 배포
  5. 훈련 데이터 생성
  6. Redis 온라인 스토어에 기능 로드
  7. 추론을 위한 특징 벡터 가져오기 

1단계:Redis 설치 및 백그라운드에서 Redis 서버 실행

Redis를 설치하려면 아래 대안 중 하나를 따르세요.

우분투:

$ sudo snap install redis

도커:

$ docker run --name redis --rm -p 6379:6379 -d redis

Mac(홈브류):

$ brew install redis

Redis를 설치하는 다른 방법에 대한 추가 정보는 여기에서 찾을 수 있습니다. 추가 구성 정보는 Redis 빠른 시작 가이드에서 찾을 수 있습니다.

2단계:Redis로 Feast 설치

pip를 사용하여 Feast SDK 및 CLI를 설치합니다.

$ pip install 'feast[redis]'

3단계:기능 저장소 생성 및 Redis를 온라인 스토어로 구성

기능 저장소는 기능 저장소 및 개별 기능의 구성을 포함하는 디렉토리입니다.

3a단계:기능 저장소 생성

새 기능 리포지토리를 만드는 가장 쉬운 방법은 축제 초기화 명령을 사용하는 것입니다. 이것은 초기 데모 데이터로 스캐폴딩을 생성합니다.

$ feast init feature_repo
$ cd feature_repo

출력:

Creating a new Feast repository in /Users/nl/dev_fs/feast/feature_repo

결과 데모 리포지토리 자체를 살펴보겠습니다. 다음과 같이 나뉩니다.

  • feature_store.yaml에는 데이터 소스 및 온라인 상점을 구성하는 데모 설정이 포함되어 있습니다.
  • example.py
    데모 기능 정의 포함
  • data/에는 원시 데모 쪽모이 세공 데이터가 포함되어 있습니다.

3b단계:YAML 구성 파일에서 Redis를 온라인 스토어로 구성

Redis를 온라인 스토어로 구성하려면 feature_store.yaml에서 online_store의 type 및 connection_string 값을 설정해야 합니다. 다음과 같이:

project: my_project
registry: data/registry.db
provider: local
online_store:
  type: redis
  connection_string: localhost:6379

공급자는 이 데모에서 원시 데이터가 있는 위치(제공을 위한 교육 데이터 및 기능 값 생성용)를 로컬로 정의합니다. online_store 온라인 상점 데이터베이스(서빙용)에서 기능 값을 구체화(로드)할 위치를 정의합니다.

위의 구성은 대신 기본 온라인 스토어를 사용하는 튜토리얼에 제공된 기본 YAML 파일과 다릅니다.

project: my_project
registry: data/registry.db
provider: local
online_store:
    path: data/online_store.db

따라서

online_store
에 대해 이 두 줄을 추가하면 (
type: redis, connection_string: localhost:6379
) 위의 YAML 파일에서 Feast는 온라인 스토어인 Redis에서 읽고 쓸 수 있습니다. Redis 온라인 스토어는 Feast 핵심 코드의 일부이므로 Feast는 즉시 Redis를 사용하는 방법을 알고 있습니다.

3c단계:example.py에서 데모 기능 정의 검사 

example.py에서 데모 기능 정의를 살펴보겠습니다. (터미널에서 보려면

cat
를 실행할 수 있습니다.
example
.
py 
).

예제.py

<메타 charset="utf-8">

3d단계:원시 데이터 검사

마지막으로 원시 데이터를 살펴보겠습니다. 이 데모에 있는 원시 데이터는 로컬 쪽모이 세공 파일에 저장됩니다. 데이터 세트는 차량 공유 앱에서 운전자의 시간별 통계를 캡처합니다.

Feast With Redis 시작하기:기계 학습 기능 저장소 빠른 시작 자습서

4단계:기능 정의 등록 및 기능 저장소 배포

이제

feast apply
를 실행합니다. example.py에 정의된 기능 보기 및 엔터티를 등록하려면 . apply 명령은 기능 보기/엔티티 정의에 대해 현재 디렉터리의 Python 파일을 검색하고, 개체를 등록하고, 인프라를 배포합니다. 이 예에서는 example.py를 읽습니다. (위에 표시됨) Redis 온라인 스토어를 설정합니다.

$ feast apply

출력:

Registered entity driver_id
Registered feature view driver_hourly_stats
Deploying infrastructure for driver_hourly_stats

5단계:교육 데이터 생성

모델을 훈련하려면 기능과 레이블이 필요합니다. 종종 이 레이블 데이터는 별도로 저장됩니다(예:사용자 설문조사 결과를 저장하는 하나의 테이블과 기능 값이 있는 다른 테이블 세트가 있음).

사용자는 타임스탬프가 있는 해당 레이블 테이블을 쿼리하고 교육 데이터 생성을 위한 엔터티 데이터 프레임으로 Feast에 전달할 수 있습니다. 많은 경우 Feast는 관련 테이블을 지능적으로 결합하여 관련 기능 벡터를 생성합니다.

  • 다양한 타임스탬프에서 동일한 드라이버에 대한 기능이 모델에서 사용되기를 원하기 때문에 타임스탬프를 포함합니다.

파이썬

(아래 코드를 gen_train_data.py 파일에 복사하세요. 그런 다음 실행):

출력:

----- Feature schema -----

<class 'pandas.core.frame.DataFrame'>
Int64Index: 3 entries, 0 to 2
Data columns (total 6 columns):
#   Column                              Non-Null Count  Dtype             
---  ------                              --------------  -----             
0   event_timestamp                     3 non-null      datetime64[ns, UTC]
1   driver_id                           3 non-null      int64             
2   label_driver_reported_satisfaction  3 non-null      int64             
3   conv_rate                           3 non-null      float32           
4   acc_rate                            3 non-null      float32           
5   avg_daily_trips                     3 non-null      int32             
dtypes: datetime64[ns, UTC](1), float32(2), int32(1), int64(2)
memory usage: 132.0 bytes
None

----- Example features -----

                  event_timestamp  driver_id  ...  acc_rate  avg_daily_trips
0 2021-08-23 15:12:55.489091+00:00       1003  ...  0.120588              938
1 2021-08-23 15:49:55.489089+00:00       1002  ...  0.504881              635
2 2021-08-23 16:14:55.489075+00:00       1001  ...  0.138416              606

[3 rows x 6 columns]

6단계:Redis 온라인 스토어에 기능 로드

이제 기능 데이터를 Redis 온라인 스토어에 로드하거나 구체화하여 온라인 예측을 위해 모델에 최신 기능을 제공할 수 있습니다.

materialize
명령을 사용하면 사용자가 특정 과거 시간 범위에 대한 기능을 온라인 상점에 구체화할 수 있습니다. 제공된 시간 범위의 모든 기능 보기에 대한 일괄 소스를 쿼리하고 최신 기능 값을 구성된 온라인 상점에 로드합니다.
materialize
incremental
명령은 마지막 materialize 호출 이후 오프라인 저장소에 도착한 새 데이터만 수집합니다.

$ CURRENT_TIME=$(date -u +"%Y-%m-%dT%H:%M:%S")
$ feast materialize-incremental $CURRENT_TIME

출력:

Materializing 1 feature views to 2021-08-23 16:25:46+00:00 into the redis online store.

driver_hourly_stats from 2021-08-22 16:25:47+00:00 to 2021-08-23 16:25:46+00:00:
100%|████████████████████████████████████████████| 5/5 [00:00<00:00, 592.05it/s]

7단계:추론을 위한 특징 벡터 가져오기

추론할 때

get_online_features()
를 사용하여 Redis 온라인 기능 저장소에서 다른 드라이버에 대한 최신 기능 값(그렇지 않으면 배치 소스에만 존재할 수 있음)을 빠르게 읽어야 합니다. . 그런 다음 이러한 특징 벡터를 모델에 제공할 수 있습니다.

파이썬

(아래 코드를 get_feature_vectors.py 파일에 복사 그런 다음 실행):

출력

{
'acc_rate': [0.5732735991477966, 0.7828438878059387],
'avg_daily_trips': [33, 984],
'conv_rate': [0.15498852729797363, 0.6263588070869446],
'driver_id': [1004, 1005]
}

축하합니다! 튜토리얼의 끝에 도달했습니다. 백그라운드에서 실행 중인 Redis 서버를 종료하려면

redis-cli shutdown
을 사용할 수 있습니다. 명령.

자습서 요약:

이 자습서에서는 Parquet 파일 오프라인 저장소 및 Redis 온라인 저장소가 있는 로컬 기능 저장소를 배포했습니다. 그런 다음 Parquet 파일의 시계열 기능을 사용하여 훈련 데이터 세트를 구축했습니다. 그런 다음 오프라인 스토어에서 Redis 온라인 스토어로 특성 값을 구체화했습니다. 마지막으로 추론을 위해 Redis 온라인 스토어에서 최신 기능을 읽습니다. Redis를 온라인 스토어로 사용하면 실시간 ML 사용 사례에 대한 최신 기능을 매우 빠르게 읽을 수 있으며 규모에 따라 지연 시간이 짧고 처리량이 높습니다.

다음은 무엇입니까?

  • Feast 데이터 모델을 이해하려면 Feast 개념 페이지를 읽고 Feast 아키텍처 페이지를 읽으십시오.
  • Feast with Redis에 대한 전체 구성 가이드와 Redis에 기능 값을 저장하는 데 사용되는 데이터 모델을 읽어보세요.
  • 사례 연구 – 동료로부터 배우기:기업이 온라인 스토어(Wix, Swiggy, Comcast, Zomato, AT&T, DoorDash, iFood)로 Redis와 함께 기능 스토어를 사용하는 방법과 특히 Redis와 함께 Feast를 사용하는 방법에 대해 알아보세요. 그들의 온라인 상점(Gojek, Udaan, Robinhood).
  • Feast 및 Redis가 포함된 Azure Managed Feature Store에 대해 읽고 Feast on Azure 자습서 및 기타 Feast 자습서 시작하기
  • Feast 및 Redis의 일반 제품 소개 페이지에서 각각 Feast 또는 Redis에 대한 자세한 정보를 찾을 수도 있습니다.

Slack의 다른 Feast 사용자 및 기여자와 함께 커뮤니티의 일원이 되십시오!