diff --git a/src/main/java/com/kamco/cd/training/train/service/DockerTrainService.java b/src/main/java/com/kamco/cd/training/train/service/DockerTrainService.java index 5624530..e52cdf5 100644 --- a/src/main/java/com/kamco/cd/training/train/service/DockerTrainService.java +++ b/src/main/java/com/kamco/cd/training/train/service/DockerTrainService.java @@ -46,6 +46,10 @@ public class DockerTrainService { @Value("${train.docker.shmSize:16g}") private String shmSize; + // data 경로 request,response 상위 폴더 + @Value("${train.docker.basePath}") + private String basePath; + // IPC host 사용 여부 @Value("${train.docker.ipcHost:true}") private boolean ipcHost; @@ -224,7 +228,8 @@ public class DockerTrainService { // GPU 전체 사용 c.add("--gpus"); - c.add("all"); + c.add("1"); // 학습서버 GPU 1개인 곳은 1이어야 함 + // c.add("all"); // IPC host 사용 여부 if (ipcHost) { @@ -254,7 +259,9 @@ public class DockerTrainService { // 요청/결과 디렉토리 볼륨 마운트 c.add("-v"); - c.add("/home/kcomu/data" + "/tmp:/data"); + c.add(basePath + ":" + basePath); // 심볼릭 링크와 연결되는 실제 파일 경로도 마운트를 해줘야 함 + c.add("-v"); + c.add(basePath + "/tmp:/data"); c.add("-v"); c.add(responseDir + ":/checkpoints"); @@ -273,8 +280,10 @@ public class DockerTrainService { addArg(c, "--output-folder", req.getOutputFolder()); addArg(c, "--input-size", req.getInputSize()); addArg(c, "--crop-size", req.getCropSize()); - addArg(c, "--batch-size", req.getBatchSize()); - addArg(c, "--gpu-ids", req.getGpuIds()); // null + // addArg(c, "--batch-size", req.getBatchSize()); + // addArg(c, "--gpu-ids", req.getGpuIds()); // null + addArg(c, "--batch-size", 2); // 학습서버 GPU 1개인 곳은 batch-size:2 까지만 가능 + addArg(c, "--gpu-ids", "0"); // 학습서버 GPU 1개인 곳은 0이어야 함 addArg(c, "--lr", req.getLearningRate()); addArg(c, "--backbone", req.getBackbone()); addArg(c, "--epochs", req.getEpochs()); @@ -439,12 +448,15 @@ public class DockerTrainService { c.add("run"); c.add("--rm"); c.add("--gpus"); - c.add("all"); + c.add("1"); // 학습서버 GPU 1개인 곳은 1이어야 함 + // c.add("all"); c.add("--ipc=host"); c.add("--shm-size=" + shmSize); c.add("-v"); - c.add("/home/kcomu/data" + "/tmp:/data"); + c.add(basePath + ":" + basePath); // 심볼릭 링크와 연결되는 실제 파일 경로도 마운트를 해줘야 함 + c.add("-v"); + c.add(basePath + "/tmp:/data"); c.add("-v"); c.add(responseDir + ":/checkpoints");