diff --git a/studio/backend/utils/inference/inference_config.py b/studio/backend/utils/inference/inference_config.py index d6de562d33..ff82b47fa6 100644 --- a/studio/backend/utils/inference/inference_config.py +++ b/studio/backend/utils/inference/inference_config.py @@ -59,6 +59,7 @@ def load_inference_config(model_identifier: str) -> Dict[str, Any]: "top_p": model_inference.get("top_p", default_inference.get("top_p", 0.95)), "top_k": model_inference.get("top_k", default_inference.get("top_k", -1)), "min_p": model_inference.get("min_p", default_inference.get("min_p", 0.01)), + "trust_remote_code": model_inference.get("trust_remote_code", default_inference.get("trust_remote_code", False)), } return inference_config diff --git a/studio/frontend/src/config/training.ts b/studio/frontend/src/config/training.ts index 4df5107022..b812dd89f1 100644 --- a/studio/frontend/src/config/training.ts +++ b/studio/frontend/src/config/training.ts @@ -114,6 +114,7 @@ export const DEFAULT_HYPERPARAMS = { enableTensorboard: false, tensorboardDir: "runs", logFrequency: 10, + trustRemoteCode: false, finetuneVisionLayers: true, finetuneLanguageLayers: true, finetuneAttentionModules: true, diff --git a/studio/frontend/src/features/chat/hooks/use-chat-model-runtime.ts b/studio/frontend/src/features/chat/hooks/use-chat-model-runtime.ts index 827da9d68b..27fc8f99e6 100644 --- a/studio/frontend/src/features/chat/hooks/use-chat-model-runtime.ts +++ b/studio/frontend/src/features/chat/hooks/use-chat-model-runtime.ts @@ -123,6 +123,10 @@ function mergeRecommendedInference( topP: toFiniteNumber(inference?.top_p) ?? current.topP, topK: toFiniteNumber(inference?.top_k) ?? current.topK, minP: toFiniteNumber(inference?.min_p) ?? current.minP, + trustRemoteCode: + typeof inference?.trust_remote_code === "boolean" + ? inference.trust_remote_code + : current.trustRemoteCode, }; } diff --git a/studio/frontend/src/features/chat/types/api.ts b/studio/frontend/src/features/chat/types/api.ts index 9999e0ce70..08bdc20435 100644 --- a/studio/frontend/src/features/chat/types/api.ts +++ b/studio/frontend/src/features/chat/types/api.ts @@ -66,6 +66,7 @@ export interface LoadModelResponse { top_p?: number; top_k?: number; min_p?: number; + trust_remote_code?: boolean; }; } diff --git a/studio/frontend/src/features/training/api/mappers.ts b/studio/frontend/src/features/training/api/mappers.ts index 572a650b08..2a8b302d34 100644 --- a/studio/frontend/src/features/training/api/mappers.ts +++ b/studio/frontend/src/features/training/api/mappers.ts @@ -32,7 +32,7 @@ export function buildTrainingStartPayload( hf_token: config.hfToken.trim() || null, load_in_4bit: adapterMethod ? isQlorMethod : false, max_seq_length: config.contextLength, - trust_remote_code: false, + trust_remote_code: config.trustRemoteCode ?? false, hf_dataset: hfDataset, subset: hfDataset ? config.datasetSubset : null, train_split: hfDataset ? config.datasetSplit : null, diff --git a/studio/frontend/src/features/training/lib/model-defaults.ts b/studio/frontend/src/features/training/lib/model-defaults.ts index 35ce562dbf..b9d0abccc8 100644 --- a/studio/frontend/src/features/training/lib/model-defaults.ts +++ b/studio/frontend/src/features/training/lib/model-defaults.ts @@ -30,6 +30,7 @@ type ModelDefaultsPatch = Partial< | "tensorboardDir" | "logFrequency" | "finetuneVisionLayers" + | "trustRemoteCode" | "finetuneLanguageLayers" | "finetuneAttentionModules" | "finetuneMLPModules" @@ -133,6 +134,9 @@ export function mapBackendModelConfigToTrainingPatch( patch.gradientCheckpointing = gradientCheckpointing; } + const trustRemoteCode = toBoolean(training?.trust_remote_code); + if (trustRemoteCode !== undefined) patch.trustRemoteCode = trustRemoteCode; + const loraRank = toNumber(lora?.lora_r); if (loraRank !== undefined) patch.loraRank = loraRank; diff --git a/studio/frontend/src/features/training/types/config.ts b/studio/frontend/src/features/training/types/config.ts index f773eee129..5d5fb7515f 100644 --- a/studio/frontend/src/features/training/types/config.ts +++ b/studio/frontend/src/features/training/types/config.ts @@ -63,6 +63,7 @@ export interface TrainingConfigState { isCheckingDataset: boolean; isDatasetImage: boolean | null; isDatasetAudio: boolean; + trustRemoteCode: boolean; finetuneVisionLayers: boolean; finetuneLanguageLayers: boolean; finetuneAttentionModules: boolean;