Skip to content

Commit 667d6b3

Browse files
committed
feat(constants)!: default MODEL_REGISTRY accessors to the quantized variant
Bare accessors (and undefined `quant`) now resolve to the quantized variant when one is published; pass `{ quant: false }` to opt out. Docs and example apps are updated to match — dual pickers keep both rows by making the FP32 entry the explicit opt-out.
1 parent 5e02fef commit 667d6b3

15 files changed

Lines changed: 131 additions & 141 deletions

File tree

apps/bare-rn/App.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ function App() {
145145
const scrollViewRef = useRef<ScrollView>(null);
146146

147147
const llm = useLLM({
148-
model: MODEL_REGISTRY.LLM.LLAMA3_2_1B({ quant: true }),
148+
model: MODEL_REGISTRY.LLM.LLAMA3_2_1B,
149149
});
150150
// Alternatively, to use a custom local model, uncomment below:
151151
// const llm = useLLM({ model: {

apps/computer-vision/app/classification/index.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ import { ModelPicker, ModelOption } from '../../components/ModelPicker';
1010
const MODELS: ModelOption<ClassificationModelSources>[] = [
1111
{
1212
label: 'EfficientNet V2 S Quantized',
13-
value: MODEL_REGISTRY.CLASSIFICATION.EFFICIENTNET_V2_S({ quant: true }),
13+
value: MODEL_REGISTRY.CLASSIFICATION.EFFICIENTNET_V2_S,
1414
},
1515
{
1616
label: 'EfficientNet V2 S',
17-
value: MODEL_REGISTRY.CLASSIFICATION.EFFICIENTNET_V2_S,
17+
value: MODEL_REGISTRY.CLASSIFICATION.EFFICIENTNET_V2_S({ quant: false }),
1818
},
1919
];
2020
import { View, StyleSheet, Image, Text, ScrollView } from 'react-native';
@@ -28,7 +28,7 @@ import ErrorBanner from '../../components/ErrorBanner';
2828
export default function ClassificationScreen() {
2929
const [selectedModel, setSelectedModel] =
3030
useState<ClassificationModelSources>(
31-
MODEL_REGISTRY.CLASSIFICATION.EFFICIENTNET_V2_S({ quant: true })
31+
MODEL_REGISTRY.CLASSIFICATION.EFFICIENTNET_V2_S
3232
);
3333
const [results, setResults] = useState<{ label: string; score: number }[]>(
3434
[]

apps/computer-vision/app/segment_anything/index.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,7 @@ export default function SegmentAnythingScreen() {
7777
useInstanceSegmentation({ model: selectedModel });
7878

7979
const clipImage = useImageEmbeddings({
80-
model: MODEL_REGISTRY.IMAGE_EMBEDDING.CLIP_VIT_BASE_PATCH32_IMAGE({
81-
quant: true,
82-
}),
80+
model: MODEL_REGISTRY.IMAGE_EMBEDDING.CLIP_VIT_BASE_PATCH32_IMAGE,
8381
});
8482
const clipText = useTextEmbeddings({
8583
model: MODEL_REGISTRY.TEXT_EMBEDDING.CLIP_VIT_BASE_PATCH32_TEXT,

apps/computer-vision/app/semantic_segmentation/index.tsx

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -49,35 +49,27 @@ const numberToColor: number[][] = [
4949
const MODELS: ModelOption<SemanticSegmentationModelSources>[] = [
5050
{
5151
label: 'DeepLab MobileNet',
52-
value: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.DEEPLAB_V3_MOBILENET_V3_LARGE({
53-
quant: true,
54-
}),
52+
value: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.DEEPLAB_V3_MOBILENET_V3_LARGE,
5553
},
5654
{
5755
label: 'DeepLab ResNet50',
58-
value: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.DEEPLAB_V3_RESNET50({
59-
quant: true,
60-
}),
56+
value: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.DEEPLAB_V3_RESNET50,
6157
},
6258
{
6359
label: 'DeepLab ResNet101',
64-
value: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.DEEPLAB_V3_RESNET101({
65-
quant: true,
66-
}),
60+
value: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.DEEPLAB_V3_RESNET101,
6761
},
6862
{
6963
label: 'LRASPP MobileNet',
70-
value: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.LRASPP_MOBILENET_V3_LARGE({
71-
quant: true,
72-
}),
64+
value: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.LRASPP_MOBILENET_V3_LARGE,
7365
},
7466
{
7567
label: 'FCN ResNet50',
76-
value: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.FCN_RESNET50({ quant: true }),
68+
value: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.FCN_RESNET50,
7769
},
7870
{
7971
label: 'FCN ResNet101',
80-
value: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.FCN_RESNET101({ quant: true }),
72+
value: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.FCN_RESNET101,
8173
},
8274
{
8375
label: 'Selfie Segmentation',
@@ -89,9 +81,7 @@ export default function SemanticSegmentationScreen() {
8981
const { setGlobalGenerating } = useContext(GeneratingContext);
9082
const [selectedModel, setSelectedModel] =
9183
useState<SemanticSegmentationModelSources>(
92-
MODEL_REGISTRY.SEMANTIC_SEGMENTATION.DEEPLAB_V3_MOBILENET_V3_LARGE({
93-
quant: true,
94-
})
84+
MODEL_REGISTRY.SEMANTIC_SEGMENTATION.DEEPLAB_V3_MOBILENET_V3_LARGE
9585
);
9686

9787
const {

apps/computer-vision/app/style_transfer/index.tsx

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,28 +22,19 @@ type StyleTransferModelSources = {
2222
};
2323

2424
const MODELS: ModelOption<StyleTransferModelSources>[] = [
25-
{
26-
label: 'Candy',
27-
value: MODEL_REGISTRY.STYLE_TRANSFER.CANDY({ quant: true }),
28-
},
29-
{
30-
label: 'Mosaic',
31-
value: MODEL_REGISTRY.STYLE_TRANSFER.MOSAIC({ quant: true }),
32-
},
25+
{ label: 'Candy', value: MODEL_REGISTRY.STYLE_TRANSFER.CANDY },
26+
{ label: 'Mosaic', value: MODEL_REGISTRY.STYLE_TRANSFER.MOSAIC },
3327
{
3428
label: 'Rain Princess',
35-
value: MODEL_REGISTRY.STYLE_TRANSFER.RAIN_PRINCESS({ quant: true }),
36-
},
37-
{
38-
label: 'Udnie',
39-
value: MODEL_REGISTRY.STYLE_TRANSFER.UDNIE({ quant: true }),
29+
value: MODEL_REGISTRY.STYLE_TRANSFER.RAIN_PRINCESS,
4030
},
31+
{ label: 'Udnie', value: MODEL_REGISTRY.STYLE_TRANSFER.UDNIE },
4132
];
4233
import ErrorBanner from '../../components/ErrorBanner';
4334

4435
export default function StyleTransferScreen() {
4536
const [selectedModel, setSelectedModel] = useState<StyleTransferModelSources>(
46-
MODEL_REGISTRY.STYLE_TRANSFER.CANDY({ quant: true })
37+
MODEL_REGISTRY.STYLE_TRANSFER.CANDY
4738
);
4839

4940
const model = useStyleTransfer({ model: selectedModel });

apps/computer-vision/components/vision_camera/tasks/SegmentationTask.tsx

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -41,35 +41,27 @@ export default function SegmentationTask({
4141
onErrorChange,
4242
}: Props) {
4343
const segDeeplabResnet50 = useSemanticSegmentation({
44-
model: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.DEEPLAB_V3_RESNET50({
45-
quant: true,
46-
}),
44+
model: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.DEEPLAB_V3_RESNET50,
4745
preventLoad: activeModel !== 'segmentationDeeplabResnet50',
4846
});
4947
const segDeeplabResnet101 = useSemanticSegmentation({
50-
model: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.DEEPLAB_V3_RESNET101({
51-
quant: true,
52-
}),
48+
model: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.DEEPLAB_V3_RESNET101,
5349
preventLoad: activeModel !== 'segmentationDeeplabResnet101',
5450
});
5551
const segDeeplabMobilenet = useSemanticSegmentation({
56-
model: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.DEEPLAB_V3_MOBILENET_V3_LARGE({
57-
quant: true,
58-
}),
52+
model: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.DEEPLAB_V3_MOBILENET_V3_LARGE,
5953
preventLoad: activeModel !== 'segmentationDeeplabMobilenet',
6054
});
6155
const segLraspp = useSemanticSegmentation({
62-
model: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.LRASPP_MOBILENET_V3_LARGE({
63-
quant: true,
64-
}),
56+
model: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.LRASPP_MOBILENET_V3_LARGE,
6557
preventLoad: activeModel !== 'segmentationLraspp',
6658
});
6759
const segFcnResnet50 = useSemanticSegmentation({
68-
model: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.FCN_RESNET50({ quant: true }),
60+
model: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.FCN_RESNET50,
6961
preventLoad: activeModel !== 'segmentationFcnResnet50',
7062
});
7163
const segFcnResnet101 = useSemanticSegmentation({
72-
model: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.FCN_RESNET101({ quant: true }),
64+
model: MODEL_REGISTRY.SEMANTIC_SEGMENTATION.FCN_RESNET101,
7365
preventLoad: activeModel !== 'segmentationFcnResnet101',
7466
});
7567
const segSelfie = useSemanticSegmentation({

apps/llm/app/llm/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ function LLMScreen() {
4343
const [isTextInputFocused, setIsTextInputFocused] = useState(false);
4444
const [userInput, setUserInput] = useState('');
4545
const [selectedModel, setSelectedModel] = useState<LLMModelSources>(
46-
MODEL_REGISTRY.LLM.LLAMA3_2_1B({ quant: true })
46+
MODEL_REGISTRY.LLM.LLAMA3_2_1B
4747
);
4848
const textInputRef = useRef<TextInput>(null);
4949
const { setGlobalGenerating } = useContext(GeneratingContext);

apps/llm/app/llm_structured_output/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ function LLMScreen() {
8484
const [isTextInputFocused, setIsTextInputFocused] = useState(false);
8585
const [userInput, setUserInput] = useState('');
8686
const [selectedModel, setSelectedModel] = useState<LLMModelSources>(
87-
MODEL_REGISTRY.LLM.QWEN3_1_7B({ quant: true })
87+
MODEL_REGISTRY.LLM.QWEN3_1_7B
8888
);
8989
const textInputRef = useRef<TextInput>(null);
9090
const { setGlobalGenerating } = useContext(GeneratingContext);

apps/llm/app/llm_tool_calling/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ function LLMToolCallingScreen() {
5555
const [hasCalendarPermission, setHasCalendarPermission] = useState(true);
5656
const [hasBrightnessPermission, setHasBrightnessPermission] = useState(true);
5757
const [selectedModel, setSelectedModel] = useState<LLMModelSources>(
58-
MODEL_REGISTRY.LLM.HAMMER2_1_1_5B({ quant: true })
58+
MODEL_REGISTRY.LLM.HAMMER2_1_1_5B
5959
);
6060
const textInputRef = useRef<TextInput>(null);
6161
const { setGlobalGenerating } = useContext(GeneratingContext);

apps/llm/app/voice_chat/index.tsx

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,25 +35,19 @@ type LLMModelSources = LLMProps['model'];
3535
type STTModelSources = SpeechToTextProps['model'];
3636

3737
const LLM_MODELS: ModelOption<LLMModelSources>[] = [
38-
{
39-
label: 'Qwen3 0.6B',
40-
value: MODEL_REGISTRY.LLM.QWEN3_0_6B({ quant: true }),
41-
},
42-
{
43-
label: 'Qwen3 1.7B',
44-
value: MODEL_REGISTRY.LLM.QWEN3_1_7B({ quant: true }),
45-
},
46-
{ label: 'Llama 1B', value: MODEL_REGISTRY.LLM.LLAMA3_2_1B({ quant: true }) },
38+
{ label: 'Qwen3 0.6B', value: MODEL_REGISTRY.LLM.QWEN3_0_6B },
39+
{ label: 'Qwen3 1.7B', value: MODEL_REGISTRY.LLM.QWEN3_1_7B },
40+
{ label: 'Llama 1B', value: MODEL_REGISTRY.LLM.LLAMA3_2_1B },
4741
];
4842

4943
const STT_MODELS: ModelOption<STTModelSources>[] = [
5044
{
5145
label: 'Whisper Tiny',
52-
value: MODEL_REGISTRY.SPEECH_TO_TEXT.WHISPER_TINY_EN,
46+
value: MODEL_REGISTRY.SPEECH_TO_TEXT.WHISPER_TINY_EN({ quant: false }),
5347
},
5448
{
5549
label: 'Whisper Tiny Q',
56-
value: MODEL_REGISTRY.SPEECH_TO_TEXT.WHISPER_TINY_EN({ quant: true }),
50+
value: MODEL_REGISTRY.SPEECH_TO_TEXT.WHISPER_TINY_EN,
5751
},
5852
{
5953
label: 'Whisper Base',
@@ -76,10 +70,10 @@ function VoiceChatScreen() {
7670
const [isRecording, setIsRecording] = useState(false);
7771
const [liveTranscription, setLiveTranscription] = useState('');
7872
const [selectedLLM, setSelectedLLM] = useState<LLMModelSources>(
79-
MODEL_REGISTRY.LLM.QWEN3_0_6B({ quant: true })
73+
MODEL_REGISTRY.LLM.QWEN3_0_6B
8074
);
8175
const [selectedSTT, setSelectedSTT] = useState<STTModelSources>(
82-
MODEL_REGISTRY.SPEECH_TO_TEXT.WHISPER_TINY_EN
76+
MODEL_REGISTRY.SPEECH_TO_TEXT.WHISPER_TINY_EN({ quant: false })
8377
);
8478
const [error, setError] = useState<string | null>(null);
8579

0 commit comments

Comments
 (0)