Skip to content

Remove node info from ML team serverless responses #2205

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

Merged
merged 8 commits into from
Aug 4, 2023

Conversation

droberts195
Copy link
Contributor

@droberts195 droberts195 commented Jul 24, 2023

Serverless will present the impression of having no underlying servers,
so API responses in serverless should not contain any node information.

To avoid changing the shape of responses, we still return node fields
but always set to "serverless" in serverless. This avoids causing
problems for users who want to use the stateful client with serverless.

Trained model stats will be aggregated and reported as being for a
virtual node called "serverless".

Serverless will present the impression of having no
underlying servers, so API responses in serverless
should not contain any node information.

This PR removes the node fields from the responses
owned by the ML team.
@droberts195 droberts195 requested review from a team as code owners July 24, 2023 17:02
Copy link
Member

@davidkyle davidkyle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

/** The deployent stats for each node that currently has the model allocated. */
/**
* The deployment stats for each node that currently has the model allocated.
* @availability stack
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are useful stats in this object so of which could be aggregated and lifted up to the top level as we have done with inference_count below.

We will want to review what model stats are presented in serverless, I'll open an issue for that

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks.

The ES team is doing something similar for enrich stats - see elastic/elasticsearch#97472.

droberts195 and others added 7 commits July 26, 2023 18:24
Changing the approach for node ID to still return the field
but always set to "serverless" in serverless. This avoids
causing problems for users who want to use the stateful
client with serverless.
These will be aggregated and reported as a virtual node called
"serverless" to keep the output format similar to current product.
We can avoid making a breaking change to current clients
by returning a dummy serverless node to them if used
against serverless. The serverless clients will still
omit methods to get node information.
@github-actions
Copy link
Contributor

github-actions bot commented Aug 3, 2023

Following you can find the validation results for the APIs you have changed.

API Status Request Response
ml.clear_trained_model_deployment_cache Missing test Missing test
ml.close_job 🟢 62/62 61/61
ml.delete_calendar_event 🟢 4/4 4/4
ml.delete_calendar_job 🟢 3/3 3/3
ml.delete_calendar 🟢 5/5 5/5
ml.delete_data_frame_analytics 🟢 2/2 2/2
ml.delete_datafeed 🟢 3/3 3/3
ml.delete_expired_data 🟢 5/5 5/5
ml.delete_filter 🟢 27/27 27/27
ml.delete_forecast 🟢 3/3 3/3
ml.delete_job 🟢 47/47 47/47
ml.delete_model_snapshot 🟢 2/2 2/2
ml.delete_trained_model_alias 🟢 3/3 3/3
ml.delete_trained_model 🟢 3/3 3/3
ml.estimate_model_memory 🟢 16/16 16/16
ml.evaluate_data_frame 🟢 22/22 22/22
ml.explain_data_frame_analytics 🟢 7/7 7/7
ml.flush_job 🟢 15/15 15/15
ml.forecast 🟢 1/1 1/1
ml.get_buckets 🟢 14/14 14/14
ml.get_calendar_events 🟢 17/17 17/17
ml.get_calendars 🟢 17/17 17/17
ml.get_categories 🟢 12/12 12/12
ml.get_data_frame_analytics_stats 🟢 12/12 12/12
ml.get_data_frame_analytics 🟢 17/17 17/17
ml.get_datafeed_stats 🟢 27/27 27/27
ml.get_datafeeds 🟢 20/20 20/20
ml.get_filters 🟢 13/13 13/13
ml.get_influencers 🟢 11/11 11/11
ml.get_job_stats 🟢 31/31 31/31
ml.get_jobs 🟢 31/31 31/31
ml.get_memory_stats Missing test Missing test
ml.get_model_snapshot_upgrade_stats 🟢 3/3 3/3
ml.get_model_snapshots 🟢 18/18 18/18
ml.get_overall_buckets 🟢 16/16 15/15
ml.get_records 🟢 8/8 8/8
ml.get_trained_models_stats 🟢 12/12 12/12
ml.get_trained_models 🔴 21/27 27/27
ml.infer_trained_model Missing test Missing test
ml.info 🟢 10/10 10/10
ml.open_job 🟢 83/83 83/83
ml.post_calendar_events 🟢 21/21 21/21
ml.post_data 🔴 8/10 13/17
ml.preview_data_frame_analytics 🟢 3/3 3/3
ml.preview_datafeed 🔴 10/16 16/16
ml.put_calendar_job 🔴 11/12 12/12
ml.put_calendar 🟢 135/135 135/135
ml.put_data_frame_analytics 🟢 33/33 33/33
ml.put_datafeed 🔴 70/71 71/71
ml.put_filter 🟢 27/27 27/27
ml.put_job 🔴 218/226 224/224
ml.put_trained_model_alias 🟢 9/9 9/9
ml.put_trained_model_definition_part Missing test Missing test
ml.put_trained_model_vocabulary Missing test Missing test
ml.put_trained_model 🟢 5/5 5/5
ml.reset_job 🟢 2/2 2/2
ml.revert_model_snapshot 🟢 2/2 2/2
ml.set_upgrade_mode 🟢 6/6 6/6
ml.start_data_frame_analytics 🟢 1/1 1/1
ml.start_datafeed 🟢 24/24 24/24
ml.start_trained_model_deployment Missing test Missing test
ml.stop_data_frame_analytics 🟢 5/5 5/5
ml.stop_datafeed 🟢 17/17 17/17
ml.stop_trained_model_deployment Missing test Missing test
ml.update_data_frame_analytics 🟢 2/2 2/2
ml.update_datafeed 🟢 7/7 7/7
ml.update_filter 🟢 3/3 3/3
ml.update_job 🔴 4/5 5/5
ml.update_model_snapshot 🟢 3/3 3/3
ml.update_trained_model_deployment 🟠 Missing type Missing type
ml.upgrade_job_snapshot 🟢 3/3 3/3
ml.validate_detector 🟢 2/2 2/2
ml.validate 🟢 3/3 3/3
transform.get_transform_stats 🟢 31/31 31/31

You can validate these APIs yourself by using the make validate target.

@droberts195 droberts195 merged commit b8b9d95 into main Aug 4, 2023
@droberts195 droberts195 deleted the remove_node_from_ml_serverless_responses branch August 4, 2023 14:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants