Functions related to Haystack ML
Project description
Haystack ML Stack
Currently this project contains a FastAPI-based service designed for low-latency scoring of streams data coming from http requests
🚀 Features
- FastAPI Service: Lightweight and fast web service for ML inference.
- Asynchronous I/O: Utilizes
aiobotocorefor non-blocking S3 and DynamoDB operations. - Model Loading: Downloads and loads the ML model (using
cloudpickle) from a configurable S3 path on startup. - Feature Caching: Implements a thread-safe Time-To-Live (TTL) / Least-Recently-Used (LRU) cache (
cachetools.TLRUCache) for DynamoDB features, reducing latency and database load. - DynamoDB Integration: Fetches stream-specific features from DynamoDB to enrich the data before scoring.
- Health Check: Provides a
/healthendpoint to monitor service status and model loading.
- Asynchronous I/O: Utilizes
📦 Installation
This project requires Python 3.11 or later.
-
Install package: The dependencies associated are listed in
pyproject.toml.pip install haystack-ml-stack
⚙️ Configuration
The service is configured using environment variables, managed by pydantic-settings. You can use a .env file for local development.
| Variable Name | Alias | Default | Description |
|---|---|---|---|
S3_MODEL_PATH |
S3_MODEL_PATH |
None |
Required. The s3://bucket/key URL for the cloudpickled ML model file. |
FEATURES_TABLE |
FEATURES_TABLE |
"features" |
Name of the DynamoDB table storing stream features. |
LOGS_FRACTION |
LOGS_FRACTION |
0.01 |
Fraction of requests to log detailed stream data for sampling/debugging (0.0 to 1.0). |
CACHE_MAXSIZE |
(none) | 50000 |
Maximum size of the in-memory feature cache. |
Example env vars
S3_MODEL_PATH="s3://my-ml-models/stream-scorer/latest.pkl"
FEATURES_TABLE="features"
LOGS_FRACTION=0.05
🌐 Endpoints
| Method | Path | Description |
|---|---|---|
| GET | / |
Root endpoint, returns a simple running message. |
| GET | /health |
Checks if the service is running and if the ML model has been loaded. |
| POST | /score |
Main scoring endpoint. Accepts stream data and returns model predictions. |
💻 Technical Details
Model Structure
The ML model file downloaded from S3 is expected to be a cloudpickle-serialized Python dictionary with the following structure:
model = {
"preprocess": <function>, # Function to transform request data into model input.
"predict": <function>, # Function to perform the actual model inference.
"params": <dict/any>, # Optional parameters passed to preprocess/predict.
"stream_features": <list[str]>, # Optional list of feature names to fetch from DynamoDB.
}
Feature Caching (cache.py)
The ThreadSafeTLRUCache ensures that feature lookups and updates are thread-safe.
The _ttu (time-to-use) policy allows features to specify their own TTL via a cache_ttl_in_seconds key in the stored value.
DynamoDB Feature Fetching (dynamo.py)
The set_stream_features function handles:
-
Checking the in-memory cache for required
stream_features. -
Batch-fetching any missing features from DynamoDB.
-
Parsing the low-level DynamoDB items into Python types.
-
Populating the cache with the fetched data, respecting the feature's TTL.
-
Injecting the fetched feature values back into the streams list in the request payload.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file haystack_ml_stack-0.2.3.tar.gz.
File metadata
- Download URL: haystack_ml_stack-0.2.3.tar.gz
- Upload date:
- Size: 11.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45131c128e7d1a642f7b6b6d3aa4b1f63532dfe8a4040b609405c7da668728c7
|
|
| MD5 |
c60d7b6fd3be53dd7a060b01807abc25
|
|
| BLAKE2b-256 |
15c93739af3c181570fa28e4cb2a2c2ce5f887477e620d023bc2589a4bf96517
|
File details
Details for the file haystack_ml_stack-0.2.3-py3-none-any.whl.
File metadata
- Download URL: haystack_ml_stack-0.2.3-py3-none-any.whl
- Upload date:
- Size: 11.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
250135f2557f60b6874c984349e197fe7fd81a7481b3325702346abe089688a9
|
|
| MD5 |
e2d205b0a64ce4e0a86cb459ff469b18
|
|
| BLAKE2b-256 |
f403a69f2eb760e95b7d005cc539a3bc2bf0a9d606762a3fc6ad2ade98453b19
|