diff --git a/pkg/tuning/preset-tuning.go b/pkg/tuning/preset-tuning.go index 90c3a00c1..803a6a83e 100644 --- a/pkg/tuning/preset-tuning.go +++ b/pkg/tuning/preset-tuning.go @@ -188,8 +188,11 @@ func PrepareOutputDir(outputDir string) (string, error) { if outputDir == "" { return DefaultOutputVolumePath, nil } - - cleanPath := filepath.Clean(filepath.Join(DefaultBaseDir, outputDir)) + cleanPath := outputDir + if !strings.HasPrefix(cleanPath, DefaultBaseDir) { + cleanPath = filepath.Join(DefaultBaseDir, outputDir) + } + cleanPath = filepath.Clean(cleanPath) if cleanPath == DefaultBaseDir || !strings.HasPrefix(cleanPath, DefaultBaseDir) { klog.InfoS("Invalid output_dir specified: '%s', must be a directory. Using default output_dir: %s", outputDir, DefaultOutputVolumePath) return DefaultOutputVolumePath, fmt.Errorf("invalid output_dir specified: '%s', must be a directory", outputDir) diff --git a/pkg/tuning/preset-tuning_test.go b/pkg/tuning/preset-tuning_test.go index fc61fed35..8ca64c334 100644 --- a/pkg/tuning/preset-tuning_test.go +++ b/pkg/tuning/preset-tuning_test.go @@ -279,6 +279,18 @@ training_config: }, expectedOutputDir: "/mnt/custom/path", }, + "Output Dir already includes /mnt": { + configMap: &corev1.ConfigMap{ + Data: map[string]string{ + "training_config.yaml": ` +training_config: + TrainingArguments: + output_dir: "/mnt/output" +`, + }, + }, + expectedOutputDir: DefaultOutputVolumePath, + }, "Invalid Output Dir": { configMap: &corev1.ConfigMap{ Data: map[string]string{