diff --git a/src/main/invoke-manager.ts b/src/main/invoke-manager.ts
index 79820eb..2cb4354 100644
--- a/src/main/invoke-manager.ts
+++ b/src/main/invoke-manager.ts
@@ -81,6 +81,10 @@ export class InvokeManager {
env.INVOKEAI_HOST = '0.0.0.0';
}
+ if (this.store.get('enablePartialLoading')) {
+ env.INVOKEAI_ENABLE_PARTIAL_LOADING = '1';
+ }
+
// Some torch operations are not yet supported on MPS. This tells torch to use CPU for those operations.
// See: https://pytorch.org/docs/stable/mps_environment_variables.html
if (process.platform === 'darwin') {
diff --git a/src/renderer/features/SettingsModal/SettingsModal.tsx b/src/renderer/features/SettingsModal/SettingsModal.tsx
index 4ada741..e6f59c0 100644
--- a/src/renderer/features/SettingsModal/SettingsModal.tsx
+++ b/src/renderer/features/SettingsModal/SettingsModal.tsx
@@ -14,6 +14,7 @@ import {
import { useStore } from '@nanostores/react';
import { memo, useCallback } from 'react';
+import { SettingsModalEnablePartialLoading } from '@/renderer/features/SettingsModal/SettingsModalEnablePartialLoading';
import { SettingsModalNotifyForPrereleaseUpdates } from '@/renderer/features/SettingsModal/SettingsModalNotifyForPrereleaseUpdates';
import { SettingsModalResetButton } from '@/renderer/features/SettingsModal/SettingsModalResetButton';
import { SettingsModalServerMode } from '@/renderer/features/SettingsModal/SettingsModalServerMode';
@@ -36,6 +37,8 @@ export const SettingsModal = memo(() => {
+
+
diff --git a/src/renderer/features/SettingsModal/SettingsModalEnablePartialLoading.tsx b/src/renderer/features/SettingsModal/SettingsModalEnablePartialLoading.tsx
new file mode 100644
index 0000000..28eb281
--- /dev/null
+++ b/src/renderer/features/SettingsModal/SettingsModalEnablePartialLoading.tsx
@@ -0,0 +1,30 @@
+import { Checkbox, Flex, FormControl, FormHelperText, FormLabel } from '@invoke-ai/ui-library';
+import { useStore } from '@nanostores/react';
+import type { ChangeEvent } from 'react';
+import { memo, useCallback } from 'react';
+
+import { persistedStoreApi } from '@/renderer/services/store';
+
+export const SettingsModalEnablePartialLoading = memo(() => {
+ const { enablePartialLoading } = useStore(persistedStoreApi.$atom);
+ const onChange = useCallback((e: ChangeEvent) => {
+ persistedStoreApi.setKey('enablePartialLoading', e.target.checked);
+ }, []);
+
+ return (
+
+
+ Enable Partial Loading
+
+
+
+ When loading models, if it won't fit in the available VRAM, it will be loaded by layer. This prevents out
+ of memory errors at the cost of generation speed.
+
+
+ When disabled, if a model will not fit in VRAM, you will get an out of memory error.
+
+
+ );
+});
+SettingsModalEnablePartialLoading.displayName = 'SettingsModalEnablePartialLoading';
diff --git a/src/renderer/features/SettingsModal/SettingsModalNotifyForPrereleaseUpdates.tsx b/src/renderer/features/SettingsModal/SettingsModalNotifyForPrereleaseUpdates.tsx
index bd297c2..2368836 100644
--- a/src/renderer/features/SettingsModal/SettingsModalNotifyForPrereleaseUpdates.tsx
+++ b/src/renderer/features/SettingsModal/SettingsModalNotifyForPrereleaseUpdates.tsx
@@ -1,13 +1,14 @@
import { Checkbox, Flex, FormControl, FormHelperText, FormLabel } from '@invoke-ai/ui-library';
import { useStore } from '@nanostores/react';
+import type { ChangeEvent } from 'react';
import { memo, useCallback } from 'react';
import { persistedStoreApi } from '@/renderer/services/store';
export const SettingsModalNotifyForPrereleaseUpdates = memo(() => {
const { notifyForPrereleaseUpdates } = useStore(persistedStoreApi.$atom);
- const onChange = useCallback(() => {
- persistedStoreApi.setKey('notifyForPrereleaseUpdates', !persistedStoreApi.$atom.get().notifyForPrereleaseUpdates);
+ const onChange = useCallback((e: ChangeEvent) => {
+ persistedStoreApi.setKey('notifyForPrereleaseUpdates', e.target.checked);
}, []);
return (
diff --git a/src/shared/types.ts b/src/shared/types.ts
index a5acf9d..e9191ce 100644
--- a/src/shared/types.ts
+++ b/src/shared/types.ts
@@ -51,6 +51,7 @@ export type StoreData = {
notifyForPrereleaseUpdates: boolean;
launcherWindowProps?: WindowProps;
appWindowProps?: WindowProps;
+ enablePartialLoading?: boolean;
};
// The electron store uses JSON schema to validate its data.
@@ -90,6 +91,10 @@ export const schema: Schema = {
type: 'boolean',
default: true,
},
+ enablePartialLoading: {
+ type: 'boolean',
+ default: true,
+ },
launcherWindowProps: winSizePropsSchema,
appWindowProps: winSizePropsSchema,
};