feat(llm): 自动删除未使用的微调模型
- 新增 deleteTheModel 方法,用于删除未使用的微调模型 - 在 refreshTheModelService 方法中增加逻辑,判断模型是否未使用并进行删除 - 优化了模型信息的处理逻辑,提高了代码可读性和维护性
This commit is contained in:
parent
435bbee4dc
commit
0d9ea7c3c3
@ -31,16 +31,25 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.module.SimpleModule;
|
||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import okhttp3.HttpUrl;
|
||||
import okhttp3.MediaType;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.RequestBody;
|
||||
import okhttp3.Response;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
@ -251,14 +260,19 @@ public class BaseModelTaskService {
|
||||
BaseModelDO baseModelDO = new BaseModelDO();
|
||||
baseModelDO.setModelName(remoteModelName);
|
||||
baseModelDO.setAigcModelName(remoteModelName);
|
||||
// 模型类型
|
||||
// 微调状态
|
||||
boolean b = replaceActiveGroups(remoteModelName, active);
|
||||
baseModelDO.setIsFinetuned(b);
|
||||
|
||||
LambdaQueryWrapper<FineTuningTaskDO> eq = new LambdaQueryWrapper<FineTuningTaskDO>().eq(FineTuningTaskDO::getJobModelName, remoteModelName);
|
||||
FineTuningTaskDO fineTuningTaskDO = fineTuningTaskService.selectName(eq);
|
||||
if (fineTuningTaskDO != null) {
|
||||
baseModelDO.setTheTuningName(fineTuningTaskDO.getTaskName());
|
||||
} else if (b){
|
||||
deleteTheModel(remoteModelName);
|
||||
break;
|
||||
}
|
||||
// 模型类型
|
||||
// 微调状态
|
||||
baseModelDO.setIsFinetuned(replaceActiveGroups(remoteModelName, active));
|
||||
baseModelDOList.add(baseModelDO);
|
||||
}
|
||||
baseModelMapper.insert(baseModelDOList);
|
||||
@ -268,8 +282,55 @@ public class BaseModelTaskService {
|
||||
}
|
||||
}
|
||||
|
||||
private void deleteTheModel(String remoteModelName) {
|
||||
try {
|
||||
// 创建 OkHttpClient 实例
|
||||
log.info("创建 OkHttpClient 实例,设置超时时间为 2 分钟");
|
||||
OkHttpClient client = new OkHttpClient.Builder()
|
||||
.connectTimeout(2, TimeUnit.MINUTES)
|
||||
.readTimeout(2, TimeUnit.MINUTES)
|
||||
.writeTimeout(2, TimeUnit.MINUTES)
|
||||
.build();
|
||||
|
||||
// @Scheduled(cron = "0 0/1 * * * ?")
|
||||
// 1. 获取删除微调任务的URL
|
||||
String baseUrl =llmBackendProperties.getDeleteTheModelFull();
|
||||
log.info("获取删除微调任务的URL: {}", baseUrl);
|
||||
HttpUrl url = Objects.requireNonNull(HttpUrl.parse(baseUrl))
|
||||
.newBuilder()
|
||||
.addPathSegment(remoteModelName)
|
||||
.build();
|
||||
// 2. 构建请求体(空请求体)
|
||||
RequestBody requestBody = RequestBody.create("", MediaType.parse("application/json"));
|
||||
|
||||
// 3. 构建请求
|
||||
Request request = new Request.Builder()
|
||||
.url(url)
|
||||
.delete(requestBody)
|
||||
.addHeader("accept", "application/json")
|
||||
.build();
|
||||
|
||||
// 4. 发送请求
|
||||
log.info("开始发送HTTP DELETE请求,删除微调任务,任务模型名称: {}", remoteModelName);
|
||||
try (Response response = client.newCall(request).execute()) {
|
||||
if (response.body()!=null) {
|
||||
String body = response.body().string();
|
||||
log.info("HTTP删除请求完成,响应内容: {}", body);
|
||||
} else {
|
||||
log.error("HTTP请求失败: " + "响应为空");
|
||||
throw new RuntimeException("HTTP请求失败: " + "响应为空");
|
||||
}
|
||||
} catch (IOException e) {
|
||||
log.error("发送HTTP请求删除微调任务时发生异常,任务模型名称: {}",remoteModelName, e);
|
||||
throw new RuntimeException("HTTP请求失败", e);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("删除模型时发生异常: {}", e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// @Scheduled(cron = "0 0/1 * * * ?")
|
||||
@Scheduled(cron = "0/15 * * * * ?")
|
||||
public void refreshTheModelService () {
|
||||
try {
|
||||
|
Loading…
x
Reference in New Issue
Block a user