From 136969b6ea449bbac6ba402a1a059006a5a33a62 Mon Sep 17 00:00:00 2001 From: Taewan Kim Date: Wed, 19 Mar 2025 16:23:03 +0900 Subject: [PATCH] add getTrainingJob to fetch the details of a training job Change-Id: I1d3a6e2c1b63668d8e2b8076e703eb15661b24b9 Signed-off-by: Taewan Kim --- src/apis/training-job.js | 10 +- src/components/home/status/StatusPageRows.js | 15 +- .../training-job-info/training-job-info.jsx | 155 ++++++--------------- 3 files changed, 56 insertions(+), 124 deletions(-) diff --git a/src/apis/training-job.js b/src/apis/training-job.js index 9dc190b..2796714 100644 --- a/src/apis/training-job.js +++ b/src/apis/training-job.js @@ -1,15 +1,15 @@ import { instance } from '../states'; export const trainingJobAPI = { - getTrainingJobByNameAndVersion: async ({ params }) => { - return await instance.get(`/trainingjobs/${params.trainingJobName}/${params.trainingJobVersion}`); + getTrainingJobs: async () => { + return await instance.get('/ai-ml-model-training/v1/training-jobs'); + }, + getTrainingJob: async ({ params }) => { + return await instance.get(`/ai-ml-model-training/v1/training-jobs/${params.trainingJobId}`); }, getTrainingJobStatus: async ({ params }) => { return await instance.get(`/ai-ml-model-training/v1/training-jobs/${params.trainingJobId}/status`); }, - getLatestTrainingJob: async () => { - return await instance.get('/ai-ml-model-training/v1/training-jobs'); - }, invokeTrainingJob: async ({ data }) => { return await instance.post('/trainingjobs/retraining', { ...data }); }, diff --git a/src/components/home/status/StatusPageRows.js b/src/components/home/status/StatusPageRows.js index 81a7b80..e1390e7 100644 --- a/src/components/home/status/StatusPageRows.js +++ b/src/components/home/status/StatusPageRows.js @@ -42,7 +42,7 @@ const StatusPageRows = props => { const [statusTrainingJobId, setStatusTrainingJobId] = useState(null); const closeStepsStatePopup = () => setStepsStatePopup(false); const [infoPopup, setInfoPopup] = useState(false); - const [infoTrainingJobAndVersion, setInfoTrainingJobNameAndVersion] = useState(null); + const [infoTrainingJobId, setInfoTrainingJobId] = useState(null); const closeInfoPopup = () => setInfoPopup(false); useEffect(() => { @@ -61,7 +61,7 @@ const StatusPageRows = props => { const fetchTrainingJobs = async () => { logger('fetchTrainingJobs UCMgr_baseUrl', UCMgr_baseUrl); try { - const result = await trainingJobAPI.getLatestTrainingJob(); + const result = await trainingJobAPI.getTrainingJobs(); logger('fetchTrainingJobs Result', result); logger('Training Jobs are --> ', result.data); setTrainingJobs(result.data); @@ -137,11 +137,8 @@ const StatusPageRows = props => { setStepsStatePopup(true); }; - const handleInfoClick = (trainingjob_name, version) => { - setInfoTrainingJobNameAndVersion({ - trainingjob_name: trainingjob_name, - version: version, - }); + const handleInfoClick = (id) => { + setInfoTrainingJobId(id); setInfoPopup(true); }; @@ -195,7 +192,7 @@ const StatusPageRows = props => { Header: 'Info', Cell: ({ row }) => { return ( - ); @@ -272,7 +269,7 @@ const StatusPageRows = props => { - + ); diff --git a/src/components/training-job-info/training-job-info.jsx b/src/components/training-job-info/training-job-info.jsx index 4b6fb45..0a52562 100644 --- a/src/components/training-job-info/training-job-info.jsx +++ b/src/components/training-job-info/training-job-info.jsx @@ -19,64 +19,32 @@ import React, { useEffect, useState } from 'react'; import { Form } from 'react-bootstrap'; -import { UCMgr_baseUrl } from '../../states'; import { trainingJobAPI } from '../../apis'; -import { convertToCommaSeparatedString, getDatalakeNameWithoutConversion } from '../home/common/CommonMethods'; - export const TrainingJobInfo = props => { - const [trainingJobName, setTrainingJobName] = useState(''); - const [isMme, setIsMme] = useState(false); + const [trainingJobId, setTrainingJobId] = useState(''); const [modelName, setModelName] = useState(''); - const [version, setVersion] = useState(''); + const [modelVersion, setModelVersion] = useState(''); const [description, setDescription] = useState(''); - const [featureNames, setFeatureNames] = useState(''); - const [pipeLineName, setPipelineName] = useState(''); - const [experimentName, setExperimentName] = useState(''); - const [featureFilter, setFeatureFilter] = useState(''); - const [hyperParameters, setHyperParameters] = useState(''); - const [metrics, setMetrics] = useState(''); - const [enableVersioning, setEnableVersioning] = useState(false); + const [pipelineName, setPipelineName] = useState(''); const [pipelineVersion, setPipelineVersion] = useState(''); - const [datalakeSource, setDatalakeSource] = useState(''); const [modelUrl, setModelUrl] = useState(''); - const [modelInfo, setModelInfo] = useState(''); + const [modelLocation, setModelLocation] = useState(''); useEffect(() => { try { trainingJobAPI - .getTrainingJobByNameAndVersion({ - params: { - trainingJobName: props.trainingjob_name_and_version.trainingjob_name, - trainingJobVersion: props.trainingjob_name_and_version.version, - }, - }) + .getTrainingJob({ params: { trainingJobId: props.trainingJobId } }) .then(response => { - console.log( - `response for ${UCMgr_baseUrl}/trainingjobs/${props.trainingjob_name_and_version.trainingjob_name}/${props.trainingjob_name_and_version.version}`, - response, - ); console.log(response.data); - setTrainingJobName(response.data.trainingjob.trainingjob_name); - setIsMme(response.data.trainingjob.is_mme); - setModelName(response.data.trainingjob.model_name); - setVersion(response.data.trainingjob.version); - setDescription(response.data.trainingjob.description); - setFeatureNames(response.data.trainingjob.feature_list); - setPipelineName(response.data.trainingjob.pipeline_name); - setExperimentName(response.data.trainingjob.experiment_name); - setFeatureFilter(response.data.trainingjob.query_filter); - setHyperParameters(convertToCommaSeparatedString(response.data.trainingjob.arguments)); - setMetrics(response.data.trainingjob.accuracy); - setEnableVersioning(response.data.trainingjob.enable_versioning); - setPipelineVersion( - response.data.trainingjob.pipeline_version === response.data.trainingjob.pipeline_name - ? '1' - : response.data.trainingjob.pipeline_version, - ); - setDatalakeSource(getDatalakeNameWithoutConversion(response.data.trainingjob.datalake_source)); - setModelUrl(response.data.trainingjob.model_url); - setModelInfo(response.data.trainingjob.model_info); + setTrainingJobId(response.data.id); + setModelName(response.data.modelId.modelname); + setModelVersion(response.data.modelId.modelversion); + setDescription(response.data.training_config.description); + setPipelineName(response.data.training_config.trainingPipeline.training_pipeline_name); + setPipelineVersion(response.data.training_config.trainingPipeline.training_pipeline_version); + setModelUrl(response.data.model_url); + setModelLocation(response.data.model_location); }) .catch(error => { console.log(error); @@ -89,83 +57,50 @@ export const TrainingJobInfo = props => { return ( <>
- - Training Job Name - - - - - - {isMme == true && ( -
- - Model Name - - - - - Model Info - - -
- )} - - Version - + + Training Job ID + Description - - Feature Names - - - Training Function Name - - - - Experiment Name - - - - Feature Filter - - - - Hyper Parameters - - - - Metrics - - - - + Training Pipeline Name + - Training Function Version + Training Pipeline Version - - Datalake Source - + + Model Name + + + + Model Version + - - - Model URL - -
- - {modelUrl} - - - - - - + + Model Location + + { modelUrl !== "" && + + + Model URL + +
+ + {modelUrl} + + + + + + +
+ } ); -- 2.16.6