refactor(yudao-module-llm): 优化异步微调任务服务
- 异常处理机制改进,直接抛出异常而不是打印堆栈
This commit is contained in:
parent
13e30d4249
commit
4e45570a60
@ -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);
|
||||
|
||||
|
@ -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 请求异常
|
||||
*/
|
||||
|
@ -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();
|
||||
|
@ -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());
|
||||
|
Loading…
x
Reference in New Issue
Block a user