mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 09:48:58 -04:00
[ML] Removing space awareness for trained models (#86132)
This commit is contained in:
parent
1007c8713a
commit
6f8697e198
1 changed files with 2 additions and 64 deletions
|
@ -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 || [];
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue