feat(llm): 增加模型调优名称字段并实现相关功能

- 在 BaseModelDO、BaseModelRespVO 中添加 theTuningName 字段
- 在 BaseModelTaskService 中实现获取模型调优名称的方法
- 在 FineTuningTaskService 中新增 selectName 方法
- 优化 BaseModelController 中的模型创建逻辑
This commit is contained in:
sunxiqing 2025-03-17 16:11:59 +08:00
parent d454971b8f
commit 5cff4c2c04
6 changed files with 37 additions and 2 deletions

View File

@ -1,7 +1,10 @@
package cn.iocoder.yudao.module.llm.controller.admin.basemodel;
import cn.iocoder.yudao.module.llm.dal.dataobject.finetuningtask.FineTuningTaskDO;
import cn.iocoder.yudao.module.llm.service.basemodel.BaseModelTaskService;
import cn.iocoder.yudao.module.llm.service.finetuningtask.FineTuningTaskService;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -41,6 +44,8 @@ public class BaseModelController {
private BaseModelService baseModelService;
@Resource
private BaseModelTaskService baseModelTaskService;
@Resource
private FineTuningTaskService fineTuningTaskService;
@PostMapping("/create")
@Operation(summary = "创建基座模型")

View File

@ -20,6 +20,9 @@ public class BaseModelRespVO {
@ExcelProperty("基座模型名称")
private String modelName;
@Schema(description = "模型调优名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
private String theTuningName;
@Schema(description = "参数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "12388")
@ExcelProperty("参数量")
private Integer parameterCount;

View File

@ -52,6 +52,10 @@ public class BaseModelDO extends BaseDO {
* 是否微调
*/
private Boolean isFinetuned;
/**
* 模型调优名称
*/
private String theTuningName;
/**
* 备注
*/

View File

@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.llm.service.basemodel;
import cn.iocoder.yudao.framework.common.util.http.HttpUtils;
import cn.iocoder.yudao.module.llm.controller.admin.basemodel.vo.BaseModelSaveReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.basemodel.BaseModelDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.finetuningtask.FineTuningTaskDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelservice.ModelServiceDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.servername.ServerNameDO;
import cn.iocoder.yudao.module.llm.dal.mysql.basemodel.BaseModelMapper;
@ -13,6 +14,7 @@ import cn.iocoder.yudao.module.llm.handler.AigcCustomDateTimeDeserializer;
import cn.iocoder.yudao.module.llm.service.basemodel.vo.AListOfPedestalModelsVO;
import cn.iocoder.yudao.module.llm.service.basemodel.vo.ModelListRes;
import cn.iocoder.yudao.module.llm.service.basemodel.vo.PedestalModelVO;
import cn.iocoder.yudao.module.llm.service.finetuningtask.FineTuningTaskService;
import cn.iocoder.yudao.module.llm.service.http.FineTuningTaskHttpService;
import cn.iocoder.yudao.module.llm.service.http.TrainHttpService;
import cn.iocoder.yudao.module.llm.service.http.vo.AigcModelDeploySaveReq;
@ -21,6 +23,7 @@ import cn.iocoder.yudao.module.llm.service.http.vo.ModelDeployRespVO;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.esotericsoftware.minlog.Log;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
@ -34,6 +37,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@ -63,6 +67,8 @@ public class BaseModelTaskService {
@Value("${spring.profiles.active}")
private String active;
@Resource
private FineTuningTaskService fineTuningTaskService;
// 减少维护 先注释掉
@Scheduled(cron = "0 0/1 * * * ?")
public void synchronous () throws JsonProcessingException {
@ -239,15 +245,20 @@ public class BaseModelTaskService {
.filter(remoteModelName -> !differentModelNames.contains(remoteModelName))
.collect(Collectors.toList());
if (uniqueRemoteModelNames.size() > 0) {
List<BaseModelDO> baseModelDOList = new ArrayList<>();
for (String remoteModelName : uniqueRemoteModelNames) {
BaseModelDO baseModelDO = new BaseModelDO();
baseModelDO.setModelName(remoteModelName);
baseModelDO.setAigcModelName(remoteModelName);
LambdaQueryWrapper<FineTuningTaskDO> eq = new LambdaQueryWrapper<FineTuningTaskDO>().eq(FineTuningTaskDO::getJobModelName, remoteModelName);
FineTuningTaskDO fineTuningTaskDO = fineTuningTaskService.selectName(eq);
baseModelDO.setTheTuningName(fineTuningTaskDO.getTaskName());
// 模型类型
// 微调状态
baseModelDO.setIsFinetuned(replaceActiveGroups(remoteModelName, active));
baseModelMapper.insert(baseModelDO);
baseModelDOList.add(baseModelDO);
}
baseModelMapper.insert(baseModelDOList);
}
} catch (Exception e) {
log.error("更新基础模型状态时发生异常: {}", e.getMessage(), e);

View File

@ -5,6 +5,7 @@ import cn.iocoder.yudao.module.llm.controller.admin.finetuningtask.vo.FineTuning
import cn.iocoder.yudao.module.llm.controller.admin.finetuningtask.vo.FineTuningTaskRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.finetuningtask.vo.FineTuningTaskSaveReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.finetuningtask.FineTuningTaskDO;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import javax.validation.Valid;
import java.util.List;
@ -103,4 +104,6 @@ public interface FineTuningTaskService {
Map<Long, String> getModelTuningByDatasetId (Long datasetId);
String getFineTuningLog(Long id);
FineTuningTaskDO selectName(LambdaQueryWrapper<FineTuningTaskDO> eq);
}

View File

@ -70,7 +70,7 @@ public class FineTuningTaskServiceImpl implements FineTuningTaskService {
@Override
public Long createFineTuningTask (FineTuningTaskSaveReqVO createReqVO) {
// 记录开始创建任务的日志
log.info("开始创建微调任务,请求参数: {}", createReqVO);
@ -365,6 +365,15 @@ public class FineTuningTaskServiceImpl implements FineTuningTaskService {
return null;
}
@Override
public FineTuningTaskDO selectName(LambdaQueryWrapper<FineTuningTaskDO> eq) {
List<FineTuningTaskDO> fineTuningTaskDOS = fineTuningTaskMapper.selectList(eq);
if (fineTuningTaskDOS.size()>0) {
return fineTuningTaskDOS.get(0);
}
return null;
}
// @Override
// public void stopFineTuningTask (Long id) {
// FineTuningTaskDO fineTuningTaskDO = validateFineTuningTaskExists(id);