alexwengg's picture
add fp16 vision (default), ANE-layout fp16 vision, fp16 heads for all buckets; manifest variants + compute-unit guidance
448732d verified
Raw History Blame Contribute Delete
6.77 kB
{
"model": "clef-vision-0.8b",
"base_model": "Qwen/Qwen3.5-0.8B",
"teacher": "Cloudflare/clef-flash",
"contract": "Jev/SystemOne typed decisions over text + images: noul / choice / score, one logit per option",
"packages": {
"vision": {
"dir": "Vision_P784",
"file": "VisionTower_fp16.mlpackage",
"patches": 784,
"tokens": 196,
"inputs": [
"patches [784,1536]",
"pos_embeds [784,768]",
"cos [784,64]",
"sin [784,64]",
"mask [1,1,784,784]"
],
"output": "tokens [196,1024]",
"precision": "fp16 (default); see variants",
"pos_embed": {
"file": "Vision_P784/pos_embed.f32",
"shape": [
2304,
768
],
"dtype": "float32"
},
"variants": {
"fp16": {
"file": "VisionTower_fp16.mlpackage",
"layout": "rows",
"precision": "fp16",
"note": "default: GPU, ~11 ms/image on M5 Pro; e2e prob drift 3.4e-3, argmax 100%"
},
"fp32": {
"file": "VisionTower_fp32.mlpackage",
"layout": "rows",
"precision": "fp32",
"note": "exact (7e-4 vs torch), GPU ~35 ms/image"
},
"ane_fp16": {
"file": "VisionTowerANE_fp16.mlpackage",
"layout": "channels_first",
"precision": "fp16",
"inputs": [
"patches [1,1536,1,784]",
"pos_embeds [1,768,1,784]",
"cos [1,64,1,784]",
"sin [1,64,1,784]",
"mask [1,784(k),1,784(q)]"
],
"output": "tokens [1,1024,1,196]",
"note": "runs on the Neural Engine only with computeUnits=cpuAndNeuralEngine (ALL picks the GPU); ~24 ms/image, e2e prob drift 1.6e-2, argmax 100%"
}
},
"default_variant": "fp16"
},
"lm": [
{
"dir": "LM_L512",
"file": "LMRows_fp16.mlpackage",
"length": 512,
"inputs": [
"hidden [1,512,1024]",
"cos [512,64]",
"sin [512,64]"
],
"output": "states [1,512,1024]"
},
{
"dir": "LM_L1024",
"file": "LMRows_fp16.mlpackage",
"length": 1024,
"inputs": [
"hidden [1,1024,1024]",
"cos [1024,64]",
"sin [1024,64]"
],
"output": "states [1,1024,1024]"
},
{
"dir": "LM_L2048",
"file": "LMRows_fp16.mlpackage",
"length": 2048,
"inputs": [
"hidden [1,2048,1024]",
"cos [2048,64]",
"sin [2048,64]"
],
"output": "states [1,2048,1024]"
}
],
"head": [
{
"dir": "Head_L512_Q16_O64",
"file": "Head_fp32.mlpackage",
"length": 512,
"max_questions": 16,
"max_options": 64,
"variants": {
"fp32": {
"file": "Head_fp32.mlpackage",
"note": "GPU ~14 ms"
},
"fp16": {
"file": "Head_fp16.mlpackage",
"note": "ANE-eligible under ALL (~3.6 ms, 6 W ANE); e2e prob drift 3.6e-3, argmax 100%"
}
},
"default_variant": "fp16"
},
{
"dir": "Head_L1024_Q16_O64",
"file": "Head_fp32.mlpackage",
"length": 1024,
"max_questions": 16,
"max_options": 64,
"variants": {
"fp32": {
"file": "Head_fp32.mlpackage",
"note": "GPU ~14 ms"
},
"fp16": {
"file": "Head_fp16.mlpackage",
"note": "ANE-eligible under ALL (~3.6 ms, 6 W ANE); e2e prob drift 3.6e-3, argmax 100%"
}
},
"default_variant": "fp16"
},
{
"dir": "Head_L2048_Q16_O64",
"file": "Head_fp32.mlpackage",
"length": 2048,
"max_questions": 16,
"max_options": 64,
"variants": {
"fp32": {
"file": "Head_fp32.mlpackage",
"note": "GPU ~14 ms"
},
"fp16": {
"file": "Head_fp16.mlpackage",
"note": "ANE-eligible under ALL (~3.6 ms, 6 W ANE); e2e prob drift 3.6e-3, argmax 100%"
}
},
"default_variant": "fp16"
}
]
},
"embeddings": {
"file": "embeddings.f16",
"shape": [
248320,
1024
],
"dtype": "float16",
"tied_output_embeddings": true
},
"tokenizer": {
"file": "tokenizer.json",
"pad_token_id": 248044,
"special_tokens": {
"im_start": "<|im_start|>",
"im_end": "<|im_end|>",
"vision_start": "<|vision_start|>",
"vision_end": "<|vision_end|>",
"image_pad": "<|image_pad|>"
}
},
"image_token_id": 248056,
"vision_start_token_id": 248053,
"vision_end_token_id": 248054,
"image_processor": {
"resample": "bicubic (torchvision, antialias)",
"rescale_factor": 0.00392156862745098,
"image_mean": [
0.5,
0.5,
0.5
],
"image_std": [
0.5,
0.5,
0.5
],
"patch_size": 16,
"merge_size": 2,
"temporal_patch_size": 2,
"min_pixels": 16384,
"max_pixels": 200704,
"note": "min/max pixels are the training-time cap, not the processor defaults"
},
"vision_config": {
"deepstack_visual_indexes": [],
"depth": 12,
"dtype": "bfloat16",
"hidden_act": "gelu_pytorch_tanh",
"hidden_size": 768,
"in_channels": 3,
"initializer_range": 0.02,
"intermediate_size": 3072,
"model_type": "qwen3_5_vision",
"num_heads": 12,
"num_position_embeddings": 2304,
"out_hidden_size": 1024,
"patch_size": 16,
"rope_parameters": {
"rope_theta": 10000.0,
"rope_type": "axial"
},
"spatial_merge_size": 2,
"temporal_patch_size": 2
},
"text_rope": {
"mrope_interleaved": true,
"mrope_section": [
11,
11,
10
],
"partial_rotary_factor": 0.25,
"rope_theta": 10000000,
"rope_type": "default"
},
"head_config": {
"hidden_size": 1024,
"width": 1024,
"routing_layers": 2,
"layers": 2,
"heads": 16,
"feedforward": 4096
},
"record_format": {
"system_prompt": "Read the complete state and schema. Decide every field jointly. Each answer must be exactly one of that field's allowed options.",
"source": "Cloudflare/clef joint_schema_model.py encode_record (Apache-2.0)"
},
"text_config_summary": {
"hidden_size": 1024,
"head_dim": 256,
"num_hidden_layers": 24,
"vocab_size": 248320,
"rms_norm_eps": 1e-06
},
"compute_units_guidance": {
"vision": "cpuAndGPU (fp16 rows) or cpuAndNeuralEngine (ane_fp16)",
"lm": "cpuAndGPU (Qwen3.5 does not run on the ANE)",
"head": "all (fp16 head lands on the ANE)"
}
}