Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions src/locales/en-US/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@
"reverted": "reverted",
"export": "export",
"exported": "exported",
"edit": "edit",
"editd": "editd",
"create": "create",
"created": "created",
"edit": "Edit",
"editd": "Editd",
"create": "Create",
"created": "Created",
"add": "add",
"delete": "delete",
"deleted": "deleted",
"delete": "Delete",
"deleted": "Deleted",
"remove": "remove",
"removed": "removed",
"fail":"fail",
Expand All @@ -31,6 +31,8 @@
"notyError": "Failed to {action} {name}",
"error": "error",
"createTime": "Create Time",
"default":"default"
"default":"default",
"stop":"Stop",
"run": "Running"

}
2 changes: 1 addition & 1 deletion src/locales/en-US/components/AnakinHeader.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"menu": {
"fineTuningExperiment": "Fine Tuning Experiment",
"dataset": "Dataset",
"hyperparameterGroup": "Hyperparameter Group"
"hyperparameterGroup": "Hyperparameter"
},
"feedback": "Feedback",
"help": "Help",
Expand Down
18 changes: 9 additions & 9 deletions src/locales/en-US/views/Dataset.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"header": "Dataset",
"header": "DataSet",
"zh-CN": "Chinese",
"en-US": "English",
"create": "Create Dataset",
Expand All @@ -10,20 +10,20 @@
"duplicateTags": "Duplicate Tags",
"datasetName": "Dataset Name",
"language": "Language",
"licenseType": "License Type",
"licenseType": "License",
"size": "Size",
"taskType": "Task Type",
"subtaskType": "Subtask Type",
"taskType": "Task",
"subtaskType": "Subtask",
"duplicateSubtask": "duplicate Subtask",
"addSubtaskType": "Add Subtask Type",
"addSubtaskType": "Add Subtask",
"datasetInformation": "Dataset Information",
"pluginConfiguration": "Plugin Configuration",
"pluginName": "Plugin Name",
"subsetName": "Subset Name",
"duplicateSubsetName":"duplicate SubsetName",
"trainingDataFile": "Training Data File",
"testingDataFile": "Testing Data File",
"validationDataFile": "Validation Data File",
"trainingDataFile": "Training Data Address",
"testingDataFile": "Testing Data Address",
"validationDataFile": "Validation Data Address",
"featureMapping": "Feature Mapping",
"dataSourceInformation": "Data Source Information",
"datasetNameExists": "A dataset with this name already exists",
Expand All @@ -40,5 +40,5 @@
"license":"license",
"datasetFileSource":"Dataset File Source",
"basicInformation":"Basic Information",
"datasetInfoConfig": "Dataset InfoConfig"
"datasetInfoConfig": "Dataset Information"
}
16 changes: 16 additions & 0 deletions src/locales/en-US/views/FinetuneExperiment.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"finetuneExperiment": "Finetune Experiment",
"status": "Status",
"evaluationMethod": "Evaluation Method",
"optimalresult": "Optimal Result",
"time": "Time",
"BasicLargeModel": "basic Large Model",
"parameterGroup": "Parameter Group",
"dataSet": "Data Set",
"results": "Results",
"contrast":"Contrast",
"taskList":"TaskList",
"pleaseEnter":"Please enter a container group name to search for",
"stopConfirm":"Confirm deletion of dataset {finetuneToShop}?"

}
12 changes: 6 additions & 6 deletions src/locales/en-US/views/Hyperparameter.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{
"create": "Create Hyperparameter Group",
"update": "Update Hyperparameter Group",
"create": "Create Hyperparameter",
"update": "Update Hyperparameter",
"deleteConfirm": "Confirm deletion of Hyperparameter Group {hyperparameterToDelete}?",

"name": "name",
"fineTuningType": "Fine Tuning Type",
"name": "Name",
"fineTuningType": "Fine-tuning",
"parameters": "Parameters Preview",
"hyperparameterGroup": "Hyperparameter Group ",
"configuration": "configuration",
"hyperparameterGroup": "Hyperparameter",
"configuration": "Configuration",
"hyperparameterGroupName": "Hyperparameter Group Name",
"parameterSet":"Parameter Set",
"parameterDetail":"Parameter Detail",
Expand Down
5 changes: 4 additions & 1 deletion src/locales/zh-CN/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,8 @@
"notyError": "{name}{action}失败",
"error": "出错了",
"createTime": "创建时间",
"default":"默认"
"default":"默认",
"stop":"停止",
"run": "运行中"

}
16 changes: 16 additions & 0 deletions src/locales/zh-CN/views/FinetuneExperiment.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"finetuneExperiment": "微调实验",
"status": "状态",
"evaluationMethod": "评估方式",
"optimalresult": "最优结果",
"time": "用时",
"BasicLargeModel": "基础大模型",
"dataSet": "数据集",
"parameterGroup": "参数组",
"results": "评估结果",
"contrast":"对比",
"taskList":"任务列表",
"pleaseEnter":"请输入容器组名称搜索",
"stopConfirm":"确认停止微调实验 {finetuneToShop} 吗?"

}
243 changes: 242 additions & 1 deletion src/views/finetune-experiment/FinetuneExperimentDetail.vue
Original file line number Diff line number Diff line change
@@ -1,3 +1,244 @@
<script lang="ts" setup>
import { useRoute, useRouter } from 'vue-router';
import { computed, ref, watchEffect } from 'vue';
import { useI18n } from 'vue-i18n';
import { first } from 'lodash';

import { useNamespaceStore } from '@/stores/namespace';
import { FinetuneExperiment, finetuneExperimentClient } from '@/api/finetune-experiment';
import { FinetuneJob } from '@/api/finetune-job';
import { useDateFormat } from '@dao-style/extend';

import { nError } from '@/utils/useNoty';

import FinetuneExperimentDetailItem from './components/FinetuneExperimentDetailItem.vue';

const search = ref<{ fuzzy: string[] }>();
const loading = ref(true);
// 常量定义
const pageSize = ref(10);
const currentPage = ref(1);
const isShow = ref(false);

const { t } = useI18n();
const router = useRouter();
const route = useRoute();

const namespaceStore = useNamespaceStore();
const finetuneExperiment = ref<FinetuneExperiment>();
const showData = ref<FinetuneJob[]>();
const finetuneToShop = ref<string>();

const fetchDataset = () => {
finetuneExperimentClient.read(namespaceStore.namespace, route.params.name as string).then((res) => {
finetuneExperiment.value = res.data;
});
};
// 初始化查询
const onSearch = () => {
currentPage.value = 1;
};
// 调用接口

fetchDataset();
// title
const name = computed(() => finetuneExperiment.value?.metadata?.name);
// 显示基本信息
const infos = computed(() => {
const finetuneExperimentData = finetuneExperiment.value?.spec;
const creationTimestamp = finetuneExperiment.value?.metadata?.creationTimestamp;
const llms = finetuneExperimentData?.finetuneJobs.map((job) => job.spec?.finetune.finetuneSpec.llm).filter((i) => i);
const datasets = finetuneExperimentData?.finetuneJobs.map((job) => job.spec?.finetune.finetuneSpec.dataset);
const hyperparameters = finetuneExperimentData?.finetuneJobs.map((job) => job.spec?.finetune.finetuneSpec.hyperparameter?.hyperparameterRef);

const items = [
{
label: t('views.Hyperparameter.name'),
value: finetuneExperiment.value?.metadata?.name,
},
{
label: t('views.FinetuneExperiment.status'),
value: '正常',
},
{
label: t('views.FinetuneExperiment.evaluationMethod'),
value: finetuneExperiment.value?.spec?.scoringConfig.name,
},
{
label: t('views.FinetuneExperiment.optimalresult'),
value: '-',
},
{
label: t('common.createTime'),
value: useDateFormat(creationTimestamp),
},
{
label: t('views.FinetuneExperiment.time'),
value: '1小时32分',
},
{
label: t('views.FinetuneExperiment.BasicLargeModel'),
value: llms?.join(','),
slotId: 'llm',
},
{
label: t('views.Dataset.header'),
value: datasets?.join(','),
slotId: 'dataset',

},
{
label: t('views.FinetuneExperiment.parameterGroup'),
value: hyperparameters?.join(','),
slotId: 'hyperparameter',
},
];

return items;
});
// 显示任务列表
const finetuneExperimentDetailData = computed(() => finetuneExperiment.value?.spec?.finetuneJobs.filter((item) => item.spec?.finetune?.finetuneSpec?.dataset.includes(first(search.value?.fuzzy) ?? '')));
// watch

watchEffect(() => {
const startIndex = (currentPage.value - 1) * pageSize.value;
const endIndex = currentPage.value * pageSize.value;

showData.value = finetuneExperimentDetailData.value?.slice(startIndex, endIndex);
});
// 加载微调实验详情
const fetchDatasets = async () => {
loading.value = true;
try {
const res = await finetuneExperimentClient.read(namespaceStore.namespace, route.params.name as string);

finetuneExperiment.value = res.data;
if (finetuneExperimentDetailData.value?.length) {
currentPage.value = 1;
}
} catch (error) {
nError(t('common.error'), error);
} finally {
loading.value = false;
}
};

// 显示停止对话框
const showDialog = () => {
isShow.value = true;
finetuneToShop.value = finetuneExperiment.value?.metadata?.name;
};

// 隐藏停止对话框
const hideDialog = () => {
isShow.value = false;
};
// 确认停止微调实验
const confirmShop = () => {
isShow.value = false;
};
</script>
<template>
Finetune detail
<div class="finetune-experiment-detail console-main-container">
<dao-header type="3rd">
<template #breadcrumb>
<dao-breadcrumb
icon="icon-cluster"
@navigate="router.push"
>
<dao-breadcrumb-item
:label="t('views.FinetuneExperiment.finetuneExperiment')"
:to="{ name: 'FinetuneExperimentList' }"
/>
<dao-breadcrumb-item :label="name" />
</dao-breadcrumb>
</template>

<template #action>
<dao-button
type="tertiary"
@click="showDialog()"
>
{{ t('common.stop') }}
</dao-button>
</template>
</dao-header>

<dao-card
class="finetuneJob"
type="simple"
:title="t('views.Dataset.basicInformation')"
>
<dao-card-item>
<dao-key-value-layout
direction="vertical"
:column="4"
:data="infos"
>
<template #kv-llm="{ row }">
<dao-key-value-layout-item :label="row.label">
<dao-hover-card :data="row.value?.split(',')" />
</dao-key-value-layout-item>
</template>
<template #kv-dataset="{ row }">
<dao-key-value-layout-item :label="row.label">
<dao-hover-card :data="row.value?.split(',')" />
</dao-key-value-layout-item>
</template>
<template #kv-hyperparameter="{ row }">
<dao-key-value-layout-item :label="row.label">
<dao-hover-card :data="row.value?.split(',')" />
</dao-key-value-layout-item>
</template>
</dao-key-value-layout>
</dao-card-item>
</dao-card>
<div class="task-title">
{{ t('views.FinetuneExperiment.taskList') }}
</div>
<dao-toolbar
v-model:search="search"
:search-placeholder="t('views.FinetuneExperiment.pleaseEnter')"
:hide-refresh="true"
:fuzzy="{ key: 'fuzzy', single: true }"
class="search-style"
@refresh="fetchDatasets"
@search="onSearch"
/>

<FinetuneExperimentDetailItem
v-for="experiment in showData"
:key="experiment.spec?.finetune?.finetuneSpec?.hyperparameter?.hyperparameterRef"
:data="experiment"
/>
<dao-pagination
v-model:current-page="currentPage"
v-model:page-size="pageSize"
class="mt-[20px]"
:total="showData?.length"
/>
</div>
<dao-dialog
:model-value="isShow"
header="Basic Dialog"
@cancel="hideDialog"
@confirm="confirmShop"
>
<div class="body">
<div class="content">
{{ $t('views.FinetuneExperiment.stopConfirm', { finetuneToShop }) }}
</div>
</div>
</dao-dialog>
</template>
<style lang="scss">
.task-title {
padding: 25px 0;
font-weight: bold;
color: #33363B;
}

.search-style{
border-radius: 10px;
}
</style>
Loading