From 3d70b004ab740e45aee907e0ab9de46dfbb986ea Mon Sep 17 00:00:00 2001 From: Liuyang <2746366019@qq.com> Date: Tue, 25 Feb 2025 17:30:07 +0800 Subject: [PATCH] =?UTF-8?q?refactor(module-llm):=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E5=BE=AE=E8=B0=83=E4=BB=BB=E5=8A=A1=E5=88=9B=E5=BB=BA=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 finetuningCreate 方法从 TrainHttpService 移动到 FineTuningTaskHttpService -优化 AsyncFineTuningTaskService 中的调用逻辑 -增加 FineTuningTaskServiceImpl 中的任务存在性校验和状态更新 - 删除 TrainHttpService 中的冗余方法 --- .../async/AsyncFineTuningTaskService.java | 10 +++-- .../FineTuningTaskServiceImpl.java | 17 ++++++-- .../http/FineTuningTaskHttpService.java | 39 +++++++++++++++++++ .../llm/service/http/TrainHttpService.java | 34 ---------------- 4 files changed, 58 insertions(+), 42 deletions(-) diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/async/AsyncFineTuningTaskService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/async/AsyncFineTuningTaskService.java index 8cf1f906f..3ae0cc52c 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/async/AsyncFineTuningTaskService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/async/AsyncFineTuningTaskService.java @@ -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); } - ; } //调优任务停止 diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskServiceImpl.java index 2a2b99f3c..3230455e0 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/finetuningtask/FineTuningTaskServiceImpl.java @@ -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 diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/FineTuningTaskHttpService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/FineTuningTaskHttpService.java index cb90ba7ae..3d0f18ff9 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/FineTuningTaskHttpService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/FineTuningTaskHttpService.java @@ -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 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); + } + } } diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/TrainHttpService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/TrainHttpService.java index 0a764a13c..214b41260 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/TrainHttpService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/TrainHttpService.java @@ -145,40 +145,6 @@ public class TrainHttpService { return null; } - /** - * 创建微调任务 POST - */ - public AigcFineTuningCreateRespVO finetuningCreate (Map 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); - } - } /** * 根据表名称查询数据