refactor(yudao-module-llm): 优化异步微调任务服务

- 异常处理机制改进,直接抛出异常而不是打印堆栈
This commit is contained in:
Liuyang 2025-02-26 14:08:36 +08:00
parent 13e30d4249
commit 4e45570a60
4 changed files with 46 additions and 33 deletions

View File

@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.llm.dal.mysql.servername.ServerNameMapper;
import cn.iocoder.yudao.module.llm.enums.FineTuningTaskStatusConstants;
import cn.iocoder.yudao.module.llm.enums.FinetuningTaskStatusEnum;
import cn.iocoder.yudao.module.llm.service.basemodel.vo.ModelListRes;
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.AigcFineTuningDetailRespVO;
import cn.iocoder.yudao.module.llm.service.http.vo.AigcModelDeployVO;
@ -40,9 +41,13 @@ public class FineTuningTaskSyncService {
@Resource
FineTuningTaskMapper fineTuningTaskMapper;
@Resource
ServerNameMapper serverNameMapper;
@Resource
private FineTuningTaskHttpService fineTuningTaskHttpService;
@Scheduled(cron = "0 */1 * * * ?")
public void updateFineTuningTaskStatus() {
Log.info("FineTuningTaskSync 定时任务启动");
@ -57,7 +62,7 @@ public class FineTuningTaskSyncService {
}
String hostUrl = serverNameDO!=null ?serverNameDO.getHost():"";
String queryJobs = "?filter={\"job_id\":\""+fineTuningTaskDO.getJobId()+"\"}";
String respJobs = trainHttpService.modelTableQuery(new HashMap<>(), hostUrl,"fine_tuning_train_job",queryJobs);
String respJobs = fineTuningTaskHttpService.modelTableQuery(new HashMap<>(), hostUrl,"fine_tuning_train_job",queryJobs);
AigcFineTuningDetailRespVO resp = new AigcFineTuningDetailRespVO();
try {
ObjectMapper mapper = new ObjectMapper();
@ -109,7 +114,7 @@ public class FineTuningTaskSyncService {
updateObj.setStatus(2);
// 获取模型id
String querModels = "?filter={\"model_name\":\""+resp.getFine_tuned_model()+"\"}";
String resModels = trainHttpService.modelTableQuery(new HashMap<>(),hostUrl, "models",querModels);
String resModels = fineTuningTaskHttpService.modelTableQuery(new HashMap<>(),hostUrl, "models",querModels);
log.info("获取 aigc models 表数据 info {}",resModels);
JSONArray jsonArrayModels = JSONArray.parseArray(resModels);

View File

@ -122,6 +122,34 @@ public class FineTuningTaskHttpService {
return null;
}
/**
* 根据表名称查询数据
*/
public String modelTableQuery(Map<String, String> headers, String urlHost, String tableName, String query) {
// 构建完整请求 URL
String url = String.format(urlHost + llmBackendProperties.getTableDataQuery(), tableName);
url = url + query;
try {
// 记录请求信息
log.info("开始查询模型表数据请求URL: {}", url);
// 发起 HTTP GET 请求
String response = HttpUtils.get(url, headers);
log.info("HTTP 请求完成。响应内容: {}", response);
// 返回响应数据
return response;
} catch (Exception e) {
log.error("查询模型表数据时发生异常。请求URL: {}", url, e);
handleHttpException(e);
}
return "";
}
/**
* 统一处理 HTTP 请求异常
*/

View File

@ -11,17 +11,23 @@ import kong.unirest.HttpResponse;
import kong.unirest.Unirest;
import kong.unirest.UnirestException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.net.ConnectException;
import java.net.SocketTimeoutException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
/**
* 训练相关接口
*/
@ -145,19 +151,6 @@ public class TrainHttpService {
return null;
}
/**
* 根据表名称查询数据
*/
public String modelTableQuery (Map<String, String> headers, String urlHost, String tableName, String query) {
String url = String.format(urlHost + llmBackendProperties.getTableDataQuery(), tableName);
url = url + query;
String res = HttpUtils.get(url, headers);
log.info(" model query info :{}", res);
return res;
}
public AigcFineTuningDetailRespVO finetuningDetail (Map<String, String> headers, String jobId) {
login(headers);
String finetuningDetail = llmBackendProperties.getFinetuningDetail();

View File

@ -1,39 +1,26 @@
package cn.iocoder.yudao.module.llm.service.modelservice;
import cn.hutool.json.JSONObject;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.dto.DataJsonTemplate;
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.modelservice.ModelServiceMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.servername.ServerNameMapper;
import cn.iocoder.yudao.module.llm.enums.ModelDeployConstantEnum;
import cn.iocoder.yudao.module.llm.handler.AigcCustomDateTimeDeserializer;
import cn.iocoder.yudao.module.llm.service.http.TrainHttpService;
import cn.iocoder.yudao.module.llm.service.http.FineTuningTaskHttpService;
import cn.iocoder.yudao.module.llm.service.http.vo.AigcModelDeployVO;
import cn.iocoder.yudao.module.llm.service.http.vo.AigcRespVO;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.esotericsoftware.kryo.serializers.TimeSerializers;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
@ -41,15 +28,15 @@ import java.util.List;
@Component
@Slf4j
public class ModelServiceTaskSyncService {
@Resource
private TrainHttpService trainHttpService;
@Resource
private ModelServiceMapper modelServiceMapper;
@Resource
ServerNameMapper serverNameMapper;
@Resource
private FineTuningTaskHttpService fineTuningTaskHttpService;
@Scheduled(cron = "0 */2 * * * ?")
public void syncStatusModels() {
@ -70,7 +57,7 @@ public class ModelServiceTaskSyncService {
String query = "?filter={\"id\":"+jobid+"}";
ServerNameDO serverNameDO = serverNameMapper.selectById(modelServiceDO.getGpuType());
String hostUrl = serverNameDO!=null ?serverNameDO.getHost():"";
String res = trainHttpService.modelTableQuery(new HashMap<>(), hostUrl,"model_deploy",query);
String res = fineTuningTaskHttpService.modelTableQuery(new HashMap<>(), hostUrl,"model_deploy",query);
log.info("获取 aigc model_deploy 表数据 info {}",res);
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());