diff --git a/.cspell-wordlist.txt b/.cspell-wordlist.txt index 3742847485..4cae5e07bb 100644 --- a/.cspell-wordlist.txt +++ b/.cspell-wordlist.txt @@ -52,4 +52,6 @@ MPNET QINT FNUZ wordlist +coreml +mobilenetv jitpack diff --git a/apps/llm/app/llm/index.tsx b/apps/llm/app/llm/index.tsx index f59e9e6894..2a647b4adb 100644 --- a/apps/llm/app/llm/index.tsx +++ b/apps/llm/app/llm/index.tsx @@ -12,12 +12,7 @@ import { } from 'react-native'; import SendIcon from '../../assets/icons/send_icon.svg'; import Spinner from 'react-native-loading-spinner-overlay'; -import { - LLAMA3_2_1B_QLORA, - LLAMA3_2_TOKENIZER, - LLAMA3_2_TOKENIZER_CONFIG, - useLLM, -} from 'react-native-executorch'; +import { LLAMA3_2_1B_QLORA, useLLM } from 'react-native-executorch'; import PauseIcon from '../../assets/icons/pause_icon.svg'; import ColorPalette from '../../colors'; import Messages from '../../components/Messages'; @@ -35,11 +30,7 @@ function LLMScreen() { const textInputRef = useRef(null); const { setGlobalGenerating } = useContext(GeneratingContext); - const llm = useLLM({ - modelSource: LLAMA3_2_1B_QLORA, - tokenizerSource: LLAMA3_2_TOKENIZER, - tokenizerConfigSource: LLAMA3_2_TOKENIZER_CONFIG, - }); + const llm = useLLM(LLAMA3_2_1B_QLORA); useEffect(() => { if (llm.error) { diff --git a/apps/llm/app/llm_structured_output/index.tsx b/apps/llm/app/llm_structured_output/index.tsx index dd6a7275be..4bfa4d7163 100644 --- a/apps/llm/app/llm_structured_output/index.tsx +++ b/apps/llm/app/llm_structured_output/index.tsx @@ -13,8 +13,6 @@ import { import SendIcon from '../../assets/icons/send_icon.svg'; import Spinner from 'react-native-loading-spinner-overlay'; import { - QWEN3_TOKENIZER, - QWEN3_TOKENIZER_CONFIG, useLLM, fixAndValidateStructuredOutput, getStructuredOutputPrompt, @@ -75,12 +73,8 @@ function LLMScreen() { const textInputRef = useRef(null); const { setGlobalGenerating } = useContext(GeneratingContext); - const llm = useLLM({ - // try out 4B model it this one struggles with following structured output - modelSource: QWEN3_1_7B_QUANTIZED, - tokenizerSource: QWEN3_TOKENIZER, - tokenizerConfigSource: QWEN3_TOKENIZER_CONFIG, - }); + // try out 4B model if this one struggles with following structured output + const llm = useLLM(QWEN3_1_7B_QUANTIZED); useEffect(() => { setGlobalGenerating(llm.isGenerating); diff --git a/apps/llm/app/llm_tool_calling/index.tsx b/apps/llm/app/llm_tool_calling/index.tsx index 5d5995f882..2caac8065b 100644 --- a/apps/llm/app/llm_tool_calling/index.tsx +++ b/apps/llm/app/llm_tool_calling/index.tsx @@ -15,8 +15,6 @@ import SendIcon from '../../assets/icons/send_icon.svg'; import Spinner from 'react-native-loading-spinner-overlay'; import { HAMMER2_1_1_5B, - HAMMER2_1_TOKENIZER, - HAMMER2_1_TOKENIZER_CONFIG, useLLM, DEFAULT_SYSTEM_PROMPT, } from 'react-native-executorch'; @@ -41,11 +39,7 @@ function LLMToolCallingScreen() { const textInputRef = useRef(null); const { setGlobalGenerating } = useContext(GeneratingContext); - const llm = useLLM({ - modelSource: HAMMER2_1_1_5B, - tokenizerSource: HAMMER2_1_TOKENIZER, - tokenizerConfigSource: HAMMER2_1_TOKENIZER_CONFIG, - }); + const llm = useLLM(HAMMER2_1_1_5B); useEffect(() => { setGlobalGenerating(llm.isGenerating); diff --git a/apps/llm/app/voice_chat/index.tsx b/apps/llm/app/voice_chat/index.tsx index c4baaa9870..f86657281c 100644 --- a/apps/llm/app/voice_chat/index.tsx +++ b/apps/llm/app/voice_chat/index.tsx @@ -16,8 +16,6 @@ import { useSpeechToText, useLLM, QWEN3_0_6B_QUANTIZED, - QWEN3_TOKENIZER, - QWEN3_TOKENIZER_CONFIG, } from 'react-native-executorch'; import PauseIcon from '../../assets/icons/pause_icon.svg'; import MicIcon from '../../assets/icons/mic_icon.svg'; @@ -68,11 +66,7 @@ function VoiceChatScreen() { const messageRecorded = useRef(false); const { setGlobalGenerating } = useContext(GeneratingContext); - const llm = useLLM({ - modelSource: QWEN3_0_6B_QUANTIZED, - tokenizerSource: QWEN3_TOKENIZER, - tokenizerConfigSource: QWEN3_TOKENIZER_CONFIG, - }); + const llm = useLLM(QWEN3_0_6B_QUANTIZED); const speechToText = useSpeechToText({ modelName: 'moonshine', windowSize: 3, diff --git a/apps/text-embeddings/app/text-embeddings/index.tsx b/apps/text-embeddings/app/text-embeddings/index.tsx index 618a40bcc9..ddd8f7be9d 100644 --- a/apps/text-embeddings/app/text-embeddings/index.tsx +++ b/apps/text-embeddings/app/text-embeddings/index.tsx @@ -11,11 +11,7 @@ import { Platform, } from 'react-native'; import { Ionicons } from '@expo/vector-icons'; -import { - useTextEmbeddings, - ALL_MINILM_L6_V2, - ALL_MINILM_L6_V2_TOKENIZER, -} from 'react-native-executorch'; +import { useTextEmbeddings, ALL_MINILM_L6_V2 } from 'react-native-executorch'; import { useIsFocused } from '@react-navigation/native'; export default function TextEmbeddingsScreenWrapper() { @@ -25,11 +21,7 @@ export default function TextEmbeddingsScreenWrapper() { } function TextEmbeddingsScreen() { - const model = useTextEmbeddings({ - modelSource: ALL_MINILM_L6_V2, - tokenizerSource: ALL_MINILM_L6_V2_TOKENIZER, - meanPooling: true, - }); + const model = useTextEmbeddings(ALL_MINILM_L6_V2); const [inputSentence, setInputSentence] = useState(''); const [sentencesWithEmbeddings, setSentencesWithEmbeddings] = useState< diff --git a/packages/react-native-executorch/src/constants/modelUrls.ts b/packages/react-native-executorch/src/constants/modelUrls.ts index b7e83f4798..14944fe704 100644 --- a/packages/react-native-executorch/src/constants/modelUrls.ts +++ b/packages/react-native-executorch/src/constants/modelUrls.ts @@ -1,196 +1,388 @@ import { Platform } from 'react-native'; -// LLM's - -// LLAMA 3.2 -export const LLAMA3_2_3B = - 'https://huggingface.co/software-mansion/react-native-executorch-llama-3.2/resolve/v0.4.0/llama-3.2-3B/original/llama3_2_3B_bf16.pte'; -export const LLAMA3_2_3B_QLORA = - 'https://huggingface.co/software-mansion/react-native-executorch-llama-3.2/resolve/v0.4.0/llama-3.2-3B/QLoRA/llama3_2-3B_qat_lora.pte'; -export const LLAMA3_2_3B_SPINQUANT = - 'https://huggingface.co/software-mansion/react-native-executorch-llama-3.2/resolve/v0.4.0/llama-3.2-3B/spinquant/llama3_2_3B_spinquant.pte'; -export const LLAMA3_2_1B = - 'https://huggingface.co/software-mansion/react-native-executorch-llama-3.2/resolve/v0.4.0/llama-3.2-1B/original/llama3_2_bf16.pte'; -export const LLAMA3_2_1B_QLORA = - 'https://huggingface.co/software-mansion/react-native-executorch-llama-3.2/resolve/v0.4.0/llama-3.2-1B/QLoRA/llama3_2_qat_lora.pte'; -export const LLAMA3_2_1B_SPINQUANT = - 'https://huggingface.co/software-mansion/react-native-executorch-llama-3.2/resolve/v0.4.0/llama-3.2-1B/spinquant/llama3_2_spinquant.pte'; -export const LLAMA3_2_TOKENIZER = - 'https://huggingface.co/software-mansion/react-native-executorch-llama-3.2/resolve/v0.4.0/tokenizer.json'; -export const LLAMA3_2_TOKENIZER_CONFIG = - 'https://huggingface.co/software-mansion/react-native-executorch-llama-3.2/resolve/v0.4.0/tokenizer_config.json'; - -// QWEN 3 -export const QWEN3_0_6B = - 'https://huggingface.co/software-mansion/react-native-executorch-qwen-3/resolve/v0.4.0/qwen-3-0.6B/original/qwen3_0_6b_bf16.pte'; -export const QWEN3_0_6B_QUANTIZED = - 'https://huggingface.co/software-mansion/react-native-executorch-qwen-3/resolve/v0.4.0/qwen-3-0.6B/quantized/qwen3_0_6b_8da4w.pte'; -export const QWEN3_1_7B = - 'https://huggingface.co/software-mansion/react-native-executorch-qwen-3/resolve/v0.4.0/qwen-3-1.7B/original/qwen3_1_7b_bf16.pte'; -export const QWEN3_1_7B_QUANTIZED = - 'https://huggingface.co/software-mansion/react-native-executorch-qwen-3/resolve/v0.4.0/qwen-3-1.7B/quantized/qwen3_1_7b_8da4w.pte'; -export const QWEN3_4B = - 'https://huggingface.co/software-mansion/react-native-executorch-qwen-3/resolve/v0.4.0/qwen-3-4B/original/qwen3_4b_bf16.pte'; -export const QWEN3_4B_QUANTIZED = - 'https://huggingface.co/software-mansion/react-native-executorch-qwen-3/resolve/v0.4.0/qwen-3-4B/quantized/qwen3_4b_8da4w.pte'; -export const QWEN3_TOKENIZER = - 'https://huggingface.co/software-mansion/react-native-executorch-qwen-3/resolve/v0.4.0/tokenizer.json'; -export const QWEN3_TOKENIZER_CONFIG = - 'https://huggingface.co/software-mansion/react-native-executorch-qwen-3/resolve/v0.4.0/tokenizer_config.json'; - -// HAMMER 2.1 -export const HAMMER2_1_0_5B = - 'https://huggingface.co/software-mansion/react-native-executorch-hammer-2.1/resolve/v0.4.0/hammer-2.1-0.5B/original/hammer2_1_0_5B_bf16.pte'; -export const HAMMER2_1_0_5B_QUANTIZED = - 'https://huggingface.co/software-mansion/react-native-executorch-hammer-2.1/resolve/v0.4.0/hammer-2.1-0.5B/quantized/hammer2_1_0_5B_8da4w.pte'; -export const HAMMER2_1_1_5B = - 'https://huggingface.co/software-mansion/react-native-executorch-hammer-2.1/resolve/v0.4.0/hammer-2.1-1.5B/original/hammer2_1_1_5B_bf16.pte'; -export const HAMMER2_1_1_5B_QUANTIZED = - 'https://huggingface.co/software-mansion/react-native-executorch-hammer-2.1/resolve/v0.4.0/hammer-2.1-1.5B/quantized/hammer2_1_1_5B_8da4w.pte'; -export const HAMMER2_1_3B = - 'https://huggingface.co/software-mansion/react-native-executorch-hammer-2.1/resolve/v0.4.0/hammer-2.1-3B/original/hammer2_1_3B_bf16.pte'; -export const HAMMER2_1_3B_QUANTIZED = - 'https://huggingface.co/software-mansion/react-native-executorch-hammer-2.1/resolve/v0.4.0/hammer-2.1-3B/quantized/hammer2_1_3B_8da4w.pte'; -export const HAMMER2_1_TOKENIZER = - 'https://huggingface.co/software-mansion/react-native-executorch-hammer-2.1/resolve/v0.4.0/tokenizer.json'; -export const HAMMER2_1_TOKENIZER_CONFIG = - 'https://huggingface.co/software-mansion/react-native-executorch-hammer-2.1/resolve/v0.4.0/tokenizer_config.json'; - -// SMOLLM2 -export const SMOLLM2_1_135M = - 'https://huggingface.co/software-mansion/react-native-executorch-smolLm-2/resolve/v0.4.0/smolLm-2-135M/original/smolLm2_135M_bf16.pte'; -export const SMOLLM2_1_135M_QUANTIZED = - 'https://huggingface.co/software-mansion/react-native-executorch-smolLm-2/resolve/v0.4.0/smolLm-2-135M/quantized/smolLm2_135M_8da4w.pte'; -export const SMOLLM2_1_360M = - 'https://huggingface.co/software-mansion/react-native-executorch-smolLm-2/resolve/v0.4.0/smolLm-2-360M/original/smolLm2_360M_bf16.pte'; -export const SMOLLM2_1_360M_QUANTIZED = - 'https://huggingface.co/software-mansion/react-native-executorch-smolLm-2/resolve/v0.4.0/smolLm-2-360M/quantized/smolLm2_360M_8da4w.pte'; -export const SMOLLM2_1_1_7B = - 'https://huggingface.co/software-mansion/react-native-executorch-smolLm-2/resolve/v0.4.0/smolLm-2-1.7B/original/smolLm2_1_7B_bf16.pte'; -export const SMOLLM2_1_1_7B_QUANTIZED = - 'https://huggingface.co/software-mansion/react-native-executorch-smolLm-2/resolve/v0.4.0/smolLm-2-1.7B/quantized/smolLm2_1_7B_8da4w.pte'; -export const SMOLLM2_1_TOKENIZER = - 'https://huggingface.co/software-mansion/react-native-executorch-smolLm-2/resolve/v0.4.0/tokenizer.json'; -export const SMOLLM2_1_TOKENIZER_CONFIG = - 'https://huggingface.co/software-mansion/react-native-executorch-smolLm-2/resolve/v0.4.0/tokenizer_config.json'; - -// QWEN 2.5 -export const QWEN2_5_0_5B = - 'https://huggingface.co/software-mansion/react-native-executorch-qwen-2.5/resolve/v0.4.0/qwen-2.5-0.5B/original/qwen2_5_0_5b_bf16.pte'; -export const QWEN2_5_0_5B_QUANTIZED = - 'https://huggingface.co/software-mansion/react-native-executorch-qwen-2.5/resolve/v0.4.0/qwen-2.5-0.5B/quantized/qwen2_5_0_5b_8da4w.pte'; -export const QWEN2_5_1_5B = - 'https://huggingface.co/software-mansion/react-native-executorch-qwen-2.5/resolve/v0.4.0/qwen-2.5-1.5B/original/qwen2_5_1_5b_bf16.pte'; -export const QWEN2_5_1_5B_QUANTIZED = - 'https://huggingface.co/software-mansion/react-native-executorch-qwen-2.5/resolve/v0.4.0/qwen-2.5-1.5B/quantized/qwen2_5_1_5b_8da4w.pte'; -export const QWEN2_5_3B = - 'https://huggingface.co/software-mansion/react-native-executorch-qwen-2.5/resolve/v0.4.0/qwen-2.5-3B/original/qwen2_5_3b_bf16.pte'; -export const QWEN2_5_3B_QUANTIZED = - 'https://huggingface.co/software-mansion/react-native-executorch-qwen-2.5/resolve/v0.4.0/qwen-2.5-3B/quantized/qwen2_5_3b_8da4w.pte'; -export const QWEN2_5_TOKENIZER = - 'https://huggingface.co/software-mansion/react-native-executorch-qwen-2.5/resolve/v0.4.0/tokenizer.json'; -export const QWEN2_5_TOKENIZER_CONFIG = - 'https://huggingface.co/software-mansion/react-native-executorch-qwen-2.5/resolve/v0.4.0/tokenizer_config.json'; - -// PHI 4 -export const PHI_4_MINI_4B = - 'https://huggingface.co/software-mansion/react-native-executorch-phi-4-mini/resolve/v0.4.0/original/phi-4-mini_bf16.pte'; -export const PHI_4_MINI_4B_QUANTIZED = - 'https://huggingface.co/software-mansion/react-native-executorch-phi-4-mini/resolve/v0.4.0/quantized/phi-4-mini_8da4w.pte'; -export const PHI_4_MINI_TOKENIZER = - 'https://huggingface.co/software-mansion/react-native-executorch-phi-4-mini/resolve/v0.4.0/tokenizer.json'; -export const PHI_4_MINI_TOKENIZER_CONFIG = - 'https://huggingface.co/software-mansion/react-native-executorch-phi-4-mini/resolve/v0.4.0/tokenizer_config.json'; +const BASE_URL_PREFIX = + 'https://huggingface.co/software-mansion/react-native-executorch'; +const VERSION_TAG = 'resolve/v0.4.0'; +const NEXT_DEV_VERSION_TAG = 'resolve/v0.5.0'; + +const isIOS = Platform.OS === `ios`; + +// LLM`s + +const LLAMA3_2_MODEL_NAME = 'llama-3.2'; +const LLAMA3_2_3B_MODEL = `${BASE_URL_PREFIX}-${LLAMA3_2_MODEL_NAME}/${VERSION_TAG}/llama-3.2-3B/original/llama3_2_3B_bf16.pte`; +const LLAMA3_2_3B_QLORA_MODEL = `${BASE_URL_PREFIX}-${LLAMA3_2_MODEL_NAME}/${VERSION_TAG}/llama-3.2-3B/QLoRA/llama3_2-3B_qat_lora.pte`; +const LLAMA3_2_3B_SPINQUANT_MODEL = `${BASE_URL_PREFIX}-${LLAMA3_2_MODEL_NAME}/${VERSION_TAG}/llama-3.2-3B/spinquant/llama3_2_3B_spinquant.pte`; +const LLAMA3_2_1B_MODEL = `${BASE_URL_PREFIX}-${LLAMA3_2_MODEL_NAME}/${VERSION_TAG}/llama-3.2-1B/original/llama3_2_bf16.pte`; +const LLAMA3_2_1B_QLORA_MODEL = `${BASE_URL_PREFIX}-${LLAMA3_2_MODEL_NAME}/${VERSION_TAG}/llama-3.2-1B/QLoRA/llama3_2_qat_lora.pte`; +const LLAMA3_2_1B_SPINQUANT_MODEL = `${BASE_URL_PREFIX}-${LLAMA3_2_MODEL_NAME}/${VERSION_TAG}/llama-3.2-1B/spinquant/llama3_2_spinquant.pte`; +const LLAMA3_2_TOKENIZER = `${BASE_URL_PREFIX}-${LLAMA3_2_MODEL_NAME}/${VERSION_TAG}/tokenizer.json`; +const LLAMA3_2_TOKENIZER_CONFIG = `${BASE_URL_PREFIX}-${LLAMA3_2_MODEL_NAME}/${VERSION_TAG}/tokenizer_config.json`; + +export const LLAMA3_2_3B = { + modelSource: LLAMA3_2_3B_MODEL, + tokenizerSource: LLAMA3_2_TOKENIZER, + tokenizerConfigSource: LLAMA3_2_TOKENIZER_CONFIG, +}; + +export const LLAMA3_2_3B_QLORA = { + modelSource: LLAMA3_2_3B_QLORA_MODEL, + tokenizerSource: LLAMA3_2_TOKENIZER, + tokenizerConfigSource: LLAMA3_2_TOKENIZER_CONFIG, +}; + +export const LLAMA3_2_3B_SPINQUANT = { + modelSource: LLAMA3_2_3B_SPINQUANT_MODEL, + tokenizerSource: LLAMA3_2_TOKENIZER, + tokenizerConfigSource: LLAMA3_2_TOKENIZER_CONFIG, +}; + +export const LLAMA3_2_1B = { + modelSource: LLAMA3_2_1B_MODEL, + tokenizerSource: LLAMA3_2_TOKENIZER, + tokenizerConfigSource: LLAMA3_2_TOKENIZER_CONFIG, +}; + +export const LLAMA3_2_1B_QLORA = { + modelSource: LLAMA3_2_1B_QLORA_MODEL, + tokenizerSource: LLAMA3_2_TOKENIZER, + tokenizerConfigSource: LLAMA3_2_TOKENIZER_CONFIG, +}; + +export const LLAMA3_2_1B_SPINQUANT = { + modelSource: LLAMA3_2_1B_SPINQUANT_MODEL, + tokenizerSource: LLAMA3_2_TOKENIZER, + tokenizerConfigSource: LLAMA3_2_TOKENIZER_CONFIG, +}; + +const QWEN3_MODEL_NAME = 'qwen-3'; +const QWEN3_0_6B_MODEL = `${BASE_URL_PREFIX}-${QWEN3_MODEL_NAME}/${VERSION_TAG}/qwen-3-0.6B/original/qwen3_0_6b_bf16.pte`; +const QWEN3_0_6B_QUANTIZED_MODEL = `${BASE_URL_PREFIX}-${QWEN3_MODEL_NAME}/${VERSION_TAG}/qwen-3-0.6B/quantized/qwen3_0_6b_8da4w.pte`; +const QWEN3_1_7B_MODEL = `${BASE_URL_PREFIX}-${QWEN3_MODEL_NAME}/${VERSION_TAG}/qwen-3-1.7B/original/qwen3_1_7b_bf16.pte`; +const QWEN3_1_7B_QUANTIZED_MODEL = `${BASE_URL_PREFIX}-${QWEN3_MODEL_NAME}/${VERSION_TAG}/qwen-3-1.7B/quantized/qwen3_1_7b_8da4w.pte`; +const QWEN3_4B_MODEL = `${BASE_URL_PREFIX}-${QWEN3_MODEL_NAME}/${VERSION_TAG}/qwen-3-4B/original/qwen3_4b_bf16.pte`; +const QWEN3_4B_QUANTIZED_MODEL = `${BASE_URL_PREFIX}-${QWEN3_MODEL_NAME}/${VERSION_TAG}/qwen-3-4B/quantized/qwen3_4b_8da4w.pte`; +const QWEN3_TOKENIZER = `${BASE_URL_PREFIX}-${QWEN3_MODEL_NAME}/${VERSION_TAG}/tokenizer.json`; +const QWEN3_TOKENIZER_CONFIG = `${BASE_URL_PREFIX}-${QWEN3_MODEL_NAME}/${VERSION_TAG}/tokenizer_config.json`; + +export const QWEN3_0_6B = { + modelSource: QWEN3_0_6B_MODEL, + tokenizerSource: QWEN3_TOKENIZER, + tokenizerConfigSource: QWEN3_TOKENIZER_CONFIG, +}; + +export const QWEN3_0_6B_QUANTIZED = { + modelSource: QWEN3_0_6B_QUANTIZED_MODEL, + tokenizerSource: QWEN3_TOKENIZER, + tokenizerConfigSource: QWEN3_TOKENIZER_CONFIG, +}; + +export const QWEN3_1_7B = { + modelSource: QWEN3_1_7B_MODEL, + tokenizerSource: QWEN3_TOKENIZER, + tokenizerConfigSource: QWEN3_TOKENIZER_CONFIG, +}; + +export const QWEN3_1_7B_QUANTIZED = { + modelSource: QWEN3_1_7B_QUANTIZED_MODEL, + tokenizerSource: QWEN3_TOKENIZER, + tokenizerConfigSource: QWEN3_TOKENIZER_CONFIG, +}; + +export const QWEN3_4B = { + modelSource: QWEN3_4B_MODEL, + tokenizerSource: QWEN3_TOKENIZER, + tokenizerConfigSource: QWEN3_TOKENIZER_CONFIG, +}; + +export const QWEN3_4B_QUANTIZED = { + modelSource: QWEN3_4B_QUANTIZED_MODEL, + tokenizerSource: QWEN3_TOKENIZER, + tokenizerConfigSource: QWEN3_TOKENIZER_CONFIG, +}; + +const HAMMER2_1_MODEL_NAME = 'hammer-2.1'; +const HAMMER2_1_0_5B_MODEL = `${BASE_URL_PREFIX}-${HAMMER2_1_MODEL_NAME}/${VERSION_TAG}/hammer-2.1-0.5B/original/hammer2_1_0_5B_bf16.pte`; +const HAMMER2_1_0_5B_QUANTIZED_MODEL = `${BASE_URL_PREFIX}-${HAMMER2_1_MODEL_NAME}/${VERSION_TAG}/hammer-2.1-0.5B/quantized/hammer2_1_0_5B_8da4w.pte`; +const HAMMER2_1_1_5B_MODEL = `${BASE_URL_PREFIX}-${HAMMER2_1_MODEL_NAME}/${VERSION_TAG}/hammer-2.1-1.5B/original/hammer2_1_1_5B_bf16.pte`; +const HAMMER2_1_1_5B_QUANTIZED_MODEL = `${BASE_URL_PREFIX}-${HAMMER2_1_MODEL_NAME}/${VERSION_TAG}/hammer-2.1-1.5B/quantized/hammer2_1_1_5B_8da4w.pte`; +const HAMMER2_1_3B_MODEL = `${BASE_URL_PREFIX}-${HAMMER2_1_MODEL_NAME}/${VERSION_TAG}/hammer-2.1-3B/original/hammer2_1_3B_bf16.pte`; +const HAMMER2_1_3B_QUANTIZED_MODEL = `${BASE_URL_PREFIX}-${HAMMER2_1_MODEL_NAME}/${VERSION_TAG}/hammer-2.1-3B/quantized/hammer2_1_3B_8da4w.pte`; +const HAMMER2_1_TOKENIZER = `${BASE_URL_PREFIX}-${HAMMER2_1_MODEL_NAME}/${VERSION_TAG}/tokenizer.json`; +const HAMMER2_1_TOKENIZER_CONFIG = `${BASE_URL_PREFIX}-${HAMMER2_1_MODEL_NAME}/${VERSION_TAG}/tokenizer_config.json`; + +export const HAMMER2_1_0_5B = { + modelSource: HAMMER2_1_0_5B_MODEL, + tokenizerSource: HAMMER2_1_TOKENIZER, + tokenizerConfigSource: HAMMER2_1_TOKENIZER_CONFIG, +}; + +export const HAMMER2_1_0_5B_QUANTIZED = { + modelSource: HAMMER2_1_0_5B_QUANTIZED_MODEL, + tokenizerSource: HAMMER2_1_TOKENIZER, + tokenizerConfigSource: HAMMER2_1_TOKENIZER_CONFIG, +}; + +export const HAMMER2_1_1_5B = { + modelSource: HAMMER2_1_1_5B_MODEL, + tokenizerSource: HAMMER2_1_TOKENIZER, + tokenizerConfigSource: HAMMER2_1_TOKENIZER_CONFIG, +}; + +export const HAMMER2_1_1_5B_QUANTIZED = { + modelSource: HAMMER2_1_1_5B_QUANTIZED_MODEL, + tokenizerSource: HAMMER2_1_TOKENIZER, + tokenizerConfigSource: HAMMER2_1_TOKENIZER_CONFIG, +}; + +export const HAMMER2_1_3B = { + modelSource: HAMMER2_1_3B_MODEL, + tokenizerSource: HAMMER2_1_TOKENIZER, + tokenizerConfigSource: HAMMER2_1_TOKENIZER_CONFIG, +}; + +export const HAMMER2_1_3B_QUANTIZED = { + modelSource: HAMMER2_1_3B_QUANTIZED_MODEL, + tokenizerSource: HAMMER2_1_TOKENIZER, + tokenizerConfigSource: HAMMER2_1_TOKENIZER_CONFIG, +}; + +const SMOLLM2_MODEL_NAME = 'smolLm-2'; +const SMOLLM2_1_135M_MODEL = `${BASE_URL_PREFIX}-${SMOLLM2_MODEL_NAME}/${VERSION_TAG}/smolLm-2-135M/original/smolLm2_135M_bf16.pte`; +const SMOLLM2_1_135M_QUANTIZED_MODEL = `${BASE_URL_PREFIX}-${SMOLLM2_MODEL_NAME}/${VERSION_TAG}/smolLm-2-135M/quantized/smolLm2_135M_8da4w.pte`; +const SMOLLM2_1_360M_MODEL = `${BASE_URL_PREFIX}-${SMOLLM2_MODEL_NAME}/${VERSION_TAG}/smolLm-2-360M/original/smolLm2_360M_bf16.pte`; +const SMOLLM2_1_360M_QUANTIZED_MODEL = `${BASE_URL_PREFIX}-${SMOLLM2_MODEL_NAME}/${VERSION_TAG}/smolLm-2-360M/quantized/smolLm2_360M_8da4w.pte`; +const SMOLLM2_1_1_7B_MODEL = `${BASE_URL_PREFIX}-${SMOLLM2_MODEL_NAME}/${VERSION_TAG}/smolLm-2-1.7B/original/smolLm2_1_7B_bf16.pte`; +const SMOLLM2_1_1_7B_QUANTIZED_MODEL = `${BASE_URL_PREFIX}-${SMOLLM2_MODEL_NAME}/${VERSION_TAG}/smolLm-2-1.7B/quantized/smolLm2_1_7B_8da4w.pte`; +const SMOLLM2_1_TOKENIZER = `${BASE_URL_PREFIX}-${SMOLLM2_MODEL_NAME}/${VERSION_TAG}/tokenizer.json`; +const SMOLLM2_1_TOKENIZER_CONFIG = `${BASE_URL_PREFIX}-${SMOLLM2_MODEL_NAME}/${VERSION_TAG}/tokenizer_config.json`; + +export const SMOLLM2_1_135M = { + modelSource: SMOLLM2_1_135M_MODEL, + tokenizerSource: SMOLLM2_1_TOKENIZER, + tokenizerConfigSource: SMOLLM2_1_TOKENIZER_CONFIG, +}; + +export const SMOLLM2_1_135M_QUANTIZED = { + modelSource: SMOLLM2_1_135M_QUANTIZED_MODEL, + tokenizerSource: SMOLLM2_1_TOKENIZER, + tokenizerConfigSource: SMOLLM2_1_TOKENIZER_CONFIG, +}; + +export const SMOLLM2_1_360M = { + modelSource: SMOLLM2_1_360M_MODEL, + tokenizerSource: SMOLLM2_1_TOKENIZER, + tokenizerConfigSource: SMOLLM2_1_TOKENIZER_CONFIG, +}; + +export const SMOLLM2_1_360M_QUANTIZED = { + modelSource: SMOLLM2_1_360M_QUANTIZED_MODEL, + tokenizerSource: SMOLLM2_1_TOKENIZER, + tokenizerConfigSource: SMOLLM2_1_TOKENIZER_CONFIG, +}; + +export const SMOLLM2_1_1_7B = { + modelSource: SMOLLM2_1_1_7B_MODEL, + tokenizerSource: SMOLLM2_1_TOKENIZER, + tokenizerConfigSource: SMOLLM2_1_TOKENIZER_CONFIG, +}; + +export const SMOLLM2_1_1_7B_QUANTIZED = { + modelSource: SMOLLM2_1_1_7B_QUANTIZED_MODEL, + tokenizerSource: SMOLLM2_1_TOKENIZER, + tokenizerConfigSource: SMOLLM2_1_TOKENIZER_CONFIG, +}; + +const QWEN2_5_MODEL_NAME = 'qwen-2.5'; +const QWEN2_5_0_5B_MODEL = `${BASE_URL_PREFIX}-${QWEN2_5_MODEL_NAME}/${VERSION_TAG}/qwen-2.5-0.5B/original/qwen2_5_0_5b_bf16.pte`; +const QWEN2_5_0_5B_QUANTIZED_MODEL = `${BASE_URL_PREFIX}-${QWEN2_5_MODEL_NAME}/${VERSION_TAG}/qwen-2.5-0.5B/quantized/qwen2_5_0_5b_8da4w.pte`; +const QWEN2_5_1_5B_MODEL = `${BASE_URL_PREFIX}-${QWEN2_5_MODEL_NAME}/${VERSION_TAG}/qwen-2.5-1.5B/original/qwen2_5_1_5b_bf16.pte`; +const QWEN2_5_1_5B_QUANTIZED_MODEL = `${BASE_URL_PREFIX}-${QWEN2_5_MODEL_NAME}/${VERSION_TAG}/qwen-2.5-1.5B/quantized/qwen2_5_1_5b_8da4w.pte`; +const QWEN2_5_3B_MODEL = `${BASE_URL_PREFIX}-${QWEN2_5_MODEL_NAME}/${VERSION_TAG}/qwen-2.5-3B/original/qwen2_5_3b_bf16.pte`; +const QWEN2_5_3B_QUANTIZED_MODEL = `${BASE_URL_PREFIX}-${QWEN2_5_MODEL_NAME}/${VERSION_TAG}/qwen-2.5-3B/quantized/qwen2_5_3b_8da4w.pte`; +const QWEN2_5_TOKENIZER = `${BASE_URL_PREFIX}-${QWEN2_5_MODEL_NAME}/${VERSION_TAG}/tokenizer.json`; +const QWEN2_5_TOKENIZER_CONFIG = `${BASE_URL_PREFIX}-${QWEN2_5_MODEL_NAME}/${VERSION_TAG}/tokenizer_config.json`; + +export const QWEN2_5_0_5B = { + modelSource: QWEN2_5_0_5B_MODEL, + tokenizerSource: QWEN2_5_TOKENIZER, + tokenizerConfigSource: QWEN2_5_TOKENIZER_CONFIG, +}; + +export const QWEN2_5_0_5B_QUANTIZED = { + modelSource: QWEN2_5_0_5B_QUANTIZED_MODEL, + tokenizerSource: QWEN2_5_TOKENIZER, + tokenizerConfigSource: QWEN2_5_TOKENIZER_CONFIG, +}; + +export const QWEN2_5_1_5B = { + modelSource: QWEN2_5_1_5B_MODEL, + tokenizerSource: QWEN2_5_TOKENIZER, + tokenizerConfigSource: QWEN2_5_TOKENIZER_CONFIG, +}; + +export const QWEN2_5_1_5B_QUANTIZED = { + modelSource: QWEN2_5_1_5B_QUANTIZED_MODEL, + tokenizerSource: QWEN2_5_TOKENIZER, + tokenizerConfigSource: QWEN2_5_TOKENIZER_CONFIG, +}; + +export const QWEN2_5_3B = { + modelSource: QWEN2_5_3B_MODEL, + tokenizerSource: QWEN2_5_TOKENIZER, + tokenizerConfigSource: QWEN2_5_TOKENIZER_CONFIG, +}; + +export const QWEN2_5_3B_QUANTIZED = { + modelSource: QWEN2_5_3B_QUANTIZED_MODEL, + tokenizerSource: QWEN2_5_TOKENIZER, + tokenizerConfigSource: QWEN2_5_TOKENIZER_CONFIG, +}; + +const PHI_4_MINI_MODEL_NAME = 'phi-4-mini'; +const PHI_4_MINI_4B_MODEL = `${BASE_URL_PREFIX}-${PHI_4_MINI_MODEL_NAME}/${VERSION_TAG}/original/phi-4-mini_bf16.pte`; +const PHI_4_MINI_4B_QUANTIZED_MODEL = `${BASE_URL_PREFIX}-${PHI_4_MINI_MODEL_NAME}/${VERSION_TAG}/quantized/phi-4-mini_8da4w.pte`; +const PHI_4_MINI_TOKENIZER = `${BASE_URL_PREFIX}-${PHI_4_MINI_MODEL_NAME}/${VERSION_TAG}/tokenizer.json`; +const PHI_4_MINI_TOKENIZER_CONFIG = `${BASE_URL_PREFIX}-${PHI_4_MINI_MODEL_NAME}/${VERSION_TAG}/tokenizer_config.json`; + +export const PHI_4_MINI_4B = { + modelSource: PHI_4_MINI_4B_MODEL, + tokenizerSource: PHI_4_MINI_TOKENIZER, + tokenizerConfigSource: PHI_4_MINI_TOKENIZER_CONFIG, +}; + +export const PHI_4_MINI_4B_QUANTIZED = { + modelSource: PHI_4_MINI_4B_QUANTIZED_MODEL, + tokenizerSource: PHI_4_MINI_TOKENIZER, + tokenizerConfigSource: PHI_4_MINI_TOKENIZER, +}; // Classification -export const EFFICIENTNET_V2_S = - Platform.OS === 'ios' - ? 'https://huggingface.co/software-mansion/react-native-executorch-efficientnet-v2-s/resolve/v0.4.0/coreml/efficientnet_v2_s_coreml_all.pte' - : 'https://huggingface.co/software-mansion/react-native-executorch-efficientnet-v2-s/resolve/v0.4.0/xnnpack/efficientnet_v2_s_xnnpack.pte'; +const EFFICIENTNET_V2_S_MODEL_NAME = 'efficientnet-v2-s'; +export const EFFICIENTNET_V2_S = isIOS + ? `${BASE_URL_PREFIX}-${EFFICIENTNET_V2_S_MODEL_NAME}/${VERSION_TAG}/coreml/efficientnet_v2_s_coreml_all.pte` + : `${BASE_URL_PREFIX}-${EFFICIENTNET_V2_S_MODEL_NAME}/${VERSION_TAG}/xnnpack/efficientnet_v2_s_xnnpack.pte`; // Object detection -export const SSDLITE_320_MOBILENET_V3_LARGE = - 'https://huggingface.co/software-mansion/react-native-executorch-ssdlite320-mobilenet-v3-large/resolve/v0.4.0/ssdlite320-mobilenetv3-large.pte'; +const SSDLITE_320_MOBILENET_V3_LARGE_MODEL_NAME = + 'ssdlite320-mobilenet-v3-large'; +export const SSDLITE_320_MOBILENET_V3_LARGE = `${BASE_URL_PREFIX}-${SSDLITE_320_MOBILENET_V3_LARGE_MODEL_NAME}/${VERSION_TAG}/ssdlite320-mobilenetv3-large.pte`; // Style transfer -export const STYLE_TRANSFER_CANDY = - Platform.OS === 'ios' - ? 'https://huggingface.co/software-mansion/react-native-executorch-style-transfer-candy/resolve/v0.4.0/coreml/style_transfer_candy_coreml.pte' - : 'https://huggingface.co/software-mansion/react-native-executorch-style-transfer-candy/resolve/v0.4.0/xnnpack/style_transfer_candy_xnnpack.pte'; -export const STYLE_TRANSFER_MOSAIC = - Platform.OS === 'ios' - ? 'https://huggingface.co/software-mansion/react-native-executorch-style-transfer-mosaic/resolve/v0.4.0/coreml/style_transfer_mosaic_coreml.pte' - : 'https://huggingface.co/software-mansion/react-native-executorch-style-transfer-mosaic/resolve/v0.4.0/xnnpack/style_transfer_mosaic_xnnpack.pte'; -export const STYLE_TRANSFER_RAIN_PRINCESS = - Platform.OS === 'ios' - ? 'https://huggingface.co/software-mansion/react-native-executorch-style-transfer-rain-princess/resolve/v0.4.0/coreml/style_transfer_rain_princess_coreml.pte' - : 'https://huggingface.co/software-mansion/react-native-executorch-style-transfer-rain-princess/resolve/v0.4.0/xnnpack/style_transfer_rain_princess_xnnpack.pte'; -export const STYLE_TRANSFER_UDNIE = - Platform.OS === 'ios' - ? 'https://huggingface.co/software-mansion/react-native-executorch-style-transfer-udnie/resolve/v0.4.0/coreml/style_transfer_udnie_coreml.pte' - : 'https://huggingface.co/software-mansion/react-native-executorch-style-transfer-udnie/resolve/v0.4.0/xnnpack/style_transfer_udnie_xnnpack.pte'; +const STYLE_TRANSFER_CANDY_MODEL_NAME = 'style-transfer-candy'; +export const STYLE_TRANSFER_CANDY = isIOS + ? `${BASE_URL_PREFIX}-${STYLE_TRANSFER_CANDY_MODEL_NAME}/${VERSION_TAG}/coreml/style_transfer_candy_coreml.pte` + : `${BASE_URL_PREFIX}-${STYLE_TRANSFER_CANDY_MODEL_NAME}/${VERSION_TAG}/xnnpack/style_transfer_candy_xnnpack.pte`; + +const STYLE_TRANSFER_MOSAIC_MODEL_NAME = 'style-transfer-mosaic'; +export const STYLE_TRANSFER_MOSAIC = isIOS + ? `${BASE_URL_PREFIX}-${STYLE_TRANSFER_MOSAIC_MODEL_NAME}/${VERSION_TAG}/coreml/style_transfer_mosaic_coreml.pte` + : `${BASE_URL_PREFIX}-${STYLE_TRANSFER_MOSAIC_MODEL_NAME}/${VERSION_TAG}/xnnpack/style_transfer_mosaic_xnnpack.pte`; + +const STYLE_TRANSFER_RAIN_PRINCESS_MODEL_NAME = 'style-transfer-rain-princess'; +export const STYLE_TRANSFER_RAIN_PRINCESS = isIOS + ? `${BASE_URL_PREFIX}-${STYLE_TRANSFER_RAIN_PRINCESS_MODEL_NAME}/${VERSION_TAG}/coreml/style_transfer_rain_princess_coreml.pte` + : `${BASE_URL_PREFIX}-${STYLE_TRANSFER_RAIN_PRINCESS_MODEL_NAME}/${VERSION_TAG}/xnnpack/style_transfer_rain_princess_xnnpack.pte`; + +const STYLE_TRANSFER_UDNIE_MODEL_NAME = 'style-transfer-udnie'; +export const STYLE_TRANSFER_UDNIE = isIOS + ? `${BASE_URL_PREFIX}-${STYLE_TRANSFER_UDNIE_MODEL_NAME}/${VERSION_TAG}/coreml/style_transfer_udnie_coreml.pte` + : `${BASE_URL_PREFIX}-${STYLE_TRANSFER_UDNIE_MODEL_NAME}/${VERSION_TAG}/xnnpack/style_transfer_udnie_xnnpack.pte`; // S2T -export const MOONSHINE_TINY_DECODER = - 'https://huggingface.co/software-mansion/react-native-executorch-moonshine-tiny/resolve/v0.4.0/xnnpack/moonshine_tiny_xnnpack_decoder.pte'; -export const MOONSHINE_TINY_ENCODER = - 'https://huggingface.co/software-mansion/react-native-executorch-moonshine-tiny/resolve/v0.4.0/xnnpack/moonshine_tiny_xnnpack_encoder.pte'; -export const MOONSHINE_TOKENIZER = - 'https://huggingface.co/software-mansion/react-native-executorch-moonshine-tiny/resolve/v0.4.0/moonshine_tiny_tokenizer.json'; -export const WHISPER_TOKENIZER = - 'https://huggingface.co/software-mansion/react-native-executorch-whisper-tiny.en/resolve/v0.4.0/whisper_tokenizer.json'; -export const WHISPER_TINY_DECODER = - 'https://huggingface.co/software-mansion/react-native-executorch-whisper-tiny.en/resolve/v0.4.0/xnnpack/whisper_tiny_en_xnnpack_decoder.pte'; -export const WHISPER_TINY_ENCODER = - 'https://huggingface.co/software-mansion/react-native-executorch-whisper-tiny.en/resolve/v0.4.0/xnnpack/whisper_tiny_en_xnnpack_encoder.pte'; -export const WHISPER_TINY_MULTILINGUAL_ENCODER = - 'https://huggingface.co/software-mansion/react-native-executorch-whisper-tiny/resolve/v0.4.0/xnnpack/xnnpack_whisper_encoder.pte'; -export const WHISPER_TINY_MULTILINGUAL_DECODER = - 'https://huggingface.co/software-mansion/react-native-executorch-whisper-tiny/resolve/v0.4.0/xnnpack/xnnpack_whisper_decoder.pte'; -export const WHISPER_TINY_MULTILINGUAL_TOKENIZER = - 'https://huggingface.co/software-mansion/react-native-executorch-whisper-tiny/resolve/v0.4.0/tokenizer.json'; +const MOONSHINE_TINY_MODEL_NAME = 'moonshine-tiny'; +const MOONSHINE_TINY_ENCODER = `${BASE_URL_PREFIX}-${MOONSHINE_TINY_MODEL_NAME}/${VERSION_TAG}/xnnpack/moonshine_tiny_xnnpack_encoder.pte`; +const MOONSHINE_TINY_DECODER = `${BASE_URL_PREFIX}-${MOONSHINE_TINY_MODEL_NAME}/${VERSION_TAG}/xnnpack/moonshine_tiny_xnnpack_decoder.pte`; +const MOONSHINE_TOKENIZER = `${BASE_URL_PREFIX}-${MOONSHINE_TINY_MODEL_NAME}/${VERSION_TAG}/moonshine_tiny_tokenizer.json`; + +export const MOONSHINE_TINY = { + encoder: MOONSHINE_TINY_ENCODER, + decoder: MOONSHINE_TINY_DECODER, + tokenizer: MOONSHINE_TOKENIZER, +}; + +const WHISPER_TINY_MODEL_NAME = 'whisper-tiny.en'; +const WHISPER_TINY_ENCODER = `${BASE_URL_PREFIX}-${WHISPER_TINY_MODEL_NAME}/${VERSION_TAG}/xnnpack/whisper_tiny_en_xnnpack_encoder.pte`; +const WHISPER_TINY_DECODER = `${BASE_URL_PREFIX}-${WHISPER_TINY_MODEL_NAME}/${VERSION_TAG}/xnnpack/whisper_tiny_en_xnnpack_decoder.pte`; +const WHISPER_TOKENIZER = `${BASE_URL_PREFIX}-${WHISPER_TINY_MODEL_NAME}/${VERSION_TAG}/whisper_tokenizer.json`; + +export const WHISPER_TINY = { + encoder: WHISPER_TINY_ENCODER, + decoder: WHISPER_TINY_DECODER, + tokenizer: WHISPER_TOKENIZER, +}; + +const WHISPER_TINY_MULTILINGUAL_MODEL_NAME = 'whisper-tiny'; +const WHISPER_TINY_MULTILINGUAL_ENCODER = `${BASE_URL_PREFIX}-${WHISPER_TINY_MULTILINGUAL_MODEL_NAME}/${VERSION_TAG}/xnnpack/xnnpack_whisper_encoder.pte`; +const WHISPER_TINY_MULTILINGUAL_DECODER = `${BASE_URL_PREFIX}-${WHISPER_TINY_MULTILINGUAL_MODEL_NAME}/${VERSION_TAG}/xnnpack/xnnpack_whisper_decoder.pte`; +const WHISPER_TINY_MULTILINGUAL_TOKENIZER = `${BASE_URL_PREFIX}-${WHISPER_TINY_MULTILINGUAL_MODEL_NAME}/${VERSION_TAG}/tokenizer.json`; + +export const WHISPER_TINY_MULTILINGUAL = { + encoder: WHISPER_TINY_MULTILINGUAL_ENCODER, + decoder: WHISPER_TINY_MULTILINGUAL_DECODER, + tokenizer: WHISPER_TINY_MULTILINGUAL_TOKENIZER, +}; // OCR -export const DETECTOR_CRAFT_1280 = - 'https://huggingface.co/software-mansion/react-native-executorch-detector-craft/resolve/v0.4.0/xnnpack/xnnpack_craft_1280.pte'; -export const DETECTOR_CRAFT_800 = - 'https://huggingface.co/software-mansion/react-native-executorch-detector-craft/resolve/v0.4.0/xnnpack/xnnpack_craft_800.pte'; -export const DETECTOR_CRAFT_320 = - 'https://huggingface.co/software-mansion/react-native-executorch-detector-craft/resolve/v0.4.0/xnnpack/xnnpack_craft_320.pte'; +const DETECTOR_CRAFT_MODEL_NAME = 'detector-craft'; +export const DETECTOR_CRAFT_1280 = `${BASE_URL_PREFIX}-${DETECTOR_CRAFT_MODEL_NAME}/${VERSION_TAG}/xnnpack/xnnpack_craft_1280.pte`; +export const DETECTOR_CRAFT_800 = `${BASE_URL_PREFIX}-${DETECTOR_CRAFT_MODEL_NAME}/${VERSION_TAG}/xnnpack/xnnpack_craft_800.pte`; +export const DETECTOR_CRAFT_320 = `${BASE_URL_PREFIX}-${DETECTOR_CRAFT_MODEL_NAME}/${VERSION_TAG}/xnnpack/xnnpack_craft_320.pte`; // Image segmentation -export const DEEPLAB_V3_RESNET50 = - 'https://huggingface.co/software-mansion/react-native-executorch-deeplab-v3/resolve/v0.4.0/xnnpack/deeplabV3_xnnpack_fp32.pte'; +const DEEPLAB_V3_MODEL_NAME = 'deeplab-v3'; +export const DEEPLAB_V3_RESNET50 = `${BASE_URL_PREFIX}-${DEEPLAB_V3_MODEL_NAME}/${VERSION_TAG}/xnnpack/deeplabV3_xnnpack_fp32.pte`; // Image Embeddings -export const CLIP_VIT_BASE_PATCH_32_IMAGE_ENCODER_MODEL = - 'https://huggingface.co/software-mansion/react-native-executorch-clip-vit-base-patch32-image-encoder/resolve/v0.5.0/clip-vit-base-patch32-image-encoder-float32.pte'; +const CLIP_VIT_BASE_PATCH_32_IMAGE_ENCODER_MODEL_NAME = + 'clip-vit-base-patch32-image-encoder'; +export const CLIP_VIT_BASE_PATCH_32_IMAGE_ENCODER_MODEL = `${BASE_URL_PREFIX}-${CLIP_VIT_BASE_PATCH_32_IMAGE_ENCODER_MODEL_NAME}/${NEXT_DEV_VERSION_TAG}/clip-vit-base-patch32-image-encoder-float32.pte`; // Text Embeddings -export const ALL_MINILM_L6_V2 = - 'https://huggingface.co/software-mansion/react-native-executorch-all-MiniLM-L6-v2/resolve/v0.4.0/all-MiniLM-L6-v2_xnnpack.pte'; -export const ALL_MINILM_L6_V2_TOKENIZER = - 'https://huggingface.co/software-mansion/react-native-executorch-all-MiniLM-L6-v2/resolve/v0.4.0/tokenizer.json'; - -export const ALL_MPNET_BASE_V2 = - 'https://huggingface.co/software-mansion/react-native-executorch-all-mpnet-base-v2/resolve/v0.4.0/all-mpnet-base-v2_xnnpack.pte'; -export const ALL_MPNET_BASE_V2_TOKENIZER = - 'https://huggingface.co/software-mansion/react-native-executorch-all-mpnet-base-v2/resolve/v0.4.0/tokenizer.json'; - -export const MULTI_QA_MINILM_L6_COS_V1 = - 'https://huggingface.co/software-mansion/react-native-executorch-multi-qa-MiniLM-L6-cos-v1/resolve/v0.4.0/multi-qa-MiniLM-L6-cos-v1_xnnpack.pte'; -export const MULTI_QA_MINILM_L6_COS_V1_TOKENIZER = - 'https://huggingface.co/software-mansion/react-native-executorch-multi-qa-MiniLM-L6-cos-v1/resolve/v0.4.0/tokenizer.json'; - -export const MULTI_QA_MPNET_BASE_DOT_V1 = - 'https://huggingface.co/software-mansion/react-native-executorch-multi-qa-mpnet-base-dot-v1/resolve/v0.4.0/multi-qa-mpnet-base-dot-v1_xnnpack.pte'; -export const MULTI_QA_MPNET_BASE_DOT_V1_TOKENIZER = - 'https://huggingface.co/software-mansion/react-native-executorch-multi-qa-mpnet-base-dot-v1/resolve/v0.4.0/tokenizer.json'; - -export const CLIP_VIT_BASE_PATCH_32_TEXT_ENCODER_MODEL = - 'https://huggingface.co/software-mansion/react-native-executorch-clip-vit-base-patch32-text-encoder/resolve/v0.5.0/clip-vit-base-patch32-text-encoder-float32.pte'; -export const CLIP_VIT_BASE_PATCH_32_TEXT_ENCODER_TOKENIZER = - 'https://huggingface.co/software-mansion/react-native-executorch-clip-vit-base-patch32-text-encoder/resolve/v0.5.0/tokenizer.json'; +const ALL_MINILM_L6_V2_MODEL_NAME = 'all-MiniLM-L6-v2'; +const ALL_MINILM_L6_V2_MODEL = `${BASE_URL_PREFIX}-${ALL_MINILM_L6_V2_MODEL_NAME}/${VERSION_TAG}/all-MiniLM-L6-v2_xnnpack.pte`; +const ALL_MINILM_L6_V2_TOKENIZER = `${BASE_URL_PREFIX}-${ALL_MINILM_L6_V2_MODEL_NAME}/${VERSION_TAG}/tokenizer.json`; + +export const ALL_MINILM_L6_V2 = { + modelSource: ALL_MINILM_L6_V2_MODEL, + tokenizerSource: ALL_MINILM_L6_V2_TOKENIZER, + meanPooling: false, +}; + +const ALL_MPNET_BASE_V2_MODEL_NAME = 'all-mpnet-base-v2'; +const ALL_MPNET_BASE_V2_MODEL = `${BASE_URL_PREFIX}-${ALL_MPNET_BASE_V2_MODEL_NAME}/${VERSION_TAG}/all-mpnet-base-v2_xnnpack.pte`; +const ALL_MPNET_BASE_V2_TOKENIZER = `${BASE_URL_PREFIX}-${ALL_MPNET_BASE_V2_MODEL_NAME}/${VERSION_TAG}/tokenizer.json`; + +export const ALL_MPNET_BASE_V2 = { + modelSource: ALL_MPNET_BASE_V2_MODEL, + tokenizerSource: ALL_MPNET_BASE_V2_TOKENIZER, + meanPooling: false, +}; + +const MULTI_QA_MINILM_L6_COS_V1_MODEL_NAME = 'multi-qa-MiniLM-L6-cos-v1'; +const MULTI_QA_MINILM_L6_COS_V1_MODEL = `${BASE_URL_PREFIX}-${MULTI_QA_MINILM_L6_COS_V1_MODEL_NAME}/${VERSION_TAG}/multi-qa-MiniLM-L6-cos-v1_xnnpack.pte`; +const MULTI_QA_MINILM_L6_COS_V1_TOKENIZER = `${BASE_URL_PREFIX}-${MULTI_QA_MINILM_L6_COS_V1_MODEL_NAME}/${VERSION_TAG}/tokenizer.json`; + +export const MULTI_QA_MINILM_L6_COS_V1 = { + modelSource: MULTI_QA_MINILM_L6_COS_V1_MODEL, + tokenizerSource: MULTI_QA_MINILM_L6_COS_V1_TOKENIZER, + meanPooling: false, +}; + +const MULTI_QA_MPNET_BASE_DOT_V1_MODEL_NAME = 'multi-qa-mpnet-base-dot-v1'; +const MULTI_QA_MPNET_BASE_DOT_V1_MODEL = `${BASE_URL_PREFIX}-${MULTI_QA_MPNET_BASE_DOT_V1_MODEL_NAME}/${VERSION_TAG}/multi-qa-mpnet-base-dot-v1_xnnpack.pte`; +const MULTI_QA_MPNET_BASE_DOT_V1_TOKENIZER = `${BASE_URL_PREFIX}-${MULTI_QA_MPNET_BASE_DOT_V1_MODEL_NAME}/${VERSION_TAG}/tokenizer.json`; + +export const MULTI_QA_MPNET_BASE_DOT_V1 = { + modelSource: MULTI_QA_MPNET_BASE_DOT_V1_MODEL, + tokenizerSource: MULTI_QA_MPNET_BASE_DOT_V1_TOKENIZER, + meanPooling: false, +}; + +const CLIP_VIT_BASE_PATCH_32_TEXT_ENCODER_MODEL_NAME = + 'clip-vit-base-patch32-text-encoder'; +const CLIP_VIT_BASE_PATCH_32_TEXT_ENCODER_MODEL = `${BASE_URL_PREFIX}-${CLIP_VIT_BASE_PATCH_32_TEXT_ENCODER_MODEL_NAME}/${NEXT_DEV_VERSION_TAG}/clip-vit-base-patch32-text-encoder-float32.pte`; +const CLIP_VIT_BASE_PATCH_32_TEXT_ENCODER_TOKENIZER = `${BASE_URL_PREFIX}-${CLIP_VIT_BASE_PATCH_32_TEXT_ENCODER_MODEL_NAME}/${NEXT_DEV_VERSION_TAG}/tokenizer.json`; export const CLIP_VIT_BASE_PATCH_32_TEXT_ENCODER = { modelSource: CLIP_VIT_BASE_PATCH_32_TEXT_ENCODER_MODEL, diff --git a/packages/react-native-executorch/src/constants/sttDefaults.ts b/packages/react-native-executorch/src/constants/sttDefaults.ts index 647c9a1468..48613992a4 100644 --- a/packages/react-native-executorch/src/constants/sttDefaults.ts +++ b/packages/react-native-executorch/src/constants/sttDefaults.ts @@ -1,13 +1,7 @@ import { - MOONSHINE_TINY_ENCODER, - MOONSHINE_TINY_DECODER, - MOONSHINE_TOKENIZER, - WHISPER_TINY_ENCODER, - WHISPER_TINY_DECODER, - WHISPER_TOKENIZER, - WHISPER_TINY_MULTILINGUAL_ENCODER, - WHISPER_TINY_MULTILINGUAL_DECODER, - WHISPER_TINY_MULTILINGUAL_TOKENIZER, + MOONSHINE_TINY, + WHISPER_TINY, + WHISPER_TINY_MULTILINGUAL, } from './modelUrls'; import { AvailableModels, ModelConfig } from '../types/stt'; @@ -17,11 +11,11 @@ export const HAMMING_DIST_THRESHOLD = 1; const whisperTinyModelConfig = { sources: { - encoder: WHISPER_TINY_ENCODER, - decoder: WHISPER_TINY_DECODER, + encoder: WHISPER_TINY.encoder, + decoder: WHISPER_TINY.decoder, }, tokenizer: { - source: WHISPER_TOKENIZER, + source: WHISPER_TINY.tokenizer, bos: 50257, // FIXME: this is a placeholder and needs to be changed eos: 50256, // FIXME: this is a placeholder and needs to be changed }, @@ -30,11 +24,11 @@ const whisperTinyModelConfig = { const moonshineTinyModelConfig = { sources: { - encoder: MOONSHINE_TINY_ENCODER, - decoder: MOONSHINE_TINY_DECODER, + encoder: MOONSHINE_TINY.encoder, + decoder: MOONSHINE_TINY.decoder, }, tokenizer: { - source: MOONSHINE_TOKENIZER, + source: MOONSHINE_TINY.tokenizer, bos: 1, // FIXME: this is a placeholder and needs to be changed eos: 2, // FIXME: this is a placeholder and needs to be changed }, @@ -43,11 +37,11 @@ const moonshineTinyModelConfig = { const whisperTinyMultilingualModelConfig = { sources: { - encoder: WHISPER_TINY_MULTILINGUAL_ENCODER, - decoder: WHISPER_TINY_MULTILINGUAL_DECODER, + encoder: WHISPER_TINY_MULTILINGUAL.encoder, + decoder: WHISPER_TINY_MULTILINGUAL.decoder, }, tokenizer: { - source: WHISPER_TINY_MULTILINGUAL_TOKENIZER, + source: WHISPER_TINY_MULTILINGUAL.tokenizer, bos: 50258, // FIXME: this is a placeholder and needs to be changed eos: 50257, // FIXME: this is a placeholder and needs to be changed },