2 lines
16 KiB
JavaScript
2 lines
16 KiB
JavaScript
import{E as Q}from"./index-D0UXUP15.js";import{v as X}from"./directive-9-T0mYyg.js";import{d as $,az as O,D as A,o as s,e as c,w as l,s as o,c as S,M as q,ad as F,q as k,x as f,aA as T,y,g as G,aa as E,G as ee,at as ae,A as I,K as le,n as N,v as te}from"./index-DdQQsURt.js";import{P as oe}from"./PageCard-Bbwtm1na.js";import{E as se}from"./el-alert-BgSrlmWj.js";import{E as z,a as j}from"./el-form-item-Bf1ASn5W.js";import{E as ie}from"./index-CMWHMPp0.js";import{E as de,a as re}from"./el-select-BslWanml.js";import{E as ue,b as ne}from"./el-radio-group-BZw_vTIf.js";import{E as K}from"./el-switch-Dhsc7NkN.js";import"./el-scrollbar-DrHhzmuH.js";import"./el-popper-B8UgShUN.js";import{E as me}from"./el-tag-CPRZ_Dgw.js";import{_ as L}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{D as ce}from"./DimensionFormFields-3cI3xmrV.js";import{E as _e,a as pe}from"./el-checkbox-C30U6HyK.js";import{E as ve}from"./el-input-number-8Eh01QWw.js";/* empty css */import{E as fe,a as be}from"./el-descriptions-na3akZY8.js";import{E as ge}from"./el-space-BLuOasGc.js";import{s as Ve,c as ye}from"./eval-CuLTkWAf.js";import{a as ke,g as Ee}from"./model-DEzmeLDW.js";import{g as we}from"./dataset-DdOzO3-c.js";import"./el-card-tEKE7Xc8.js";import"./vnode-CqdGOdYr.js";import"./castArray-CpvD1ywp.js";import"./_baseClone-D4mnAM_M.js";import"./raf-BYY9WY16.js";import"./index-0bM-ph_e.js";import"./index-Cgs7GwqN.js";import"./index-DBPUxcNG.js";import"./index-BV2APNtK.js";import"./scroll-CpiyMIWy.js";import"./clamp-V2IKZsEW.js";import"./toNumber-CQdo6fpk.js";import"./_baseIteratee-D4ynv-ep.js";import"./omit-DNWyMDNK.js";import"./validator-DheTm7v_.js";import"./el-slider-DkuDEniy.js";import"./debounce-GPVXeeg3.js";import"./el-tooltip-l0sNRNKZ.js";import"./index-r223TcOB.js";const Me=$({__name:"EvalTaskSetupStep",props:T({trainedModels:{},evalDatasets:{},gpus:{},loading:{type:Boolean},disabled:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(b,{expose:u}){const e=O(b,"modelValue"),d=y(),i={eval_task_name:[{required:!0,message:"请输入任务名称",trigger:"blur"},{max:50,message:"任务名称不超过 50 个字符",trigger:"blur"}],model_id:[{required:!0,message:"请选择评测模型",trigger:"change"}],gpu_id:[{required:!0,message:"请选择 GPU",trigger:"change"}],dataset_id:[{validator:(g,a,p)=>{if(e.value.data_source==="dataset"&&(a===""||a===null||a===void 0)){p(new Error("请选择评测数据集"));return}p()},trigger:"change"}]};A(()=>e.value.data_source,g=>{var a;g!=="dataset"&&(e.value.dataset_id="",(a=d.value)==null||a.clearValidate("dataset_id"))});async function _(){if(!d.value)return!1;try{return!!await d.value.validate()}catch{return!1}}return u({validate:_}),(g,a)=>{const p=ie,v=j,w=re,M=de,R=ne,D=ue,n=se,C=K,h=z;return s(),c(h,{ref_key:"formRef",ref:d,model:e.value,rules:i,"label-width":"120px",class:"step-form",disabled:b.disabled,"scroll-to-error":""},{default:l(()=>[o(v,{label:"任务名称",prop:"eval_task_name"},{default:l(()=>[o(p,{modelValue:e.value.eval_task_name,"onUpdate:modelValue":a[0]||(a[0]=m=>e.value.eval_task_name=m),placeholder:"请输入任务名称",maxlength:"50","show-word-limit":""},null,8,["modelValue"])]),_:1}),o(v,{label:"评测模型",prop:"model_id"},{default:l(()=>[o(M,{modelValue:e.value.model_id,"onUpdate:modelValue":a[1]||(a[1]=m=>e.value.model_id=m),placeholder:"请选择已训练且已合并的模型",filterable:"",style:{width:"100%"},loading:b.loading},{default:l(()=>[(s(!0),S(q,null,F(b.trainedModels,m=>(s(),c(w,{key:m.id,label:m.name,value:m.id,disabled:!m.merged},null,8,["label","value","disabled"]))),128))]),_:1},8,["modelValue","loading"]),a[6]||(a[6]=k("div",{class:"field-tip"},"未完成合并的模型不可用于评测。",-1))]),_:1}),o(v,{label:"选择 GPU",prop:"gpu_id"},{default:l(()=>[o(M,{modelValue:e.value.gpu_id,"onUpdate:modelValue":a[2]||(a[2]=m=>e.value.gpu_id=m),placeholder:"请选择 GPU",style:{width:"100%"},loading:b.loading},{default:l(()=>[(s(!0),S(q,null,F(b.gpus,(m,P)=>(s(),c(w,{key:P,label:`${m.name} (GPU ${P})`,value:P},null,8,["label","value"]))),128))]),_:1},8,["modelValue","loading"])]),_:1}),o(v,{label:"数据来源"},{default:l(()=>[o(D,{modelValue:e.value.data_source,"onUpdate:modelValue":a[3]||(a[3]=m=>e.value.data_source=m)},{default:l(()=>[o(R,{value:"dataset"},{default:l(()=>[...a[7]||(a[7]=[f("评测数据集",-1)])]),_:1}),o(R,{value:"inference"},{default:l(()=>[...a[8]||(a[8]=[f("推理结果集",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),e.value.data_source==="dataset"?(s(),c(v,{key:0,label:"评测数据集",prop:"dataset_id"},{default:l(()=>[o(M,{modelValue:e.value.dataset_id,"onUpdate:modelValue":a[4]||(a[4]=m=>e.value.dataset_id=m),placeholder:"请选择评测数据集",filterable:"",style:{width:"100%"},loading:b.loading},{default:l(()=>[(s(!0),S(q,null,F(b.evalDatasets,m=>(s(),c(w,{key:m.id,label:m.name,value:m.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue","loading"])]),_:1})):(s(),c(n,{key:1,title:"将使用该模型最近一次可用的推理结果集。",type:"info",closable:!1,"show-icon":"",class:"source-alert"})),o(v,{label:"加入排行榜"},{default:l(()=>[o(C,{modelValue:e.value.leaderboard,"onUpdate:modelValue":a[5]||(a[5]=m=>e.value.leaderboard=m)},null,8,["modelValue"])]),_:1})]),_:1},8,["model","disabled"])}}}),he=L(Me,[["__scopeId","data-v-684556c4"]]),Se={class:"rule-step"},Ue=$({__name:"EvalRuleSetupStep",props:T({evalModels:{},disabled:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(b,{expose:u}){const e=O(b,"modelValue"),d=y(),i=["classification","metric"],_={type:[{required:!0,message:"请选择大模型评测指标类型",trigger:"change"}],eval_model:[{required:!0,message:"请选择评测大模型",trigger:"change"}],eval_method:[{required:!0,message:"请选择评估方式",trigger:"change"}],eval_prompt:[{required:!0,message:"请填写评估 Prompt",trigger:"blur"}]};async function g(){if(!d.value)return!1;try{return!!await d.value.validate()}catch{return!1}}return u({validate:g}),(a,p)=>{const v=z;return s(),S("div",Se,[o(v,{ref_key:"newFormRef",ref:d,model:e.value,rules:_,"label-width":"130px",class:"step-form step-form-wide",disabled:b.disabled,"scroll-to-error":""},{default:l(()=>[o(ce,{modelValue:e.value,"onUpdate:modelValue":p[0]||(p[0]=w=>e.value=w),"eval-models":b.evalModels,"show-description":!1,"show-status-settings":!1,"allowed-types":i},null,8,["modelValue","eval-models"])]),_:1},8,["model","disabled"])])}}}),Re=L(Ue,[["__scopeId","data-v-91940aa0"]]),De=$({__name:"BasicMetricSetupStep",props:T({disabled:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(b,{expose:u}){const e=O(b,"modelValue"),d=y(),i={bleu_n:[{required:!0,type:"number",min:1,max:8,message:"BLEU ngram must be between 1 and 8",trigger:"change"}],output_precision:[{required:!0,type:"number",min:0,max:8,message:"Precision must be between 0 and 8",trigger:"change"}]};async function _(){if(!d.value)return!1;try{return!!await d.value.validate()}catch{return!1}}return u({validate:_}),(g,a)=>{const p=K,v=j,w=ve,M=_e,R=pe,D=z;return s(),c(D,{ref_key:"formRef",ref:d,model:e.value,rules:i,"label-width":"140px",class:"basic-metric-form",disabled:b.disabled},{default:l(()=>[o(v,{label:"BLEU"},{default:l(()=>[o(p,{modelValue:e.value.bleu_enabled,"onUpdate:modelValue":a[0]||(a[0]=n=>e.value.bleu_enabled=n)},null,8,["modelValue"])]),_:1}),e.value.bleu_enabled?(s(),c(v,{key:0,label:"BLEU ngram",prop:"bleu_n"},{default:l(()=>[o(w,{modelValue:e.value.bleu_n,"onUpdate:modelValue":a[1]||(a[1]=n=>e.value.bleu_n=n),min:1,max:8},null,8,["modelValue"])]),_:1})):G("",!0),o(v,{label:"ROUGE"},{default:l(()=>[o(p,{modelValue:e.value.rouge_enabled,"onUpdate:modelValue":a[2]||(a[2]=n=>e.value.rouge_enabled=n)},null,8,["modelValue"])]),_:1}),e.value.rouge_enabled?(s(),c(v,{key:1,label:"ROUGE methods"},{default:l(()=>[o(R,{modelValue:e.value.rouge_methods,"onUpdate:modelValue":a[3]||(a[3]=n=>e.value.rouge_methods=n)},{default:l(()=>[o(M,{value:"rouge_1"},{default:l(()=>[...a[6]||(a[6]=[f("ROUGE-1",-1)])]),_:1}),o(M,{value:"rouge_2"},{default:l(()=>[...a[7]||(a[7]=[f("ROUGE-2",-1)])]),_:1}),o(M,{value:"rouge_l"},{default:l(()=>[...a[8]||(a[8]=[f("ROUGE-L",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})):G("",!0),o(v,{label:"Cosine"},{default:l(()=>[o(p,{modelValue:e.value.cosine_enabled,"onUpdate:modelValue":a[4]||(a[4]=n=>e.value.cosine_enabled=n)},null,8,["modelValue"])]),_:1}),o(v,{label:"Output precision",prop:"output_precision"},{default:l(()=>[o(w,{modelValue:e.value.output_precision,"onUpdate:modelValue":a[5]||(a[5]=n=>e.value.output_precision=n),min:0,max:8},null,8,["modelValue"])]),_:1})]),_:1},8,["model","disabled"])}}}),xe=L(De,[["__scopeId","data-v-dac20296"]]),Ce={class:"start-eval-step"},Be=$({__name:"StartEvalStep",props:{task:{},llmMetric:{},basicMetrics:{},trainedModels:{},evalDatasets:{},evalModels:{},gpus:{}},setup(b){const u=b;function e(d,i){var _;return((_=d.find(g=>g.id===i))==null?void 0:_.name)||String(i||"-")}return(d,i)=>{const _=fe,g=me,a=ge,p=be;return s(),S("div",Ce,[o(p,{column:2,border:""},{default:l(()=>[o(_,{label:"Task"},{default:l(()=>[f(E(u.task.eval_task_name||"-"),1)]),_:1}),o(_,{label:"Model"},{default:l(()=>[f(E(e(u.trainedModels,u.task.model_id)),1)]),_:1}),o(_,{label:"GPU"},{default:l(()=>[f("GPU "+E(u.task.gpu_id||0),1)]),_:1}),o(_,{label:"Dataset"},{default:l(()=>[f(E(u.task.data_source==="dataset"?e(u.evalDatasets,u.task.dataset_id):"Inference results"),1)]),_:1}),o(_,{label:"Eval model"},{default:l(()=>[f(E(e(u.evalModels,u.llmMetric.eval_model||"")),1)]),_:1}),o(_,{label:"Eval method"},{default:l(()=>[f(E(u.llmMetric.eval_method||"-"),1)]),_:1}),o(_,{label:"Basic metrics",span:2},{default:l(()=>[o(a,{wrap:""},{default:l(()=>[u.basicMetrics.bleu_enabled?(s(),c(g,{key:0},{default:l(()=>[f("BLEU-"+E(u.basicMetrics.bleu_n),1)]),_:1})):G("",!0),u.basicMetrics.rouge_enabled?(s(),c(g,{key:1},{default:l(()=>[f(E(u.basicMetrics.rouge_methods.join(", ")),1)]),_:1})):G("",!0),u.basicMetrics.cosine_enabled?(s(),c(g,{key:2},{default:l(()=>[...i[0]||(i[0]=[f("Cosine",-1)])]),_:1})):G("",!0),o(g,{effect:"plain"},{default:l(()=>[f("Precision "+E(u.basicMetrics.output_precision),1)]),_:1})]),_:1})]),_:1})]),_:1})])}}}),Ie=L(Be,[["__scopeId","data-v-7800c08e"]]),Ge={class:"create-wizard-layout"},Pe={class:"wizard-main"},qe={class:"wizard-steps-container","aria-label":"评测任务创建步骤"},$e={class:"custom-wizard-steps"},Le=["aria-current","aria-label"],Fe={class:"step-node"},Oe={class:"step-icon","aria-hidden":"true"},Te={key:0,class:"fa fa-check"},ze={key:1},Ne={class:"step-text"},Ae={class:"step-title"},je={class:"step-description"},Ke={class:"wizard-content"},We={class:"wizard-footer"},Ye=$({__name:"EvalCreateView",setup(b){const u=te(),e=y(!1),d=y(!1),i=y(0),_=y(),g=y(),a=y(),p=[{title:"任务配置",description:"选择模型、算力与评测数据"},{title:"大模型评测指标",description:"配置评测模型、方式与标准"},{title:"基础评测指标",description:"选择 BLEU、ROUGE 等参考指标"},{title:"开始评测",description:"确认配置并启动评测任务"}],v=y([]),w=y([]),M=y([]),R=y([]),D=y(""),n=y({eval_task_name:"",model_id:"",gpu_id:"",data_source:"dataset",dataset_id:"",leaderboard:!1}),C=y({type:"",description:"",eval_model:"",eval_method:"",eval_prompt:"",is_active:!0,is_default:!1,bleu_n:1,output_precision:3,score_min:0,score_max:5,pass_threshold:3}),h=y({bleu_enabled:!1,bleu_n:4,rouge_enabled:!1,rouge_methods:["rouge_1","rouge_2"],cosine_enabled:!1,output_precision:3});A(C,()=>{D.value=""},{deep:!0});async function m(){var U,B;e.value=!0;const t=await Promise.allSettled([ke(),we(),ae(),Ee()]);t[0].status==="fulfilled"&&(v.value=((U=t[0].value)==null?void 0:U.models)||[]),t[1].status==="fulfilled"&&(w.value=(t[1].value||[]).filter(V=>V.type==="eval")),t[2].status==="fulfilled"&&(R.value=((B=t[2].value)==null?void 0:B.gpu)||[]),t[3].status==="fulfilled"&&(M.value=(t[3].value||[]).filter(V=>V.purpose==="evaluation"));const r=t.filter(V=>V.status==="rejected").length;r>0&&I.error(`部分基础数据加载失败(${r} 项),请刷新页面后重试`),e.value=!1}function P(){const t=C.value,r={name:`Custom_Dim_${Date.now()}`,type:t.type,description:t.description,eval_model:t.eval_model,eval_method:t.eval_method,eval_prompt:t.eval_prompt,is_active:t.is_active,is_default:t.is_default,create_time:new Date().toISOString()};return t.type==="metric"&&(r.score_min=t.score_min,r.score_max=t.score_max,r.pass_threshold=t.pass_threshold),r}async function W(){if(D.value!=="")return D.value;const t=await ye(P());if((t==null?void 0:t.id)===void 0||t.id===null||t.id==="")throw new Error("评测维度已提交,但未返回维度 ID,无法启动评测任务");return D.value=t.id,t.id}async function Y(){if(!(e.value||d.value)){d.value=!0;try{const t=await W();await Ve({eval_task_name:n.value.eval_task_name,eval_type:"custom",model_id:n.value.model_id,gpu_id:n.value.gpu_id,dataset_id:n.value.data_source==="dataset"?n.value.dataset_id:"",dimension_id:t,data_source:n.value.data_source,leaderboard:n.value.leaderboard,basic_metrics:{bleu:{enabled:h.value.bleu_enabled,ngram:h.value.bleu_n},rouge:{enabled:h.value.rouge_enabled,methods:h.value.rouge_methods},cosine:{enabled:h.value.cosine_enabled},output_precision:h.value.output_precision}}),I.success("评测任务已创建并启动"),u.push("/model-eval")}catch(t){const r=t instanceof Error?t.message:"创建评测任务失败,请稍后重试";I.error(r)}finally{d.value=!1}}}async function Z(){var t,r,U;if(!(e.value||d.value)){if(i.value===0&&!await((t=_.value)==null?void 0:t.validate())){I.warning("请检查并完善任务配置");return}if(i.value===1&&!await((r=g.value)==null?void 0:r.validate())){I.warning("请检查并完善大模型评测指标");return}if(i.value===2&&!await((U=a.value)==null?void 0:U.validate())){I.warning("请检查并完善基础评测指标");return}i.value=Math.min(i.value+1,p.length-1)}}function H(){d.value||(i.value=Math.max(i.value-1,0))}function J(){u.back()}return ee(m),(t,r)=>{const U=Q,B=X;return s(),c(oe,{title:"新建评测任务",subtitle:"依次配置任务、大模型评测指标与基础评测指标,确认后开始评测"},{default:l(()=>[k("div",Ge,[le((s(),S("main",Pe,[k("div",qe,[k("div",$e,[(s(),S(q,null,F(p,(V,x)=>(s(),S(q,{key:V.title},[x!==0?(s(),S("div",{key:0,class:N(["step-connector",{"is-active":i.value>=x}])},null,2)):G("",!0),k("div",{class:N(["step-item",{"is-active":i.value===x,"is-completed":i.value>x}]),"aria-current":i.value===x?"step":void 0,"aria-label":`${x+1}. ${V.title}:${V.description}`},[k("div",Fe,[k("div",Oe,[i.value>x?(s(),S("i",Te)):(s(),S("span",ze,E(x+1),1))]),k("div",Ne,[k("div",Ae,E(V.title),1),k("div",je,E(V.description),1)])])],10,Le)],64))),64))])]),k("div",Ke,[i.value===0?(s(),c(he,{key:0,ref_key:"taskStepRef",ref:_,modelValue:n.value,"onUpdate:modelValue":r[0]||(r[0]=V=>n.value=V),"trained-models":v.value,"eval-datasets":w.value,gpus:R.value,loading:e.value,disabled:d.value},null,8,["modelValue","trained-models","eval-datasets","gpus","loading","disabled"])):i.value===1?(s(),c(Re,{key:1,ref_key:"ruleStepRef",ref:g,modelValue:C.value,"onUpdate:modelValue":r[1]||(r[1]=V=>C.value=V),"eval-models":M.value,disabled:d.value},null,8,["modelValue","eval-models","disabled"])):i.value===2?(s(),c(xe,{key:2,ref_key:"basicMetricStepRef",ref:a,modelValue:h.value,"onUpdate:modelValue":r[2]||(r[2]=V=>h.value=V),disabled:d.value},null,8,["modelValue","disabled"])):(s(),c(Ie,{key:3,task:n.value,"llm-metric":C.value,"basic-metrics":h.value,"trained-models":v.value,"eval-datasets":w.value,"eval-models":M.value,gpus:R.value},null,8,["task","llm-metric","basic-metrics","trained-models","eval-datasets","eval-models","gpus"]))])])),[[B,e.value]]),k("footer",We,[i.value>0?(s(),c(U,{key:0,class:"footer-back",disabled:d.value,onClick:H},{default:l(()=>[r[3]||(r[3]=k("i",{class:"fa fa-arrow-left footer-button-icon"},null,-1)),f("返回:"+E(p[i.value-1].title),1)]),_:1},8,["disabled"])):(s(),c(U,{key:1,class:"footer-back",disabled:d.value,onClick:J},{default:l(()=>[...r[4]||(r[4]=[f(" 取消 ",-1)])]),_:1},8,["disabled"])),i.value<p.length-1?(s(),c(U,{key:2,type:"primary",disabled:e.value||d.value,onClick:Z},{default:l(()=>[f(" 下一步:"+E(p[i.value+1].title),1),r[5]||(r[5]=k("i",{class:"fa fa-arrow-right footer-button-icon is-right"},null,-1))]),_:1},8,["disabled"])):(s(),c(U,{key:3,type:"primary",loading:d.value,disabled:e.value||d.value,onClick:Y},{default:l(()=>[...r[6]||(r[6]=[f(" 开始评测 ",-1)])]),_:1},8,["loading","disabled"]))])])]),_:1})}}}),$a=L(Ye,[["__scopeId","data-v-95b7e7f1"]]);export{$a as default};
|