From e64bf905e1b912ff563ed7ec13e76f7469eb2841 Mon Sep 17 00:00:00 2001 From: Roland Tannous Date: Tue, 24 Feb 2026 09:31:30 +0000 Subject: [PATCH] =?UTF-8?q?use=20explicit=20float=20bounds=20for=20eval=5F?= =?UTF-8?q?steps=20input=20(0.0=E2=80=931.0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../studio/sections/params-section.tsx | 1302 ++++++++--------- 1 file changed, 650 insertions(+), 652 deletions(-) diff --git a/studio/frontend/src/features/studio/sections/params-section.tsx b/studio/frontend/src/features/studio/sections/params-section.tsx index 7c9bf63b77..144a1f34d7 100644 --- a/studio/frontend/src/features/studio/sections/params-section.tsx +++ b/studio/frontend/src/features/studio/sections/params-section.tsx @@ -130,11 +130,62 @@ export function ParamsSection(): ReactElement { className="md:min-h-[450px]" >
- {/* Max Steps */} -
-
+ {/* Max Steps */} +
+
+ + Max Steps + + + + + + Override total steps. Set 0 to use epochs instead.{" "} + + Read more + + + + + store.setMaxSteps(Number(e.target.value))} + min={0} + max={maxStepsSliderMax} + step={1} + className="w-16 text-right font-mono text-xs font-medium bg-muted/50 border border-border rounded-lg px-1.5 py-0.5 focus:outline-none focus:ring-1 focus:ring-primary/30 [&::-webkit-inner-spin-button]:appearance-none" + /> +
+ store.setMaxSteps(v)} + min={0} + max={maxStepsSliderMax} + step={1} + /> +

+ Total optimizer steps. Use 0 to run by epochs. +

+
+ + {/* Context length */} +
- Max Steps + Context Length
- store.setMaxSteps(v)} - min={0} - max={maxStepsSliderMax} - step={1} - /> -

- Total optimizer steps. Use 0 to run by epochs. -

-
- - {/* Context length */} -
- - Context Length - - - - - - Maximum number of tokens per training sample.{" "} - - Read more - - - - - -

- Max sequence length for training samples -

-
- - {/* Learning Rate */} -
- - Learning Rate - - - - - - Step size for weight updates. Lower values train slower but more - stably.{" "} - - Read more - - - - - store.setLearningRate(Number(e.target.value))} - className="w-full font-mono" - /> -

- Recommended: 2e-4 for LoRA, 2e-5 for full fine-tune -

-
- - {/* LoRA Settings */} - {isLora && ( -
-
- )} - {/* Training Hyperparams */} - - - - Training Hyperparameters - - - - - - Optimization - - - Schedule - - - Memory - - - - - - Optimization algorithm. 8-bit variants reduce memory usage. - Fused is recommended for vision models.{" "} - - Read more - - - } - > - - - - How the learning rate changes over training. Linear decays - steadily; cosine decays in a curve.{" "} - - Read more - - - } - > - - - - Samples processed per step. Higher uses more VRAM.{" "} - - Read more - - - } - value={store.batchSize} - onChange={store.setBatchSize} - min={1} - max={32} - step={1} - /> - - Simulates larger batch sizes without extra VRAM.{" "} - - Read more - - - } - value={store.gradientAccumulation} - onChange={store.setGradientAccumulation} - min={1} - max={64} - step={1} - /> - - L2 regularization to prevent overfitting.{" "} - - Read more - - - } - > - - store.setWeightDecay(Number(e.target.value)) - } - className="w-28 font-mono" - /> - - - - - - Gradually increase LR at training start for stability.{" "} - - Read more - - - } - value={store.warmupSteps} - onChange={store.setWarmupSteps} - min={0} - max={100} - step={1} - /> - - Number of full passes over the dataset. Set 0 to run by - max steps.{" "} - - Read more - - - } - value={store.epochs} - onChange={store.setEpochs} - min={0} - max={epochsSliderMax} - step={1} - /> - - Save a checkpoint every N steps. 0 to disable.{" "} - - Read more - - - } - > - store.setSaveSteps(Number(e.target.value))} - className="w-28 font-mono" - /> - - - store.setEvalSteps(Number(e.target.value))} - className="w-28 font-mono" - /> - - - - store.setRandomSeed(Number(e.target.value)) - } - className="w-28 font-mono" - /> - - - - - - Trade compute for memory by recomputing activations.{" "} - - Read more - - - } - > - - - {!showVisionLora && ( -
- store.setPacking(!!v)} + - + + + + Step size for weight updates. Lower values train slower but more + stably.{" "} + + Read more + + + + + store.setLearningRate(Number(e.target.value))} + className="w-full font-mono" + /> +

+ Recommended: 2e-4 for LoRA, 2e-5 for full fine-tune +

+
+ + {/* LoRA Settings */} + {isLora && ( +
+ +
+ + Dimension of the low-rank matrices. Higher = more capacity.{" "} + + Read more + + + } + value={store.loraRank} + onChange={store.setLoraRank} + min={4} + max={128} + step={4} + /> + + Scaling factor for LoRA updates. Usually 2x rank.{" "} + + Read more + + + } + value={store.loraAlpha} + onChange={store.setLoraAlpha} + min={4} + max={256} + step={4} + /> + + Dropout probability for LoRA layers to reduce overfitting.{" "} + + Read more + + + } + value={store.loraDropout} + onChange={store.setLoraDropout} + min={0} + max={0.5} + step={0.01} + format={(v) => v.toFixed(2)} + /> + + {/* Vision checkboxes */} + {showVisionLora && ( +
+ {( + [ + [ + "finetuneVisionLayers", + "Vision layers", + store.finetuneVisionLayers, + store.setFinetuneVisionLayers, + ], + [ + "finetuneLanguageLayers", + "Language layers", + store.finetuneLanguageLayers, + store.setFinetuneLanguageLayers, + ], + [ + "finetuneAttentionModules", + "Attention modules", + store.finetuneAttentionModules, + store.setFinetuneAttentionModules, + ], + [ + "finetuneMLPModules", + "MLP modules", + store.finetuneMLPModules, + store.setFinetuneMLPModules, + ], + ] as const + ).map(([key, label, value, setter]) => ( +
+ + (setter as (v: boolean) => void)(!!v) + } + /> + +
+ ))}
)} -
- store.setTrainOnCompletions(!!v)} - /> - + + {/* Text target modules */} + {!showVisionLora && ( +
+ + Target Modules + +
+ {TARGET_MODULES.map((mod) => { + const active = store.targetModules.includes(mod); + return ( + + ); + })} +
+
+ )} + + {/* LoRA variant */} +
+ {( + [ + { + value: "lora", + label: "Enable LoRA", + desc: "Train with LoRA", + }, + { value: "rslora", label: "RS-LoRA", desc: "Stable Rank" }, + { + value: "loftq", + label: "LoftQ", + desc: "Memory Efficient", + }, + ] as const + ).map((opt) => ( + + ))}
- - - - +
+
+ )} + + {/* Training Hyperparams */} + + + + Training Hyperparameters + + + + + + Optimization + + + Schedule + + + Memory + + + + + + Optimization algorithm. 8-bit variants reduce memory usage. + Fused is recommended for vision models.{" "} + + Read more + + + } + > + + + + How the learning rate changes over training. Linear decays + steadily; cosine decays in a curve.{" "} + + Read more + + + } + > + + + + Samples processed per step. Higher uses more VRAM.{" "} + + Read more + + + } + value={store.batchSize} + onChange={store.setBatchSize} + min={1} + max={32} + step={1} + /> + + Simulates larger batch sizes without extra VRAM.{" "} + + Read more + + + } + value={store.gradientAccumulation} + onChange={store.setGradientAccumulation} + min={1} + max={64} + step={1} + /> + + L2 regularization to prevent overfitting.{" "} + + Read more + + + } + > + + store.setWeightDecay(Number(e.target.value)) + } + className="w-28 font-mono" + /> + + + + + + Gradually increase LR at training start for stability.{" "} + + Read more + + + } + value={store.warmupSteps} + onChange={store.setWarmupSteps} + min={0} + max={100} + step={1} + /> + + Number of full passes over the dataset. Set 0 to run by + max steps.{" "} + + Read more + + + } + value={store.epochs} + onChange={store.setEpochs} + min={0} + max={epochsSliderMax} + step={1} + /> + + Save a checkpoint every N steps. 0 to disable.{" "} + + Read more + + + } + > + store.setSaveSteps(Number(e.target.value))} + className="w-28 font-mono" + /> + + + store.setEvalSteps(Number(e.target.value))} + className="w-28 font-mono" + /> + + + + store.setRandomSeed(Number(e.target.value)) + } + className="w-28 font-mono" + /> + + + + + + Trade compute for memory by recomputing activations.{" "} + + Read more + + + } + > + + + {!showVisionLora && ( +
+ store.setPacking(!!v)} + /> + +
+ )} +
+ store.setTrainOnCompletions(!!v)} + /> + +
+
+
+
+