Computer >> Máy Tính >  >> Lập trình >> Redis

Bắt đầu ngày lễ với Redis:Cửa hàng tính năng máy học Hướng dẫn bắt đầu nhanh

Hướng dẫn này cung cấp cách khởi động nhanh Lễ hội cho Redis từng bước sẽ hướng dẫn bạn qua một ví dụ từ đầu đến cuối về việc sử dụng Feast với Redis làm cửa hàng tính năng trực tuyến dành cho học máy. Nó dựa trên hướng dẫn Bắt đầu nhanh của Feast, nhưng thay vì sử dụng cửa hàng trực tuyến mặc định, nó sử dụng cửa hàng trực tuyến Redis để cung cấp các dự đoán thời gian thực trên quy mô lớn. Nếu bạn chưa quen với Feast hoặc Redis, thì cách nhanh nhất để bắt đầu với Feast bằng Redis là thông qua hướng dẫn này. Vui lòng tham khảo bài viết trên blog về Cửa hàng tính năng và Lễ hội bằng cách sử dụng Redis để có phần giới thiệu cấp cao. Thông tin chi tiết hơn về Redis và Feast, cũng như các tài nguyên bổ sung, có sẵn ở cuối hướng dẫn này.

Trong hướng dẫn này, bạn sẽ:

  1. Triển khai cửa hàng tính năng địa phương với cửa hàng ngoại tuyến tệp Parquet và cửa hàng trực tuyến Redis.
  2. Xây dựng tập dữ liệu đào tạo bằng cách sử dụng các tính năng của chuỗi thời gian demo từ tệp Parquet.
  3. Hiện thực hóa (tải) các giá trị tính năng từ cửa hàng ngoại tuyến vào cửa hàng trực tuyến Redis.
  4. Đọc các tính năng mới nhất từ ​​cửa hàng trực tuyến Redis để suy luận.

Bạn có thể chạy hướng dẫn trên Google Colab hoặc trên máy chủ cục bộ của mình theo các bước hướng dẫn bên dưới.

Bắt đầu ngày lễ với Redis:Cửa hàng tính năng máy học Hướng dẫn bắt đầu nhanh Nói tóm lại:

Lễ ( Fea ture st ore) là một cửa hàng tính năng mã nguồn mở và là một phần của Tổ chức AI &Dữ liệu Linux Foundation. Nó có thể cung cấp dữ liệu tính năng cho các mô hình từ cửa hàng trực tuyến có độ trễ thấp (để phân phối theo thời gian thực) hoặc cửa hàng ngoại tuyến (để đào tạo mô hình hoặc phân phối hàng loạt). Nó cũng cung cấp sổ đăng ký trung tâm để kỹ sư học máy nhà khoa học dữ liệu có thể khám phá các tính năng liên quan cho các trường hợp sử dụng ML. Dưới đây là kiến ​​trúc cấp cao của Feast:

Feast là một thư viện Python + CLI tùy chọn. Bạn có thể cài đặt Feast bằng cách sử dụng pip, như sẽ được mô tả ngay trong hướng dẫn này.

Feast with Redis giải quyết một số vấn đề phổ biến trong quy trình này:

  1. Kết hợp dữ liệu phức tạp và xiên phân phối đào tạo :Giá trị của đối tượng thường tồn tại trên nhiều bảng. Việc tham gia các tập dữ liệu này có thể phức tạp, chậm và dễ xảy ra lỗi.
    • Feast kết hợp các bảng này với logic đã được thử nghiệm trong trận chiến để đảm bảo tính chính xác theo thời điểm để các giá trị tính năng trong tương lai không bị rò rỉ cho các mô hình.
  2. Tính khả dụng của tính năng trực tuyến với độ trễ thấp và trên quy mô lớn: Tại thời điểm suy luận, các mô hình thường cần quyền truy cập vào các tính năng không có sẵn và cần được tính toán trước từ các nguồn dữ liệu khác trong thời gian thực.
    • Bằng cách triển khai Feast với Redis, bạn đảm bảo các tính năng cần thiết luôn có sẵn và được tính toán mới tại thời điểm suy luận, với độ trễ thấp và thông lượng cao.
  3. Khả năng tái sử dụng tính năng và lập phiên bản mô hình: Các nhóm khác nhau trong một tổ chức thường không thể sử dụng lại các tính năng trong các dự án, dẫn đến logic tạo tính năng trùng lặp. Mô hình có các phụ thuộc dữ liệu cần được tạo phiên bản, như khi chạy thử nghiệm A / B trên các phiên bản mô hình.
    • Feast cho phép khám phá và cộng tác trên các tính năng đã sử dụng trước đó và cho phép tạo phiên bản cho các bộ tính năng (thông qua các dịch vụ tính năng).
    • Feast cho phép chuyển đổi tính năng để người dùng có thể sử dụng lại logic chuyển đổi trên các mô hình và trường hợp sử dụng trực tuyến / ngoại tuyến.

Tổng quan về Hướng dẫn sử dụng Redis

Trong hướng dẫn này, chúng tôi sử dụng kho tính năng để tạo dữ liệu đào tạo và cung cấp khả năng suy luận mô hình trực tuyến cho mô hình dự đoán mức độ hài lòng của người lái xe chia sẻ chuyến đi. Trong kịch bản dữ liệu demo:

  • Chúng tôi đã khảo sát một số tài xế để xác định mức độ hài lòng của họ với trải nghiệm sử dụng ứng dụng chia sẻ chuyến đi.
  • Chúng tôi muốn đưa ra các dự đoán về mức độ hài lòng của người lái xe cho những người dùng còn lại để chúng tôi có thể tiếp cận những người dùng có khả năng không hài lòng.

Các bước hướng dẫn:

  1. Cài đặt Redis và chạy Redis-Server trong nền
  2. Cài đặt Feast với Redis
  3. Tạo kho tính năng và xác định Redis là cửa hàng trực tuyến
  4. Đăng ký các định nghĩa tính năng và triển khai cửa hàng tính năng của bạn
  5. Tạo dữ liệu đào tạo
  6. Tải các tính năng vào cửa hàng trực tuyến Redis của bạn
  7. Tìm nạp các vectơ đặc trưng để suy luận

Bước 1:Cài đặt Redis và chạy máy chủ Redis trong nền

Để cài đặt Redis, hãy làm theo một trong các lựa chọn thay thế bên dưới:

Ubuntu:

$ sudo snap install redis

Docker:

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

Mac (Homebrew):

$ brew install redis

Thông tin bổ sung về các cách thay thế để cài đặt Redis có thể được tìm thấy tại đây. Thông tin cấu hình bổ sung có thể được tìm thấy trong hướng dẫn Bắt đầu Nhanh của Redis.

Bước 2:Cài đặt Feast với Redis

Cài đặt SDK Lễ hội và CLI bằng pip:

$ pip install 'feast[redis]'

Bước 3:Tạo kho tính năng và định cấu hình Redis làm cửa hàng trực tuyến

Kho tính năng là một thư mục chứa cấu hình của kho tính năng và các tính năng riêng lẻ.

Bước 3a:Tạo kho tính năng

Cách dễ nhất để tạo một kho lưu trữ tính năng mới là sử dụng lệnh Fenit. Điều này tạo ra một giàn giáo với dữ liệu demo ban đầu.

$ feast init feature_repo
$ cd feature_repo

Đầu ra:

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

Hãy xem qua repo demo kết quả. Nó được chia thành:

  • feature_store.yaml chứa một thiết lập demo định cấu hình các nguồn dữ liệu và cửa hàng trực tuyến
  • example.py
    chứa các định nghĩa về tính năng demo
  • dữ liệu / chứa dữ liệu thô về sàn gỗ demo

Bước 3b:Định cấu hình Redis làm cửa hàng trực tuyến trong tệp cấu hình YAML

Để định cấu hình Redis làm cửa hàng trực tuyến, chúng ta cần đặt loại và giá trị connection_string cho online_store trong feature_store.yaml như sau:

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

Nhà cung cấp xác định nơi dữ liệu thô tồn tại (để tạo dữ liệu đào tạo và các giá trị tính năng để phục vụ) trong bản trình diễn này, cục bộ. Cửa hàng trực tuyến xác định vị trí thực hiện (tải) các giá trị tính năng trong cơ sở dữ liệu cửa hàng trực tuyến (để phục vụ).

Lưu ý rằng cấu hình trên khác với tệp YAML mặc định được cung cấp cho hướng dẫn mà thay vào đó sử dụng cửa hàng trực tuyến mặc định:

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

Vì vậy, bằng cách thêm hai dòng này cho

online_store
(
type: redis, connection_string: localhost:6379
) trong tệp YAML ở trên, Feast sau đó có thể đọc và ghi từ Redis dưới dạng cửa hàng trực tuyến của nó. Redis Online Store là một phần của mã cốt lõi của Feast và do đó, Feast biết cách sử dụng Redis ngay từ đầu.

Bước 3c:Kiểm tra định nghĩa tính năng demo tại example.py

Hãy xem qua các định nghĩa về tính năng demo tại example.py (để xem nó trong thiết bị đầu cuối của bạn, bạn có thể chạy

cat
example
.
py 
).

Example.py

Bước 3d:Kiểm tra dữ liệu thô

Cuối cùng, hãy kiểm tra dữ liệu thô. Dữ liệu thô mà chúng tôi có trong bản trình diễn này được lưu trữ trong một tệp sàn gỗ cục bộ. Tập dữ liệu ghi lại số liệu thống kê theo giờ của người lái xe trong ứng dụng chia sẻ chuyến đi.

Bắt đầu ngày lễ với Redis:Cửa hàng tính năng máy học Hướng dẫn bắt đầu nhanh

Bước 4:Đăng ký định nghĩa tính năng và triển khai kho tính năng của bạn

Bây giờ chúng ta chạy

feast apply
để đăng ký các chế độ xem đối tượng địa lý và các thực thể được xác định trong example.py . Lệnh áp dụng quét các tệp Python trong thư mục hiện tại để tìm định nghĩa đối tượng / chế độ xem đối tượng, đăng ký các đối tượng và triển khai cơ sở hạ tầng. Trong ví dụ này, nó đọc example.py (hiển thị ở trên) và thiết lập cửa hàng trực tuyến Redis.

$ feast apply

Đầu ra:

Registered entity driver_id
Registered feature view driver_hourly_stats
Deploying infrastructure for driver_hourly_stats

Bước 5:Tạo dữ liệu đào tạo

Để đào tạo một mô hình, chúng ta cần các tính năng và nhãn. Thông thường, dữ liệu nhãn này được lưu trữ riêng biệt (ví dụ:bạn có một bảng lưu trữ kết quả khảo sát của người dùng và một tập hợp bảng khác có các giá trị tính năng).

Người dùng có thể truy vấn bảng nhãn đó với dấu thời gian và chuyển bảng đó vào Feast dưới dạng khung dữ liệu thực thể để tạo dữ liệu đào tạo. Trong nhiều trường hợp, Feast cũng sẽ kết hợp các bảng có liên quan một cách thông minh để tạo các vectơ đối tượng có liên quan.

  • Lưu ý rằng chúng tôi bao gồm dấu thời gian vì chúng tôi muốn các tính năng cho cùng một trình điều khiển ở các dấu thời gian khác nhau được sử dụng trong một mô hình.

Python

( Sao chép mã bên dưới vào một tệp gen_train_data.py và sau đó chạy nó):

Đầu ra:

----- 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]

Bước 6:Tải các tính năng vào cửa hàng trực tuyến Redis của bạn

Giờ đây, chúng tôi sẽ tải hoặc hiện thực hóa dữ liệu tính năng vào cửa hàng trực tuyến Redis của bạn để chúng tôi có thể cung cấp các tính năng mới nhất cho các mô hình để dự đoán trực tuyến.

materialize
lệnh cho phép người dùng hiện thực hóa các tính năng trong một phạm vi thời gian lịch sử cụ thể vào cửa hàng trực tuyến. Nó sẽ truy vấn các nguồn hàng loạt cho tất cả các chế độ xem tính năng trong phạm vi thời gian được cung cấp và tải các giá trị tính năng mới nhất vào cửa hàng trực tuyến đã định cấu hình.
materialize
-
incremental
lệnh sẽ chỉ nhập dữ liệu mới đã đến cửa hàng ngoại tuyến, kể từ lần gọi hiện thực hóa cuối cùng.

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

Đầu ra:

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]

Bước 7:Tìm nạp các vectơ đặc trưng để suy luận

Tại thời điểm suy luận, chúng tôi cần đọc nhanh các giá trị tính năng mới nhất cho các trình điều khiển khác nhau (nếu không, có thể chỉ tồn tại trong các nguồn hàng loạt) từ cửa hàng tính năng trực tuyến Redis, sử dụng

get_online_features()
. Sau đó, các vectơ đặc trưng này có thể được đưa vào mô hình.

Python

( Sao chép mã bên dưới vào một tệp get_feature_vectors.py và sau đó chạy nó):

Đầu ra

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

Xin chúc mừng! Bạn đã đến phần cuối của hướng dẫn. Để tắt máy chủ Redis đang chạy ẩn, bạn có thể sử dụng

redis-cli shutdown
lệnh.

Tóm tắt hướng dẫn:

Trong hướng dẫn này, bạn đã triển khai một cửa hàng tính năng cục bộ với cửa hàng ngoại tuyến tệp Parquet và cửa hàng trực tuyến Redis. Sau đó, bạn đã xây dựng một tập dữ liệu đào tạo bằng cách sử dụng các tính năng chuỗi thời gian từ các tệp Parquet. Sau đó, bạn hiện thực hóa các giá trị tính năng từ cửa hàng ngoại tuyến vào cửa hàng trực tuyến Redis. Cuối cùng, bạn đọc các tính năng mới nhất từ ​​cửa hàng trực tuyến Redis để suy luận. Với Redis là cửa hàng trực tuyến, bạn có thể đọc rất nhanh tính năng mới nhất cho các trường hợp sử dụng ML thời gian thực, với độ trễ thấp và thông lượng cao trên quy mô lớn.

Tiếp theo là gì?

  • Đọc trang Khái niệm về Lễ để hiểu mô hình dữ liệu của Lễ và đọc trang Kiến trúc của Lễ.
  • Đọc hướng dẫn cấu hình đầy đủ cho Feast with Redis và mô hình dữ liệu được sử dụng để lưu trữ các giá trị tính năng trong Redis.
  • Nghiên cứu điển hình - học hỏi từ các đồng nghiệp của bạn:Tìm hiểu cách các công ty đang sử dụng Cửa hàng tính năng với Redis làm cửa hàng trực tuyến (Wix, Swiggy, Comcast, Zomato, AT&T, DoorDash, iFood) và cụ thể là cách họ sử dụng Feast with Redis cho cửa hàng trực tuyến của họ (Gojek, Udaan, Robinhood).
  • Đọc về Cửa hàng tính năng được quản lý Azure với Feast và Redis và làm theo hướng dẫn Bắt đầu với Feast trên Azure cũng như các hướng dẫn khác về Feast
  • Bạn cũng có thể tìm thêm thông tin về Feast hoặc Redis trong các trang giới thiệu sản phẩm chung trên Feast và Redis tương ứng.

Tham gia cùng những người dùng và cộng tác viên khác của Feast trong Slack và trở thành một phần của cộng đồng!