fix(llm): 修复模型状态刷新逻辑并优化定时任务执行频率

- 修复模型状态刷新逻辑,增加对 "stop" 状态的处理
- 将定时任务执行频率从每 5 分钟调整为每分钟
- 优化代码格式,去除多余的空格和换行
This commit is contained in:
sunxiqing 2025-03-14 18:12:09 +08:00
parent 3a919f884a
commit 04dd579d8b
2 changed files with 61 additions and 54 deletions

View File

@ -218,7 +218,7 @@ public class BaseModelServiceImpl implements BaseModelService {
@Override
public void deleteTheModel(BaseModelPageReqVO pageReqVO) {
try {
String resStr = HttpUtils.post(llmBackendProperties.getDeleteTheModel()+"?model_name ="+pageReqVO.getModelName(), null, "");
String resStr = HttpUtils.post(llmBackendProperties.getDeleteTheModel()+"?model_name="+pageReqVO.getModelName(), null, "");
log.info(" unActive:{}", resStr);
}catch (Exception e){
log.error("禁用基础模型状态时发生异常: {}", e.getMessage(), e);

View File

@ -15,7 +15,9 @@ import cn.iocoder.yudao.module.llm.service.basemodel.vo.ModelListRes;
import cn.iocoder.yudao.module.llm.service.basemodel.vo.PedestalModelVO;
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.AigcModelDeploySaveReq;
import cn.iocoder.yudao.module.llm.service.http.vo.AigcModelDeployVO;
import cn.iocoder.yudao.module.llm.service.http.vo.ModelDeployRespVO;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@ -109,33 +111,33 @@ public class BaseModelTaskService {
String status = latestRecord.getStatus();
log.info("最新模型部署记录状态: {}", status);
// // 如果模型状态为 "stop"则重新部署
// if ("stop".equals(status)) {
// log.info("模型状态为 'stop',正在重新部署模型...");
//
// // 构建模型部署请求
// AigcModelDeploySaveReq aigcModelDeploySaveReq = new AigcModelDeploySaveReq(
// baseModelDO.getAigcModelName(), "gpu");
// log.info("模型部署请求参数: {}", JSON.toJSONString(aigcModelDeploySaveReq));
//
// // 发起模型部署请求
// ModelDeployRespVO modelDeployRespVO = trainHttpService.modelDeploy(
// new HashMap<>(), serverName.getHost(), aigcModelDeploySaveReq);
// log.info("模型部署请求完成。响应内容: {}", JSON.toJSONString(modelDeployRespVO));
//
// // 更新基础模型信息
// if (!"error".equals(modelDeployRespVO.getMessage())) {
// log.info("模型部署成功。正在更新基础模型信息...");
// BaseModelSaveReqVO baseModelSaveReqVO = new BaseModelSaveReqVO();
// baseModelSaveReqVO.setId(baseModelDO.getId());
// baseModelSaveReqVO.setModelId(modelDeployRespVO.getId());
// baseModelSaveReqVO.setChatUrl(modelDeployRespVO.getPort() + DEFAULT_MODEL_URL_SUFFIX);
// baseModelService.updateBaseModel(baseModelSaveReqVO);
// log.info("基础模型信息更新完成。模型ID: {}", baseModelDO.getId());
// } else {
// log.error("模型部署失败。模型ID: {}", baseModelDO.getId());
// }
// }
// // 如果模型状态为 "stop"则重新部署
// if ("stop".equals(status)) {
// log.info("模型状态为 'stop',正在重新部署模型...");
//
// // 构建模型部署请求
// AigcModelDeploySaveReq aigcModelDeploySaveReq = new AigcModelDeploySaveReq(
// baseModelDO.getAigcModelName(), "gpu");
// log.info("模型部署请求参数: {}", JSON.toJSONString(aigcModelDeploySaveReq));
//
// // 发起模型部署请求
// ModelDeployRespVO modelDeployRespVO = trainHttpService.modelDeploy(
// new HashMap<>(), serverName.getHost(), aigcModelDeploySaveReq);
// log.info("模型部署请求完成。响应内容: {}", JSON.toJSONString(modelDeployRespVO));
//
// // 更新基础模型信息
// if (!"error".equals(modelDeployRespVO.getMessage())) {
// log.info("模型部署成功。正在更新基础模型信息...");
// BaseModelSaveReqVO baseModelSaveReqVO = new BaseModelSaveReqVO();
// baseModelSaveReqVO.setId(baseModelDO.getId());
// baseModelSaveReqVO.setModelId(modelDeployRespVO.getId());
// baseModelSaveReqVO.setChatUrl(modelDeployRespVO.getPort() + DEFAULT_MODEL_URL_SUFFIX);
// baseModelService.updateBaseModel(baseModelSaveReqVO);
// log.info("基础模型信息更新完成。模型ID: {}", baseModelDO.getId());
// } else {
// log.error("模型部署失败。模型ID: {}", baseModelDO.getId());
// }
// }
} else {
log.warn("未找到模型部署记录。模型ID: {}", modelId);
}
@ -150,7 +152,7 @@ public class BaseModelTaskService {
// @Scheduled(cron ="0 0/1 * * * ?")
public void updateBaseModel () {
public void updateBaseModel() {
Log.info("定时任务启动");
String resStr = trainHttpService.modelsList("");
Log.info("获取aicg模型列表返回数据内容{}", resStr);
@ -252,7 +254,7 @@ public class BaseModelTaskService {
}
// @Scheduled(cron = "0 0/1 * * * ?")
@Scheduled(cron = "0 0/1 * * * ?")
public void refreshTheModelService () {
try {
// 获取所有基础模型列表
@ -273,7 +275,7 @@ public class BaseModelTaskService {
.collect(Collectors.toList());
//如果状态启动中没起来将状态变为停止
List<ModelServiceDO> differentModels = modelServiceDOS.stream()
.filter(baseModel -> !remoteModelNames.contains(baseModel.getBaseModelName()) && (baseModel.getStatus() == 4 || baseModel.getStatus() == 2))
.filter(baseModel -> !remoteModelNames.contains(baseModel.getBaseModelName()) && (baseModel.getStatus() == 2 || baseModel.getStatus() == 1))
.collect(Collectors.toList());
for (ModelServiceDO baseModel : differentModels) {
baseModel.setStatus(3);
@ -286,9 +288,8 @@ public class BaseModelTaskService {
// String string = JSON.toJSONString(jsonObject);
// PedestalModelVO pedestalModelVo = JSON.parseObject(string, PedestalModelVO.class);
List<PedestalModelVO> collect = modelListRes.stream()
.filter(pedestalModelVO -> pedestalModelVO.getDeploymentName()
.equals(name) && "running"
.equals(pedestalModelVO.getStatus()))
.filter(pedestalModelVO -> pedestalModelVO.getDeploymentName().equals(name)
&& "running".equals(pedestalModelVO.getStatus()))
.collect(Collectors.toList());
if (collect.size() > 0) {
PedestalModelVO pedestalModelVo = collect.get(0);
@ -307,34 +308,40 @@ public class BaseModelTaskService {
modelServiceMapper.updateById(localModel);
} else {
String string1 = pedestalModelVo.getHost() + "/v1/chat/completions";
localModel.setStatus(4);
localModel.setStatus(2);
localModel.setModelUrl(string1);
// localModel.setApiUrl(string1);
// localModel.setApiUrl(string1);
localModel.setJobId((long) pedestalModelVo.getId());
modelServiceMapper.updateById(localModel);
log.info("模型 {} 状态为 running无需更新", pedestalModelVo.getDeploymentName());
}
}
// else {
// //新增基座模型
// if ("running".equals(pedestalModelVo.getStatus())){
// BaseModelSaveReqVO baseModelSaveReqVO = new BaseModelSaveReqVO();
// baseModelSaveReqVO.setModelName(pedestalModelVo.getDeploymentName());
// baseModelSaveReqVO.setIsActive(1);
// baseModelSaveReqVO.setAigcModelName(pedestalModelVo.getDeploymentName());
// baseModelSaveReqVO.setChatUrl(pedestalModelVo.getHost() + "/v1/chat/completions");
// baseModelService.createBaseModel(baseModelSaveReqVO);
// }
// }
// else {
// //新增基座模型
// if ("running".equals(pedestalModelVo.getStatus())){
// BaseModelSaveReqVO baseModelSaveReqVO = new BaseModelSaveReqVO();
// baseModelSaveReqVO.setModelName(pedestalModelVo.getDeploymentName());
// baseModelSaveReqVO.setIsActive(1);
// baseModelSaveReqVO.setAigcModelName(pedestalModelVo.getDeploymentName());
// baseModelSaveReqVO.setChatUrl(pedestalModelVo.getHost() + "/v1/chat/completions");
// baseModelService.createBaseModel(baseModelSaveReqVO);
// }
// }
} else {
List<ModelServiceDO> localModels = modelServiceDOS.stream()
.filter(baseModel -> name.equals(baseModel.getBaseModelName()))
List<PedestalModelVO> collect1 = modelListRes.stream()
.filter(pedestalModelVO -> pedestalModelVO.getDeploymentName().equals(name)
&& "stop".equals(pedestalModelVO.getStatus()))
.collect(Collectors.toList());
if (localModels != null && localModels.size() > 0) {
ModelServiceDO localModel = localModels.get(0);
// 如果状态不是 "running"更新本地状态
localModel.setStatus(3);
modelServiceMapper.updateById(localModel);
if (collect1.size() > 0){
List<ModelServiceDO> localModels = modelServiceDOS.stream()
.filter(baseModel -> name.equals(baseModel.getBaseModelName()))
.collect(Collectors.toList());
if (localModels != null && localModels.size() > 0) {
ModelServiceDO localModel = localModels.get(0);
// 如果状态不是 "running"更新本地状态
localModel.setStatus(3);
modelServiceMapper.updateById(localModel);
}
}
}
}