模型调优修改

This commit is contained in:
limin 2024-12-31 11:49:24 +08:00
parent 8f429d4a02
commit 713b1b2b39
8 changed files with 119 additions and 4 deletions

View File

@ -71,12 +71,28 @@ public class FineTuningTaskController {
return success(BeanUtils.toBean(fineTuningTask, FineTuningTaskRespVO.class));
}
@PutMapping("/stop")
@Operation(summary = "停止模型调优 —— 微调任务")
@PreAuthorize("@ss.hasPermission('llm:fine-tuning-task:update')")
public CommonResult<Boolean> stopFineTuningTask(@RequestParam("id") Long id) {
fineTuningTaskService.stopFineTuningTask(id);
return success(true);
}
@PutMapping("start")
@Operation(summary = "部署模型调优 —— 微调任务")
@PreAuthorize("@ss.hasPermission('llm:fine-tuning-task:update')")
public CommonResult<Boolean> startFineTuningTask(@RequestParam("id") Long id) {
fineTuningTaskService.startFineTuningTask(id);
return success(true);
}
@GetMapping("/page")
@Operation(summary = "获得模型调优 —— 微调任务分页")
@PreAuthorize("@ss.hasPermission('llm:fine-tuning-task:query')")
public CommonResult<PageResult<FineTuningTaskRespVO>> getFineTuningTaskPage(@Valid FineTuningTaskPageReqVO pageReqVO) {
PageResult<FineTuningTaskDO> pageResult = fineTuningTaskService.getFineTuningTaskPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, FineTuningTaskRespVO.class));
PageResult<FineTuningTaskRespVO> pageResult = fineTuningTaskService.getFineTuningTaskPage1(pageReqVO);
return success(pageResult);
}
@GetMapping("/export-excel")

View File

@ -88,4 +88,7 @@ public class FineTuningTaskPageReqVO extends PageParam {
@Schema(description = "状态使用字典llm_fine_tuning_task_status", example = "1")
private Integer status;
@Schema(description ="基础模型服务Id")
private Long baseModelId;
}

View File

@ -125,5 +125,13 @@ public class FineTuningTaskRespVO {
@ExcelProperty(value = "状态使用字典llm_fine_tuning_task_status", converter = DictConvert.class)
@DictFormat("llm_fine_tuning_task_status") // TODO 代码优化建议设置到对应的 DictTypeConstants 枚举类中
private Integer status;
@Schema(description ="基础模型服务Id")
private Long baseModelId;
@Schema(description = "基础模型服务名称")
private String baseModelName;
@Schema(description = "数据集名称")
private String datasetName;
}

View File

@ -83,4 +83,7 @@ public class FineTuningTaskSaveReqVO {
@NotNull(message = "状态使用字典llm_fine_tuning_task_status不能为空")
private Integer status;
@Schema(description = "基础模型服务Id")
private Long baseModelId;
}

View File

@ -135,5 +135,9 @@ public class FineTuningTaskDO extends BaseDO {
* 枚举 {@link TODO llm_fine_tuning_task_status 对应的类}
*/
private Integer status;
/**
* 基础服务模型Id
*/
private Long baseModelId;
}

View File

@ -1,13 +1,13 @@
package cn.iocoder.yudao.module.llm.dal.mysql.finetuningtask;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.llm.dal.dataobject.finetuningtask.FineTuningTaskDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.llm.controller.admin.finetuningtask.vo.*;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
/**
* 模型调优 微调任务 Mapper
@ -47,4 +47,6 @@ public interface FineTuningTaskMapper extends BaseMapperX<FineTuningTaskDO> {
.orderByDesc(FineTuningTaskDO::getId));
}
@Update("update llm_fine_tuning_task set status = #{status} where id = #{id}")
void stopStartTask(@Param("id") Long id,@Param("status") int status);
}

View File

@ -52,4 +52,23 @@ public interface FineTuningTaskService {
*/
PageResult<FineTuningTaskDO> getFineTuningTaskPage(FineTuningTaskPageReqVO pageReqVO);
/**
* 获得模型调优 微调任务分页
*
* @param pageReqVO 分页查询
* @return 模型调优 微调任务分页
*/
PageResult<FineTuningTaskRespVO> getFineTuningTaskPage1(FineTuningTaskPageReqVO pageReqVO);
/**
* 停止微调任务
* @param id
*/
void stopFineTuningTask(Long id);
/**
* 部署微调任务
* @param id
*/
void startFineTuningTask(Long id);
}

View File

@ -1,12 +1,21 @@
package cn.iocoder.yudao.module.llm.service.finetuningtask;
import cn.iocoder.yudao.module.llm.dal.dataobject.basemodel.BaseModelDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.dataset.DatasetDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelservice.ModelServiceDO;
import cn.iocoder.yudao.module.llm.dal.mysql.basemodel.BaseModelMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.dataset.DatasetMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
import cn.iocoder.yudao.module.llm.controller.admin.finetuningtask.vo.*;
import cn.iocoder.yudao.module.llm.dal.dataobject.finetuningtask.FineTuningTaskDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
@ -30,6 +39,10 @@ public class FineTuningTaskServiceImpl implements FineTuningTaskService {
@Resource
private FineTuningTaskMapper fineTuningTaskMapper;
@Resource
private BaseModelMapper baseModelMapper;
@Resource
private DatasetMapper datasetMapper;
@Override
public Long createFineTuningTask(FineTuningTaskSaveReqVO createReqVO) {
@ -71,9 +84,56 @@ public class FineTuningTaskServiceImpl implements FineTuningTaskService {
public FineTuningTaskDO getFineTuningTask(Long id) {
return fineTuningTaskMapper.selectById(id);
}
@Override
public PageResult<FineTuningTaskRespVO> getFineTuningTaskPage1(FineTuningTaskPageReqVO pageReqVO) {
PageResult<FineTuningTaskDO> pageResult = fineTuningTaskMapper.selectPage(pageReqVO);
PageResult<FineTuningTaskRespVO> result = BeanUtils.toBean(pageResult, FineTuningTaskRespVO.class);
if (CollectionUtils.isNotEmpty(pageResult.getList())){
List<Long> modelIds = pageResult.getList().stream().map(FineTuningTaskDO::getBaseModelId).collect(Collectors.toList());
List<BaseModelDO> baseModelDOS = baseModelMapper.selectList(new LambdaQueryWrapper<BaseModelDO>()
.in(BaseModelDO::getId, modelIds));
Map<Long, BaseModelDO> longModelServiceDOMap = cn.iocoder.yudao.framework.common.util.collection.
CollectionUtils.convertMap(baseModelDOS, BaseModelDO::getId);
result.getList().forEach(item->{
BaseModelDO baseModelDO = longModelServiceDOMap.get(item.getBaseModelId());
if(baseModelDO != null){
item.setBaseModelName(baseModelDO.getModelName());
}
});
List<Long> dataSetlIds = pageResult.getList().stream().map(FineTuningTaskDO::getDataset).collect(Collectors.toList());
List<DatasetDO> datasetDOS = datasetMapper.selectList(new LambdaQueryWrapper<DatasetDO>().in(DatasetDO::getId, dataSetlIds));
Map<Long, DatasetDO> datasetDOMap = cn.iocoder.yudao.framework.common.util.collection.
CollectionUtils.convertMap(datasetDOS, DatasetDO::getId);
result.getList().forEach(item->{
DatasetDO datasetDO = datasetDOMap.get(item.getDataset());
if(datasetDO != null){
item.setDatasetName(datasetDO.getDatasetName());
}
});
}
return result;
}
/**
* 停止服务
* @param id
*/
@Override
public void stopFineTuningTask(Long id) {
fineTuningTaskMapper.stopStartTask(id,0);
}
@Override
public void startFineTuningTask(Long id) {
fineTuningTaskMapper.stopStartTask(id,1);
}
@Override
public PageResult<FineTuningTaskDO> getFineTuningTaskPage(FineTuningTaskPageReqVO pageReqVO) {
PageResult<FineTuningTaskDO> pageResult = fineTuningTaskMapper.selectPage(pageReqVO);
PageResult<FineTuningTaskRespVO> result = BeanUtils.toBean(pageResult, FineTuningTaskRespVO.class);
return fineTuningTaskMapper.selectPage(pageReqVO);
}