Skip to content

Commit 87488ee

Browse files
chore(main): release 1.2.0 (#207)
* chore(main): release 1.2.0 * docs: added v1.2.0 version to docs --------- Co-authored-by: maocorte <maocorte@users.noreply.github.com>
1 parent 523d197 commit 87488ee

24 files changed

+1016
-6
lines changed

.github/release-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "1.1.0"
2+
".": "1.2.0"
33
}

CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,24 @@
11
# Changelog
22

3+
## [1.2.0](https://github.com/radicalbit/radicalbit-ai-monitoring/compare/v1.1.0...v1.2.0) (2024-12-10)
4+
5+
6+
### Features
7+
8+
* change banner introducing "Book a demo" ([#197](https://github.com/radicalbit/radicalbit-ai-monitoring/issues/197)) ([7842eb1](https://github.com/radicalbit/radicalbit-ai-monitoring/commit/7842eb148459fed7b6af9768dc41a4ac9012e2d1))
9+
* create a custom component and custom hooks to manage dark mode ([#199](https://github.com/radicalbit/radicalbit-ai-monitoring/issues/199)) ([05b93fb](https://github.com/radicalbit/radicalbit-ai-monitoring/commit/05b93fb3587900091cc1dcea37bb432e1e4abace))
10+
* improve layout and accessibility ([#201](https://github.com/radicalbit/radicalbit-ai-monitoring/issues/201)) ([7016c0f](https://github.com/radicalbit/radicalbit-ai-monitoring/commit/7016c0fa9923740ea1f773440dfff14761be30be))
11+
* ugrade design system to 1.4.0 ([#196](https://github.com/radicalbit/radicalbit-ai-monitoring/issues/196)) ([9358296](https://github.com/radicalbit/radicalbit-ai-monitoring/commit/9358296c0c8d78abe7b88229ff9fc2ec1f770254))
12+
* **ui:** add dark mode ([#195](https://github.com/radicalbit/radicalbit-ai-monitoring/issues/195)) ([1c3bc31](https://github.com/radicalbit/radicalbit-ai-monitoring/commit/1c3bc316a9e75598b11ff731b19392e2de5f7ccd))
13+
* **ui:** improve accessibility ([#198](https://github.com/radicalbit/radicalbit-ai-monitoring/issues/198)) ([8ea1e23](https://github.com/radicalbit/radicalbit-ai-monitoring/commit/8ea1e23d82ab5c3c00e4e01768d4dd87f9de6d4c))
14+
* upgrade design-system ([#200](https://github.com/radicalbit/radicalbit-ai-monitoring/issues/200)) ([6f582e6](https://github.com/radicalbit/radicalbit-ai-monitoring/commit/6f582e6680c26e5806f19c64ee827684026ab57c))
15+
16+
17+
### Bug Fixes
18+
19+
* percentage fix ([#206](https://github.com/radicalbit/radicalbit-ai-monitoring/issues/206)) ([523d197](https://github.com/radicalbit/radicalbit-ai-monitoring/commit/523d1974dbd513bb85107f50de2d5d6f3e5e5304))
20+
* **ui:** improve charts header legend ([#203](https://github.com/radicalbit/radicalbit-ai-monitoring/issues/203)) ([5c3ca24](https://github.com/radicalbit/radicalbit-ai-monitoring/commit/5c3ca24fc539ab434a36ec3dc3492aace6ca2d0b))
21+
322
## [1.1.0](https://github.com/radicalbit/radicalbit-ai-monitoring/compare/v1.0.1...v1.1.0) (2024-10-31)
423

524

api/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[tool.poetry]
22
name = "radicalbit-ai-monitoring"
33
# x-release-please-start-version
4-
version = "1.1.0"
4+
version = "1.2.0"
55
# x-release-please-end
66
description = "radicalbit platform"
77
authors = ["Radicalbit"]
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
---
2+
sidebar_position: 5
3+
---
4+
5+
# All metrics
6+
List of all available Metrics and Charts.
7+
8+
## CSV summary
9+
10+
* Number of variables
11+
* Number of observations
12+
* Number of missing values
13+
* Percentage of missing values
14+
* Number of duplicated rows
15+
* Percentage of duplicated rows
16+
* Number of **numerical** variables
17+
* Number of **categorical** variables
18+
* Number of **datetime** variables
19+
20+
Summary with all variable name and type (float, int, string, datetime).
21+
22+
## Data quality
23+
24+
* **Numerical** variables
25+
* Average
26+
* Standard deviation
27+
* Minimum
28+
* Maximum
29+
* Percentile 25%
30+
* Median
31+
* Percentile 75%
32+
* Number of missing values
33+
* Histogram with 10 bins
34+
* **Categorical** variables
35+
* Number of missing values
36+
* Percentage of missing values
37+
* Number of distinct values
38+
* For each distinct value:
39+
* count of observations
40+
* percentage of observations
41+
* **Ground truth**
42+
* if categorical i.e. for a classification model: bar plot *(for both reference and current for an easy comparison)*
43+
* if numerical, i.e. for a regression model: histogram with 10 bins *(for both reference and current for an easy comparison)*
44+
45+
## Model quality
46+
47+
* Classification model
48+
* Number of classes
49+
* Accuracy *(for both reference and current for an easy comparison)*
50+
* Line chart of accuracy over time
51+
* Confusion matrix
52+
* Log loss, *only for binary classification at the moment*
53+
* Line chart of log loss over time, *only for binary classification at the moment*
54+
* For each class:
55+
* Precision *(for both reference and current for an easy comparison)*
56+
* Recall *(for both reference and current for an easy comparison)*
57+
* F1 score *(for both reference and current for an easy comparison)*
58+
* True Positive Rate *(for both reference and current for an easy comparison)*
59+
* False Positive Rate *(for both reference and current for an easy comparison)*
60+
* Support *(for both reference and current for an easy comparison)*
61+
* Regression model
62+
* Mean squared error *(for both reference and current for an easy comparison)*
63+
* Root mean squared error *(for both reference and current for an easy comparison)*
64+
* Mean absolute error *(for both reference and current for an easy comparison)*
65+
* Mean absolute percentage error *(for both reference and current for an easy comparison)*
66+
* R-squared *(for both reference and current for an easy comparison)*
67+
* Adjusted R-squared *(for both reference and current for an easy comparison)*
68+
* Variance *(for both reference and current for an easy comparison)*
69+
* Line charts for all of the above over time
70+
* Residual analysis:
71+
* Correlation prediction/ground_truth
72+
* Residuals plot, i.e, scatter plot for standardised residuals and predictions
73+
* Scatter plot for predictions vs ground truth and linear regression line
74+
* Histogram of the residuals
75+
* Kolmogorov-Smirnov test of normality for residuals
76+
77+
## Data Drift
78+
79+
Data drift for all features using different algorithms depending on the data type: float, int, categorical. We use the following algorithms (but others will be added in the future):
80+
* [Chi-Square Test](https://en.wikipedia.org/wiki/Pearson%27s_chi-squared_test)
81+
* [Two-Sample Kolmogorov-Smirnov](https://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test#Two-sample_Kolmogorov%E2%80%93Smirnov_test)
82+
* [Population Stability Index](https://scholarworks.wmich.edu/dissertations/3208/)
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
sidebar_position: 6
3+
---
4+
5+
# Architecture
6+
7+
In this section we explore the architecture of the Radicalbit AI platform.
8+
The image below shows all the components of the platform:
9+
10+
![Alt text](/img/architecture/architecture.png "Architecture")
11+
12+
## API
13+
14+
API is the core of the platform, it exposes all the functionalities via REST APIs.
15+
It requires a PostgreSQL database to store data and a Kubernetes cluster to run Spark jobs for metrics evaluations.
16+
To store all dataset files a distributed storage is used.
17+
REST APIs could be used via user interface or using the provided Python SDK.
18+
19+
## UI
20+
21+
To use REST APIs with a human friendly interface, a UI is provided.
22+
It covers all the implemented APIs, starting from model creation and ending with all metrics visualization.
23+
24+
## SDK
25+
26+
To interact with API programmatically, a [_Python SDK_](python-sdk.md) is provided.
27+
The SDK implements all functionalities exposed via REST API.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
sidebar_position: 1
3+
---
4+
5+
# Introduction
6+
Let's discover the **Radicalbit AI Monitoring Platform** in less than 5 minutes.
7+
8+
## Welcome!
9+
This platform provides a comprehensive solution for monitoring and observing your Artificial Intelligence (AI) models in production.
10+
11+
### Why Monitor AI Models?
12+
While models often perform well during development and validation, their effectiveness can degrade over time in production due to various factors like data shifts or concept drift. The Radicalbit AI Monitor platform helps you proactively identify and address potential performance issues.
13+
14+
### Key Functionalities
15+
The platform provides comprehensive monitoring capabilities to ensure optimal performance of your AI models in production. It analyses both your reference dataset (used for pre-production validation) and the current datasets in use, allowing you to put under control:
16+
* **Data Quality:** evaluate the quality of your data, as high-quality data is crucial for maintaining optimal model performance. The platform analyses both numerical and categorical features in your dataset to provide insights into
17+
* *data distribution*
18+
* *missing values*
19+
* *target variable distribution* (for supervised learning).
20+
21+
* **Model Quality Monitoring:** the platform provides a comprehensive suite of metrics specifically designed at the moment for classification and regression models. \
22+
For classification these metrics include:
23+
* *Accuracy, Precision, Recall, and F1:* These metrics provide different perspectives on how well your model is classifying positive and negative cases.
24+
* *False/True Negative/Positive Rates and Confusion Matrix:* These offer a detailed breakdown of your model's classification performance, including the number of correctly and incorrectly classified instances.
25+
* *AUC-ROC and PR AUC:* These are performance curves that help visualize your model's ability to discriminate between positive and negative classes.
26+
27+
For regression these metrics include:
28+
* *Mean Absolute Error, Mean Squared Error, Root Mean Squared Error, R²:* These metrics provide different perspectives on how well your model is predicting a numerical value.
29+
* *Residual Analysis:* This offers a detailed breakdown of your model's performance, comparing predictions with ground truth and predictions with residuals, i.e. the difference between predictions and ground truth.
30+
* **Model Drift Detection:** analyse model drift, which occurs when the underlying data distribution changes over time and can affect model performance.
31+
32+
### Current Scope and Future Plans
33+
This version focuses on classification, both binary and multiclass, and regression models. Support for additional model types is planned for future releases.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"label": "Model sections",
3+
"position": 4,
4+
"link": {
5+
"type": "generated-index",
6+
"description": "Each created model includes three main sections — Overview, Reference, and Current — as well as a summary section called the Launchpad. This document provides an in-depth explanation of each section."
7+
}
8+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
sidebar_position: 4
3+
---
4+
5+
# Current
6+
The Current section stores all the information (statistics, model metrics and charts) related to the current dataset, placed side-by-side to the reference ones. The objective is to streamline and highlight every difference between the data over time. Throughout the platform, all the current information is coloured blue or in different shades.
7+
8+
> NOTE: in this section, you will always see the last uploaded current dataset. In case you need previous current analysis, you can browse among them in the `Import` section.
9+
10+
11+
## Data Quality
12+
The **Data Quality** dashboard contains a descriptive analysis of the current variables (blue) placed side-by-side with the reference ones (grey). It adapts itself accordingly to the `Model Type` and shows information such as:
13+
14+
- Number of observations
15+
- Number of classes (not in regression task)
16+
- Ground Truth Distribution
17+
- Histograms for Numerical Features
18+
- Descriptive Statistics for Numerical Features (average, standard deviation, ranges, percentiles, missing values)
19+
- Bar Charts for Categorical Features
20+
- Descriptive Statistics for Categorical Features(missing values, distinct values, frequencies)
21+
22+
![Alt text](/img/current/current-data-quality.png "Current Data Quality")
23+
24+
25+
## Model Quality
26+
27+
The **Model Quality** dashboard contains all the metrics used to evaluate the model performance in the current dataset and compare these values to the reference. Many of them are computed through the `prediction`/`probability` compared to the `ground truth`. Naturally, the platform computes the proper metrics according to the chosen `Model Type`. \
28+
Differently from the reference section, here, the metrics are computed over time thanks to the flagged `timestamp` columns and the `granularity` parameter chosen during the model creation.
29+
30+
![Alt text](/img/current/current-model-quality.png "Current Model Quality")
31+
32+
33+
## Data Drift
34+
35+
The **Data Drift** section contains the outcome of some drift detector executed for each variable.
36+
According to the field type (categorical or numerical), a specific drift is computed:
37+
38+
- Categoricals: **Chi-Square Test**
39+
- Numerical: **2-Samples-KS Test** (for `float` variables), **PSI** (for `int` variables)
40+
41+
If the dot placed at the side of the variable name is red, it means that a drift has been revealed and the relative chart (and statistical description) can be seen in the `Current/Data Quality` section.
42+
43+
![Alt text](/img/current/current-data-drift.png "Current Data Drift")
44+
45+
46+
## Import
47+
48+
The **Import** section lists the path where your current CSVs are stored. If you have a private AWS, the files will be saved in a dedicated S3 bucket otherwise, they will be saved locally with Minio (which shares the same syntax as S3).
49+
To see your current datasets stored in Minio, visit the address [http://localhost:9091](http://localhost:9091).
50+
51+
Here, you can browse between all the current datasets you have uploaded over time.
52+
53+
![Alt text](/img/current/current-import.png "Current Import")
54+
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
sidebar_position: 1
3+
---
4+
5+
# Launchpad
6+
The launchpad provides a dedicated space for summarising existing models.
7+
8+
![Alt text](/img/launchpad/launchpad.png "Launchpad")
9+
10+
It offers a quick overview of key aspects:
11+
12+
- **Data Quality Percentage:** This metric reflects the proportion of columns without anomalies across the current datasets. Anomalies are identified using the Interquartile Range (IQR) method, and the final percentage displayed is the average of each Current’s anomaly-free ratio.
13+
- **Model Quality Percentage:** This metric is calculated using a Bootstrap Test, based on historical metrics (the same grouped by Timestamp) from the Model Quality page for the current dataset. By grouping metrics over time (e.g., Accuracy), we generate multiple instances of the same metric, forming a statistical population. The Bootstrap Test then compares this population with the metric calculated for the Reference dataset, checking if it falls outside the 95% confidence interval. If so, the metric is flagged as “significantly different” between Reference and Current datasets. This process is repeated for each model metric, and the percentage of metrics that pass the test is returned.
14+
- **Drift Detection Percentage:** This percentage represents the ratio of features without drift over the total number of features.
15+
16+
> NOTE: if a metric cannot be computed, the placeholder `--` will be used.
17+
18+
The general **pie chart** represents the averages of each computed percentage across all models.
19+
20+
21+
Additional information appears on the right side:
22+
- **Work in Progress:** This section provides real-time updates on model activities, including ongoing and failed jobs.
23+
- **Alerts:** Here, you’ll find any alerts triggered by the percentages above. When an issue lowers a metric from its ideal 100%, the alert identifies the affected model and component. Clicking the alert takes you to the relevant page for more details.
24+
25+
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
sidebar_position: 2
3+
---
4+
5+
# Overview
6+
7+
The Overview is the section dedicated to the information recap of your reference dataset and your last current dataset, and it helps users to quickly assess the differences and monitor the data shapes.
8+
9+
10+
## Summary
11+
12+
The **Summary** table provides a side-by-side comparison of key metrics between the current and reference datasets:
13+
14+
- Number of variables
15+
- Number of observations
16+
- Missing Values
17+
- Missing Values (%)
18+
- Duplicated rows
19+
- Duplicated rows (%)
20+
- Number of numerical columns
21+
- Number of categorical columns
22+
- Number of Datetime columns
23+
24+
![Alt text](/img/overview/overview-summary.png "Overview Summary")
25+
26+
27+
## Variables
28+
29+
The **Variables** table lists all the columns flagged as `feature` or `ground truth`. That's the reason why we have chosen this name. Each field presents with its own type while the `ground truth` is flagged properly.
30+
For the meaning of the column `Field Type` see the *Hands-On Guide*.
31+
32+
![Alt text](/img/overview/overview-variables.png "Overview Variables")
33+
34+
35+
## Output
36+
37+
The **Output** table lists all the columns flagged as `probability` or `prediction` and it has to include all the fields produced by your model. Each field presents with its own type while the `probability` and the `prediction` are flagged properly.
38+
39+
![Alt text](/img/overview/overview-output.png "Overview Output")
40+
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
sidebar_position: 3
3+
---
4+
5+
# Reference
6+
The Reference section stores all the information (statistics, model metrics and charts) related to the reference dataset. Throughout the platform, all the reference information is gray-coloured.
7+
8+
9+
## Data Quality
10+
The **Data Quality** dashboard contains a descriptive analysis of the reference variables. It adapts itself accordingly to the model type and shows information such as:
11+
12+
- Number of observations
13+
- Number of classes (not in regression task)
14+
- Ground Truth Distribution
15+
- Histograms for Numerical Features
16+
- Descriptive Statistics for Numerical Features (average, standard deviation, ranges, percentiles, missing values)
17+
- Bar Charts for Categorical Features
18+
- Descriptive Statistics for Categorical Features(missing values, distinct values, frequencies)
19+
20+
![Alt text](/img/reference/reference-data-quality.png "Reference Data Quality")
21+
22+
23+
## Model Quality
24+
25+
The **Model Quality** dashboard contains all the metrics used to evaluate the model performance. Many of them are computed through the `prediction`/`probability` compared to the `ground truth`. Naturally, the platform computes the proper metrics according to the chosen `Model Type`.
26+
27+
![Alt text](/img/reference/reference-model-quality.png "Reference Modela Quality")
28+
29+
30+
## Import
31+
32+
The **Import** section lists the path where your reference CSV is stored. If you have a private AWS, the file will be saved in a dedicated S3 bucket otherwise, it will be saved locally with Minio (which shares the same syntax as S3).
33+
To see your reference dataset stored in Minio, visit the address [http://localhost:9091](http://localhost:9091).
34+
35+
![Alt text](/img/reference/reference-import.png "Reference Import")
36+

0 commit comments

Comments
 (0)