Merge branch 'be/develop' into 'be/refactor/image'
# Conflicts: # backend/src/main/java/com/worlabel/domain/image/controller/ImageController.java # backend/src/main/java/com/worlabel/domain/image/service/ImageService.java
This commit is contained in:
commit
e290e0cf8a
@ -2,10 +2,9 @@ package com.worlabel.domain.model.controller;
|
||||
|
||||
import com.worlabel.domain.model.entity.dto.AiModelRequest;
|
||||
import com.worlabel.domain.model.entity.dto.AiModelResponse;
|
||||
import com.worlabel.domain.model.entity.dto.MemoryResponse;
|
||||
import com.worlabel.domain.model.entity.dto.ModelTrainRequest;
|
||||
import com.worlabel.domain.model.service.AiModelService;
|
||||
import com.worlabel.domain.progress.service.ProgressService;
|
||||
import com.worlabel.domain.project.entity.dto.ProjectRequest;
|
||||
import com.worlabel.global.annotation.CurrentUser;
|
||||
import com.worlabel.global.config.swagger.SwaggerApiError;
|
||||
import com.worlabel.global.config.swagger.SwaggerApiSuccess;
|
||||
@ -82,4 +81,12 @@ public class AiModelController {
|
||||
log.debug("다운로드 요청 projectId : {} modelId : {}", projectId, modelId);
|
||||
return aiModelService.modelDownload(projectId, modelId);
|
||||
}
|
||||
|
||||
@Operation(summary = "GPU 서버 메모리 상태", description = "GPU 서버의 메모리 상태를 반환")
|
||||
@SwaggerApiSuccess(description = "프로젝트 모델이 성공적으로 다운로드됩니다.")
|
||||
@SwaggerApiError({ErrorCode.EMPTY_REQUEST_PARAMETER, ErrorCode.SERVER_ERROR})
|
||||
@GetMapping("/gpu/memory")
|
||||
public MemoryResponse getMemory() {
|
||||
return aiModelService.getMemory();
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,27 @@
|
||||
package com.worlabel.domain.model.entity.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class MemoryResponse {
|
||||
|
||||
@JsonProperty("current_device")
|
||||
@Schema(description = "사용중인 디바이스 ID", example = "1")
|
||||
private int deviceId;
|
||||
|
||||
@Schema(description = "전체 GPU 메모리(GB)", example = "1")
|
||||
private double total;
|
||||
|
||||
@Schema(description = "현재 사용중인 GPU 메모리(GB)", example = "1")
|
||||
private double allocated;
|
||||
|
||||
@Schema(description = "예약된 GPU 메모리(GB)", example = "1")
|
||||
private double reserved;
|
||||
|
||||
@Schema(description = "사용 가능한 GPU 메모리(GB)", example = "1")
|
||||
private double free;
|
||||
}
|
@ -191,4 +191,9 @@ public class AiModelService {
|
||||
}
|
||||
}
|
||||
|
||||
public MemoryResponse getMemory() {
|
||||
String memoryResponse = aiRequestService.getRequest("/detection/memory", data -> data);
|
||||
log.debug("memoryData {}", memoryResponse);
|
||||
return gson.fromJson(memoryResponse, MemoryResponse.class);
|
||||
}
|
||||
}
|
||||
|
@ -144,7 +144,7 @@ public class ProjectService {
|
||||
participantRepository.save(participant);
|
||||
}
|
||||
|
||||
@CheckPrivilege(PrivilegeType.ADMIN)
|
||||
@CheckPrivilege(PrivilegeType.MANAGER)
|
||||
public void changeProjectMember(final Integer projectId, final ParticipantRequest participantRequest) {
|
||||
checkNotAdminParticipant(participantRequest.getMemberId(), projectId);
|
||||
|
||||
@ -191,10 +191,12 @@ public class ProjectService {
|
||||
AiModel aiModel = getAiModel(request);
|
||||
AutoLabelingRequest autoLabelingRequest = AutoLabelingRequest.of(projectId, aiModel.getModelKey(), labelMap, imageRequestList);
|
||||
|
||||
log.debug("요청 {}", autoLabelingRequest);
|
||||
log.debug("요청 이미지 개수 :{}", imageRequestList.size());
|
||||
|
||||
List<AutoLabelingResult> list = aiService.postRequest(endPoint, autoLabelingRequest, List.class, this::converter);
|
||||
|
||||
saveAutoLabelList(list);
|
||||
log.debug("응답 이미지 개수 :{}", list.size());
|
||||
|
||||
alarmService.save(memberId, Alarm.AlarmType.PREDICT);
|
||||
} finally {
|
||||
@ -207,7 +209,7 @@ public class ProjectService {
|
||||
public void saveAutoLabelList(final List<AutoLabelingResult> resultList) {
|
||||
for (AutoLabelingResult result : resultList) {
|
||||
Image image = getImage(result.getImageId());
|
||||
if (image.getStatus() == LabelStatus.SAVE || image.getStatus() == LabelStatus.IN_PROGRESS) continue;
|
||||
if (image.getStatus() == LabelStatus.SAVE || image.getStatus() == LabelStatus.REVIEW_REQUEST || image.getStatus() == LabelStatus.REVIEW_REJECT) continue;
|
||||
String dataPath = image.getDataPath();
|
||||
s3UploadService.uploadJson(result.getData(), dataPath);
|
||||
image.updateStatus(LabelStatus.IN_PROGRESS);
|
||||
|
@ -0,0 +1,20 @@
|
||||
package com.worlabel.global.config;
|
||||
|
||||
import org.springframework.boot.web.client.RestTemplateBuilder;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
@Configuration
|
||||
public class RestTemplateConfig {
|
||||
|
||||
@Bean
|
||||
public RestTemplate restTemplate(RestTemplateBuilder builder) {
|
||||
return builder
|
||||
.setConnectTimeout(Duration.ZERO)
|
||||
.setReadTimeout(Duration.ZERO)
|
||||
.build();
|
||||
}
|
||||
}
|
@ -2,9 +2,8 @@ package com.worlabel.global.config;
|
||||
|
||||
import com.worlabel.global.resolver.CurrentUserArgumentResolver;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
@ -20,9 +19,4 @@ public class WebConfig implements WebMvcConfigurer {
|
||||
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
|
||||
resolvers.add(currentUserArgumentResolver);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public RestTemplate restTemplate() {
|
||||
return new RestTemplate();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user