This commit is contained in:
dean
2026-04-01 08:55:17 +09:00
parent 50ad05b53b
commit 6cc9b54ba9
15 changed files with 280 additions and 325 deletions

View File

@@ -57,7 +57,7 @@ public class StartupLogger {
"""
╔════════════════════════════════════════════════════════════════════════════════╗
║ 🚀 APPLICATION STARTUP INFORMATION 2
║ 🚀 APPLICATION STARTUP INFORMATION 3
╠════════════════════════════════════════════════════════════════════════════════╣
║ PROFILE CONFIGURATION ║
╠────────────────────────────────────────────────────────────────────────────────╣

View File

@@ -48,7 +48,7 @@ public class ModelTrainDetailApiController {
private final ModelTrainDetailService modelTrainDetailService;
private final RangeDownloadResponder rangeDownloadResponder;
@Value("${train.docker.responseDir}")
@Value("${train.docker.response_dir}")
private String responseDir;
@Operation(summary = "모델학습관리> 모델관리 > 상세정보탭 > 학습 진행정보", description = "학습 진행정보, 모델학습 정보 API")

View File

@@ -53,7 +53,7 @@ public class ModelTrainDetailService {
private final ModelTrainDetailCoreService modelTrainDetailCoreService;
private final ModelTrainMngCoreService mngCoreService;
@Value("${train.docker.responseDir}")
@Value("${train.docker.response_dir}")
private String responseDir;
/**

View File

@@ -46,11 +46,14 @@ public class ModelTrainMngService {
private final TrainJobService trainJobService;
private final ModelTrainDetailService modelTrainDetailService;
@Value("${train.docker.basePath}")
@Value("${train.docker.base_path}")
private String basePath;
@Value("${train.docker.responseDir}")
@Value("${train.docker.response_dir}")
private String responseDir;
@Value("${train.docker.symbolic_link_dir}")
private String symbolicDir;
/**
* 모델학습 조회
@@ -80,7 +83,7 @@ public class ModelTrainMngService {
}
// ===== 2. 경로 생성 =====
Path tmpBase = Path.of(basePath, "tmp").toAbsolutePath().normalize();
Path tmpBase = Path.of(symbolicDir).toAbsolutePath().normalize();
Path tmp = tmpBase.resolve(model.getRequestPath()).normalize();
Path responseBase = Paths.get(responseDir).toAbsolutePath().normalize();

View File

@@ -23,11 +23,11 @@ import org.springframework.stereotype.Service;
public class DataSetCountersService {
private final ModelTrainMngCoreService modelTrainMngCoreService;
@Value("${train.docker.requestDir}")
@Value("${train.docker.request_dir}")
private String requestDir;
@Value("${train.docker.basePath}")
private String trainBaseDir;
@Value("${train.docker.symbolic_link_dir}")
private String symbolicDir;
public String getCount(Long modelId) {
ModelTrainMngDto.Basic basic = modelTrainMngCoreService.findModelById(modelId);
@@ -45,7 +45,7 @@ public class DataSetCountersService {
}
// tmp
Path tmpPath = Path.of(trainBaseDir, "tmp", basic.getRequestPath());
Path tmpPath = Path.of(symbolicDir, basic.getRequestPath());
// 차이나는거
diffMergedRequestsVsTmp(uids, tmpPath);

View File

@@ -31,27 +31,26 @@ public class DockerTrainService {
private String image;
// 학습 요청 데이터가 위치한 호스트 디렉토리
@Value("${train.docker.requestDir}")
@Value("${train.docker.request_dir}")
private String requestDir;
// 학습 결과가 저장될 호스트 디렉토리
@Value("${train.docker.responseDir}")
@Value("${train.docker.response_dir}")
private String responseDir;
// 컨테이너 이름 prefix
@Value("${train.docker.containerPrefix}")
private String containerPrefix;
// 공유메모리 사이즈 설정 (대용량 학습시 필요)
@Value("${train.docker.shmSize:16g}")
@Value("${train.docker.shm_size:16g}")
private String shmSize;
// data 경로 request,response 상위 폴더
@Value("${train.docker.basePath}")
@Value("${train.docker.base_path}")
private String basePath;
@Value("${train.docker.symbolic_link_dir}")
private String symbolicDir;
// IPC host 사용 여부
@Value("${train.docker.ipcHost:true}")
@Value("${train.docker.ipc_host:true}")
private boolean ipcHost;
@Value("${spring.profiles.active}")
@@ -260,12 +259,12 @@ public class DockerTrainService {
c.add("NCCL_SOCKET_IFNAME=eth0");
// 요청/결과 디렉토리 볼륨 마운트
// c.add("-v");
// c.add(basePath + ":" + basePath); // 심볼릭 링크와 연결되는 실제 파일 경로도 마운트를 해줘야 함
c.add("-v");
c.add(basePath + "/tmp:/data");
c.add(basePath + ":" + basePath); // 심볼릭 링크와 연결되는 실제 파일 경로도 마운트를 해줘야 함
c.add("-v");
c.add(responseDir + ":/checkpoints");
c.add(symbolicDir + ":/data"); //요청할경로
c.add("-v");
c.add(responseDir + ":/checkpoints"); //저장될경로
// 표준입력 유지 (-it 대신 -i만 사용)
c.add("-i");

View File

@@ -50,7 +50,7 @@ public class JobRecoveryOnStartupService {
*
* <p>컨테이너가 --rm 으로 삭제된 경우에도 이 경로에 val.csv / *.pth 등이 남아있으면 정상 종료 여부를 "파일 기반"으로 판정합니다.
*/
@Value("${train.docker.responseDir}")
@Value("${train.docker.response_dir}")
private String responseDir;
/**

View File

@@ -42,7 +42,7 @@ public class ModelTestMetricsJobService {
private String profile;
// 학습 결과가 저장될 호스트 디렉토리
@Value("${train.docker.responseDir}")
@Value("${train.docker.response_dir}")
private String responseDir;
@Value("${file.pt-path}")

View File

@@ -33,7 +33,7 @@ public class ModelTrainMetricsJobService {
private String profile;
// 학습 결과가 저장될 호스트 디렉토리
@Value("${train.docker.responseDir}")
@Value("${train.docker.response_dir}")
private String responseDir;
/** 결과 csv 파일 정보 등록 */

View File

@@ -14,12 +14,11 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor
public class TmpDatasetService {
@Value("${train.docker.requestDir}")
@Value("${train.docker.request_dir}")
private String requestDir;
@Value("${train.docker.basePath}")
private String trainBaseDir;
@Value("${train.docker.symbolic_link_dir}")
private String symbolicDir;
/**
* train, val, test 폴더별로 link
*
@@ -36,7 +35,7 @@ public class TmpDatasetService {
throw new IOException("links is empty");
}
Path tmp = Path.of(trainBaseDir, "tmp", uid);
Path tmp = Path.of(symbolicDir, uid);
long linksMade = 0;
@@ -115,7 +114,7 @@ public class TmpDatasetService {
log.info("requestDir(raw)={}", requestDir);
Path BASE = toPath(requestDir);
Path tmp = Path.of(trainBaseDir, "tmp", uid);
Path tmp = Path.of(symbolicDir, uid);
log.info("BASE={}", BASE);
log.info("BASE exists? {}", Files.isDirectory(BASE));

View File

@@ -40,7 +40,7 @@ public class TrainJobService {
private final DataSetCountersService dataSetCounters;
// 학습 결과가 저장될 호스트 디렉토리
@Value("${train.docker.responseDir}")
@Value("${train.docker.response_dir}")
private String responseDir;
public Long getModelIdByUuid(UUID uuid) {