Skip to content

Commit fe227ea

Browse files
committed
fix: changes following issue 4593
Signed-off-by: Theodor Mihalache <tmihalac@redhat.com>
1 parent cd87562 commit fe227ea

File tree

20 files changed

+540
-20
lines changed

20 files changed

+540
-20
lines changed

docs/getting-started/concepts/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
[overview.md](overview.md)
55
{% endcontent-ref %}
66

7+
{% content-ref url="project.md" %}
8+
[project.md](project.md)
9+
{% endcontent-ref %}
10+
711
{% content-ref url="data-ingestion.md" %}
812
[data-ingestion.md](data-ingestion.md)
913
{% endcontent-ref %}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Feature views consist of:
1414
* zero or more [entities](entity.md)
1515
* If the features are not related to a specific object, the feature view might not have entities; see [feature views without entities](feature-view.md#feature-views-without-entities) below.
1616
* a name to uniquely identify this feature view in the project.
17-
* (optional, but recommended) a schema specifying one or more [features](feature-view.md#feature) (without this, Feast will infer the schema by reading from the data source)
17+
* (optional, but recommended) a schema specifying one or more [features](feature-view.md#field) (without this, Feast will infer the schema by reading from the data source)
1818
* (optional, but recommended) metadata (for example, description, or other free-form metadata via `tags`)
1919
* (optional) a TTL, which limits how far back Feast will look when generating historical datasets
2020

docs/getting-started/concepts/overview.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,7 @@
22

33
### Feast project structure
44

5-
The top-level namespace within Feast is a **project**. Users define one or more [feature views](feature-view.md) within a project. Each feature view contains one or more [features](feature-view.md#feature). These features typically relate to one or more [entities](entity.md). A feature view must always have a [data source](data-ingestion.md), which in turn is used during the generation of training [datasets](feature-retrieval.md#dataset) and when materializing feature values into the online store.
6-
7-
![](<../../.gitbook/assets/image (7).png>)
8-
9-
**Projects** provide complete isolation of feature stores at the infrastructure level. This is accomplished through resource namespacing, e.g., prefixing table names with the associated project. Each project should be considered a completely separate universe of entities and features. It is not possible to retrieve features from multiple projects in a single request. We recommend having a single feature store and a single project per environment (`dev`, `staging`, `prod`).
5+
The top-level namespace within Feast is a [project](project.md).
106

117
### Data ingestion
128

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Project
2+
3+
Projects provide complete isolation of feature stores at the infrastructure level. This is accomplished through resource namespacing, e.g., prefixing table names with the associated project. Each project should be considered a completely separate universe of entities and features. It is not possible to retrieve features from multiple projects in a single request. We recommend having a single feature store and a single project per environment (`dev`, `staging`, `prod`).
4+
5+
![](<../../.gitbook/assets/image (7).png>)
6+
7+
Users define one or more [feature views](feature-view.md) within a project. Each feature view contains one or more [features](feature-view.md#field). These features typically relate to one or more [entities](entity.md). A feature view must always have a [data source](data-ingestion.md), which in turn is used during the generation of training [datasets](feature-retrieval.md#dataset) and when materializing feature values into the online store.
8+
9+
The concept of project provide the following benefits:
10+
11+
**Logical Grouping**: Projects group related features together, making it easier to manage and track them.
12+
13+
**Feature Definitions**: Within a project, you can define features, including their metadata, types, and sources. This helps standardize how features are created and consumed.
14+
15+
**Isolation**: Projects provide a way to isolate different environments, such as development, testing, and production, ensuring that changes in one project do not affect others.
16+
17+
**Collaboration**: By organizing features within projects, teams can collaborate more effectively, with clear boundaries around the features they are responsible for.
18+
19+
**Access Control**: Projects can implement permissions, allowing different users or teams to access only the features relevant to their work.

docs/getting-started/quickstart.md

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,23 @@
11
# Quickstart
22

3-
In this tutorial we will
3+
## What is Feast?
4+
5+
Feast (Feature Store) is an open-source feature store designed to facilitate the management and serving of machine learning features in a way that supports both batch and real-time applications.
6+
7+
For more info refer to [Introduction to feast](../README.md)
8+
9+
## Prerequisites
10+
* Ensure that you have Python (3.9 or above) installed.
11+
* It is recommended to create and work in a virtual environment:
12+
```sh
13+
# create & activate a virtual environment
14+
python -m venv venv/
15+
source venv/bin/activate
16+
```
17+
18+
## Overview
19+
20+
In this tutorial we will:
421

522
1. Deploy a local feature store with a **Parquet file offline store** and **Sqlite online store**.
623
2. Build a training dataset using our time series features from our **Parquet files**.
@@ -9,7 +26,7 @@ In this tutorial we will
926
5. Read the latest features from the online store for real-time inference.
1027
6. Explore the (experimental) Feast UI
1128

12-
## Overview
29+
***Note*** - Feast can used as an executable or as a server, please refer to [feast feature server](../reference/feature-servers/python-feature-server.md)
1330

1431
In this tutorial, we'll use Feast to generate training data and power online model inference for a
1532
ride-sharing driver satisfaction prediction model. Feast solves several common issues in this flow:
@@ -279,7 +296,7 @@ There's an included `test_workflow.py` file which runs through a full sample wor
279296
7. Verify online features are updated / fresher
280297

281298
We'll walk through some snippets of code below and explain
282-
### Step 3a: Register feature definitions and deploy your feature store
299+
### Step 4: Register feature definitions and deploy your feature store
283300

284301
The `apply` command scans python files in the current directory for feature view/entity definitions, registers the
285302
objects, and deploys infrastructure. In this example, it reads `example_repo.py` and sets up SQLite online store tables. Note that we had specified SQLite as the default online store by
@@ -311,7 +328,7 @@ Created sqlite table my_project_driver_hourly_stats
311328
{% endtab %}
312329
{% endtabs %}
313330

314-
### Step 3b: Generating training data or powering batch scoring models
331+
### Step 5: Generating training data or powering batch scoring models
315332

316333
To train a model, we need features and labels. Often, this label data is stored separately (e.g. you have one table storing user survey results and another set of tables with feature values). Feast can help generate the features that map to these labels.
317334

@@ -466,7 +483,7 @@ print(training_df.head())
466483
```
467484
{% endtab %}
468485
{% endtabs %}
469-
### Step 3c: Ingest batch features into your online store
486+
### Step 6: Ingest batch features into your online store
470487

471488
We now serialize the latest values of features since the beginning of time to prepare for serving (note:
472489
`materialize-incremental` serializes all new features since the last `materialize` call).
@@ -499,7 +516,7 @@ Materializing 2 feature views to 2024-04-19 10:59:58-04:00 into the sqlite onlin
499516
{% endtab %}
500517
{% endtabs %}
501518

502-
### Step 3d: Fetching feature vectors for inference
519+
### Step 7: Fetching feature vectors for inference
503520

504521
At inference time, we need to quickly read the latest feature values for different drivers (which otherwise might
505522
have existed only in batch sources) from the online feature store using `get_online_features()`. These feature
@@ -544,7 +561,7 @@ pprint(feature_vector)
544561
{% endtab %}
545562
{% endtabs %}
546563

547-
### Step 3e: Using a feature service to fetch online features instead.
564+
### Step 8: Using a feature service to fetch online features instead.
548565

549566
You can also use feature services to manage multiple features, and decouple feature view definitions and the
550567
features needed by end applications. The feature store can also be used to fetch either online or historical
@@ -594,7 +611,7 @@ pprint(feature_vector)
594611
{% endtab %}
595612
{% endtabs %}
596613

597-
## Step 4: Browse your features with the Web UI (experimental)
614+
## Step 9: Browse your features with the Web UI (experimental)
598615

599616
View all registered features, data sources, entities, and feature services with the Web UI.
600617

@@ -626,7 +643,7 @@ INFO: Uvicorn running on http://0.0.0.0:8888 (Press CTRL+C to quit)
626643

627644
![](../reference/ui.png)
628645

629-
## Step 5: Re-examine `test_workflow.py`
646+
## Step 10: Re-examine `test_workflow.py`
630647
Take a look at `test_workflow.py` again. It showcases many sample flows on how to interact with Feast. You'll see these
631648
show up in the upcoming concepts + architecture + tutorial pages as well.
632649

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Byte-compiled / optimized / DLL files
2+
__pycache__/
3+
*.py[cod]
4+
*.pyo
5+
*.pyd
6+
7+
# C extensions
8+
*.so
9+
10+
# Distribution / packaging
11+
.Python
12+
env/
13+
venv/
14+
ENV/
15+
env.bak/
16+
venv.bak/
17+
*.egg-info/
18+
dist/
19+
build/
20+
21+
# Pytest
22+
.cache
23+
*.cover
24+
*.log
25+
.coverage
26+
nosetests.xml
27+
coverage.xml
28+
*.hypothesis/
29+
*.pytest_cache/
30+
31+
# Jupyter Notebook
32+
.ipynb_checkpoints
33+
34+
# IDEs and Editors
35+
.vscode/
36+
.idea/
37+
*.swp
38+
*.swo
39+
*.sublime-workspace
40+
*.sublime-project
41+
42+
# OS generated files
43+
.DS_Store
44+
Thumbs.db
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Byte-compiled / optimized / DLL files
2+
__pycache__/
3+
*.py[cod]
4+
*.pyo
5+
*.pyd
6+
7+
# C extensions
8+
*.so
9+
10+
# Distribution / packaging
11+
.Python
12+
env/
13+
venv/
14+
ENV/
15+
env.bak/
16+
venv.bak/
17+
*.egg-info/
18+
dist/
19+
build/
20+
21+
# Pytest
22+
.cache
23+
*.cover
24+
*.log
25+
.coverage
26+
nosetests.xml
27+
coverage.xml
28+
*.hypothesis/
29+
*.pytest_cache/
30+
31+
# Jupyter Notebook
32+
.ipynb_checkpoints
33+
34+
# IDEs and Editors
35+
.vscode/
36+
.idea/
37+
*.swp
38+
*.swo
39+
*.sublime-workspace
40+
*.sublime-project
41+
42+
# OS generated files
43+
.DS_Store
44+
Thumbs.db
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Byte-compiled / optimized / DLL files
2+
__pycache__/
3+
*.py[cod]
4+
*.pyo
5+
*.pyd
6+
7+
# C extensions
8+
*.so
9+
10+
# Distribution / packaging
11+
.Python
12+
env/
13+
venv/
14+
ENV/
15+
env.bak/
16+
venv.bak/
17+
*.egg-info/
18+
dist/
19+
build/
20+
21+
# Pytest
22+
.cache
23+
*.cover
24+
*.log
25+
.coverage
26+
nosetests.xml
27+
coverage.xml
28+
*.hypothesis/
29+
*.pytest_cache/
30+
31+
# Jupyter Notebook
32+
.ipynb_checkpoints
33+
34+
# IDEs and Editors
35+
.vscode/
36+
.idea/
37+
*.swp
38+
*.swo
39+
*.sublime-workspace
40+
*.sublime-project
41+
42+
# OS generated files
43+
.DS_Store
44+
Thumbs.db

sdk/python/feast/templates/cassandra/bootstrap.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ def bootstrap():
275275

276276
# example_repo.py
277277
example_py_file = repo_path / "example_repo.py"
278-
replace_str_in_file(example_py_file, "%PARQUET_PATH%", str(driver_stats_path))
278+
replace_str_in_file(example_py_file, "%PARQUET_PATH%", str(driver_stats_path.relative_to(repo_path)))
279279

280280
# store config yaml, interact with user and then customize file:
281281
settings = collect_cassandra_store_settings()
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Byte-compiled / optimized / DLL files
2+
__pycache__/
3+
*.py[cod]
4+
*.pyo
5+
*.pyd
6+
7+
# C extensions
8+
*.so
9+
10+
# Distribution / packaging
11+
.Python
12+
env/
13+
venv/
14+
ENV/
15+
env.bak/
16+
venv.bak/
17+
*.egg-info/
18+
dist/
19+
build/
20+
21+
# Pytest
22+
.cache
23+
*.cover
24+
*.log
25+
.coverage
26+
nosetests.xml
27+
coverage.xml
28+
*.hypothesis/
29+
*.pytest_cache/
30+
31+
# Jupyter Notebook
32+
.ipynb_checkpoints
33+
34+
# IDEs and Editors
35+
.vscode/
36+
.idea/
37+
*.swp
38+
*.swo
39+
*.sublime-workspace
40+
*.sublime-project
41+
42+
# OS generated files
43+
.DS_Store
44+
Thumbs.db

0 commit comments

Comments
 (0)