101 lines
2.3 KiB
TypeScript
101 lines
2.3 KiB
TypeScript
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
export interface DefaultOptions {
|
|
apiServerBaseUrl: string;
|
|
defaultModelId: string;
|
|
defaultModelIdT2v: string;
|
|
defaultModelIdI2v: string;
|
|
defaultModelIdT2i: string;
|
|
numInferenceSteps: number;
|
|
numFrames: number;
|
|
height: number;
|
|
width: number;
|
|
guidanceScale: number;
|
|
guidanceRescale: number;
|
|
fps: number;
|
|
seed: number;
|
|
numGpus: number;
|
|
ditCpuOffload: boolean;
|
|
textEncoderCpuOffload: boolean;
|
|
vaeCpuOffload: boolean;
|
|
imageEncoderCpuOffload: boolean;
|
|
useFsdpInference: boolean;
|
|
enableTorchCompile: boolean;
|
|
vsaSparsity: number;
|
|
tpSize: number;
|
|
spSize: number;
|
|
autoStartJob: boolean;
|
|
datasetUploadPath: string;
|
|
}
|
|
|
|
export const DEFAULT_OPTIONS: DefaultOptions = {
|
|
apiServerBaseUrl: "",
|
|
defaultModelId: "",
|
|
defaultModelIdT2v: "",
|
|
defaultModelIdI2v: "",
|
|
defaultModelIdT2i: "",
|
|
numInferenceSteps: 50,
|
|
numFrames: 81,
|
|
height: 480,
|
|
width: 832,
|
|
guidanceScale: 5.0,
|
|
guidanceRescale: 0,
|
|
fps: 24,
|
|
seed: 1024,
|
|
numGpus: 1,
|
|
ditCpuOffload: false,
|
|
textEncoderCpuOffload: false,
|
|
vaeCpuOffload: false,
|
|
imageEncoderCpuOffload: false,
|
|
useFsdpInference: false,
|
|
enableTorchCompile: false,
|
|
vsaSparsity: 0,
|
|
tpSize: -1,
|
|
spSize: -1,
|
|
autoStartJob: false,
|
|
datasetUploadPath: "",
|
|
};
|
|
|
|
const STORAGE_KEY = "fastvideo-default-options";
|
|
|
|
export type WorkloadType = "t2v" | "i2v" | "t2i";
|
|
|
|
export function getDefaultModelForWorkload(
|
|
options: DefaultOptions,
|
|
workloadType: WorkloadType,
|
|
): string {
|
|
switch (workloadType) {
|
|
case "t2v":
|
|
return options.defaultModelIdT2v || options.defaultModelId || "";
|
|
case "i2v":
|
|
return options.defaultModelIdI2v || "";
|
|
case "t2i":
|
|
return options.defaultModelIdT2i || "";
|
|
default:
|
|
return options.defaultModelId || "";
|
|
}
|
|
}
|
|
|
|
export function loadDefaultOptions(): DefaultOptions {
|
|
if (typeof window === "undefined") {
|
|
return DEFAULT_OPTIONS;
|
|
}
|
|
try {
|
|
const stored = localStorage.getItem(STORAGE_KEY);
|
|
if (!stored) return DEFAULT_OPTIONS;
|
|
const parsed = JSON.parse(stored) as Partial<DefaultOptions>;
|
|
return { ...DEFAULT_OPTIONS, ...parsed };
|
|
} catch {
|
|
return DEFAULT_OPTIONS;
|
|
}
|
|
}
|
|
|
|
export function saveDefaultOptions(options: DefaultOptions): void {
|
|
if (typeof window === "undefined") return;
|
|
try {
|
|
localStorage.setItem(STORAGE_KEY, JSON.stringify(options));
|
|
} catch {
|
|
// Ignore storage errors
|
|
}
|
|
}
|