-
Notifications
You must be signed in to change notification settings - Fork 62
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MCorr example notebook #186
MCorr example notebook #186
Conversation
Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com>
…arch-py-ml into mCorr_example the commit.
Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com>
Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com>
Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com>
Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com>
Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com>
Codecov Report
@@ Coverage Diff @@
## main #186 +/- ##
=======================================
Coverage 91.15% 91.15%
=======================================
Files 37 37
Lines 4091 4091
=======================================
Hits 3729 3729
Misses 362 362 |
docs/source/examples/index.rst
Outdated
demo_ml_commons_integration | ||
|
||
Demo notebooks for ML Commons no-model-based algorithms |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Demo Notebooks for In-house python based models"
We added a new workflow changelog verifier. Please add a line here in |
}, | ||
{ | ||
"data": { | ||
"text/plain": "<Figure size 640x480 with 1 Axes>", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you share any notebook url from your repo which has the same output? It's not quite possible to review from here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you see it from here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you see it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I can see it. Sorry I forgot to reply. @greaa-aws will also review your PR and comment here as well.
Looks like we didn't use |
Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com>
I removed the labels. Anything else needs that needs to be changed? |
@greaa-aws is going to send you a dataset which works better shortly. |
I'm going to share my comments section-by-section. I think this is an awesome first effort and I really appreciate the work involved in creating an example notebook for a new algorithm! I'd like to offer some feedback and ideas for how to expand it from here so that we can end up with something that is easy-to-follow and informative for users. To do this, we need to communicate what the algorithm is doing and why, not just how to use the execute API. I have written some material elsewhere for this, so I’ll share it here along with some suggestions for where to use it. Please feel free to ask questions! |
IntroductionLet's add a little text here to orient our users. I'd suggest:
|
Step 0: ImportsLooks good to me, just need to correct a typo in the second line: “uncommenting the line and execute” -> “uncommenting and executing the line in the second code block”. Step 1: Set up clientLooks good to me. |
Step 2: Preparing the dataI like the use of the Server Machine Dataset data, but let’s use a different example subset. This one should provide a nice illustration of the algorithm: For the writing, this is where we need a proper introduction to the method. Please see below for an intro I have previously written.
This can be followed by a code block that plots the data:
|
Step 3: Metrics correlationAgain, let’s add some more detailed writing to share the idea of the algorithm. Here’s what I have:
Then we can convert to JSON, as you already have in the notebook. Note: please do NOT print the JSON. It leads to hundreds (for the new data, it would be thousands) of lines of output that are not informative and make the notebook hard to navigate.
Then we can show how the algorithm is run. Again, we don’t need to print the raw results. It’s not an informative way to share or discuss the output.
Instead, I’d suggest the following text and code blocks to describe the output.
|
Step 4: Result visualizationThis is a great idea. Below, I suggest some writing for this section and some expanded code for event plotting.
Lastly, we should conclude with some discussion of the results.
|
Thanks for the suggestions, @greaa-aws. I added all of them to the notebook. However, the MCorr algorithm is timing out on my side. I suspect it's because the size of the dataset exceeds the limit (ref). The total number of data points M * T <= 10000. Is it successfully running on your side? |
Hi @AlibiZhenis, good catch! It looks like I had tested this dataset out on a local build without this limit on data size. I've attached a reduced version of the dataset that satisfies |
Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com>
Signed-off-by: Alibi Zhenis <92104549+AlibiZhenis@users.noreply.github.com>
@dhrubo-os @greaa-aws Can you review again |
I tested in my end and looks good to me. Just address the comment. Thanks. |
"source": [ | ||
"In this case study, we consider an example from the recently-released [Server Machine Dataset](https://github.com/NetManAIOps/OmniAnomaly). As the name suggests, the data are performance metrics collected from industrial servers. The servers occasionally suffer performance degradations that appear in the metrics data. Here, we take the role of an ops engineer investigating recent metrics data to understand whether and how these issues have occurred.\n", | ||
"\n", | ||
"The individual metrics can display very different behavior, yet correlating issues across metrics is essential for detecting and diagnosing issues with the server. To start, let’s plot the data that we’ll be working with in this case study. It consists of 38 metrics observed across 1000 timestamps. We have normalized each metrics time series such that its values lie between 0 and 1." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's 9 metrics now, after we reduced the dataset size.
"source": [ | ||
"Every event is represented as a dictionary with three fields:\n", | ||
"\n", | ||
"The event window, a list consisting of the start and end index values for the event. This describes when the event occurred.\n", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we list these as 3 bullet points or add another newline between field descriptions?
{ | ||
"data": { | ||
"text/plain": "<Figure size 1200x600 with 2 Axes>", | ||
"image/png": "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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are these intervals consistent with the new results from the reduced data? They should match the start and end times in the event window field for each event.
"\n", | ||
"## Introduction\n", | ||
"\n", | ||
"This notebook contains an introduction to the [metrics correlation](https://opensearch.org/docs/latest/ml-commons-plugin/algorithms/#metrics-correlation) algorithm released in OpenSearch 2.8. We will work through an example using data from the [Server Machine Dataset](https://github.com/NetManAIOps/OmniAnomaly) and include commentary on the objective, configuration, and output of the algorithm itself." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Opensearch 2.7.
Thanks @AlibiZhenis for your contribution. Merging your PR. |
The backport to
To backport manually, run these commands in your terminal: # Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add .worktrees/backport-1.x 1.x
# Navigate to the new working tree
cd .worktrees/backport-1.x
# Create a new branch
git switch --create backport/backport-186-to-1.x
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 0a0fa63bb896b8ae506caea78b490af24be8566c
# Push it to GitHub
git push --set-upstream origin backport/backport-186-to-1.x
# Go back to the original working tree
cd ../..
# Delete the working tree
git worktree remove .worktrees/backport-1.x Then, create a pull request where the |
* added data Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * updated dev guide Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * fixing dev guide Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * draft notebook Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * updating documentation Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * update Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * result visualization Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * minor fix Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * deleted unused labels Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * updated notebook Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> --------- Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> Signed-off-by: Alibi Zhenis <92104549+AlibiZhenis@users.noreply.github.com> (cherry picked from commit 0a0fa63)
* added data Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * updated dev guide Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * fixing dev guide Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * draft notebook Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * updating documentation Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * update Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * result visualization Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * minor fix Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * deleted unused labels Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * updated notebook Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> --------- Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> Signed-off-by: Alibi Zhenis <92104549+AlibiZhenis@users.noreply.github.com> (cherry picked from commit 0a0fa63)
* added data Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * updated dev guide Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * fixing dev guide Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * draft notebook Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * updating documentation Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * update Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * result visualization Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * minor fix Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * deleted unused labels Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> * updated notebook Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> --------- Signed-off-by: Alibi Zhenis <alibizhenis4@gmail.com> Signed-off-by: Alibi Zhenis <92104549+AlibiZhenis@users.noreply.github.com> (cherry picked from commit 0a0fa63) Co-authored-by: Alibi Zhenis <92104549+AlibiZhenis@users.noreply.github.com>
Description
This PR adds an example notebook that demonstrates the usage of MCorr algorithm, as well as corresponding documentation update.
Issues Resolved
Closes #157
Check List
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.