[ML] Removing space awareness for trained models (#86132)

This commit is contained in:
James Gowdy 2020-12-17 14:21:31 +00:00 committed by GitHub
parent 1007c8713a
commit 6f8697e198
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -19,7 +19,6 @@ import { Calendar } from '../../../common/types/calendars';
import { searchProvider } from './search';
import { DataFrameAnalyticsConfig } from '../../../common/types/data_frame_analytics';
import { InferenceConfigResponse, TrainedModelStat } from '../../../common/types/trained_models';
import { MLJobNotFound } from './errors';
import {
MlClient,
@ -131,50 +130,6 @@ export function getMlClient(
}
}
async function getFilterTrainedModels(
p: Parameters<MlClient['getTrainedModels']>,
allowWildcards: boolean = false
) {
let configs = [];
try {
const resp = await mlClient.getTrainedModels<InferenceConfigResponse>(...p);
configs = resp.body.trained_model_configs;
} catch (error) {
if (error.statusCode === 404) {
throw new MLJobNotFound(error.body.error.reason);
}
throw error.body ?? error;
}
const modelIds = getTrainedModelIdsFromRequest(p);
const modelJobIds: string[] = configs
.map((m) => m.metadata?.analytics_config.id)
.filter((id) => id !== undefined);
const filteredModelJobIds = await jobSavedObjectService.filterJobIdsForSpace(
'data-frame-analytics',
modelJobIds
);
const filteredConfigs = configs.filter((m) => {
const jobId = m.metadata?.analytics_config.id;
return jobId === undefined || filteredModelJobIds.includes(jobId);
});
const filteredConfigsIds = filteredConfigs.map((c) => c.model_id);
if (modelIds.length > filteredConfigs.length) {
let missingIds = modelIds.filter((j) => filteredConfigsIds.indexOf(j) === -1);
if (allowWildcards === true && missingIds.join().match('\\*') !== null) {
// filter out wildcard ids from the error
missingIds = missingIds.filter((id) => id.match('\\*') === null);
}
if (missingIds.length) {
throw new MLJobNotFound(`No known trained model with model_id [${missingIds.join(',')}]`);
}
}
return filteredConfigs;
}
return {
async closeJob(...p: Parameters<MlClient['closeJob']>) {
await jobIdsCheck('anomaly-detector', p);
@ -228,7 +183,6 @@ export function getMlClient(
return mlClient.deleteModelSnapshot(...p);
},
async deleteTrainedModel(...p: Parameters<MlClient['deleteTrainedModel']>) {
await getFilterTrainedModels(p, true);
return mlClient.deleteTrainedModel(...p);
},
async estimateModelMemory(...p: Parameters<MlClient['estimateModelMemory']>) {
@ -428,20 +382,10 @@ export function getMlClient(
return mlClient.getRecords(...p);
},
async getTrainedModels(...p: Parameters<MlClient['getTrainedModels']>) {
const models = await getFilterTrainedModels(p, true);
return { body: { trained_model_configs: models } };
return mlClient.getTrainedModels(...p);
},
async getTrainedModelsStats(...p: Parameters<MlClient['getTrainedModelsStats']>) {
await getFilterTrainedModels(p, true);
const models = await getFilterTrainedModels(p);
const filteredModelIds = models.map((m) => m.model_id);
const { body: allModelStats } = await mlClient.getTrainedModelsStats<{
trained_model_stats: TrainedModelStat[];
}>(...p);
const modelStats = allModelStats.trained_model_stats.filter((m) =>
filteredModelIds.includes(m.model_id)
);
return { body: { trained_model_stats: modelStats } };
return mlClient.getTrainedModelsStats(...p);
},
async info(...p: Parameters<MlClient['info']>) {
return mlClient.info(...p);
@ -571,9 +515,3 @@ function getJobIdFromBody(p: any): string | undefined {
const [params] = p;
return params?.body?.job_id;
}
function getTrainedModelIdsFromRequest(p: any): string[] {
const [params] = p;
const ids = params?.model_id?.split(',');
return ids || [];
}