모델관리 학습 조회 수정
This commit is contained in:
@@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.time.LocalDate;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -307,182 +308,148 @@ public class ModelMngDto {
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class HyperParamCreateReq {
|
||||
// baseHyperVer는 필수 아님 (신규 생성 시 H1으로 자동 설정)
|
||||
@Schema(description = "기준이 되는 하이퍼파라미터 버전", example = "H3")
|
||||
private String baseHyperVer;
|
||||
public class HyperParamCreateReq {
|
||||
|
||||
@NotBlank(message = "신규 버전명은 필수입니다")
|
||||
@Schema(description = "새로 생성할 하이퍼파라미터 버전명", example = "V3.99.251221.120518")
|
||||
@Schema(description = "새로운 하이파라미터 버전", example = "")
|
||||
private String newHyperVer;
|
||||
|
||||
// Important - 필수 필드
|
||||
@NotBlank(message = "Backbone은 필수입니다")
|
||||
@Schema(example = "large")
|
||||
private String backbone;
|
||||
@Schema(description = "불러온 하이파라미터 버전", example = "")
|
||||
private String baseHyperVer;
|
||||
|
||||
@NotBlank(message = "Input Size는 필수입니다")
|
||||
@Schema(example = "256,256")
|
||||
private String inputSize;
|
||||
@Schema(description = "하이퍼파라미터 PK", example = "1")
|
||||
private Long hyperParamId; // hyper_param_id
|
||||
|
||||
@NotBlank(message = "Crop Size는 필수입니다")
|
||||
@Schema(example = "256,256")
|
||||
private String cropSize;
|
||||
@Schema(description = "하이퍼파라미터 UUID", example = "3fa85f64-5717-4562-b3fc-2c963f66afa6")
|
||||
private UUID uuid; // uuid (또는 hyper_param_uuid 컬럼이면 이름 맞춰 주세요)
|
||||
|
||||
@NotNull(message = "Epoch Count는 필수입니다")
|
||||
@Schema(example = "200")
|
||||
private Integer epochCnt;
|
||||
@Schema(description = "하이퍼파라미터 버전", example = "V3.99.251221.120518")
|
||||
private String hyperVer; // hyper_ver
|
||||
|
||||
@NotNull(message = "Batch Size는 필수입니다")
|
||||
@Schema(example = "16")
|
||||
private Integer batchSize;
|
||||
@Schema(description = "백본 네트워크", example = "large")
|
||||
private String backbone; // backbone
|
||||
|
||||
// Architecture - 필수 필드
|
||||
@NotNull(message = "Drop Path Rate는 필수입니다")
|
||||
@Schema(example = "0.3")
|
||||
private Double dropPathRate;
|
||||
@Schema(description = "입력 이미지 크기(H,W)", example = "256,256")
|
||||
private String inputSize; // input_size
|
||||
|
||||
@NotNull(message = "Frozen Stages는 필수입니다")
|
||||
@Schema(example = "-1")
|
||||
private Integer frozenStages;
|
||||
@Schema(description = "크롭 크기(H,W 또는 단일값)", example = "256,256")
|
||||
private String cropSize; // crop_size
|
||||
|
||||
@NotBlank(message = "Neck Policy는 필수입니다")
|
||||
@Schema(example = "abs_diff")
|
||||
private String neckPolicy;
|
||||
@Schema(description = "총 학습 에폭 수", example = "200")
|
||||
private Integer epochCnt; // epoch_cnt
|
||||
|
||||
@NotBlank(message = "Decoder Channels는 필수입니다")
|
||||
@Schema(example = "512,256,128,64")
|
||||
private String decoderChannels;
|
||||
@Schema(description = "배치 크기(Per GPU)", example = "16")
|
||||
private Integer batchSize; // batch_size
|
||||
|
||||
@NotBlank(message = "Class Weight는 필수입니다")
|
||||
@Schema(example = "1,1")
|
||||
private String classWeight;
|
||||
@Schema(description = "Drop Path 비율", example = "0.3")
|
||||
private Double dropPathRate; // drop_path_rate
|
||||
|
||||
// numLayers는 필수 아님
|
||||
@Schema(example = "24")
|
||||
private Integer numLayers;
|
||||
@Schema(description = "Freeze 단계(-1:None)", example = "-1")
|
||||
private Integer frozenStages; // frozen_stages
|
||||
|
||||
// Optimization - 필수 필드
|
||||
@NotNull(message = "Learning Rate는 필수입니다")
|
||||
@Schema(example = "0.00006")
|
||||
private Double learningRate;
|
||||
@Schema(description = "Neck 결합 정책", example = "abs_diff")
|
||||
private String neckPolicy; // neck_policy
|
||||
|
||||
@NotNull(message = "Weight Decay는 필수입니다")
|
||||
@Schema(example = "0.05")
|
||||
private Double weightDecay;
|
||||
@Schema(description = "디코더 채널 구성", example = "512,256,128,64")
|
||||
private String decoderChannels; // decoder_channels
|
||||
|
||||
@NotNull(message = "Layer Decay Rate는 필수입니다")
|
||||
@Schema(example = "0.9")
|
||||
private Double layerDecayRate;
|
||||
@Schema(description = "클래스별 가중치", example = "1,10")
|
||||
private String classWeight; // class_weight
|
||||
|
||||
@NotNull(message = "DDP Find Unused Params는 필수입니다")
|
||||
@Schema(example = "true")
|
||||
private Boolean ddpFindUnusedParams;
|
||||
@Schema(description = "레이어 깊이", example = "24")
|
||||
private Integer numLayers; // num_layers
|
||||
|
||||
@NotNull(message = "Ignore Index는 필수입니다")
|
||||
@Schema(example = "255")
|
||||
private Integer ignoreIndex;
|
||||
@Schema(description = "학습률", example = "0.00006")
|
||||
private Double learningRate; // learning_rate
|
||||
|
||||
// Data - 필수 필드
|
||||
@NotNull(message = "Train Num Workers는 필수입니다")
|
||||
@Schema(example = "16")
|
||||
private Integer trainNumWorkers;
|
||||
@Schema(description = "Weight Decay", example = "0.05")
|
||||
private Double weightDecay; // weight_decay
|
||||
|
||||
@NotNull(message = "Val Num Workers는 필수입니다")
|
||||
@Schema(example = "8")
|
||||
private Integer valNumWorkers;
|
||||
@Schema(description = "Layer Decay Rate", example = "0.9")
|
||||
private Double layerDecayRate; // layer_decay_rate
|
||||
|
||||
@NotNull(message = "Test Num Workers는 필수입니다")
|
||||
@Schema(example = "8")
|
||||
private Integer testNumWorkers;
|
||||
@Schema(description = "DDP unused params 탐색 여부", example = "true")
|
||||
private Boolean ddpFindUnusedParams; // ddp_find_unused_params
|
||||
|
||||
@NotNull(message = "Train Shuffle는 필수입니다")
|
||||
@Schema(example = "true")
|
||||
private Boolean trainShuffle;
|
||||
@Schema(description = "Loss 계산 제외 인덱스", example = "255")
|
||||
private Integer ignoreIndex; // ignore_index
|
||||
|
||||
@NotNull(message = "Train Persistent는 필수입니다")
|
||||
@Schema(example = "true")
|
||||
private Boolean trainPersistent;
|
||||
@Schema(description = "Train dataloader workers", example = "16")
|
||||
private Integer trainNumWorkers; // train_num_workers
|
||||
|
||||
@NotNull(message = "Val Persistent는 필수입니다")
|
||||
@Schema(example = "true")
|
||||
private Boolean valPersistent;
|
||||
@Schema(description = "Val dataloader workers", example = "8")
|
||||
private Integer valNumWorkers; // val_num_workers
|
||||
|
||||
// Evaluation - 필수 필드
|
||||
@NotBlank(message = "Metrics는 필수입니다")
|
||||
@Schema(example = "mFscore,mIoU")
|
||||
private String metrics;
|
||||
@Schema(description = "Test dataloader workers", example = "8")
|
||||
private Integer testNumWorkers; // test_num_workers
|
||||
|
||||
@NotBlank(message = "Save Best는 필수입니다")
|
||||
@Schema(example = "changed_fscore")
|
||||
private String saveBest;
|
||||
@Schema(description = "Train shuffle 여부", example = "true")
|
||||
private Boolean trainShuffle; // train_shuffle
|
||||
|
||||
@NotBlank(message = "Save Best Rule은 필수입니다")
|
||||
@Schema(example = "greater")
|
||||
private String saveBestRule;
|
||||
@Schema(description = "Train persistent workers 여부", example = "true")
|
||||
private Boolean trainPersistent; // train_persistent
|
||||
|
||||
@NotNull(message = "Val Interval은 필수입니다")
|
||||
@Schema(example = "10")
|
||||
private Integer valInterval;
|
||||
@Schema(description = "Val persistent workers 여부", example = "true")
|
||||
private Boolean valPersistent; // val_persistent
|
||||
|
||||
@NotNull(message = "Log Interval은 필수입니다")
|
||||
@Schema(example = "400")
|
||||
private Integer logInterval;
|
||||
@Schema(description = "평가 지표 목록", example = "mFscore,mIoU")
|
||||
private String metrics; // metrics
|
||||
|
||||
@NotNull(message = "Vis Interval은 필수입니다")
|
||||
@Schema(example = "1")
|
||||
private Integer visInterval;
|
||||
@Schema(description = "Best 모델 선정 기준 지표", example = "changed_fscore")
|
||||
private String saveBest; // save_best
|
||||
|
||||
// Hardware - 필수 아님 (예외 항목)
|
||||
@Schema(example = "4")
|
||||
private Integer gpuCnt;
|
||||
@Schema(description = "Best 모델 선정 규칙", example = "greater")
|
||||
private String saveBestRule; // save_best_rule
|
||||
|
||||
@Schema(example = "0,1,2,3")
|
||||
private String gpuIds;
|
||||
@Schema(description = "검증 수행 주기(Epoch)", example = "10")
|
||||
private Integer valInterval; // val_interval
|
||||
|
||||
@Schema(example = "1122")
|
||||
private Integer masterPort;
|
||||
@Schema(description = "로그 기록 주기(Iteration)", example = "400")
|
||||
private Integer logInterval; // log_interval
|
||||
|
||||
// Augmentation - 필수 필드
|
||||
@NotNull(message = "Rotation Probability는 필수입니다")
|
||||
@Schema(example = "0.5")
|
||||
private Double rotProb;
|
||||
@Schema(description = "시각화 저장 주기(Epoch)", example = "1")
|
||||
private Integer visInterval; // vis_interval
|
||||
|
||||
@NotNull(message = "Flip Probability는 필수입니다")
|
||||
@Schema(example = "0.5")
|
||||
private Double flipProb;
|
||||
@Schema(description = "회전 적용 확률", example = "0.5")
|
||||
private Double rotProb; // rot_prob
|
||||
|
||||
@NotBlank(message = "Rotation Degree는 필수입니다")
|
||||
@Schema(example = "-20,20")
|
||||
private String rotDegree;
|
||||
@Schema(description = "반전 적용 확률", example = "0.5")
|
||||
private Double flipProb; // flip_prob
|
||||
|
||||
@NotNull(message = "Exchange Probability는 필수입니다")
|
||||
@Schema(example = "0.5")
|
||||
private Double exchangeProb;
|
||||
@Schema(description = "회전 각도 범위(Min,Max)", example = "-20,20")
|
||||
private String rotDegree; // rot_degree
|
||||
|
||||
@NotNull(message = "Brightness Delta는 필수입니다")
|
||||
@Schema(example = "10")
|
||||
private Integer brightnessDelta;
|
||||
@Schema(description = "채널 교환 확률", example = "0.5")
|
||||
private Double exchangeProb; // exchange_prob
|
||||
|
||||
@NotBlank(message = "Contrast Range는 필수입니다")
|
||||
@Schema(example = "0.8,1.2")
|
||||
private String contrastRange;
|
||||
@Schema(description = "밝기 변화량", example = "10")
|
||||
private Integer brightnessDelta; // brightness_delta
|
||||
|
||||
@NotBlank(message = "Saturation Range는 필수입니다")
|
||||
@Schema(example = "0.8,1.2")
|
||||
private String saturationRange;
|
||||
@Schema(description = "대비 범위(Min,Max)", example = "0.8,1.2")
|
||||
private String contrastRange; // contrast_range
|
||||
|
||||
@NotNull(message = "Hue Delta는 필수입니다")
|
||||
@Schema(example = "10")
|
||||
private Integer hueDelta;
|
||||
@Schema(description = "채도 범위(Min,Max)", example = "0.8,1.2")
|
||||
private String saturationRange; // saturation_range
|
||||
|
||||
// Legacy - 필수 아님 (예외 항목)
|
||||
private Double dropoutRatio;
|
||||
private Integer cnnFilterCnt;
|
||||
@Schema(description = "색조 변화량", example = "10")
|
||||
private Integer hueDelta; // hue_delta
|
||||
|
||||
// Common - 필수 아님 (예외 항목)
|
||||
@Schema(example = "안녕하세요 캠코담당자 입니다. 하이퍼파라미터 신규등록합니다")
|
||||
private String memo;
|
||||
@Schema(description = "사용 GPU 개수", example = "4")
|
||||
private Integer gpuCnt; // gpu_cnt
|
||||
|
||||
@Schema(description = "사용 GPU ID 목록", example = "0,1,2,3")
|
||||
private String gpuIds; // gpu_ids
|
||||
|
||||
@Schema(description = "분산학습 마스터 포트", example = "1122")
|
||||
private Integer masterPort; // master_port
|
||||
|
||||
@Schema(description = "메모", example = "하이퍼파라미터 신규등록")
|
||||
private String memo; // memo
|
||||
|
||||
@Schema(description = "삭제 여부(Y/N)", example = "N")
|
||||
private String delYn; // del_yn
|
||||
|
||||
@Schema(description = "생성 일시")
|
||||
private LocalDate createdDttm; // created_dttm
|
||||
}
|
||||
|
||||
@Schema(name = "TrainStartReq", description = "학습 시작 요청")
|
||||
|
||||
Reference in New Issue
Block a user