Merge pull request #163 from unslothai/fix/add-vision-and-dataset-to-local

Fix/add vision and dataset to local
This commit is contained in:
Roland Tannous 2026-02-19 09:46:54 +04:00 committed by GitHub
commit b35798c8ff

View file

@ -46,11 +46,9 @@ let _modelConfigController: AbortController | null = null;
const NON_PERSISTED_STATE_KEYS: ReadonlySet<keyof TrainingConfigState> = new Set([
"modelType",
"isCheckingVision",
"isVisionModel",
"isLoadingModelDefaults",
"modelDefaultsError",
"isCheckingDataset",
"isDatasetMultimodal",
]);
function partializePersistedState(
@ -104,8 +102,21 @@ export const useTrainingConfigStore = create<TrainingConfigStore>()(
if (controller.signal.aborted) return;
if (get().selectedModel !== modelName) return;
const patch = mapBackendModelConfigToTrainingPatch(modelDetails.config);
// train_on_responses_only: true for LLMs, true for VLM+text dataset, false for VLM+vision dataset
if (!modelDetails.is_vision) {
patch.trainOnCompletions = true;
} else {
const datasetMultimodal = get().isDatasetMultimodal;
if (datasetMultimodal !== null) {
patch.trainOnCompletions = !datasetMultimodal;
}
// if dataset not yet checked, leave YAML default
}
set({
...mapBackendModelConfigToTrainingPatch(modelDetails.config),
...patch,
isVisionModel: modelDetails.is_vision,
isLoadingModelDefaults: false,
isCheckingVision: false,
@ -129,10 +140,20 @@ export const useTrainingConfigStore = create<TrainingConfigStore>()(
void checkVisionModel(modelName)
.then((isVision) => {
if (get().selectedModel !== modelName) return;
set({
const updates: Record<string, unknown> = {
isVisionModel: isVision,
isCheckingVision: false,
});
};
// train_on_responses_only default
if (!isVision) {
updates.trainOnCompletions = true;
} else {
const datasetMultimodal = get().isDatasetMultimodal;
if (datasetMultimodal !== null) {
updates.trainOnCompletions = !datasetMultimodal;
}
}
set(updates as Partial<TrainingConfigState>);
})
.catch(() => {
if (get().selectedModel !== modelName) return;
@ -247,10 +268,16 @@ export const useTrainingConfigStore = create<TrainingConfigStore>()(
})
.then((res) => {
if (controller.signal.aborted) return;
set({
isDatasetMultimodal: !!res.is_multimodal,
const isMultimodal = !!res.is_multimodal;
const updates: Record<string, unknown> = {
isDatasetMultimodal: isMultimodal,
isCheckingDataset: false,
});
};
// train_on_responses_only: for VLMs, true if text dataset, false if vision dataset
if (get().isVisionModel) {
updates.trainOnCompletions = !isMultimodal;
}
set(updates as Partial<TrainingConfigState>);
})
.catch(() => {
if (controller.signal.aborted) return;