feat: unload ml engine when model is unselected, reuse ml engine
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
RaviAnand Mohabir 2025-04-08 16:33:13 +02:00
parent 0e1bde62b7
commit 96777f9a4b

View File

@ -94,15 +94,20 @@ export function MLEngineContextProvider({ children }: { children: ReactNode }) {
if (selectedModel && runningModel !== selectedModel) { if (selectedModel && runningModel !== selectedModel) {
(async () => { (async () => {
setLoadingModel(selectedModel); setLoadingModel(selectedModel);
const initProgressCallback: InitProgressCallback = async ( const initProgressCallback: InitProgressCallback = async (
initProgress initProgress
) => { ) => {
setLoadingProgress(initProgress.progress); setLoadingProgress(initProgress.progress);
}; };
if (!engine.current) {
engine.current = await CreateMLCEngine(selectedModel, { engine.current = await CreateMLCEngine(selectedModel, {
initProgressCallback: initProgressCallback, initProgressCallback: initProgressCallback,
}); });
} else {
await engine.current.reload(selectedModel);
}
setRunningModel(selectedModel); setRunningModel(selectedModel);
setLoadingModel(null); setLoadingModel(null);
@ -113,6 +118,8 @@ export function MLEngineContextProvider({ children }: { children: ReactNode }) {
setGpuVendor(gpuVendor); setGpuVendor(gpuVendor);
} }
})(); })();
} else if (!selectedModel && engine.current) {
engine.current.unload();
} }
}, [ }, [
engine, engine,