refactor(llm): 重构异步微调任务服务

- 提取 getServerNameDO 方法,优化服务器信息查询逻辑
- 修改 stopFinetuning 方法,增加服务器信息校验
- 更新 FineTuningTaskHttpService 接口,明确停止微调任务的主机
This commit is contained in:
Liuyang 2025-02-25 17:35:33 +08:00
parent 3d70b004ab
commit 7e56753435
2 changed files with 34 additions and 13 deletions

View File

@ -18,6 +18,7 @@ import cn.iocoder.yudao.module.llm.service.http.TrainHttpService;
import cn.iocoder.yudao.module.llm.service.http.vo.AigcFineTuningCreateReqVO;
import cn.iocoder.yudao.module.llm.service.http.vo.AigcFineTuningCreateRespVO;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Async;
@ -65,18 +66,10 @@ public class AsyncFineTuningTaskService {
try {
log.info("开始创建微调任务任务ID: {}", fineTuningTask.getId());
// 查询 GPU 类型对应的服务器信息
log.debug("正在查询 GPU 类型对应的服务器信息GPU 类型: {}", fineTuningTask.getGpuType());
ServerNameDO serverNameDO = serverNameMapper.selectById(fineTuningTask.getGpuType());
ServerNameDO serverNameDO = getServerNameDO(fineTuningTask);
if (serverNameDO == null) {
log.error("未找到 GPU 类型对应的服务器信息任务将被取消。GPU 类型: {}", fineTuningTask.getGpuType());
FineTuningTaskDO updateObj = new FineTuningTaskDO();
updateObj.setId(fineTuningTask.getId());
updateObj.setStatus(FinetuningTaskStatusEnum.CANCELLED.getStatus());
fineTuningTaskMapper.updateById(updateObj);
return;
}
log.debug("服务器信息查询成功。服务器主机: {}", serverNameDO.getHost());
// 构建微调任务请求对象
log.debug("正在构建微调任务请求对象...");
@ -150,6 +143,29 @@ public class AsyncFineTuningTaskService {
}
}
/**
* 获取微调任务服务器信息
*
* @param fineTuningTask 微调任务
* @return 微调任务服务器信息
*/
@Nullable
private ServerNameDO getServerNameDO (FineTuningTaskDO fineTuningTask) {
// 查询 GPU 类型对应的服务器信息
log.debug("正在查询 GPU 类型对应的服务器信息GPU 类型: {}", fineTuningTask.getGpuType());
ServerNameDO serverNameDO = serverNameMapper.selectById(fineTuningTask.getGpuType());
if (serverNameDO == null) {
log.error("未找到 GPU 类型对应的服务器信息任务将被取消。GPU 类型: {}", fineTuningTask.getGpuType());
FineTuningTaskDO updateObj = new FineTuningTaskDO();
updateObj.setId(fineTuningTask.getId());
updateObj.setStatus(FinetuningTaskStatusEnum.CANCELLED.getStatus());
fineTuningTaskMapper.updateById(updateObj);
return null;
}
log.debug("服务器信息查询成功。服务器主机: {}", serverNameDO.getHost());
return serverNameDO;
}
private static AigcFineTuningCreateReqVO getAigcFineTuningCreateReqVO (FineTuningTaskDO fineTuningTask) {
AigcFineTuningCreateReqVO req = new AigcFineTuningCreateReqVO();
req.setModel(fineTuningTask.getBaseModel());
@ -203,8 +219,14 @@ public class AsyncFineTuningTaskService {
public void stopFinetuning (FineTuningTaskDO fineTuningTaskDO) {
log.info(" ===== 停止微调任务 ===== stopFinetuning");
try {
ServerNameDO serverNameDO = getServerNameDO(fineTuningTaskDO);
if (serverNameDO == null) {
return;
}
log.info("开始调用HTTP服务停止微调任务任务模型名称: {}", fineTuningTaskDO.getJobModelName());
fineTuningTaskHttpService.stopFinetuning(fineTuningTaskDO);
fineTuningTaskHttpService.stopFinetuning(serverNameDO.getHost(), fineTuningTaskDO);
log.info("HTTP服务调用成功任务模型名称: {}", fineTuningTaskDO.getJobModelName());
} catch (Exception e) {
log.error("调用HTTP服务停止微调任务时发生异常任务模型名称: {}", fineTuningTaskDO.getJobModelName(), e);

View File

@ -13,7 +13,6 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
/**
@ -31,11 +30,11 @@ public class FineTuningTaskHttpService {
*
* @param fineTuningTaskDO 微调任务数据对象包含任务的相关信息
*/
public void stopFinetuning(FineTuningTaskDO fineTuningTaskDO) {
public void stopFinetuning (String host, FineTuningTaskDO fineTuningTaskDO) {
log.info(" ===== 停止微调任务 ===== stopFinetuning");
// 1. 获取停止微调任务的URL
String url = llmBackendProperties.getStopFinetuning();
String url = host + llmBackendProperties.getStopFinetuning();
log.info("获取停止微调任务的URL: {}", url);
// 2. 发送HTTP POST请求停止微调任务