Point-in-time correctness in MLOps - Commands & Configuration
mlflow run . -P data_version=2024-06-01 -P model_version=1.0
-P - Passes parameters to specify exact data and model versionsmlflow artifacts download -r 123abc -d ./downloaded_modelmlflow models serve -m ./downloaded_model --no-conda
--no-conda - Avoids creating a new environment, using current setupIf you remember nothing else from this pattern, remember: always link your model version with the exact data snapshot to avoid mismatches.
import mlflow # Log data version and model version as tags with mlflow.start_run() as run: mlflow.set_tag("data_version", "2024-06-01") mlflow.set_tag("model_version", "1.0") # Log a simple metric mlflow.log_metric("accuracy", 0.95) print(f"Run ID: {run.info.run_id} logged with point-in-time correctness tags")
Practice
What does point-in-time correctness ensure in MLOps?
Solution
Step 1: Understand the concept of point-in-time correctness
It means using data only up to a certain moment to avoid using future information.Step 2: Identify the correct practice
Using future data can cause wrong model results, so only past and present data should be used.Final Answer:
Using only data available up to a specific moment to avoid future data leaks -> Option CQuick Check:
Point-in-time correctness = Use past data only [OK]
- Using future data accidentally
- Ignoring timestamps in data
- Assuming all data is valid regardless of time
Which of the following is the correct way to filter data for point-in-time correctness using SQL?
SELECT * FROM sales WHERE sale_date <= '2023-01-01'
Solution
Step 1: Understand filtering for point-in-time correctness
We want data up to and including the date '2023-01-01'.Step 2: Choose the correct SQL condition
The condition should be sale_date less than or equal to '2023-01-01' to include all past data.Final Answer:
SELECT * FROM sales WHERE sale_date <= '2023-01-01' -> Option AQuick Check:
Use <= for up to a date [OK]
- Using > instead of <=
- Filtering only exact date instead of all past data
- Using >= which includes future data
Given the following Python code snippet for filtering data by timestamp, what will be the output?
data = [
{'id': 1, 'timestamp': '2023-01-01'},
{'id': 2, 'timestamp': '2023-02-01'},
{'id': 3, 'timestamp': '2022-12-31'}
]
cutoff = '2023-01-01'
filtered = [d['id'] for d in data if d['timestamp'] <= cutoff]
print(filtered)Solution
Step 1: Analyze the filtering condition
We keep items where timestamp is less than or equal to '2023-01-01'.Step 2: Check each item
Item 1: '2023-01-01' <= '2023-01-01' (True), Item 2: '2023-02-01' <= '2023-01-01' (False), Item 3: '2022-12-31' <= '2023-01-01' (True).Final Answer:
[1, 3] -> Option DQuick Check:
Filter by <= cutoff date = [1, 3] [OK]
- Including future dates mistakenly
- Confusing < and <=
- Ignoring date format in comparison
Identify the error in this code snippet that tries to enforce point-in-time correctness:
def filter_data(data, cutoff):
return [d for d in data if d['timestamp'] > cutoff]
# cutoff = '2023-01-01'Solution
Step 1: Understand the filtering logic
Point-in-time correctness requires data up to the cutoff date, so timestamps should be less than or equal to cutoff.Step 2: Identify the error in comparison
The code uses > cutoff, which selects future data instead of past data.Final Answer:
The comparison should be <= cutoff, not > cutoff -> Option BQuick Check:
Use <= cutoff to filter past data [OK]
- Using > instead of <=
- Ignoring cutoff definition
- Incorrect list comprehension syntax
You have a dataset with multiple features collected over time. You want to create a feature store snapshot that guarantees point-in-time correctness for model training on 2023-03-01. Which approach is best?
Solution
Step 1: Understand snapshot purpose
A snapshot should represent data exactly as it was up to the training date to avoid future data leaks.Step 2: Choose filtering strategy
Filtering all features with timestamps less than or equal to '2023-03-01' ensures point-in-time correctness.Step 3: Save filtered data as snapshot
This snapshot can be used safely for training without future data contamination.Final Answer:
Filter all features to include only data with timestamps <= '2023-03-01' and save as snapshot -> Option AQuick Check:
Snapshot = Filter by cutoff date [OK]
- Using future data in snapshot
- Ignoring timestamp filtering
- Random sampling without time consideration
Ready to prove it?
Pass the test and this pattern moves unknown
