Skip to content

Commit e19f079

Browse files
committed
Add t5 encoders and clip embeds to the model manager
1 parent dd24f83 commit e19f079

File tree

6 files changed

+120
-10
lines changed

6 files changed

+120
-10
lines changed

invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelManagerPanel/ModelList.tsx

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import type { FilterableModelType } from 'features/modelManagerV2/store/modelMan
55
import { memo, useMemo } from 'react';
66
import { useTranslation } from 'react-i18next';
77
import {
8+
useClipEmbedModels,
89
useControlNetModels,
910
useEmbeddingModels,
1011
useIPAdapterModels,
@@ -13,6 +14,7 @@ import {
1314
useRefinerModels,
1415
useSpandrelImageToImageModels,
1516
useT2IAdapterModels,
17+
useT5EncoderModels,
1618
useVAEModels,
1719
} from 'services/api/hooks/modelsByType';
1820
import type { AnyModelConfig } from 'services/api/types';
@@ -73,6 +75,18 @@ const ModelList = () => {
7375
[vaeModels, searchTerm, filteredModelType]
7476
);
7577

78+
const [t5EncoderModels, { isLoading: isLoadingT5EncoderModels }] = useT5EncoderModels();
79+
const filteredT5EncoderModels = useMemo(
80+
() => modelsFilter(t5EncoderModels, searchTerm, filteredModelType),
81+
[t5EncoderModels, searchTerm, filteredModelType]
82+
);
83+
84+
const [clipEmbedModels, { isLoading: isLoadingClipEmbedModels }] = useClipEmbedModels();
85+
const filteredClipEmbedModels = useMemo(
86+
() => modelsFilter(clipEmbedModels, searchTerm, filteredModelType),
87+
[clipEmbedModels, searchTerm, filteredModelType]
88+
);
89+
7690
const [spandrelImageToImageModels, { isLoading: isLoadingSpandrelImageToImageModels }] =
7791
useSpandrelImageToImageModels();
7892
const filteredSpandrelImageToImageModels = useMemo(
@@ -90,7 +104,9 @@ const ModelList = () => {
90104
filteredT2IAdapterModels.length +
91105
filteredIPAdapterModels.length +
92106
filteredVAEModels.length +
93-
filteredSpandrelImageToImageModels.length
107+
filteredSpandrelImageToImageModels.length +
108+
t5EncoderModels.length +
109+
clipEmbedModels.length
94110
);
95111
}, [
96112
filteredControlNetModels.length,
@@ -102,6 +118,8 @@ const ModelList = () => {
102118
filteredT2IAdapterModels.length,
103119
filteredVAEModels.length,
104120
filteredSpandrelImageToImageModels.length,
121+
t5EncoderModels.length,
122+
clipEmbedModels.length,
105123
]);
106124

107125
return (
@@ -154,6 +172,16 @@ const ModelList = () => {
154172
{!isLoadingT2IAdapterModels && filteredT2IAdapterModels.length > 0 && (
155173
<ModelListWrapper title={t('common.t2iAdapter')} modelList={filteredT2IAdapterModels} key="t2i-adapters" />
156174
)}
175+
{/* T5 Encoders List */}
176+
{isLoadingT5EncoderModels && <FetchingModelsLoader loadingMessage="Loading T5 Encoder Models..." />}
177+
{!isLoadingT5EncoderModels && filteredT5EncoderModels.length > 0 && (
178+
<ModelListWrapper title="T5 Encoder" modelList={filteredT5EncoderModels} key="t5-encoder" />
179+
)}
180+
{/* Clip Embed List */}
181+
{isLoadingClipEmbedModels && <FetchingModelsLoader loadingMessage="Loading Clip Embed Models..." />}
182+
{!isLoadingClipEmbedModels && filteredClipEmbedModels.length > 0 && (
183+
<ModelListWrapper title="Clip Embed" modelList={filteredClipEmbedModels} key="clip-embed" />
184+
)}
157185
{/* Spandrel Image to Image List */}
158186
{isLoadingSpandrelImageToImageModels && (
159187
<FetchingModelsLoader loadingMessage="Loading Image-to-Image Models..." />

invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelManagerPanel/ModelTypeFilter.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ export const ModelTypeFilter = memo(() => {
1919
controlnet: 'ControlNet',
2020
vae: 'VAE',
2121
t2i_adapter: t('common.t2iAdapter'),
22+
t5_encoder: 'T5Encoder',
23+
clip_embed: 'Clip Embed',
2224
ip_adapter: t('common.ipAdapter'),
2325
clip_vision: 'Clip Vision',
2426
spandrel_image_to_image: 'Image-to-Image',

invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/InputFieldRenderer.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ type InputFieldProps = {
7272
const InputFieldRenderer = ({ nodeId, fieldName }: InputFieldProps) => {
7373
const fieldInstance = useFieldInputInstance(nodeId, fieldName);
7474
const fieldTemplate = useFieldInputTemplate(nodeId, fieldName);
75-
window.console.log("Hit 0")
7675

7776
if (isStringFieldInputInstance(fieldInstance) && isStringFieldInputTemplate(fieldTemplate)) {
7877
return <StringFieldInputComponent nodeId={nodeId} field={fieldInstance} fieldTemplate={fieldTemplate} />;

invokeai/frontend/web/src/services/api/hooks/modelsByType.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { useMemo } from 'react';
33
import { modelConfigsAdapterSelectors, useGetModelConfigsQuery } from 'services/api/endpoints/models';
44
import type { AnyModelConfig } from 'services/api/types';
55
import {
6+
isClipEmbedModelConfig,
67
isControlNetModelConfig,
78
isControlNetOrT2IAdapterModelConfig,
89
isFluxMainModelModelConfig,
@@ -14,6 +15,7 @@ import {
1415
isSDXLMainModelModelConfig,
1516
isSpandrelImageToImageModelConfig,
1617
isT2IAdapterModelConfig,
18+
isT5EncoderModelConfig,
1719
isTIModelConfig,
1820
isVAEModelConfig,
1921
} from 'services/api/types';
@@ -42,6 +44,8 @@ export const useLoRAModels = buildModelsHook(isLoRAModelConfig);
4244
export const useControlNetAndT2IAdapterModels = buildModelsHook(isControlNetOrT2IAdapterModelConfig);
4345
export const useControlNetModels = buildModelsHook(isControlNetModelConfig);
4446
export const useT2IAdapterModels = buildModelsHook(isT2IAdapterModelConfig);
47+
export const useT5EncoderModels = buildModelsHook(isT5EncoderModelConfig);
48+
export const useClipEmbedModels = buildModelsHook(isClipEmbedModelConfig);
4549
export const useSpandrelImageToImageModels = buildModelsHook(isSpandrelImageToImageModelConfig);
4650
export const useIPAdapterModels = buildModelsHook(isIPAdapterModelConfig);
4751
export const useEmbeddingModels = buildModelsHook(isTIModelConfig);

0 commit comments

Comments
 (0)