Skip to content

Commit 0cbc5f2

Browse files
authored
docs: Add Web UI documentation and update FAQ / feature retrieval docs (#2675)
* docs: Add Web UI documentation Signed-off-by: Danny Chiao <danny@tecton.ai> * add image Signed-off-by: Danny Chiao <danny@tecton.ai> * fix Signed-off-by: Danny Chiao <danny@tecton.ai> * fix Signed-off-by: Danny Chiao <danny@tecton.ai> * fix Signed-off-by: Danny Chiao <danny@tecton.ai> * fix Signed-off-by: Danny Chiao <danny@tecton.ai> * fix Signed-off-by: Danny Chiao <danny@tecton.ai> * fix Signed-off-by: Danny Chiao <danny@tecton.ai> * fix Signed-off-by: Danny Chiao <danny@tecton.ai>
1 parent 1b09ca2 commit 0cbc5f2

File tree

15 files changed

+246
-27946
lines changed

15 files changed

+246
-27946
lines changed

README.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ feast apply
4848
### 4. Explore your data in the web UI (experimental)
4949

5050
![Web UI](ui/sample.png)
51+
```commandline
52+
feast ui
53+
```
5154

5255
### 5. Build a training dataset
5356
```python
@@ -204,7 +207,7 @@ The list below contains the functionality that contributors are planning to deve
204207
* [x] CLI for browsing feature registry
205208
* [x] Model-centric feature tracking (feature services)
206209
* [x] Amundsen integration (see [Feast extractor](https://github.com/amundsen-io/amundsen/blob/main/databuilder/databuilder/extractor/feast_extractor.py))
207-
* [x] Feast Web UI (alpha)
210+
* [x] Feast Web UI (Alpha release. See [documentation](https://docs.feast.dev/reference/alpha-web-ui.md))
208211
* [ ] REST API for browsing feature registry
209212
* [ ] Feature versioning
210213

docs/SUMMARY.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
* [Data source](getting-started/concepts/data-source.md)
1414
* [Entity](getting-started/concepts/entity.md)
1515
* [Feature view](getting-started/concepts/feature-view.md)
16-
* [Feature service](getting-started/concepts/feature-service.md)
1716
* [Feature retrieval](getting-started/concepts/feature-retrieval.md)
1817
* [Point-in-time joins](getting-started/concepts/point-in-time-joins.md)
1918
* [Dataset](getting-started/concepts/dataset.md)
@@ -86,6 +85,7 @@
8685
* [Feature servers](reference/feature-servers/README.md)
8786
* [Python feature server](reference/feature-servers/python-feature-server.md)
8887
* [Go-based feature retrieval](reference/feature-servers/go-feature-retrieval.md)
88+
* [\[Alpha\] Web UI](reference/alpha-web-ui.md)
8989
* [\[Alpha\] Data quality monitoring](reference/dqm.md)
9090
* [\[Alpha\] On demand feature view](reference/alpha-on-demand-feature-view.md)
9191
* [\[Alpha\] AWS Lambda feature server](reference/alpha-aws-lambda-feature-server.md)

docs/getting-started/concepts/README.md

-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88

99
{% page-ref page="feature-view.md" %}
1010

11-
{% page-ref page="feature-service.md" %}
12-
1311
{% page-ref page="feature-retrieval.md" %}
1412

1513
{% page-ref page="point-in-time-joins.md" %}

docs/getting-started/concepts/feature-retrieval.md

+51
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,59 @@ A dataset is a collection of rows that is produced by a historical retrieval fro
88

99
**Dataset vs Data Source:** Datasets are the output of historical retrieval, whereas data sources are the inputs. One or more data sources can be used in the creation of a dataset.
1010

11+
## Feature Services
12+
A feature service is an object that represents a logical group of features from one or more [feature views](feature-view.md#feature-view). Feature Services allows features from within a feature view to be used as needed by an ML model. Users can expect to create one feature service per model version, allowing for tracking of the features used by models.
13+
14+
{% tabs %}
15+
{% tab title="driver_trips_feature_service.py" %}
16+
```python
17+
from driver_ratings_feature_view import driver_ratings_fv
18+
from driver_trips_feature_view import driver_stats_fv
19+
20+
driver_stats_fs = FeatureService(
21+
name="driver_activity",
22+
features=[driver_stats_fv, driver_ratings_fv[["lifetime_rating"]]]
23+
)
24+
```
25+
{% endtab %}
26+
{% endtabs %}
27+
28+
Feature services are used during
29+
30+
* The generation of training datasets when querying feature views in order to find historical feature values. A single training dataset may consist of features from multiple feature views.
31+
* Retrieval of features for batch scoring from the offline store (e.g. with an entity dataframe where all timestamps are `now()`)
32+
* Retrieval of features from the online store for online inference (with smaller batch sizes). The features retrieved from the online store may also belong to multiple feature views.
33+
34+
{% hint style="info" %}
35+
Applying a feature service does not result in an actual service being deployed.
36+
{% endhint %}
37+
38+
Feature services enable referencing all or some features from a feature view.
39+
40+
Retrieving from the online store with a feature service
41+
```python
42+
from feast import FeatureStore
43+
feature_store = FeatureStore('.') # Initialize the feature store
44+
45+
feature_service = feature_store.get_feature_service("driver_activity")
46+
features = feature_store.get_online_features(
47+
features=feature_service, entity_rows=[entity_dict]
48+
)
49+
```
50+
51+
Retrieving from the offline store with a feature service
52+
```python
53+
from feast import FeatureStore
54+
feature_store = FeatureStore('.') # Initialize the feature store
55+
56+
feature_service = feature_store.get_feature_service("driver_activity")
57+
feature_store.get_historical_features(features=feature_service, entity_df=entity_df)
58+
```
59+
1160
## Feature References
1261

62+
This mechanism of retrieving features is only recommended as you're experimenting. Once you want to launch experiments or serve models, feature services are recommended.
63+
1364
Feature references uniquely identify feature values in Feast. The structure of a feature reference in string form is as follows: `<feature_view>:<feature>`
1465

1566
Feature references are used for the retrieval of features from Feast:

docs/getting-started/concepts/feature-service.md

-48
This file was deleted.

docs/getting-started/faq.md

+34-11
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,15 @@ The [quickstart](quickstart.md) is the easiest way to learn about Feast. For mor
1414

1515
## Concepts
1616

17-
### What is the difference between feature tables and feature views?
18-
19-
Feature tables from Feast 0.9 have been renamed to feature views in Feast 0.10+. For more details, please see the discussion [here](https://github.com/feast-dev/feast/issues/1583).
20-
2117
### Do feature views have to include entities?
2218

2319
No, there are [feature views without entities](concepts/feature-view.md#feature-views-without-entities).
2420

21+
### How does Feast handle model or feature versioning?
22+
Feast expects that each version of a model corresponds to a different feature service.
23+
24+
Feature views once they are used by a feature service are intended to be immutable and not deleted (until a feature service is removed). In the future, `feast plan` and `feast apply will throw errors if it sees this kind of behavior.
25+
2526
### What is the difference between data sources and the offline store?
2627

2728
The data source itself defines the underlying data warehouse table in which the features are stored. The offline store interface defines the APIs required to make an arbitrary compute layer work for Feast (e.g. pulling features given a set of feature views from their sources, exporting the data set results to different formats). Please see [data sources](concepts/data-source.md) and [offline store](architecture-and-components/offline-store.md) for more details.
@@ -32,13 +33,31 @@ Yes, this is possible. For example, you can use BigQuery as an offline store and
3233

3334
## Functionality
3435

36+
### How do I run `get_historical_features` without providing an entity dataframe?
37+
Feast does not provide a way to do this right now. This is an area we're actively interested in contributions for. See [GitHub issue](https://github.com/feast-dev/feast/issues/1611)
38+
3539
### Does Feast provide security or access control?
3640

3741
Feast currently does not support any access control other than the access control required for the Provider's environment (for example, GCP and AWS permissions).
3842

43+
It is a good idea though to lock down the registry file so only the CI/CD pipeline can modify it. That way data scientists and other users cannot accidentally modify the registry and lose other team's data.
44+
3945
### Does Feast support streaming sources?
4046

41-
Yes. In earlier versions of Feast, we used Feast Spark to manage ingestion from stream sources. In the current version of Feast, we support [push based ingestion](../reference/data-sources/push.md).
47+
Yes. In earlier versions of Feast, we used Feast Spark to manage ingestion from stream sources. In the current version of Feast, we support [push based ingestion](../reference/data-sources/push.md). Streaming transformations are actively being worked on.
48+
49+
### Does Feast support feature transformation?
50+
51+
There are several kinds of transformations:
52+
- On demand transformations (See [docs](../reference/alpha-on-demand-feature-view.md))
53+
- These transformations are Pandas transformations run on batch data when you call `get_historical_features` and at online serving time when you call `get_online_features.
54+
- Note that if you use push sources to ingest streaming features, these transformations will execute on the fly as well
55+
- Batch transformations (WIP, see [RFC](https://docs.google.com/document/d/1964OkzuBljifDvkV-0fakp2uaijnVzdwWNGdz7Vz50A/edit#))
56+
- These will include SQL + PySpark based transformations on batch data sources.
57+
- Streaming transformations (RFC in progress)
58+
59+
### Does Feast have a Web UI?
60+
Yes. See [documentation](../reference/alpha-web-ui.md).
4261

4362
### Does Feast support composite keys?
4463

@@ -50,7 +69,7 @@ Please see a detailed comparison of Feast vs. Tecton [here](https://www.tecton.a
5069

5170
### What are the performance/latency characteristics of Feast?
5271

53-
Feast is designed to work at scale and support low latency online serving. Benchmarks ([RFC](https://docs.google.com/document/d/12UuvTQnTTCJhdRgy6h10zSbInNGSyEJkIxpOcgOen1I/edit)) will be released soon, and active work is underway to support very latency sensitive use cases.
72+
Feast is designed to work at scale and support low latency online serving. See our [benchmark blog post](https://feast.dev/blog/feast-benchmarks/) for details.
5473

5574
### Does Feast support embeddings and list features?
5675

@@ -77,7 +96,7 @@ Please follow the instructions [here](../how-to-guides/adding-support-for-a-new-
7796

7897
### Can the same storage engine be used for both the offline and online store?
7998

80-
Yes. For example, the Postgres [connector](https://github.com/nossrannug/feast-postgres) can be used as both an offline and online store.
99+
Yes. For example, the Postgres connector can be used as both an offline and online store (as well as the registry).
81100

82101
### Does Feast support S3 as a data source?
83102

@@ -88,14 +107,21 @@ Yes. There are two ways to use S3 in Feast:
88107

89108
### How can I use Spark with Feast?
90109

91-
Feast does not support Spark natively. However, you can create a [custom provider](../how-to-guides/creating-a-custom-provider.md) that will support Spark, which can help with more scalable materialization and ingestion.
110+
Feast supports ingestion via Spark (See ) does not support Spark natively. However, you can create a [custom provider](../how-to-guides/creating-a-custom-provider.md) that will support Spark, which can help with more scalable materialization and ingestion.
92111

93112
### Is Feast planning on supporting X functionality?
94113

95114
Please see the [roadmap](../roadmap.md).
96115

97116
## Project
98117

118+
### How do I contribute to Feast?
119+
120+
For more details on contributing to the Feast community, see [here](../community.md) and this [here](../project/contributing.md).
121+
122+
123+
## Feast 0.9 (legacy)
124+
99125
### What is the difference between Feast 0.9 and Feast 0.10+?
100126

101127
Feast 0.10+ is much lighter weight and more extensible than Feast 0.9. It is designed to be simple to install and use. Please see this [document](https://docs.google.com/document/d/1AOsr\_baczuARjCpmZgVd8mCqTF4AZ49OEyU4Cn-uTT0) for more details.
@@ -104,9 +130,6 @@ Feast 0.10+ is much lighter weight and more extensible than Feast 0.9. It is des
104130

105131
Please see this [document](https://docs.google.com/document/d/1AOsr\_baczuARjCpmZgVd8mCqTF4AZ49OEyU4Cn-uTT0). If you have any questions or suggestions, feel free to leave a comment on the document!
106132

107-
### How do I contribute to Feast?
108-
109-
For more details on contributing to the Feast community, see [here](../community.md) and this [here](../project/contributing.md).
110133

111134
### What are the plans for Feast Core, Feast Serving, and Feast Spark?
112135

docs/getting-started/quickstart.md

+8-1
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ pprint(feature_vector)
365365
{% endtab %}
366366
{% endtabs %}
367367

368-
## Step 7: Using a featureservice to fetch online features instead.
368+
## Step 7: Using a feature service to fetch online features instead.
369369

370370
You can also use feature services to manage multiple features, and decouple feature view definitions and the features needed by end applications. The feature store can also be used to fetch either online or historical features using the same api below. More information can be found [here](https://docs.feast.dev/getting-started/concepts/feature-service).
371371

@@ -399,6 +399,13 @@ features = feature_store.get_online_features(
399399
{% endtab %}
400400
{% endtabs %}
401401

402+
## Step 8: Browse your features with the Web UI (experimental)
403+
404+
View all registered features, data sources, entities, and feature services with the Web UI.
405+
406+
One of the ways to view this is with the `feast ui` command.
407+
408+
![](../reference/ui.png)
402409

403410
## Next steps
404411

0 commit comments

Comments
 (0)