react-native-executorch-spec / config.schema.json
nklockiewicz's picture
Update config.schema.json
dd0fe26 verified
Raw
History Blame Contribute Delete
5.24 kB
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://huggingface.co/software-mansion/react-native-executorch-spec/resolve/main/config.schema.json",
"title": "react-native-executorch model config",
"description": "Per-backend config.json published alongside .pte files in software-mansion/react-native-executorch-* repositories. See https://github.com/software-mansion/react-native-executorch/blob/main/MODEL_SPEC.md for the full convention.",
"type": "object",
"required": [
"$schema",
"model",
"family",
"capabilities",
"backend",
"license",
"variants"
],
"additionalProperties": false,
"properties": {
"$schema": {
"type": "string",
"format": "uri"
},
"model": {
"type": "string",
"pattern": "^[a-z0-9_]+$",
"description": "Model token used in file names; lowercase, underscore-separated."
},
"family": {
"type": "string",
"pattern": "^[a-z0-9_]+$",
"description": "Loose grouping (llama, qwen, whisper, yolo, style_transfer, ...)."
},
"size": {
"type": "string",
"pattern": "^[a-z0-9_]+$",
"description": "Optional size token. Omit when the model has no size variants."
},
"capabilities": {
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"enum": [
"text-generation",
"vision",
"speech-to-text",
"text-to-speech",
"classification",
"object-detection",
"semantic-segmentation",
"instance-segmentation",
"style-transfer",
"text-embedding",
"image-embedding",
"image-generation",
"voice-activity-detection",
"text-detection",
"text-recognition"
]
}
},
"backend": {
"enum": ["xnnpack", "coreml", "vulkan", "qnn", "mlx"]
},
"license": {
"type": "string",
"minLength": 1
},
"tokenizer": {
"type": "string",
"description": "Relative path to tokenizer.json, when applicable."
},
"tokenizer_config": {
"type": "string",
"description": "Relative path to tokenizer_config.json, when applicable."
},
"variants": {
"type": "array",
"minItems": 1,
"items": { "$ref": "#/$defs/variant" }
}
},
"$defs": {
"variant": {
"type": "object",
"required": ["precision", "quantized", "default"],
"additionalProperties": false,
"properties": {
"file": {
"type": ["string", "null"],
"description": "Single-file variants set this. Multi-component variants set this to null and populate `components`."
},
"components": {
"type": "object",
"minProperties": 1,
"additionalProperties": { "type": "string" },
"description": "For multi-component models (e.g. encoder/decoder, scheduler/text_encoder/unet/vae)."
},
"precision": {
"type": "string",
"pattern": "^[a-z0-9_]+$",
"description": "Precision token; see precisions.json for the authoritative quantized/non-quantized partition."
},
"quantized": { "type": "boolean" },
"default": {
"type": "boolean",
"description": "Exactly one variant per (quantized: true) group and one per (quantized: false) group must be default: true."
},
"size_bytes": {
"type": "integer",
"minimum": 0
},
"methods": {
"type": "object",
"minProperties": 1,
"additionalProperties": { "$ref": "#/$defs/methodSignature" }
}
},
"oneOf": [
{
"required": ["file"],
"properties": { "file": { "type": "string", "minLength": 1 } }
},
{ "required": ["components"] }
]
},
"methodSignature": {
"type": "object",
"required": ["inputs", "outputs"],
"additionalProperties": false,
"properties": {
"inputs": {
"type": "array",
"items": { "$ref": "#/$defs/tensorSpec" }
},
"outputs": {
"type": "array",
"items": { "$ref": "#/$defs/tensorSpec" }
}
}
},
"tensorSpec": {
"type": "object",
"required": ["shape", "dtype"],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Optional. Executorch .pte files do not carry user-meaningful tensor names; introspected configs use positional `input_N`/`output_N` keys via the array order instead and omit `name`. Set this when a hand-curated semantic name is available."
},
"shape": {
"type": "array",
"items": { "type": "integer" },
"description": "Use -1 for dynamic dimensions."
},
"dtype": {
"enum": [
"bool",
"int8",
"int16",
"int32",
"int64",
"uint8",
"float16",
"float32",
"float64",
"bfloat16"
]
}
}
}
}
}