From 052c64c99b8a4474c9ee5d1ca0ebd849f8e18e28 Mon Sep 17 00:00:00 2001 From: Melissa Alvarez Date: Wed, 21 Oct 2020 16:28:53 -0400 Subject: [PATCH] [ML] DF Analytics wizard: ensure user can set mml manually or select to use given estimate (#81078) (#81378) * add switch for using estimated mml * persist useEstimatedMml when switching between steps * update translation name to be consistent --- .../advanced_step/advanced_step_form.tsx | 49 +++++++++++++------ .../configuration_step_form.tsx | 4 +- .../hooks/use_create_analytics_form/state.ts | 2 + 3 files changed, 40 insertions(+), 15 deletions(-) diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/advanced_step/advanced_step_form.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/advanced_step/advanced_step_form.tsx index 7747fe5746c29..85bd5618300fe 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/advanced_step/advanced_step_form.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/advanced_step/advanced_step_form.tsx @@ -18,6 +18,7 @@ import { EuiLink, EuiSelect, EuiSpacer, + EuiSwitch, EuiTitle, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; @@ -138,7 +139,7 @@ export const AdvancedStepForm: FC = ({ const { ELASTIC_WEBSITE_URL, DOC_LINK_VERSION } = docLinks; const { setEstimatedModelMemoryLimit, setFormState } = actions; - const { form, isJobCreated } = state; + const { form, isJobCreated, estimatedModelMemoryLimit } = state; const { computeFeatureInfluence, eta, @@ -159,6 +160,7 @@ export const AdvancedStepForm: FC = ({ outlierFraction, predictionFieldName, randomizeSeed, + useEstimatedMml, } = form; const [numTopClassesOptions, setNumTopClassesOptions] = useState([ @@ -204,7 +206,9 @@ export const AdvancedStepForm: FC = ({ if (success) { if (modelMemoryLimit !== expectedMemory) { setEstimatedModelMemoryLimit(expectedMemory); - setFormState({ modelMemoryLimit: expectedMemory }); + if (useEstimatedMml === true) { + setFormState({ modelMemoryLimit: expectedMemory }); + } } } else { // Check which field is invalid @@ -481,18 +485,35 @@ export const AdvancedStepForm: FC = ({ } )} > - setFormState({ modelMemoryLimit: e.target.value })} - isInvalid={modelMemoryLimitValidationResult !== null} - data-test-subj="mlAnalyticsCreateJobWizardModelMemoryInput" - /> + <> + setFormState({ modelMemoryLimit: e.target.value })} + isInvalid={modelMemoryLimitValidationResult !== null} + data-test-subj="mlAnalyticsCreateJobWizardModelMemoryInput" + /> + + + setFormState({ + useEstimatedMml: !useEstimatedMml, + }) + } + data-test-subj="mlAnalyticsCreateJobWizardUseEstimatedMml" + /> + diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_form.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_form.tsx index dd9ecc963840a..9c166f32f1d34 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_form.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_form.tsx @@ -91,6 +91,7 @@ export const ConfigurationStepForm: FC = ({ requiredFieldsError, sourceIndex, trainingPercent, + useEstimatedMml, } = form; const toastNotifications = getToastNotifications(); @@ -164,7 +165,8 @@ export const ConfigurationStepForm: FC = ({ const debouncedGetExplainData = debounce(async () => { const jobTypeChanged = previousJobType !== jobType; - const shouldUpdateModelMemoryLimit = !firstUpdate.current || !modelMemoryLimit; + const shouldUpdateModelMemoryLimit = + (!firstUpdate.current || !modelMemoryLimit) && useEstimatedMml === true; const shouldUpdateEstimatedMml = !firstUpdate.current || !modelMemoryLimit || estimatedModelMemoryLimit === ''; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/state.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/state.ts index 898bd7aa183cd..533a5eb6f5c34 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/state.ts +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/state.ts @@ -93,6 +93,7 @@ export interface State { sourceIndexFieldsCheckFailed: boolean; standardizationEnabled: undefined | string; trainingPercent: number; + useEstimatedMml: boolean; }; disabled: boolean; indexPatternsMap: SourceIndexMap; @@ -161,6 +162,7 @@ export const getInitialState = (): State => ({ sourceIndexFieldsCheckFailed: false, standardizationEnabled: 'true', trainingPercent: 80, + useEstimatedMml: true, }, jobConfig: {}, disabled: