refactor(module-llm):重构微调任务创建逻辑

- 将 finetuningCreate 方法从 TrainHttpService 移动到 FineTuningTaskHttpService
-优化 AsyncFineTuningTaskService 中的调用逻辑
-增加 FineTuningTaskServiceImpl 中的任务存在性校验和状态更新
- 删除 TrainHttpService 中的冗余方法
This commit is contained in:
Liuyang 2025-02-25 17:30:07 +08:00
parent 8dffa602fb
commit 3d70b004ab
4 changed files with 58 additions and 42 deletions

View File

@ -123,7 +123,7 @@ public class AsyncFineTuningTaskService {
// 调用模型服务创建微调任务
log.info("正在调用模型服务创建微调任务...");
AigcFineTuningCreateRespVO resp = trainHttpService.finetuningCreate(new HashMap<>(), serverNameDO.getHost(), req);
AigcFineTuningCreateRespVO resp = fineTuningTaskHttpService.finetuningCreate(new HashMap<>(), serverNameDO.getHost(), req);
// 更新任务状态
FineTuningTaskDO updateObj = new FineTuningTaskDO();
@ -169,13 +169,15 @@ public class AsyncFineTuningTaskService {
//调优任务部署
@Async
public void startFineTuningTask (FineTuningTaskDO fineTuningTask) {
log.info(" ===== 开始微调任务 ===== stopFinetuning");
try {
log.info("开始调用HTTP服务开始微调任务任务模型名称: {}", fineTuningTask.getJobModelName());
createTuning(fineTuningTask);
log.info("HTTP服务调用成功任务模型名称: {}", fineTuningTask.getJobModelName());
} catch (Exception e) {
e.printStackTrace();
log.error("调用HTTP服务开始微调任务时发生异常任务模型名称: {}", fineTuningTask.getJobModelName(), e);
throw new RuntimeException("开始微调任务失败", e);
}
;
}
//调优任务停止

View File

@ -9,7 +9,6 @@ import cn.iocoder.yudao.module.llm.controller.admin.finetuningtask.vo.FineTuning
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.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;
import cn.iocoder.yudao.module.llm.dal.mysql.dataset.DatasetMapper;
@ -18,14 +17,12 @@ import cn.iocoder.yudao.module.llm.dal.mysql.servername.ServerNameMapper;
import cn.iocoder.yudao.module.llm.enums.FinetuningTaskStatusEnum;
import cn.iocoder.yudao.module.llm.service.async.AsyncFineTuningTaskService;
import cn.iocoder.yudao.module.llm.service.http.TrainHttpService;
import cn.iocoder.yudao.module.llm.service.http.vo.AigcFineTuningDetailRespVO;
import cn.iocoder.yudao.module.llm.service.modelservice.ModelServiceService;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import jodd.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
@ -234,10 +231,22 @@ public class FineTuningTaskServiceImpl implements FineTuningTaskService {
@Override
public void startFineTuningTask (Long id) {
log.info(" ===== 开始微调任务 ===== startFineTuningTask");
// 1. 校验微调任务是否存在
log.info("开始校验微调任务是否存在任务ID: {}", id);
FineTuningTaskDO fineTuningTaskDO = validateFineTuningTaskExists(id);
log.info("微调任务校验成功任务ID: {}", id);
// 2. 修改微调任务状态为等待中
log.info("开始修改微调任务状态为等待中任务ID: {}", id);
fineTuningTaskMapper.stopStartTask(id, FinetuningTaskStatusEnum.WAITING.getStatus());
//调用模型服务开启调优任务
log.info("微调任务状态修改成功任务ID: {}", id);
// 3. 异步调用模型服务停止微调任务
log.info("开始异步调用模型服务开始微调任务任务ID: {}", id);
asyncFineTuningTaskService.startFineTuningTask(fineTuningTaskDO);
log.info("异步调用模型服务完成任务ID: {}", id);
}
@Override

View File

@ -5,12 +5,16 @@ import cn.hutool.http.HttpResponse;
import cn.iocoder.yudao.framework.common.util.http.HttpUtils;
import cn.iocoder.yudao.module.llm.dal.dataobject.finetuningtask.FineTuningTaskDO;
import cn.iocoder.yudao.module.llm.framework.backend.config.LLMBackendProperties;
import cn.iocoder.yudao.module.llm.service.http.vo.AigcFineTuningCreateReqVO;
import cn.iocoder.yudao.module.llm.service.http.vo.AigcFineTuningCreateRespVO;
import cn.iocoder.yudao.module.llm.service.http.vo.AigcRespVO;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
/**
* @Description 微调任务相关接口
@ -50,4 +54,39 @@ public class FineTuningTaskHttpService {
throw new RuntimeException("HTTP请求失败", e);
}
}
/**
* 创建微调任务 POST
*/
public AigcFineTuningCreateRespVO finetuningCreate (Map<String, String> headers, String url, AigcFineTuningCreateReqVO req) {
// login(headers);
// TODO: 在上个方法中已经将数据集的文件id赋予调试时需要写死再放开
// String fileId = "6237ed4d-a046-479c-80d6-8579a0283994";
// req.setFileId(fileId);
try {
// 记录请求信息
log.info("开始创建微调任务请求URL: {}", url + llmBackendProperties.getFinetuningCreate());
log.info("请求头: {}", headers);
log.info("请求体: {}", JSON.toJSONString(req));
// 发起 HTTP 请求
log.debug("正在发起 HTTP POST 请求...");
String res = HttpUtils.post(url + llmBackendProperties.getFinetuningCreate(), headers, JSON.toJSONString(req));
log.info("HTTP 请求完成。响应内容: {}", res);
// 解析响应
log.debug("正在解析响应内容...");
AigcRespVO aigcRespVO = JSON.parseObject(res, AigcRespVO.class);
AigcFineTuningCreateRespVO aigcFineTuningCreateRespVO = JSON.parseObject(res, AigcFineTuningCreateRespVO.class);
log.info("响应解析完成。微调任务创建结果: {}", JSON.toJSONString(aigcFineTuningCreateRespVO));
// 返回结果
return aigcFineTuningCreateRespVO;
} catch (Exception e) {
log.error("创建微调任务时发生异常。请求URL: {}", url + llmBackendProperties.getFinetuningCreate(), e);
throw new RuntimeException("微调任务创建失败", e);
}
}
}

View File

@ -145,40 +145,6 @@ public class TrainHttpService {
return null;
}
/**
* 创建微调任务 POST
*/
public AigcFineTuningCreateRespVO finetuningCreate (Map<String, String> headers, String url, AigcFineTuningCreateReqVO req) {
// login(headers);
// TODO: 在上个方法中已经将数据集的文件id赋予调试时需要写死再放开
// String fileId = "6237ed4d-a046-479c-80d6-8579a0283994";
// req.setFileId(fileId);
try {
// 记录请求信息
log.info("开始创建微调任务请求URL: {}", url + llmBackendProperties.getFinetuningCreate());
log.info("请求头: {}", headers);
log.info("请求体: {}", JSON.toJSONString(req));
// 发起 HTTP 请求
log.debug("正在发起 HTTP POST 请求...");
String res = HttpUtils.post(url + llmBackendProperties.getFinetuningCreate(), headers, JSON.toJSONString(req));
log.info("HTTP 请求完成。响应内容: {}", res);
// 解析响应
log.debug("正在解析响应内容...");
AigcRespVO aigcRespVO = JSON.parseObject(res, AigcRespVO.class);
AigcFineTuningCreateRespVO aigcFineTuningCreateRespVO = JSON.parseObject(res, AigcFineTuningCreateRespVO.class);
log.info("响应解析完成。微调任务创建结果: {}", JSON.toJSONString(aigcFineTuningCreateRespVO));
// 返回结果
return aigcFineTuningCreateRespVO;
} catch (Exception e) {
log.error("创建微调任务时发生异常。请求URL: {}", url + llmBackendProperties.getFinetuningCreate(), e);
throw new RuntimeException("微调任务创建失败", e);
}
}
/**
* 根据表名称查询数据