diff --git a/studio/frontend/src/config/training.ts b/studio/frontend/src/config/training.ts index 3d986f1e89..f8fc09c353 100644 --- a/studio/frontend/src/config/training.ts +++ b/studio/frontend/src/config/training.ts @@ -131,3 +131,17 @@ export const MODEL_TYPE_TO_HF_TASK: Record = { audio: "text-to-speech", embeddings: "feature-extraction", }; + + +export const PRIORITY_TRAINING_MODELS: readonly string[] = [ + "unsloth/Qwen3.5-2B", + "unsloth/Qwen3.5-9B", + "unsloth/gpt-oss-20b", + "unsloth/NVIDIA-Nemotron-3-Nano-4B", + "unsloth/Qwen3-0.6B", + "unsloth/gemma-3-4b-it", + "unsloth/embeddinggemma-300m", + "unsloth/orpheus-3b-0.1-ft", + "unsloth/Llama-3.1-8B-Instruct", + "unsloth/Llama-3.2-3B-Instruct", +]; diff --git a/studio/frontend/src/features/onboarding/components/steps/model-selection-step.tsx b/studio/frontend/src/features/onboarding/components/steps/model-selection-step.tsx index 5e981fef3b..ab41214d20 100644 --- a/studio/frontend/src/features/onboarding/components/steps/model-selection-step.tsx +++ b/studio/frontend/src/features/onboarding/components/steps/model-selection-step.tsx @@ -33,7 +33,7 @@ import { TooltipContent, TooltipTrigger, } from "@/components/ui/tooltip"; -import { MODEL_TYPE_TO_HF_TASK } from "@/config/training"; +import { MODEL_TYPE_TO_HF_TASK, PRIORITY_TRAINING_MODELS } from "@/config/training"; import { useDebouncedValue, useGpuInfo, @@ -101,7 +101,12 @@ export function ModelSelectionStep() { const { error: tokenValidationError, isChecking: isCheckingToken } = useHfTokenValidation(hfToken); - const resultIds = useMemo(() => hfResults.map((r) => r.id), [hfResults]); + const resultIds = useMemo(() => { + const ids = hfResults.map((r) => r.id); + const prioritySet = new Set(PRIORITY_TRAINING_MODELS); + const rest = ids.filter((id) => !prioritySet.has(id)); + return [...PRIORITY_TRAINING_MODELS, ...rest]; + }, [hfResults]); // Match Studio behavior: only show exception signals (OOM/TIGHT) in training flows. const vramMap = useMemo(() => { diff --git a/studio/frontend/src/features/studio/sections/model-section.tsx b/studio/frontend/src/features/studio/sections/model-section.tsx index 72d6abcf59..5f115e160f 100644 --- a/studio/frontend/src/features/studio/sections/model-section.tsx +++ b/studio/frontend/src/features/studio/sections/model-section.tsx @@ -28,7 +28,7 @@ import { TooltipContent, TooltipTrigger, } from "@/components/ui/tooltip"; -import { MODEL_TYPE_TO_HF_TASK } from "@/config/training"; +import { MODEL_TYPE_TO_HF_TASK, PRIORITY_TRAINING_MODELS } from "@/config/training"; import { useDebouncedValue, useGpuInfo, @@ -172,7 +172,10 @@ export function ModelSection() { if (selectedModel && !ids.includes(selectedModel)) { ids.push(selectedModel); } - return ids; + + const prioritySet = new Set(PRIORITY_TRAINING_MODELS); + const rest = ids.filter((id) => !prioritySet.has(id)); + return [...PRIORITY_TRAINING_MODELS, ...rest]; }, [hfResults, selectedModel]); // Filter out GGUF models — they can't be used for training