diff --git a/studio/frontend/src/features/studio/sections/training-section.tsx b/studio/frontend/src/features/studio/sections/training-section.tsx index a43d3ea873..c30b4cbd77 100644 --- a/studio/frontend/src/features/studio/sections/training-section.tsx +++ b/studio/frontend/src/features/studio/sections/training-section.tsx @@ -45,9 +45,12 @@ const placeholderData = [ export function TrainingSection() { const store = useTrainingConfigStore(); const { isStarting, startError, startTrainingRun } = useTrainingActions(); + const isLoadingModel = store.isLoadingModelDefaults || store.isCheckingVision; + const isModelCapabilitiesSettled = !!store.selectedModel && !isLoadingModel; const isIncompatible = - (!store.isVisionModel && store.isDatasetImage === true) || - (!store.isAudioModel && store.isDatasetAudio === true); + isModelCapabilitiesSettled && + ((!store.isVisionModel && store.isDatasetImage === true) || + (!store.isAudioModel && store.isDatasetAudio === true)); const configValidation = validateTrainingConfig(store); const hasMessage = !!(startError || isIncompatible || (!configValidation.ok && configValidation.message)); const fileInputRef = useRef(null); @@ -157,17 +160,19 @@ export function TrainingSection() { data-tour="studio-start" className="w-full cursor-pointer bg-gradient-to-r from-emerald-500 to-teal-500 text-white hover:from-emerald-600 hover:to-teal-600" onClick={() => void startTrainingRun()} - disabled={isStarting || isIncompatible || store.isCheckingDataset || !configValidation.ok} + disabled={isStarting || isIncompatible || store.isCheckingDataset || isLoadingModel || !configValidation.ok} > - {isStarting ? "Starting..." : store.isCheckingDataset ? "Checking dataset..." : "Start Training"} + {isStarting ? "Starting..." : isLoadingModel ? "Loading model..." : store.isCheckingDataset ? "Checking dataset..." : "Start Training"} {startError && (

{startError}

)} {isIncompatible && (

- Text model is not compatible with a multimodal dataset. Switch to a vision model or choose a text-only dataset. + {!store.isAudioModel && store.isDatasetAudio === true + ? "This model does not support audio. Switch to an audio-capable model or choose a non-audio dataset." + : "Text model is not compatible with a multimodal dataset. Switch to a vision model or choose a text-only dataset."}

)} {!configValidation.ok && configValidation.message && !isIncompatible && (