修复模型部署

This commit is contained in:
limin 2025-02-19 16:44:37 +08:00
parent 96d65952a3
commit c230296d18
3 changed files with 23 additions and 9 deletions

View File

@ -2,9 +2,11 @@ package cn.iocoder.yudao.module.llm.service.async;
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.finetuningtask.FineTuningTaskMapper;
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.service.http.TrainHttpService;
import cn.iocoder.yudao.module.llm.service.http.vo.*;
import org.slf4j.Logger;
@ -31,6 +33,8 @@ public class AsyncModelServiceService {
private TrainHttpService trainHttpService;
@Resource
private BaseModelMapper baseModelMapper;
@Resource
private ServerNameMapper serverNameMapper;
@Async
public void createModelService(ModelServiceDO updateObj) {
@ -64,7 +68,7 @@ public class AsyncModelServiceService {
aIgcModelDeploySaveReq.setModelName(System.currentTimeMillis()+generateRandomString(5));
aIgcModelDeploySaveReq.setMaxTokens(4096);
aIgcModelDeploySaveReq.setParameters(5);
AigcModelCreateRespVO aigcModelCreateRespVO = trainHttpService.modelCreate(new HashMap<>(), aIgcModelDeploySaveReq);
AigcModelCreateRespVO aigcModelCreateRespVO = trainHttpService.modelCreate(new HashMap<>(),aIgcModelDeploySaveReq);
log.info("model create info {}",aigcModelCreateRespVO);
updateObj.setJobId(fineTuningTaskDO.getJobModelListId());
updateObj.setBaseModelName(fineTuningTaskDO.getJobModelName());
@ -78,12 +82,14 @@ public class AsyncModelServiceService {
public void startModelService(ModelServiceDO updateObj) {
try {
ModelServiceDO modelServiceDO = modelServiceMapper.selectById(updateObj.getId());
ServerNameDO serverNameDO = serverNameMapper.selectById(modelServiceDO.getGpuType());
if (modelServiceDO.getJobId() != null){
AigcModelDeployVO modelDeployVO = trainHttpService.modelUndeploy(new HashMap<>(), modelServiceDO.getJobId());
AigcModelDeployVO modelDeployVO = trainHttpService.modelUndeploy(new HashMap<>(),serverNameDO.getHost(), modelServiceDO.getJobId());
}
AigcModelDeploySaveReq aigcModelDeploySaveReq = new AigcModelDeploySaveReq(modelServiceDO.getBaseModelName(),
"gpu");
ModelDeployRespVO modelDeployRespVO = trainHttpService.modelDeploy(new HashMap<>(), aigcModelDeploySaveReq);
ModelDeployRespVO modelDeployRespVO = trainHttpService.modelDeploy(new HashMap<>(),serverNameDO.getHost(), aigcModelDeploySaveReq);
log.info("modelDeploy info {}",modelDeployRespVO);
if (modelDeployRespVO.getMessage().equals("error")){
updateObj.setStatus(3);
}else {
@ -104,8 +110,9 @@ public class AsyncModelServiceService {
public void stopModelService(ModelServiceDO updateObj) {
try {
ModelServiceDO modelServiceDO = modelServiceMapper.selectById(updateObj.getId());
ServerNameDO serverNameDO = serverNameMapper.selectById(modelServiceDO.getGpuType());
// Thread.sleep(30000);
AigcModelDeployVO modelDeployRespVO = trainHttpService.modelUndeploy(new HashMap<>(), modelServiceDO.getJobId());
AigcModelDeployVO modelDeployRespVO = trainHttpService.modelUndeploy(new HashMap<>(), serverNameDO.getHost(),modelServiceDO.getJobId());
if (modelDeployRespVO.getStatus().equals("stop")){
updateObj.setStatus(0);
}

View File

@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.llm.service.basemodel;
import cn.iocoder.yudao.module.llm.controller.admin.basemodel.vo.BaseModelSaveReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.basemodel.BaseModelDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.servername.ServerNameDO;
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.basemodel.vo.ModelListRes;
@ -35,6 +37,9 @@ public class BaseModelTaskService {
@Resource
BaseModelService baseModelService;
@Resource
ServerNameMapper serverNameMapper;
private static final String DEFAULT_MODEL_URL_SUFFIX = "/v1/chat/completions";
// 减少维护 先注释掉
// @Scheduled(cron ="0 0/1 * * * ?")
@ -51,6 +56,8 @@ public class BaseModelTaskService {
SimpleModule module = new SimpleModule();
module.addDeserializer(LocalDateTime.class, new AigcCustomDateTimeDeserializer());
mapper.registerModule(module);
// 获取gpuhost主机
ServerNameDO serverNameDO = serverNameMapper.selectById(baseModelDO.getGpuId());
List<AigcModelDeployVO> aigcModelDeployVOS = mapper.readValue(res,new TypeReference<List<AigcModelDeployVO>>() {});
if (!aigcModelDeployVOS.isEmpty()) {
AigcModelDeployVO latestRecord = aigcModelDeployVOS.get(0);
@ -59,7 +66,7 @@ public class BaseModelTaskService {
AigcModelDeploySaveReq aigcModelDeploySaveReq = new AigcModelDeploySaveReq(baseModelDO.getAigcModelName(),
"gpu");
ModelDeployRespVO modelDeployRespVO = trainHttpService.modelDeploy(new HashMap<>(), aigcModelDeploySaveReq);
ModelDeployRespVO modelDeployRespVO = trainHttpService.modelDeploy(new HashMap<>(),serverNameDO.getHost(), aigcModelDeploySaveReq);
if (!modelDeployRespVO.getMessage().equals("error")) {
BaseModelSaveReqVO baseModelSaveReqVO = new BaseModelSaveReqVO();
baseModelSaveReqVO.setId(baseModelDO.getId());

View File

@ -240,11 +240,11 @@ public class TrainHttpService {
return res;
}
public ModelDeployRespVO modelDeploy(Map<String, String> headers,AigcModelDeploySaveReq req){
public ModelDeployRespVO modelDeploy(Map<String, String> headers,String url,AigcModelDeploySaveReq req){
login(headers);
String modelDeploy = llmBackendProperties.getModelDeploy();
log.info(" modelDeploy request:{}", JSON.toJSONString(req));
String res = HttpUtils.post(modelDeploy, headers, JSON.toJSONString(req));
String res = HttpUtils.post(url+modelDeploy, headers, JSON.toJSONString(req));
log.info(" modelDeploy:{}", res);
JSONObject parseObject = JSON.parseObject(res);
ModelDeployRespVO modelDeployRespVO=new ModelDeployRespVO();
@ -258,10 +258,10 @@ public class TrainHttpService {
return modelDeployRespVO;
}
public AigcModelDeployVO modelUndeploy(Map<String, String> headers, Long deployId) {
public AigcModelDeployVO modelUndeploy(Map<String, String> headers,String url, Long deployId) {
login(headers);
String modelDeploy = llmBackendProperties.getModelUndeploy();
String res = HttpUtils.post(modelDeploy + deployId, headers,"");
String res = HttpUtils.post(url+modelDeploy + deployId, headers,"");
log.info(" modelDeploy:{}", res);
AigcModelDeployVO modelDeployRespVO = JSON.parseObject(res, AigcModelDeployVO.class);
log.info(" modelDeploy:{}", modelDeployRespVO);