diff --git a/benchmarks/metal_m1ultra_2026-07-06.csv b/benchmarks/metal_m1ultra_2026-07-06.csv
new file mode 100644
index 00000000..5b4d2609
--- /dev/null
+++ b/benchmarks/metal_m1ultra_2026-07-06.csv
@@ -0,0 +1,170 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt,prompt_target_len
+apertus-8b-instruct-2509-4bit,./models/apertus-8b-instruct-2509-4bit/,66,40,300.72,219.47,489.84,81.66,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+aya-expanse-8b-4bit,./models/aya-expanse-8b-4bit/,8,100,81.23,98.48,915.31,109.25,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+aya-vision-8b,./models/aya-vision-8b/,564,45,822.66,685.58,438.82,102.55,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+baichuan-m1-14b-4bit,./models/baichuan-m1-14b-4bit/,9,7,162.77,55.29,185.04,37.83,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+bitnet-b1.58-2b-4t-4bit,./models/bitnet-b1.58-2b-4t-4bit/,14,33,58.76,238.26,215.18,153.36,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+bitnet-b1.58-2b-4t,./models/bitnet-b1.58-2b-4t/,14,33,59.93,233.60,233.18,141.52,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+bunny-llama3-8b-4bit,./models/bunny-llama3-8b-4bit/,18,40,85.09,211.54,390.19,102.51,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+command-r7b-4bit,./models/command-r7b-4bit/,8,100,92.38,86.60,883.08,113.24,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+deepseek-coder-1.3b-4bit,./models/deepseek-coder-1.3b-4bit/,76,100,55.08,1379.78,609.61,164.04,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+deepseek-ocr-2-4bit,./models/deepseek-ocr-2-4bit/,9,20,46.32,194.30,61.35,325.98,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+deepseek-ocr-4bit,./models/deepseek-ocr-4bit/,9,14,42.73,210.63,44.67,313.40,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+deepseek-r1-distill-7b-4bit,./models/deepseek-r1-distill-7b-4bit/,13,100,74.76,173.90,890.93,112.24,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+deepseek-v2-lite-4bit,./models/deepseek-v2-lite-4bit/,15,21,59.34,252.80,194.60,107.91,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+deepseek-v3-4bit,./models/deepseek-v3-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",,FAIL:bench
+deepseek-vl2-small-4bit,./models/deepseek-vl2-small-4bit/,74,20,164.22,450.61,171.88,116.36,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+diffusiongemma-26b-a4b-it-4bit,./models/diffusiongemma-26b-a4b-it-4bit/,20,27,110.77,180.55,404.20,66.80,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+docling-layout-heron-mlx-bf16,./models/docling-layout-heron-mlx-bf16/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",,FAIL:bench
+dots.llm1.inst-mixed-4-6bit,./models/dots.llm1.inst-mixed-4-6bit/,18,39,337.73,53.30,1377.10,28.32,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+dots.ocr-4bit,./models/dots.ocr-4bit/,10,0,50.06,199.75,3.78,0.00,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+ernie-4.5-0.3b-4bit,./models/ernie-4.5-0.3b-4bit/,36,100,32.22,1117.19,183.82,544.02,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+ernie-4.5-vl-28b-a3b-thinking-4bit,./models/ernie-4.5-vl-28b-a3b-thinking-4bit/,43,100,244.20,176.08,1109.97,90.09,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+exaone-3.5-2.4b-4bit,./models/exaone-3.5-2.4b-4bit/,41,100,54.76,748.71,487.30,205.21,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+exaone4-1.2b-4bit,./models/exaone4-1.2b-4bit/,19,18,38.32,495.77,76.20,236.22,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+falcon-h1-tiny-90m-instruct-4bit,./models/falcon-h1-tiny-90m-instruct-4bit/,17,30,51.45,330.44,103.28,290.47,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+falcon-mamba-7b-4bit,./models/falcon-mamba-7b-4bit/,16,2,137.20,116.62,43.80,45.67,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+fastvlm-0.5b-bf16,./models/fastvlm-0.5b-bf16/,26,100,27.97,929.55,324.74,307.94,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma-2b-4bit,./models/gemma-2b-4bit/,16,49,40.99,390.34,255.32,191.92,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma-3-4b-it-4bit,./models/gemma-3-4b-it-4bit/,16,86,73.87,216.61,725.31,118.57,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma-4-12b-it-4bit,./models/gemma-4-12b-it-4bit/,20,27,182.86,109.37,771.52,35.00,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma-4-12b-it-assistant-4bit,./models/gemma-4-12b-it-assistant-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",,FAIL:bench
+gemma-4-26b-a4b-it-4bit,./models/gemma-4-26b-a4b-it-4bit/,20,26,107.02,186.88,319.56,81.36,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma-4-26b-a4b-it-qat-4bit,./models/gemma-4-26b-a4b-it-qat-4bit/,20,26,121.71,164.32,327.21,79.46,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma-4-31b-4bit,./models/gemma-4-31b-4bit/,8,100,348.60,22.95,4904.41,20.39,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma-4-31b-it-4bit,./models/gemma-4-31b-it-4bit/,20,26,429.75,46.54,1334.38,19.48,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma-4-31b-it-assistant-bf16,./models/gemma-4-31b-it-assistant-bf16/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",,FAIL:bench
+gemma-4-31b-it-nvfp4,./models/gemma-4-31b-it-nvfp4/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",,FAIL:bench
+gemma-4-31b-it-qat-4bit,./models/gemma-4-31b-it-qat-4bit/,20,26,441.54,45.30,1666.59,15.60,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma-4-e2b-it-4bit,./models/gemma-4-e2b-it-4bit/,20,83,76.15,262.64,641.71,129.34,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma-4-e2b-it-8bit,./models/gemma-4-e2b-it-8bit/,20,79,83.57,239.31,818.95,96.46,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma-4-e2b-it-qat-4bit,./models/gemma-4-e2b-it-qat-4bit/,16,39,83.42,191.79,379.47,102.77,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma-4-e4b-it-4bit,./models/gemma-4-e4b-it-4bit/,20,100,111.93,178.68,1143.37,87.46,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma-4-e4b-it-8bit,./models/gemma-4-e4b-it-8bit/,20,60,125.79,159.00,955.54,62.79,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma-4-e4b-it-qat-4bit,./models/gemma-4-e4b-it-qat-4bit/,16,33,123.81,129.23,496.84,66.42,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma2-2b-4bit,./models/gemma2-2b-4bit/,16,18,46.33,345.38,102.91,174.91,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma3-1b-4bit,./models/gemma3-1b-4bit/,16,34,32.38,494.15,150.04,226.61,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma3-4b-4bit,./models/gemma3-4b-4bit/,16,86,80.22,199.44,726.17,118.43,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma3n-e2b-4bit,./models/gemma3n-e2b-4bit/,16,72,71.84,222.73,804.72,89.47,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma3n-e4b-4bit,./models/gemma3n-e4b-4bit/,16,74,97.13,164.73,1086.02,68.14,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+glm-5-4bit,./models/glm-5-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",,FAIL:bench
+glm-5.1-4bit,./models/glm-5.1-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",,FAIL:bench
+glm-ocr-4bit,./models/glm-ocr-4bit/,17,7,32.98,515.44,26.72,261.93,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+glm4-flash-4bit,./models/glm4-flash-4bit/,12,18,95.91,125.11,367.63,48.96,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gpt-oss-120b-4bit,./models/gpt-oss-120b-4bit/,73,82,445.20,163.97,1364.76,60.08,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gpt-oss-20b-mxfp4,./models/gpt-oss-20b-mxfp4/,73,100,256.23,284.90,1102.33,90.72,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+granite-3.3-2b-instruct-4bit,./models/granite-3.3-2b-instruct-4bit/,64,31,54.87,1166.35,163.85,189.20,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+granite-4.0-3b-vision-4bit,./models/granite-4.0-3b-vision-4bit/,38,26,112.91,336.54,199.89,130.07,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+granite-4.0-h-350m-4bit,./models/granite-4.0-h-350m-4bit/,37,36,66.30,558.06,138.81,259.36,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+granite-4.0-h-tiny-4bit,./models/granite-4.0-h-tiny-4bit/,15,42,93.26,160.83,392.19,107.09,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+granite-4.1-3b-4bit,./models/granite-4.1-3b-4bit/,15,7,69.03,217.29,53.73,130.28,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+granite-4.1-8b-4bit,./models/granite-4.1-8b-4bit/,15,1,126.73,118.36,35.13,28.46,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+granite-speech-4.1-2b-nar-mlx,./models/granite-speech-4.1-2b-nar-mlx/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",,FAIL:bench
+granite-vision-3.2-2b-4bit,./models/granite-vision-3.2-2b-4bit/,55,31,84.82,648.44,196.68,157.62,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+hunyuan-1.8b-4bit,./models/hunyuan-1.8b-4bit/,14,41,48.18,290.57,227.02,180.60,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+hunyuan-13b,./models/hunyuan-13b/,15,100,240.71,62.32,2246.04,44.52,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+hunyuan-a13b-instruct-4bit,./models/hunyuan-a13b-instruct-4bit/,27,100,351.51,76.81,2249.04,44.46,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+hunyuanocr-mlx-4bit,./models/hunyuanocr-mlx-4bit/,9,100,31.32,287.40,419.05,238.63,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+idefics2-8b-4bit,./models/idefics2-8b-4bit/,10,100,75.81,131.91,888.84,112.51,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+idefics3-8b-llama3-4bit,./models/idefics3-8b-llama3-4bit/,18,100,76.51,235.26,926.30,107.96,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+internlm2-7b-4bit,./models/internlm2-7b-4bit/,17,100,81.30,209.11,914.00,109.41,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+internlm3-8b-4bit,./models/internlm3-8b-4bit/,27,100,86.39,312.53,1144.74,87.36,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+internvl3-1b,./models/internvl3-1b/,36,37,27.75,1297.29,97.51,379.44,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+jamba-v0.1-4bit,./models/jamba-v0.1-4bit/,44,100,129.49,339.79,763.49,130.98,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+lfm2-350m-8bit,./models/lfm2-350m-8bit/,17,13,26.63,638.34,23.31,557.79,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+lfm2-8b-a1b-4bit,./models/lfm2-8b-a1b-4bit/,17,37,45.71,371.95,198.87,186.05,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+lfm2-vl-450m-4bit,./models/lfm2-vl-450m-4bit/,17,19,28.66,593.19,38.62,491.98,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+llada2.0-mini-preview-4bit,./models/llada2.0-mini-preview-4bit/,25,100,52.10,479.87,639.97,156.26,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+llama-3.1-8b-4bit,./models/llama-3.1-8b-4bit/,98,100,202.00,485.14,920.37,108.65,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+llama-3.1-8b-bf16,./models/llama-3.1-8b-bf16/,99,87,238.03,415.91,2433.22,35.76,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+llama-3.2-1b-4bit,./models/llama-3.2-1b-4bit/,99,31,50.75,1950.81,71.77,431.96,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+llama-3.2-1b-instruct,./models/llama-3.2-1b-instruct/,99,34,47.54,2082.37,178.78,190.18,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+llama-4-scout-17b-4bit,./models/llama-4-scout-17b-4bit/,69,100,573.65,120.28,2740.65,36.49,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+llava-1.5-7b-4bit,./models/llava-1.5-7b-4bit/,9,100,68.16,132.04,851.39,117.45,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+llava-interleave-qwen-0.5b-bf16,./models/llava-interleave-qwen-0.5b-bf16/,26,49,25.82,1006.88,149.89,326.92,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+llava-next-mistral-7b-4bit,./models/llava-next-mistral-7b-4bit/,15,100,75.79,197.92,863.42,115.82,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+mamba2-1.3b-4bit,./models/mamba2-1.3b-4bit/,7,100,38.04,184.03,923.97,108.23,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+mamba2-130m,./models/mamba2-130m/,7,100,17.41,402.06,415.24,240.82,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+mellum2-12b-a2.5b-base,./models/mellum2-12b-a2.5b-base/,7,6,55.09,127.08,107.41,55.86,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+meta-llama-3.1-8b-instruct-4bit,./models/meta-llama-3.1-8b-instruct-4bit/,98,100,200.40,489.01,912.45,109.60,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+mimo-7b-4bit,./models/mimo-7b-4bit/,26,100,112.38,231.35,1153.21,86.71,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+minicpm-2b-4bit,./models/minicpm-2b-4bit/,14,100,46.18,303.18,638.32,156.66,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+minicpm-v-4.6-bf16,./models/minicpm-v-4.6-bf16/,7,100,40.17,174.25,519.19,192.61,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+minicpm-v-4.6-mxfp4,./models/minicpm-v-4.6-mxfp4/,7,100,38.02,184.12,431.08,231.97,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+minicpm3-4b-4bit,./models/minicpm3-4b-4bit/,17,100,70.13,242.40,1118.22,89.43,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+minimax-m2-3bit,./models/minimax-m2-3bit/,29,100,358.18,80.97,3005.56,33.27,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+ministral-3b-4bit,./models/ministral-3b-4bit/,542,34,592.98,914.03,232.94,145.96,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+mistral-small-3.1-24b-4bit,./models/mistral-small-3.1-24b-4bit/,182,20,1355.65,134.25,668.47,29.92,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+mistral-small-4-119b-2603-4bit,./models/mistral-small-4-119b-2603-4bit/,22,60,177.37,124.03,3082.53,19.46,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+mixtral-8x7b-4bit,./models/mixtral-8x7b-4bit/,15,76,187.06,80.19,1384.78,54.88,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+models,./models/models/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",,FAIL:bench
+molmo-7b,./models/molmo-7b/,11,24,84.55,130.09,360.21,66.63,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+molmo2-4b,./models/molmo2-4b/,15,33,68.38,219.35,545.78,60.46,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+nemotron-3-nano-omni-30b-a3b-reasoning-4bit,./models/nemotron-3-nano-omni-30b-a3b-reasoning-4bit/,23,19,129.04,178.23,219.48,86.57,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+nemotron-h-30b-4bit,./models/nemotron-h-30b-4bit/,23,46,128.15,179.47,500.32,91.94,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+nemotron-nas-30b-4bit,./models/nemotron-nas-30b-4bit/,23,46,129.49,177.61,498.35,92.31,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+olmo-1b-4bit,./models/olmo-1b-4bit/,7,100,37.17,188.31,460.59,217.11,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+olmo2-7b-4bit,./models/olmo2-7b-4bit/,21,27,73.55,285.51,257.22,104.97,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+olmo3-32b-4bit,./models/olmo3-32b-4bit/,63,100,778.79,80.89,4554.22,21.96,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+paligemma2-3b-6bit,./models/paligemma2-3b-6bit/,7,0,54.09,129.42,6.58,0.00,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+phi-2-4bit,./models/phi-2-4bit/,7,1,43.70,160.17,16.79,59.55,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+phi-3-mini-4bit,./models/phi-3-mini-4bit/,10,25,50.48,198.08,147.88,169.06,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+phi-3-small-8k-instruct-aq4_64,./models/phi-3-small-8k-instruct-aq4_64/,22,100,76.44,287.80,974.64,102.60,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+phi-3.5-mini-4bit,./models/phi-3.5-mini-4bit/,10,40,51.97,192.42,243.99,163.94,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+phi-3.5-moe-4bit,./models/phi-3.5-moe-4bit/,10,100,90.22,110.84,1290.24,77.51,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+phi-3.5-vision-4bit,./models/phi-3.5-vision-4bit/,15,43,52.36,286.48,261.99,164.13,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+phi-4-4bit,./models/phi-4-4bit/,14,100,124.78,112.20,1711.24,58.44,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+pixtral-12b-4bit,./models/pixtral-12b-4bit/,10,100,111.81,89.44,1435.91,69.64,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+pixtral-12b,./models/pixtral-12b/,10,100,109.92,90.98,1437.76,69.55,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+plamo-2-1b,./models/plamo-2-1b/,7,100,44.17,158.50,924.25,108.20,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen1.5-moe-a2.7b-4bit,./models/qwen1.5-moe-a2.7b-4bit/,25,43,65.27,383.02,285.03,150.86,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen2-0.5b,./models/qwen2-0.5b/,36,100,29.23,1231.56,268.23,372.81,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen2-vl-2b-4bit,./models/qwen2-vl-2b-4bit/,26,35,39.75,654.13,202.63,172.73,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen2-vl-2b,./models/qwen2-vl-2b/,26,35,39.84,652.63,203.35,172.12,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen2.5-0.5b-4bit,./models/qwen2.5-0.5b-4bit/,36,100,29.45,1222.51,266.92,374.64,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen2.5-0.5b-bf16,./models/qwen2.5-0.5b-bf16/,36,100,28.00,1285.70,327.81,305.06,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen2.5-1.5b-4bit,./models/qwen2.5-1.5b-4bit/,26,100,34.97,743.52,386.60,258.66,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen2.5-1.5b-instruct-4bit,./models/qwen2.5-1.5b-instruct-4bit/,36,100,41.91,859.05,404.17,247.42,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen2.5-7b-4bit,./models/qwen2.5-7b-4bit/,36,100,113.76,316.45,895.70,111.64,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen2.5-7b-8bit,./models/qwen2.5-7b-8bit/,36,100,117.38,306.69,1420.64,70.39,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen2.5-7b-instruct-4bit,./models/qwen2.5-7b-instruct-4bit/,36,100,120.08,299.80,895.13,111.72,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen2.5-7b,./models/qwen2.5-7b/,36,100,116.14,309.97,894.10,111.84,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen2.5-vl-3b-4bit,./models/qwen2.5-vl-3b-4bit/,26,39,56.96,456.43,346.86,112.44,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen2.5-vl-3b,./models/qwen2.5-vl-3b/,26,39,58.71,442.87,342.95,113.72,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3-0.6b-4bit,./models/qwen3-0.6b-4bit/,19,9,33.56,566.07,42.14,213.59,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3-0.6b,./models/qwen3-0.6b/,19,9,32.84,578.51,41.89,214.85,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3-1.7b-4bit,./models/qwen3-1.7b-4bit/,19,14,48.38,392.73,73.74,189.85,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3-30b-a3b-4bit,./models/qwen3-30b-a3b-4bit/,19,34,97.25,195.36,406.57,83.63,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3-4b-4bit,./models/qwen3-4b-4bit/,19,36,76.21,249.31,294.78,122.13,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3-8b-4bit,./models/qwen3-8b-4bit/,19,33,115.24,164.87,403.58,81.77,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3-coder-480b-a35b-instruct-4bit,./models/qwen3-coder-480b-a35b-instruct-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",,SKIP:oom_estimate
+qwen3-moe-4bit,./models/qwen3-moe-4bit/,19,34,96.69,196.50,400.08,84.98,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3-next-80b-a3b-instruct-4bit,./models/qwen3-next-80b-a3b-instruct-4bit/,15,57,100.67,149.00,930.96,61.23,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3-omni-30b-a3b-instruct-4bit,./models/qwen3-omni-30b-a3b-instruct-4bit/,19,42,96.05,197.81,507.17,82.81,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3-vl-2b-4bit,./models/qwen3-vl-2b-4bit/,15,59,44.55,336.66,274.35,215.05,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3-vl-2b,./models/qwen3-vl-2b/,15,59,45.84,327.25,276.37,213.48,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3-vl-30b-a3b-4bit,./models/qwen3-vl-30b-a3b-4bit/,15,35,90.02,166.62,427.89,81.80,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3-vl-32b-4bit,./models/qwen3-vl-32b-4bit/,15,30,429.56,34.92,1427.37,21.02,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3-vl-4b-4bit,./models/qwen3-vl-4b-4bit/,15,49,75.51,198.64,412.32,118.84,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3-vl-4b-instruct-4bit,./models/qwen3-vl-4b-instruct-4bit/,15,49,76.75,195.45,411.42,119.10,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3-vl-8b-4bit,./models/qwen3-vl-8b-4bit/,15,57,115.18,130.23,703.68,81.00,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3-vl-8b-instruct-4bit,./models/qwen3-vl-8b-instruct-4bit/,15,57,118.25,126.85,709.02,80.39,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3.5-0.8b-4bit,./models/qwen3.5-0.8b-4bit/,19,18,31.85,596.53,70.65,254.77,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3.5-0.8b-optiq-4bit,./models/qwen3.5-0.8b-optiq-4bit/,19,19,32.52,584.23,79.18,239.96,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3.5-27b-4bit,./models/qwen3.5-27b-4bit/,19,30,367.97,51.63,1245.31,24.09,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3.5-27b-dflash,./models/qwen3.5-27b-dflash/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",,FAIL:bench
+qwen3.5-2b-4bit,./models/qwen3.5-2b-4bit/,19,31,48.32,393.22,158.25,195.89,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3.5-35b-a3b-4bit,models/qwen3.5-35b-a3b-4bit,19,31,84.67,224.40,376.88,82.25,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3.5-4b-4bit,./models/qwen3.5-4b-4bit/,19,31,75.36,252.12,284.76,108.86,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3.5-4b-dflash,./models/qwen3.5-4b-dflash/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",,FAIL:bench
+qwen3.5-9b-4bit,./models/qwen3.5-9b-4bit/,19,31,124.88,152.14,430.07,72.08,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3.5-9b-bf16,./models/qwen3.5-9b-bf16/,19,31,129.84,146.33,978.94,31.67,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+qwen3.6-35b-a3b-4bit,models/qwen3.6-35b-a3b-4bit,19,27,82.96,229.03,342.45,78.84,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+seed-oss-36b-instruct-4bit,./models/seed-oss-36b-instruct-4bit/,15,100,473.04,31.71,4941.64,20.24,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+smollm-135m-4bit,./models/smollm-135m-4bit/,16,100,33.40,479.02,229.62,435.50,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+smollm3-3b-4bit,./models/smollm3-3b-4bit/,75,46,131.81,569.01,339.46,135.51,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+solar-open-100b-4bit,./models/solar-open-100b-4bit/,73,100,974.74,74.89,2759.53,36.24,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+stablelm-1.6b-4bit,./models/stablelm-1.6b-4bit/,26,59,37.41,695.01,217.31,271.50,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+starcoder2-3b-4bit,./models/starcoder2-3b-4bit/,7,100,38.09,183.78,591.27,169.13,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+youtu-vl-4b-instruct,./models/youtu-vl-4b-instruct/,26,93,84.07,309.28,2047.54,45.42,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
+gemma3n-e4b-bf16,./models/gemma3n-e4b-bf16/,16,69,90.84,176.13,1929.01,35.77,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
diff --git a/benchmarks/metal_m1ultra_2026-07-06_single_qwen3.5-35b-a3b-4bit.csv b/benchmarks/metal_m1ultra_2026-07-06_single_qwen3.5-35b-a3b-4bit.csv
new file mode 100644
index 00000000..4a5d77c0
--- /dev/null
+++ b/benchmarks/metal_m1ultra_2026-07-06_single_qwen3.5-35b-a3b-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt,prompt_target_len
+qwen3.5-35b-a3b-4bit,models/qwen3.5-35b-a3b-4bit,19,31,84.67,224.40,376.88,82.25,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
diff --git a/benchmarks/metal_m1ultra_2026-07-06_single_qwen3.6-35b-a3b-4bit.csv b/benchmarks/metal_m1ultra_2026-07-06_single_qwen3.6-35b-a3b-4bit.csv
new file mode 100644
index 00000000..44bc50bc
--- /dev/null
+++ b/benchmarks/metal_m1ultra_2026-07-06_single_qwen3.6-35b-a3b-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt,prompt_target_len
+qwen3.6-35b-a3b-4bit,models/qwen3.6-35b-a3b-4bit,19,27,82.96,229.03,342.45,78.84,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",
diff --git a/benchmarks/metal_m1ultra_vlm_2026-07-06.csv b/benchmarks/metal_m1ultra_vlm_2026-07-06.csv
new file mode 100644
index 00000000..490dd8c7
--- /dev/null
+++ b/benchmarks/metal_m1ultra_vlm_2026-07-06.csv
@@ -0,0 +1,170 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt,prompt_target_len
+apertus-8b-instruct-2509-4bit,./models/apertus-8b-instruct-2509-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+aya-expanse-8b-4bit,./models/aya-expanse-8b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+aya-vision-8b,./models/aya-vision-8b/,735,29,1144.76,642.06,288.71,100.45,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+baichuan-m1-14b-4bit,./models/baichuan-m1-14b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+bitnet-b1.58-2b-4t-4bit,./models/bitnet-b1.58-2b-4t-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+bitnet-b1.58-2b-4t,./models/bitnet-b1.58-2b-4t/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+bunny-llama3-8b-4bit,./models/bunny-llama3-8b-4bit/,746,37,1109.23,672.54,383.36,96.52,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+command-r7b-4bit,./models/command-r7b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+deepseek-coder-1.3b-4bit,./models/deepseek-coder-1.3b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+deepseek-ocr-2-4bit,./models/deepseek-ocr-2-4bit/,409,5,515.12,793.99,29.03,172.21,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+deepseek-ocr-4bit,./models/deepseek-ocr-4bit/,281,31,342.14,821.29,118.55,261.49,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+deepseek-r1-distill-7b-4bit,./models/deepseek-r1-distill-7b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+deepseek-v2-lite-4bit,./models/deepseek-v2-lite-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+deepseek-v3-4bit,./models/deepseek-v3-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+deepseek-vl2-small-4bit,./models/deepseek-vl2-small-4bit/,494,24,1121.63,440.43,235.16,102.06,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+diffusiongemma-26b-a4b-it-4bit,./models/diffusiongemma-26b-a4b-it-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+docling-layout-heron-mlx-bf16,./models/docling-layout-heron-mlx-bf16/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+dots.llm1.inst-mixed-4-6bit,./models/dots.llm1.inst-mixed-4-6bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+dots.ocr-4bit,./models/dots.ocr-4bit/,74,0,181.31,408.14,4.62,0.00,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+ernie-4.5-0.3b-4bit,./models/ernie-4.5-0.3b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+ernie-4.5-vl-28b-a3b-thinking-4bit,./models/ernie-4.5-vl-28b-a3b-thinking-4bit/,108,100,492.17,219.44,1106.09,90.41,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+exaone-3.5-2.4b-4bit,./models/exaone-3.5-2.4b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+exaone4-1.2b-4bit,./models/exaone4-1.2b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+falcon-h1-tiny-90m-instruct-4bit,./models/falcon-h1-tiny-90m-instruct-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+falcon-mamba-7b-4bit,./models/falcon-mamba-7b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+fastvlm-0.5b-bf16,./models/fastvlm-0.5b-bf16/,282,100,171.93,1640.23,353.51,282.88,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+gemma-2b-4bit,./models/gemma-2b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+gemma-3-4b-it-4bit,./models/gemma-3-4b-it-4bit/,275,16,1155.22,238.05,192.36,83.18,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+gemma-4-12b-it-4bit,./models/gemma-4-12b-it-4bit/,277,25,1125.07,246.21,765.48,32.66,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+gemma-4-12b-it-assistant-4bit,./models/gemma-4-12b-it-assistant-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+gemma-4-26b-a4b-it-4bit,./models/gemma-4-26b-a4b-it-4bit/,277,27,993.79,278.73,381.48,70.78,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+gemma-4-26b-a4b-it-qat-4bit,./models/gemma-4-26b-a4b-it-qat-4bit/,277,31,991.01,279.51,448.83,69.07,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+gemma-4-31b-4bit,./models/gemma-4-31b-4bit/,265,5,3165.93,83.70,323.96,15.43,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+gemma-4-31b-it-4bit,./models/gemma-4-31b-it-4bit/,277,24,3188.33,86.88,1278.06,18.78,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+gemma-4-31b-it-assistant-bf16,./models/gemma-4-31b-it-assistant-bf16/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+gemma-4-31b-it-nvfp4,./models/gemma-4-31b-it-nvfp4/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+gemma-4-31b-it-qat-4bit,./models/gemma-4-31b-it-qat-4bit/,277,28,3198.01,86.62,1846.71,15.16,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+gemma-4-e2b-it-4bit,./models/gemma-4-e2b-it-4bit/,277,100,378.34,732.15,895.39,111.68,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+gemma-4-e2b-it-8bit,./models/gemma-4-e2b-it-8bit/,277,100,381.29,726.48,1131.28,88.40,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+gemma-4-e2b-it-qat-4bit,./models/gemma-4-e2b-it-qat-4bit/,273,42,381.75,715.13,471.85,89.01,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+gemma-4-e4b-it-4bit,./models/gemma-4-e4b-it-4bit/,277,92,602.91,459.44,1190.23,77.30,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+gemma-4-e4b-it-8bit,./models/gemma-4-e4b-it-8bit/,277,64,609.55,454.44,1106.20,57.86,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+gemma-4-e4b-it-qat-4bit,./models/gemma-4-e4b-it-qat-4bit/,273,55,614.15,444.51,886.77,62.02,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+gemma2-2b-4bit,./models/gemma2-2b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+gemma3-1b-4bit,./models/gemma3-1b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+gemma3-4b-4bit,./models/gemma3-4b-4bit/,275,16,1144.69,240.24,188.66,84.81,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+gemma3n-e2b-4bit,./models/gemma3n-e2b-4bit/,273,29,367.11,743.65,348.58,83.19,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+gemma3n-e4b-4bit,./models/gemma3n-e4b-4bit/,273,33,560.49,487.08,517.93,63.72,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+glm-5-4bit,./models/glm-5-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+glm-5.1-4bit,./models/glm-5.1-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+glm-ocr-4bit,./models/glm-ocr-4bit/,82,0,92.95,882.18,7.07,0.00,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+glm4-flash-4bit,./models/glm4-flash-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+gpt-oss-120b-4bit,./models/gpt-oss-120b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+gpt-oss-20b-mxfp4,./models/gpt-oss-20b-mxfp4/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+granite-3.3-2b-instruct-4bit,./models/granite-3.3-2b-instruct-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+granite-4.0-3b-vision-4bit,./models/granite-4.0-3b-vision-4bit/,337,41,520.21,647.82,327.76,125.09,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+granite-4.0-h-350m-4bit,./models/granite-4.0-h-350m-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+granite-4.0-h-tiny-4bit,./models/granite-4.0-h-tiny-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+granite-4.1-3b-4bit,./models/granite-4.1-3b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+granite-4.1-8b-4bit,./models/granite-4.1-8b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+granite-speech-4.1-2b-nar-mlx,./models/granite-speech-4.1-2b-nar-mlx/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+granite-vision-3.2-2b-4bit,./models/granite-vision-3.2-2b-4bit/,1539,26,1447.39,1063.29,210.67,123.42,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+hunyuan-1.8b-4bit,./models/hunyuan-1.8b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+hunyuan-13b,./models/hunyuan-13b/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+hunyuan-a13b-instruct-4bit,./models/hunyuan-a13b-instruct-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+hunyuanocr-mlx-4bit,./models/hunyuanocr-mlx-4bit/,284,10,268.45,1057.94,106.06,94.29,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+idefics2-8b-4bit,./models/idefics2-8b-4bit/,81,12,283.01,286.21,131.39,91.33,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+idefics3-8b-llama3-4bit,./models/idefics3-8b-llama3-4bit/,186,100,396.02,469.67,936.99,106.73,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+internlm2-7b-4bit,./models/internlm2-7b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+internlm3-8b-4bit,./models/internlm3-8b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+internvl3-1b,./models/internvl3-1b/,293,8,159.51,1836.90,33.90,236.00,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+jamba-v0.1-4bit,./models/jamba-v0.1-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+lfm2-350m-8bit,./models/lfm2-350m-8bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+lfm2-8b-a1b-4bit,./models/lfm2-8b-a1b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+lfm2-vl-450m-4bit,./models/lfm2-vl-450m-4bit/,82,38,62.98,1302.06,80.04,474.75,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+llada2.0-mini-preview-4bit,./models/llada2.0-mini-preview-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+llama-3.1-8b-4bit,./models/llama-3.1-8b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+llama-3.1-8b-bf16,./models/llama-3.1-8b-bf16/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+llama-3.2-1b-4bit,./models/llama-3.2-1b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+llama-3.2-1b-instruct,./models/llama-3.2-1b-instruct/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+llama-4-scout-17b-4bit,./models/llama-4-scout-17b-4bit/,230,67,1263.57,182.02,1927.28,34.76,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+llava-1.5-7b-4bit,./models/llava-1.5-7b-4bit/,594,100,780.61,760.95,966.84,103.43,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+llava-interleave-qwen-0.5b-bf16,./models/llava-interleave-qwen-0.5b-bf16/,754,36,190.87,3950.41,134.47,267.71,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+llava-next-mistral-7b-4bit,./models/llava-next-mistral-7b-4bit/,590,100,830.60,710.33,928.02,107.76,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+mamba2-1.3b-4bit,./models/mamba2-1.3b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+mamba2-130m,./models/mamba2-130m/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+mellum2-12b-a2.5b-base,./models/mellum2-12b-a2.5b-base/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+meta-llama-3.1-8b-instruct-4bit,./models/meta-llama-3.1-8b-instruct-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+mimo-7b-4bit,./models/mimo-7b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+minicpm-2b-4bit,./models/minicpm-2b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+minicpm-v-4.6-bf16,./models/minicpm-v-4.6-bf16/,32,23,87.29,366.61,124.29,185.05,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+minicpm-v-4.6-mxfp4,./models/minicpm-v-4.6-mxfp4/,32,42,92.73,345.09,195.68,214.63,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+minicpm3-4b-4bit,./models/minicpm3-4b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+minimax-m2-3bit,./models/minimax-m2-3bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+ministral-3b-4bit,./models/ministral-3b-4bit/,3566,100,6776.08,526.26,790.42,126.52,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+mistral-small-3.1-24b-4bit,./models/mistral-small-3.1-24b-4bit/,3206,29,24866.68,128.93,1015.83,28.55,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+mistral-small-4-119b-2603-4bit,./models/mistral-small-4-119b-2603-4bit/,3046,80,8910.00,341.86,5028.16,15.91,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+mixtral-8x7b-4bit,./models/mixtral-8x7b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+models,./models/models/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+molmo-7b,./models/molmo-7b/,327,100,564.56,579.21,1261.01,79.30,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+molmo2-4b,./models/molmo2-4b/,438,46,604.53,724.53,770.46,59.70,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+nemotron-3-nano-omni-30b-a3b-reasoning-4bit,./models/nemotron-3-nano-omni-30b-a3b-reasoning-4bit/,279,6,1078.99,258.58,95.12,63.08,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+nemotron-h-30b-4bit,./models/nemotron-h-30b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+nemotron-nas-30b-4bit,./models/nemotron-nas-30b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+olmo-1b-4bit,./models/olmo-1b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+olmo2-7b-4bit,./models/olmo2-7b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+olmo3-32b-4bit,./models/olmo3-32b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+paligemma2-3b-6bit,./models/paligemma2-3b-6bit/,1032,2,695.14,1484.59,43.81,45.66,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+phi-2-4bit,./models/phi-2-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+phi-3-mini-4bit,./models/phi-3-mini-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+phi-3-small-8k-instruct-aq4_64,./models/phi-3-small-8k-instruct-aq4_64/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+phi-3.5-mini-4bit,./models/phi-3.5-mini-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+phi-3.5-moe-4bit,./models/phi-3.5-moe-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+phi-3.5-vision-4bit,./models/phi-3.5-vision-4bit/,773,19,790.39,977.99,153.76,123.57,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+phi-4-4bit,./models/phi-4-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+pixtral-12b-4bit,./models/pixtral-12b-4bit/,4099,100,9158.50,447.56,1651.49,60.55,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+pixtral-12b,./models/pixtral-12b/,4099,100,9164.59,447.26,1647.65,60.69,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+plamo-2-1b,./models/plamo-2-1b/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen1.5-moe-a2.7b-4bit,./models/qwen1.5-moe-a2.7b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen2-0.5b,./models/qwen2-0.5b/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen2-vl-2b-4bit,./models/qwen2-vl-2b-4bit/,91,12,109.51,830.96,81.94,146.44,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen2-vl-2b,./models/qwen2-vl-2b/,91,12,109.94,827.73,82.68,145.13,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen2.5-0.5b-4bit,./models/qwen2.5-0.5b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen2.5-0.5b-bf16,./models/qwen2.5-0.5b-bf16/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen2.5-1.5b-4bit,./models/qwen2.5-1.5b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen2.5-1.5b-instruct-4bit,./models/qwen2.5-1.5b-instruct-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen2.5-7b-4bit,./models/qwen2.5-7b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen2.5-7b-8bit,./models/qwen2.5-7b-8bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen2.5-7b-instruct-4bit,./models/qwen2.5-7b-instruct-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen2.5-7b,./models/qwen2.5-7b/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen2.5-vl-3b-4bit,./models/qwen2.5-vl-3b-4bit/,91,64,140.87,645.99,592.73,107.97,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen2.5-vl-3b,./models/qwen2.5-vl-3b/,91,64,140.42,648.04,588.84,108.69,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen3-0.6b-4bit,./models/qwen3-0.6b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen3-0.6b,./models/qwen3-0.6b/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen3-1.7b-4bit,./models/qwen3-1.7b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen3-30b-a3b-4bit,./models/qwen3-30b-a3b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen3-4b-4bit,./models/qwen3-4b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen3-8b-4bit,./models/qwen3-8b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen3-coder-480b-a35b-instruct-4bit,./models/qwen3-coder-480b-a35b-instruct-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"Hello, how are you today?",,SKIP:oom_estimate
+qwen3-moe-4bit,./models/qwen3-moe-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen3-next-80b-a3b-instruct-4bit,./models/qwen3-next-80b-a3b-instruct-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen3-omni-30b-a3b-instruct-4bit,./models/qwen3-omni-30b-a3b-instruct-4bit/,69,2,238.32,289.52,83.88,23.84,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen3-vl-2b-4bit,./models/qwen3-vl-2b-4bit/,65,58,106.19,612.11,318.11,182.33,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen3-vl-2b,./models/qwen3-vl-2b/,65,58,89.70,724.62,311.06,186.46,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen3-vl-30b-a3b-4bit,./models/qwen3-vl-30b-a3b-4bit/,65,64,228.55,284.40,1529.41,41.85,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen3-vl-32b-4bit,./models/qwen3-vl-32b-4bit/,65,49,715.24,90.88,2725.17,17.98,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen3-vl-4b-4bit,./models/qwen3-vl-4b-4bit/,65,41,144.10,451.07,416.51,98.44,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen3-vl-4b-instruct-4bit,./models/qwen3-vl-4b-instruct-4bit/,65,41,142.77,455.27,415.16,98.76,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen3-vl-8b-4bit,./models/qwen3-vl-8b-4bit/,65,35,215.07,302.23,543.34,64.42,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen3-vl-8b-instruct-4bit,./models/qwen3-vl-8b-instruct-4bit/,65,35,212.44,305.96,535.50,65.36,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen3.5-0.8b-4bit,./models/qwen3.5-0.8b-4bit/,69,100,82.89,832.38,358.11,279.25,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen3.5-0.8b-optiq-4bit,./models/qwen3.5-0.8b-optiq-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen3.5-27b-4bit,./models/qwen3.5-27b-4bit/,69,100,928.61,74.30,3957.46,25.27,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen3.5-27b-dflash,./models/qwen3.5-27b-dflash/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen3.5-2b-4bit,./models/qwen3.5-2b-4bit/,69,43,133.04,518.65,220.28,195.20,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen3.5-35b-a3b-4bit,./models/qwen3.5-35b-a3b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen3.5-4b-4bit,./models/qwen3.5-4b-4bit/,69,49,220.81,312.48,454.06,107.91,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen3.5-4b-dflash,./models/qwen3.5-4b-dflash/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+qwen3.5-9b-4bit,./models/qwen3.5-9b-4bit/,69,100,351.79,196.14,1333.85,74.97,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen3.5-9b-bf16,./models/qwen3.5-9b-bf16/,69,100,246.67,279.73,3040.91,32.88,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+qwen3.6-35b-a3b-4bit,./models/qwen3.6-35b-a3b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+seed-oss-36b-instruct-4bit,./models/seed-oss-36b-instruct-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+smollm-135m-4bit,./models/smollm-135m-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+smollm3-3b-4bit,./models/smollm3-3b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+solar-open-100b-4bit,./models/solar-open-100b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+stablelm-1.6b-4bit,./models/stablelm-1.6b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+starcoder2-3b-4bit,./models/starcoder2-3b-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",,FAIL:bench
+youtu-vl-4b-instruct,./models/youtu-vl-4b-instruct/,28,30,128.31,218.22,672.03,44.64,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
+gemma3n-e4b-bf16,./models/gemma3n-e4b-bf16/,273,24,422.68,645.88,727.22,33.00,2026-07-06,Apple_M1_Ultra_128GB,0.3.3,release,100,"What is in this image?",
diff --git a/benchmarks/pylm_m1ultra_2026-06-13_single_LFM2-350M-8bit.csv b/benchmarks/pylm_m1ultra_2026-06-13_single_LFM2-350M-8bit.csv
new file mode 100644
index 00000000..dcb978ca
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_2026-06-13_single_LFM2-350M-8bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+LFM2-350M-8bit,./models/LFM2-350M-8bit/,8,100,12.25,653.11,178.43,560.44,2026-06-13,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
diff --git a/benchmarks/pylm_m1ultra_2026-06-14_single_bitnet-b1.58-2B-4T-4bit.csv b/benchmarks/pylm_m1ultra_2026-06-14_single_bitnet-b1.58-2B-4T-4bit.csv
new file mode 100644
index 00000000..7e5bfbd2
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_2026-06-14_single_bitnet-b1.58-2B-4T-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+bitnet-b1.58-2B-4T-4bit,./models/bitnet-b1.58-2B-4T-4bit/,8,100,47.86,167.17,620.58,161.14,2026-06-14,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
diff --git a/benchmarks/pylm_m1ultra_2026-06-14_single_bitnet-b1.58-2B-4T.csv b/benchmarks/pylm_m1ultra_2026-06-14_single_bitnet-b1.58-2B-4T.csv
new file mode 100644
index 00000000..9b3def23
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_2026-06-14_single_bitnet-b1.58-2B-4T.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+bitnet-b1.58-2B-4T,./models/bitnet-b1.58-2B-4T/,8,100,44.55,179.57,685.03,145.98,2026-06-14,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
diff --git a/benchmarks/pylm_m1ultra_2026-06-16_repfresh.csv b/benchmarks/pylm_m1ultra_2026-06-16_repfresh.csv
new file mode 100644
index 00000000..07d8e2e5
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_2026-06-16_repfresh.csv
@@ -0,0 +1,20 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+gemma-2b-4bit,./models/gemma-2b-4bit/,8,32,31.37,254.99,153.44,208.54,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
+gemma-3-4b-it-4bit,./models/gemma-3-4b-it-4bit/,8,100,58.96,135.68,909.52,109.95,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
+gemma-4-26b-a4b-it-4bit,./models/gemma-4-26b-a4b-it-4bit/,7,100,74.90,93.46,1366.69,73.17,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
+gemma2-2b-4bit,./models/gemma2-2b-4bit/,8,20,41.18,194.25,143.69,139.18,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
+glm4-flash-4bit,./models/glm4-flash-4bit/,7,100,99.20,70.56,2193.73,45.58,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
+gpt-oss-120b-4bit,./models/gpt-oss-120b-4bit/,7,100,98.23,71.26,1759.48,56.83,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
+jamba-v0.1-4bit,./models/jamba-v0.1-4bit/,8,77,49.41,161.92,589.95,130.52,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
+meta-llama-3.1-8b-instruct-4bit,./models/meta-llama-3.1-8b-instruct-4bit/,7,100,61.14,114.50,925.29,108.07,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
+mixtral-8x7b-4bit,./models/mixtral-8x7b-4bit/,8,100,120.15,66.58,1831.55,54.60,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
+nemotron-h-30b-4bit,./models/nemotron-h-30b-4bit/,7,100,72.69,96.29,1074.34,93.08,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
+phi-3.5-mini-4bit,./models/phi-3.5-mini-4bit/,7,100,39.92,175.34,594.21,168.29,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
+qwen2.5-7b-instruct-4bit,./models/qwen2.5-7b-instruct-4bit/,7,100,50.97,137.32,895.66,111.65,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
+qwen3-30b-a3b-4bit,./models/qwen3-30b-a3b-4bit/,7,100,80.35,87.12,1458.04,68.59,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
+qwen3-vl-30b-a3b-4bit,./models/qwen3-vl-30b-a3b-4bit/,7,62,82.37,84.98,903.18,68.65,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
+qwen3-vl-32b-4bit,./models/qwen3-vl-32b-4bit/,7,51,296.00,23.65,2332.10,21.87,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
+qwen3.5-0.8b-4bit,./models/qwen3.5-0.8b-4bit/,7,100,21.32,328.40,348.21,287.18,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
+smollm-135m-4bit,./models/smollm-135m-4bit/,7,100,13.56,516.33,263.40,379.65,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
+solar-open-100b-4bit,./models/solar-open-100b-4bit/,7,100,168.09,41.64,2772.70,36.07,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
+starcoder2-3b-4bit,./models/starcoder2-3b-4bit/,7,100,31.38,223.10,592.27,168.84,2026-06-16,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
diff --git a/benchmarks/pylm_m1ultra_2026-07-06_single_hunyuan-a13b-instruct-4bit.csv b/benchmarks/pylm_m1ultra_2026-07-06_single_hunyuan-a13b-instruct-4bit.csv
new file mode 100644
index 00000000..7716fae6
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_2026-07-06_single_hunyuan-a13b-instruct-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+hunyuan-a13b-instruct-4bit,./models/hunyuan-a13b-instruct-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?",FAIL:warmup
diff --git a/benchmarks/pylm_m1ultra_2026-07-06_single_llada2.0-mini-preview-4bit.csv b/benchmarks/pylm_m1ultra_2026-07-06_single_llada2.0-mini-preview-4bit.csv
new file mode 100644
index 00000000..64ff0cb3
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_2026-07-06_single_llada2.0-mini-preview-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+llada2.0-mini-preview-4bit,./models/llada2.0-mini-preview-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?",FAIL:warmup
diff --git a/benchmarks/pylm_m1ultra_2026-07-06_single_llama-3.2-1b-instruct.csv b/benchmarks/pylm_m1ultra_2026-07-06_single_llama-3.2-1b-instruct.csv
new file mode 100644
index 00000000..5ac81d0d
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_2026-07-06_single_llama-3.2-1b-instruct.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+llama-3.2-1b-instruct,./models/llama-3.2-1b-instruct/,8,100,29.44,271.71,532.25,187.88,2026-07-06,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
diff --git a/benchmarks/pylm_m1ultra_2026-07-06_single_mellum2-12b-a2.5b-base.csv b/benchmarks/pylm_m1ultra_2026-07-06_single_mellum2-12b-a2.5b-base.csv
new file mode 100644
index 00000000..3cd7aff0
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_2026-07-06_single_mellum2-12b-a2.5b-base.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+mellum2-12b-a2.5b-base,./models/mellum2-12b-a2.5b-base/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?",FAIL:warmup
diff --git a/benchmarks/pylm_m1ultra_2026-07-06_single_mistral-small-4-119b-2603-4bit.csv b/benchmarks/pylm_m1ultra_2026-07-06_single_mistral-small-4-119b-2603-4bit.csv
new file mode 100644
index 00000000..8b4a40c0
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_2026-07-06_single_mistral-small-4-119b-2603-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+mistral-small-4-119b-2603-4bit,./models/mistral-small-4-119b-2603-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?",FAIL:warmup
diff --git a/benchmarks/pylm_m1ultra_2026-07-06_single_phi-3-small-8k-instruct-aq4_64.csv b/benchmarks/pylm_m1ultra_2026-07-06_single_phi-3-small-8k-instruct-aq4_64.csv
new file mode 100644
index 00000000..5510f70d
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_2026-07-06_single_phi-3-small-8k-instruct-aq4_64.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+phi-3-small-8k-instruct-aq4_64,./models/phi-3-small-8k-instruct-aq4_64/,7,33,86.10,81.31,1221.82,27.01,2026-07-06,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
diff --git a/benchmarks/pylm_m1ultra_2026-07-06_single_qwen3-next-80b-a3b-instruct-4bit.csv b/benchmarks/pylm_m1ultra_2026-07-06_single_qwen3-next-80b-a3b-instruct-4bit.csv
new file mode 100644
index 00000000..873a564e
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_2026-07-06_single_qwen3-next-80b-a3b-instruct-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+qwen3-next-80b-a3b-instruct-4bit,./models/qwen3-next-80b-a3b-instruct-4bit/,7,100,102.92,68.02,1933.06,51.73,2026-07-06,Apple_M1_Ultra_128GB,mlx-lm-0.31.3,python,100,"Hello, how are you today?"
diff --git a/benchmarks/pylm_m1ultra_vlm_2026-06-16_repfresh.csv b/benchmarks/pylm_m1ultra_vlm_2026-06-16_repfresh.csv
new file mode 100644
index 00000000..7f4cf4bb
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_vlm_2026-06-16_repfresh.csv
@@ -0,0 +1,10 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+gemma-4-26b-a4b-it-4bit,./models/gemma-4-26b-a4b-it-4bit/,277,13,1053.40,262.96,211.64,61.42,2026-06-16,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?"
+gemma-4-e2b-it-4bit,./models/gemma-4-e2b-it-4bit/,277,100,420.68,658.46,995.32,100.47,2026-06-16,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?"
+gemma3n-e2b-4bit,./models/gemma3n-e2b-4bit/,275,27,522.03,526.79,442.65,61.00,2026-06-16,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?"
+internvl3-1b,./models/internvl3-1b/,270,39,162.24,1664.19,145.87,267.35,2026-06-16,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?"
+llava-interleave-qwen-0.5b-bf16,./models/llava-interleave-qwen-0.5b-bf16/,744,60,189.77,3920.58,268.81,223.21,2026-06-16,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?"
+molmo2-4b,./models/molmo2-4b/,438,47,625.03,700.77,769.94,61.04,2026-06-16,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?"
+phi-3.5-vision-4bit,./models/phi-3.5-vision-4bit/,770,26,736.88,1044.95,280.90,92.56,2026-06-16,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?"
+qwen3.5-0.8b-4bit,./models/qwen3.5-0.8b-4bit/,,,,,,,2026-06-16,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?",FAIL:warmup
+qwen3.5-35b-a3b-4bit,./models/qwen3.5-35b-a3b-4bit/,,,,,,,2026-06-16,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?",FAIL:warmup
diff --git a/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_deepseek-ocr-2-4bit.csv b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_deepseek-ocr-2-4bit.csv
new file mode 100644
index 00000000..28742b5e
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_deepseek-ocr-2-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+deepseek-ocr-2-4bit,./models/deepseek-ocr-2-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?",FAIL:warmup
diff --git a/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_deepseek-ocr-4bit.csv b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_deepseek-ocr-4bit.csv
new file mode 100644
index 00000000..a4c00d70
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_deepseek-ocr-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+deepseek-ocr-4bit,./models/deepseek-ocr-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?",FAIL:warmup
diff --git a/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_deepseek-vl2-small-4bit.csv b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_deepseek-vl2-small-4bit.csv
new file mode 100644
index 00000000..889253f7
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_deepseek-vl2-small-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+deepseek-vl2-small-4bit,./models/deepseek-vl2-small-4bit/,436,9,551.19,791.02,98.52,91.35,2026-07-06,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?"
diff --git a/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_dots.ocr-4bit.csv b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_dots.ocr-4bit.csv
new file mode 100644
index 00000000..0b39bec3
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_dots.ocr-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+dots.ocr-4bit,./models/dots.ocr-4bit/,74,1,172.89,428.01,0.03,34334.76,2026-07-06,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?"
diff --git a/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_ernie-4.5-vl-28b-a3b-thinking-4bit.csv b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_ernie-4.5-vl-28b-a3b-thinking-4bit.csv
new file mode 100644
index 00000000..c4391043
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_ernie-4.5-vl-28b-a3b-thinking-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+ernie-4.5-vl-28b-a3b-thinking-4bit,./models/ernie-4.5-vl-28b-a3b-thinking-4bit/,113,100,408.92,276.34,1770.46,56.48,2026-07-06,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?"
diff --git a/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_fastvlm-0.5b-bf16.csv b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_fastvlm-0.5b-bf16.csv
new file mode 100644
index 00000000..ba3a3b5e
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_fastvlm-0.5b-bf16.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+fastvlm-0.5b-bf16,./models/fastvlm-0.5b-bf16/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?",FAIL:warmup
diff --git a/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_glm-ocr-4bit.csv b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_glm-ocr-4bit.csv
new file mode 100644
index 00000000..84d7e529
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_glm-ocr-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+glm-ocr-4bit,./models/glm-ocr-4bit/,78,11,74.50,1047.02,38.11,288.66,2026-07-06,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?"
diff --git a/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_granite-4.0-3b-vision-4bit.csv b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_granite-4.0-3b-vision-4bit.csv
new file mode 100644
index 00000000..b37c58f5
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_granite-4.0-3b-vision-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+granite-4.0-3b-vision-4bit,./models/granite-4.0-3b-vision-4bit/,6,11,185.70,32.31,87.01,126.42,2026-07-06,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?"
diff --git a/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_granite-vision-3.2-2b-4bit.csv b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_granite-vision-3.2-2b-4bit.csv
new file mode 100644
index 00000000..ba8620ee
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_granite-vision-3.2-2b-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+granite-vision-3.2-2b-4bit,./models/granite-vision-3.2-2b-4bit/,6,100,38.40,156.25,666.52,150.03,2026-07-06,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?"
diff --git a/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_hunyuanocr-mlx-4bit.csv b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_hunyuanocr-mlx-4bit.csv
new file mode 100644
index 00000000..e0392abb
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_hunyuanocr-mlx-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+hunyuanocr-mlx-4bit,./models/hunyuanocr-mlx-4bit/,284,11,261.88,1084.46,72.78,151.14,2026-07-06,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?"
diff --git a/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_idefics2-8b-4bit.csv b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_idefics2-8b-4bit.csv
new file mode 100644
index 00000000..ef3b8506
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_idefics2-8b-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+idefics2-8b-4bit,./models/idefics2-8b-4bit/,340,15,972.26,349.70,147.39,101.77,2026-07-06,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?"
diff --git a/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_idefics3-8b-llama3-4bit.csv b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_idefics3-8b-llama3-4bit.csv
new file mode 100644
index 00000000..4a4bc822
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_idefics3-8b-llama3-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+idefics3-8b-llama3-4bit,./models/idefics3-8b-llama3-4bit/,3041,100,4718.98,644.42,1113.21,89.83,2026-07-06,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?"
diff --git a/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_lfm2-vl-450m-4bit.csv b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_lfm2-vl-450m-4bit.csv
new file mode 100644
index 00000000..f2b3158b
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_lfm2-vl-450m-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+lfm2-vl-450m-4bit,./models/lfm2-vl-450m-4bit/,,,,,,,2026-07-06,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?",FAIL:warmup
diff --git a/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_qwen3-omni-30b-a3b-instruct-4bit.csv b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_qwen3-omni-30b-a3b-instruct-4bit.csv
new file mode 100644
index 00000000..c9b77b0e
--- /dev/null
+++ b/benchmarks/pylm_m1ultra_vlm_2026-07-06_single_qwen3-omni-30b-a3b-instruct-4bit.csv
@@ -0,0 +1,2 @@
+model,model_path,prompt_tokens,generated_tokens,prefill_ms,prefill_tok_s,decode_ms,decode_tok_s,date,hardware,mlx_version,build_type,max_tokens,prompt
+qwen3-omni-30b-a3b-instruct-4bit,./models/qwen3-omni-30b-a3b-instruct-4bit/,65,63,388.87,167.15,1545.63,40.76,2026-07-06,Apple_M1_Ultra_128GB,mlx-vlm-0.4.4,python,100,"What is in this image?"
diff --git a/docs/benchmark_results/model_tests.md b/docs/benchmark_results/model_tests.md
index b4bc0d6d..9d935ac3 100644
--- a/docs/benchmark_results/model_tests.md
+++ b/docs/benchmark_results/model_tests.md
@@ -10,7 +10,7 @@ M5 Max, and mlx-lm / mlx-vlm baselines, see
 
 | Hardware | File | Status | Last Updated |
 |----------|------|--------|-------------|
-| Mac Studio M1 Ultra 128GB | [model_tests_m1ultra.md](model_tests_m1ultra.md) | Active | 2026-06-15 |
+| Mac Studio M1 Ultra 128GB | [model_tests_m1ultra.md](model_tests_m1ultra.md) | Active | 2026-07-06 |
 | MacBook Pro M5 Max 128GB | [model_tests_m5max.md](model_tests_m5max.md) | Active | 2026-06-15 |
 | NVIDIA GB10 (DGX Spark) | [model_tests_gb10.md](model_tests_gb10.md) | Active | 2026-06-17 |
 
@@ -27,6 +27,9 @@ Current source-of-truth data lives in `benchmarks/`:
 | `metal_m5max_vlm_2026-05-20.csv` | M5 Max | 2026-05-20 (mlxcel 0.0.28, MLX 0.31.2; Gemma3n + Molmo v1 + Phi-3.5 vision + Gemma3 4B VLM entries) | VLM |
 | `pylm_m5max_2026-05-18.csv` | M5 Max | 2026-05-19 benchmark campaign (mlx-lm 0.31.3 baseline; CSV date crossed midnight) | Text |
 | `pylm_m5max_vlm_2026-05-18.csv` | M5 Max | 2026-05-19 benchmark campaign (mlx-vlm 0.4.4 baseline; CSV date crossed midnight) | VLM |
+| `metal_m1ultra_2026-07-06.csv` | M1 Ultra | 2026-07-06 (mlxcel 0.3.3; full text re-benchmark post VLM-port batch #660-#664 and fixes #666-#668/#671, 169 rows) | Text |
+| `metal_m1ultra_vlm_2026-07-06.csv` | M1 Ultra | 2026-07-06 (mlxcel 0.3.3; full VLM re-benchmark, 14 new VLM families measured) | VLM |
+| `pylm_m1ultra_*2026-07-06*_single_*.csv` | M1 Ultra | 2026-07-06 (mlx-lm 0.31.3 / mlx-vlm dev; per-model python baselines for 21 newly added models, 13 measured / 8 python-side FAIL) | Baselines |
 | `metal_m1ultra_2026-06-15.csv` | M1 Ultra | 2026-06-15 (mlxcel 0.2.1, MLX pin a6ec712; full text re-benchmark post #289 fix, 151 rows) | Text |
 | `metal_m1ultra_vlm_2026-06-15.csv` | M1 Ultra | 2026-06-15 (mlxcel 0.2.1, MLX pin a6ec712; full VLM re-benchmark, 55 measured rows) | VLM |
 | `metal_m1ultra_2026-06-15_pre289_regressed.csv` | M1 Ultra | 2026-06-15 (mlxcel pre-#290; bf16-scale decode regression evidence sweep) | Text |
diff --git a/docs/benchmark_results/model_tests_m1ultra.md b/docs/benchmark_results/model_tests_m1ultra.md
index 425dec7e..a69cf836 100644
--- a/docs/benchmark_results/model_tests_m1ultra.md
+++ b/docs/benchmark_results/model_tests_m1ultra.md
@@ -10,14 +10,14 @@ Compatibility and performance testing for mlxcel models on **Mac Studio M1 Ultra
 |------|-------|
 | **Hardware** | Mac Studio M1 Ultra, 128GB RAM |
 | **OS** | macOS 26.4 (Tahoe) |
-| **mlxcel version** | 0.2.1 |
+| **mlxcel version** | 0.3.3 |
 | **MLX version** | 0.32.0-dev pin (commit a6ec712, 2026-06-11 upstream main, via mlxcel-core) |
 | **Bench harness** | `mlxcel-bench-decode` (model load, warmup, and measured pass in one process) |
 | **mlx-lm baseline** | 0.31.3 (dev checkout https://github.com/ml-explore/mlx-lm @ `df1d3f3` — "Fix Gemma 4 sanitize() not stripping KV projections for shared layers" ml-explore/mlx-lm#1240) |
 | **mlx-vlm baseline** | dev checkout https://github.com/Blaizzy/mlx-vlm @ `d85ca4d` — "Compatibility bridge for non-VL models" Blaizzy/mlx-vlm#1181 |
 | **Test Prompt** | "Hello, how are you today?" (text) / "What is in this image?" (VLM) |
 | **Max Tokens** | 100 (measured pass); 20 (warmup pass, same process) |
-| **Test Date** | 2026-05-19 full sweep (baseline); 2026-05-28 full text + VLM re-benchmark on mlxcel 0.1.0 (`--cooldown 0`); 2026-06-12 full text + VLM re-benchmark on mlxcel 0.1.4 (MLX pin a6ec712, post issue #222 bump); 2026-06-15 full text + VLM re-benchmark on mlxcel 0.2.1 (post #289 fix) |
+| **Test Date** | 2026-05-19 full sweep (baseline); 2026-05-28 full text + VLM re-benchmark on mlxcel 0.1.0 (`--cooldown 0`); 2026-06-12 full text + VLM re-benchmark on mlxcel 0.1.4 (MLX pin a6ec712, post issue #222 bump); 2026-06-15 full text + VLM re-benchmark on mlxcel 0.2.1 (post #289 fix); 2026-07-06 full text + VLM re-benchmark on mlxcel 0.3.3 (post 5-family VLM port batch #660-#664 and fix batch #666-#668, #671) |
 | **Baseline CSVs** | `benchmarks/pylm_m1ultra_2026-05-19.csv` (mlx-lm, 75 ran / 33 FAIL / 3 oversize-skip / 1 exit-fail) + `benchmarks/pylm_m1ultra_vlm_2026-05-19.csv` (mlx-vlm, 20 working VLM models) |
 
 ## Legend
@@ -32,64 +32,64 @@ Compatibility and performance testing for mlxcel models on **Mac Studio M1 Ultra
 
 | Model | Test Model | Status | Prefill | Decode | vs mlx-lm | Notes |
 |-------|------------|--------|---------|--------|-----------|-------|
-| llama3 | Llama-3.2-1B-Instruct-4bit | ✅ | 1964.37 | 364.36 | 87% | mlx-lm: 418.25; only 48 tokens |
+| llama3 | Llama-3.2-1B-Instruct-4bit | ✅ | 1950.81 | 431.96 | **103%** | mlx-lm: 418.25; only 48 tokens |
 | llama3 (8B bf16) | Llama-3.1-8B-Instruct (bf16) | ✅ | 418.74 | 35.58 | **101%** | mlx-lm: 35.32; non-quantized |
-| llama3.1 | Llama-3.1-8B-Instruct-4bit | ✅ | 486.83 | 107.89 | 97% | mlx-lm: 110.66; only 54 tokens |
+| llama3.1 | Llama-3.1-8B-Instruct-4bit | ✅ | 485.14 | 108.65 | 98% | mlx-lm: 110.66; only 54 tokens |
 | llama4 | Llama-4-Scout-17B-16E-Instruct-4bit | ⚠️ | 119.48 | 36.42 | - | mlx-lm: FAIL; long outputs repetitive |
-| qwen2 | Qwen2.5-0.5B-Instruct-4bit | ✅ | 1229.91 | 343.91 | **109%** | mlx-lm: 315.48 |
-| qwen2 (7B 4bit) | Qwen2.5-7B-Instruct-4bit | ✅ | 302.83 | 112.58 | **102%** | mlx-lm: 110.90 |
-| qwen2 (7B 8bit) | Qwen2.5-7B-Instruct-8bit | ✅ | 305.08 | 70.22 | 100% | mlx-lm: 70.46; 8-bit quantized |
-| qwen3 | Qwen3-0.6B-4bit | ✅ | 558.86 | 275.55 | 92% | mlx-lm: 299.61 |
-| qwen3 (1.7B) | Qwen3-1.7B-4bit | ✅ | 368.73 | 182.96 | 83% | mlx-lm: 221.37 |
-| qwen3 (4B) | Qwen3-4B-4bit | ✅ | 249.40 | 120.14 | 97% | mlx-lm: 123.92 |
-| qwen3 (8B) | Qwen3-8B-4bit | ✅ | 168.77 | 80.29 | 95% | mlx-lm: 84.54 |
-| qwen3_5 (0.8B) | Qwen3.5-0.8B-4bit | ✅ | 493.11 | 229.86 | 85% | mlx-lm: 269.52; Hybrid GatedDeltaNet |
-| qwen3_5 (2B) | Qwen3.5-2B-4bit | ✅ | 394.36 | 172.86 | 82% | mlx-lm: 211.68; Hybrid GatedDeltaNet; only 36 tokens |
-| qwen3_5 (4B) | Qwen3.5-4B-4bit | ✅ | 245.31 | 98.36 | 85% | mlx-lm: 115.60; Hybrid GatedDeltaNet; only 36 tokens |
-| qwen3_5 (9B 4bit) | qwen3.5-9B-4bit | ✅ | 152.95 | 70.67 | 87% | mlx-lm: 81.27; Hybrid GatedDeltaNet; only 29 tokens |
+| qwen2 | Qwen2.5-0.5B-Instruct-4bit | ✅ | 1222.51 | 374.64 | **119%** | mlx-lm: 315.48 |
+| qwen2 (7B 4bit) | Qwen2.5-7B-Instruct-4bit | ✅ | 299.80 | 111.72 | **101%** | mlx-lm: 110.90 |
+| qwen2 (7B 8bit) | Qwen2.5-7B-Instruct-8bit | ✅ | 306.69 | 70.39 | **100%** | mlx-lm: 70.46; 8-bit quantized |
+| qwen3 | Qwen3-0.6B-4bit | ✅ | 566.07 | 213.59 | 71% | mlx-lm: 299.61 |
+| qwen3 (1.7B) | Qwen3-1.7B-4bit | ✅ | 392.73 | 189.85 | 86% | mlx-lm: 221.37 |
+| qwen3 (4B) | Qwen3-4B-4bit | ✅ | 249.31 | 122.13 | 99% | mlx-lm: 123.92 |
+| qwen3 (8B) | Qwen3-8B-4bit | ✅ | 164.87 | 81.77 | 97% | mlx-lm: 84.54 |
+| qwen3_5 (0.8B) | Qwen3.5-0.8B-4bit | ✅ | 596.53 | 254.77 | 95% | mlx-lm: 269.52; Hybrid GatedDeltaNet |
+| qwen3_5 (2B) | Qwen3.5-2B-4bit | ✅ | 393.22 | 195.89 | 93% | mlx-lm: 211.68; Hybrid GatedDeltaNet; only 36 tokens |
+| qwen3_5 (4B) | Qwen3.5-4B-4bit | ✅ | 252.12 | 108.86 | 94% | mlx-lm: 115.60; Hybrid GatedDeltaNet; only 36 tokens |
+| qwen3_5 (9B 4bit) | qwen3.5-9B-4bit | ✅ | 152.14 | 72.08 | 89% | mlx-lm: 81.27; Hybrid GatedDeltaNet; only 29 tokens |
 | qwen3_5 (9B bf16) | qwen3.5-9B (bf16) | ✅ | 147.38 | 31.35 | 92% | mlx-lm: 34.22; bf16, not quantized; Hybrid GatedDeltaNet (compiled fused kernel) |
-| qwen3_5 (27B) | qwen3.5-27B-4bit | ✅ | 50.94 | 23.87 | 92% | mlx-lm: 25.93; Hybrid Transformer+GatedDeltaNet; VLM wrapper format |
-| qwen3_6 | qwen3.6-35B-A3B-4bit | ✅ | 214.72 | 64.61 | 88% | mlx-lm: 73.18; MoE architecture; 100 tokens |
+| qwen3_5 (27B) | qwen3.5-27B-4bit | ✅ | 51.63 | 24.09 | 93% | mlx-lm: 25.93; Hybrid Transformer+GatedDeltaNet; VLM wrapper format |
+| qwen3_6 | qwen3.6-35B-A3B-4bit | ✅ | 229.03 | 78.84 | **108%** | mlx-lm: 73.18; MoE architecture; 100 tokens |
 | qwen3_next | qwen3-next-480B-4bit | ⏳ | - | SKIP | - | Qwen3Next 480B architecture; >65GB skipped on 128GB host |
-| qwen2 (1.5B) | Qwen2.5-1.5B-Instruct-4bit | ✅ | 858.06 | 241.16 | **101%** | mlx-lm: 239.20; 100 tokens |
-| qwen2 (1.5B base) | Qwen2.5-1.5B-4bit | ✅ | 752.27 | 240.80 | 100% | mlx-lm: 241.41; base variant; 100 tokens |
+| qwen2 (1.5B) | Qwen2.5-1.5B-Instruct-4bit | ✅ | 859.05 | 247.42 | **103%** | mlx-lm: 239.20; 100 tokens |
+| qwen2 (1.5B base) | Qwen2.5-1.5B-4bit | ✅ | 743.52 | 258.66 | **107%** | mlx-lm: 241.41; base variant; 100 tokens |
 | phi | phi-2-hf-4bit-mlx | ✅ | 164.39 | 65.09 | - | mlx-lm fails to load; only 1 token (likely EOS) |
-| phi3 | Phi-3-mini-4k-instruct-4bit | ✅ | 194.34 | 168.08 | 98% | mlx-lm: 171.36; only 25 tokens |
-| phi3small | Phi-3.5-mini-instruct-4bit | ✅ | 234.59 | 163.60 | 98% | mlx-lm: 166.30; only 40 tokens |
-| phi4 | Phi-4-4bit | ✅ | 116.20 | 58.46 | 100% | mlx-lm: 58.68 |
-| smollm3 | SmolLM-135M-Instruct-4bit | ✅ | 579.03 | 374.92 | 100% | mlx-lm: 375.91 |
-| smollm3 (3B) | SmolLM3-3B-4bit | ✅ | 540.93 | 126.29 | 89% | mlx-lm: 141.66 |
+| phi3 | Phi-3-mini-4k-instruct-4bit | ✅ | 198.08 | 169.06 | 99% | mlx-lm: 171.36; only 25 tokens |
+| phi3small | Phi-3.5-mini-instruct-4bit | ✅ | 192.42 | 163.94 | 99% | mlx-lm: 166.30; only 40 tokens |
+| phi4 | Phi-4-4bit | ✅ | 112.20 | 58.44 | **100%** | mlx-lm: 58.68 |
+| smollm3 | SmolLM-135M-Instruct-4bit | ✅ | 479.02 | 435.50 | **116%** | mlx-lm: 375.91 |
+| smollm3 (3B) | SmolLM3-3B-4bit | ✅ | 569.01 | 135.51 | 96% | mlx-lm: 141.66 |
 | stablelm | stablelm-2-1_6b-chat-4bit | ✅ | 652.74 | 270.88 | 97% | mlx-lm: 280.65; only 59 tokens |
-| starcoder2 | starcoder2-3b-4bit | ✅ | 169.68 | 166.40 | **100%** | mlx-lm: 166.17 |
-| olmo | OLMo-1B-hf-4bit | ✅ | 188.02 | 210.63 | - | mlx-lm: FAIL |
-| olmo2 | OLMo2-7B-4bit | ✅ | 285.00 | 103.48 | 93% | mlx-lm: 110.88; only 27 tokens |
-| olmo3 | OLMo3.1-32B-4bit | ✅ | 81.65 | 21.81 | **101%** | mlx-lm: 21.57 |
-| minicpm | MiniCPM-2B-sft-bf16-4bit | ✅ | 290.84 | 164.41 | **105%** | mlx-lm: 156.47 |
+| starcoder2 | starcoder2-3b-4bit | ✅ | 183.78 | 169.13 | **102%** | mlx-lm: 166.17 |
+| olmo | OLMo-1B-hf-4bit | ✅ | 188.31 | 217.11 | - | mlx-lm: FAIL |
+| olmo2 | OLMo2-7B-4bit | ✅ | 285.51 | 104.97 | 95% | mlx-lm: 110.88; only 27 tokens |
+| olmo3 | OLMo3.1-32B-4bit | ✅ | 80.89 | 21.96 | **102%** | mlx-lm: 21.57 |
+| minicpm | MiniCPM-2B-sft-bf16-4bit | ✅ | 303.18 | 156.66 | **100%** | mlx-lm: 156.47 |
 | mimo | MiMo-7B-RL-4bit | ✅ | 229.33 | 85.30 | 99% | mlx-lm: 86.17 |
 
 ## Gemma Family
 
 | Model | Test Model | Status | Prefill | Decode | vs mlx-lm | Notes |
 |-------|------------|--------|---------|--------|-----------|-------|
-| gemma | gemma-2b-it-4bit | ✅ | 393.25 | 195.69 | 94% | mlx-lm: 207.78; only 49 tokens |
+| gemma | gemma-2b-it-4bit | ✅ | 390.34 | 191.92 | 92% | mlx-lm: 207.78; only 49 tokens |
 | gemma2 | gemma-2-2b-it-4bit | ✅ | 338.50 | 166.07 | **108%** | mlx-lm: 153.50; only 18 tokens |
 | gemma3 | gemma-3-1b-it-4bit | ✅ | 462.07 | 229.70 | **109%** | mlx-lm: 211.50; only 34 tokens |
-| gemma3 (4B) | gemma-3-4b-it-4bit | ✅ | 214.60 | 116.59 | **106%** | mlx-lm: 109.48; only 86 tokens |
-| gemma4 (12B) | gemma-4-12b-it-4bit | ✅ | 108.87 | 34.76 | - | NEW (6-12); no mlx-lm baseline |
-| gemma4 (31B) | gemma-4-31b-4bit | ✅ | 24.16 | 20.25 | 99% | mlx-lm: 20.36 |
-| gemma4 (31B-it) | gemma-4-31b-it-4bit | ✅ | 49.18 | 19.33 | 96% | mlx-lm: 20.23; instruction-tuned variant |
-| gemma4 (31B-it QAT) | gemma-4-31B-it-qat-4bit | ✅ | 47.93 | 15.53 | - | NEW (6-12); QAT variant; no mlx-lm baseline |
-| gemma4 (26B A4B) | gemma-4-26b-a4b-it-4bit | ✅ | 186.68 | 79.92 | **110%** | mlx-lm: 72.52; only 26 tokens |
-| gemma4 (26B A4B QAT) | gemma-4-26B-A4B-it-qat-4bit | ✅ | 185.36 | 77.99 | - | NEW (6-12); QAT variant; no mlx-lm baseline |
-| gemma4 (diffusion 26B A4B) | diffusiongemma-26B-A4B-it-4bit | ✅ | 182.66 | 68.50 | - | block-diffusion; AR-equivalent decode of the same backbone; current upstream export is mixed-precision (8-bit attn/mlp/embed + 4-bit default, per-layer quant), supported via per-tensor bit inference in the quantized embedding (#291); diffusion generation verified correct; see docs/block-diffusion.md |
-| gemma4 (E2B 4bit) | gemma-4-e2b-it-4bit | ✅ | 266.04 | 117.24 | - | mlx-lm: FAIL; only 34 tokens |
-| gemma4 (E2B 8bit) | gemma-4-e2b-it-8bit | ✅ | 248.37 | 87.87 | - | mlx-lm: FAIL; only 38 tokens |
-| gemma4 (E2B QAT) | gemma-4-e2b-it-qat-4bit | ✅ | 204.67 | 95.29 | - | NEW (6-12); QAT variant; no mlx-lm baseline |
-| gemma4 (E4B 4bit) | gemma-4-e4b-it-4bit | ✅ | 186.97 | 82.43 | - | mlx-lm: FAIL; only 25 tokens |
-| gemma4 (E4B 8bit) | gemma-4-e4b-it-8bit | ✅ | 177.82 | 59.20 | - | mlx-lm: FAIL; only 39 tokens |
-| gemma4 (E4B QAT) | gemma-4-e4b-it-qat-4bit | ✅ | 140.06 | 63.73 | - | NEW (6-12); QAT variant; no mlx-lm baseline |
-| gemma3n | gemma-3n-E2B-it-4bit | ✅ | 240.06 | 75.85 | - | mlx-lm: FAIL; only 69 tokens |
-| gemma3n (E4B) | gemma-3n-E4B-it-4bit | ✅ | 174.65 | 57.91 | - | mlx-lm: FAIL; only 74 tokens |
+| gemma3 (4B) | gemma-3-4b-it-4bit | ✅ | 216.61 | 118.57 | **108%** | mlx-lm: 109.48; only 86 tokens |
+| gemma4 (12B) | gemma-4-12b-it-4bit | ✅ | 109.37 | 35.00 | - | NEW (6-12); no mlx-lm baseline |
+| gemma4 (31B) | gemma-4-31b-4bit | ✅ | 22.95 | 20.39 | **100%** | mlx-lm: 20.36 |
+| gemma4 (31B-it) | gemma-4-31b-it-4bit | ✅ | 46.54 | 19.48 | 96% | mlx-lm: 20.23; instruction-tuned variant |
+| gemma4 (31B-it QAT) | gemma-4-31B-it-qat-4bit | ✅ | 45.30 | 15.60 | - | NEW (6-12); QAT variant; no mlx-lm baseline |
+| gemma4 (26B A4B) | gemma-4-26b-a4b-it-4bit | ✅ | 186.88 | 81.36 | **112%** | mlx-lm: 72.52; only 26 tokens |
+| gemma4 (26B A4B QAT) | gemma-4-26B-A4B-it-qat-4bit | ✅ | 164.32 | 79.46 | - | NEW (6-12); QAT variant; no mlx-lm baseline |
+| gemma4 (diffusion 26B A4B) | diffusiongemma-26B-A4B-it-4bit | ✅ | 180.55 | 66.80 | - | block-diffusion; AR-equivalent decode of the same backbone; current upstream export is mixed-precision (8-bit attn/mlp/embed + 4-bit default, per-layer quant), supported via per-tensor bit inference in the quantized embedding (#291); diffusion generation verified correct; see docs/block-diffusion.md |
+| gemma4 (E2B 4bit) | gemma-4-e2b-it-4bit | ✅ | 262.64 | 129.34 | - | mlx-lm: FAIL; only 34 tokens |
+| gemma4 (E2B 8bit) | gemma-4-e2b-it-8bit | ✅ | 239.31 | 96.46 | - | mlx-lm: FAIL; only 38 tokens |
+| gemma4 (E2B QAT) | gemma-4-e2b-it-qat-4bit | ✅ | 191.79 | 102.77 | - | NEW (6-12); QAT variant; no mlx-lm baseline |
+| gemma4 (E4B 4bit) | gemma-4-e4b-it-4bit | ✅ | 178.68 | 87.46 | - | mlx-lm: FAIL; only 25 tokens |
+| gemma4 (E4B 8bit) | gemma-4-e4b-it-8bit | ✅ | 159.00 | 62.79 | - | mlx-lm: FAIL; only 39 tokens |
+| gemma4 (E4B QAT) | gemma-4-e4b-it-qat-4bit | ✅ | 129.23 | 66.42 | - | NEW (6-12); QAT variant; no mlx-lm baseline |
+| gemma3n | gemma-3n-E2B-it-4bit | ✅ | 222.73 | 89.47 | - | mlx-lm: FAIL; only 69 tokens |
+| gemma3n (E4B) | gemma-3n-E4B-it-4bit | ✅ | 164.73 | 68.14 | - | mlx-lm: FAIL; only 74 tokens |
 | gemma3n (E4B bf16) | gemma-3n-E4B-it (bf16) | ✅ | 175.61 | 32.95 | 84% | mlx-lm: 39.02; bf16; AltUp/MLP decode graph scheduling |
 | recurrent_gemma | - | ⏳ | - | - | - | Griffin SSM+attention hybrid |
 
@@ -97,7 +97,7 @@ Compatibility and performance testing for mlxcel models on **Mac Studio M1 Ultra
 
 | Model | Test Model | Status | Prefill | Decode | vs mlx-lm | Notes |
 |-------|------------|--------|---------|--------|-----------|-------|
-| exaone | EXAONE-3.5-2.4B-Instruct-4bit | ✅ | 741.95 | 197.73 | **102%** | mlx-lm: 194.65 |
+| exaone | EXAONE-3.5-2.4B-Instruct-4bit | ✅ | 748.71 | 205.21 | **105%** | mlx-lm: 194.65 |
 | exaone4 | exaone-4.0-1.2b-4bit | ✅ | 462.20 | 241.51 | - | mlx-lm: FAIL; only 18 tokens |
 | exaone_moe | - | ⏳ | - | - | - | |
 
@@ -105,31 +105,31 @@ Compatibility and performance testing for mlxcel models on **Mac Studio M1 Ultra
 
 | Model | Test Model | Status | Prefill | Decode | vs mlx-lm | Notes |
 |-------|------------|--------|---------|--------|-----------|-------|
-| cohere | c4ai-command-r7b-12-2024-4bit | ✅ | 95.82 | 111.72 | **104%** | mlx-lm: 107.75 |
-| cohere2 | aya-expanse-8b-4bit | ✅ | 98.14 | 108.53 | 96% | mlx-lm: 112.74 |
+| cohere | c4ai-command-r7b-12-2024-4bit | ✅ | 86.60 | 113.24 | **105%** | mlx-lm: 107.75 |
+| cohere2 | aya-expanse-8b-4bit | ✅ | 98.48 | 109.25 | 97% | mlx-lm: 112.74 |
 
 ## MoE (Mixture of Experts)
 
 | Model | Test Model | Status | Prefill | Decode | vs mlx-lm | Notes |
 |-------|------------|--------|---------|--------|-----------|-------|
-| minimax | MiniMax-M2-3bit | ✅ | 67.99 | 31.90 | - | mlx-lm: FAIL on this host; 93GB, fits on the 128GB host since the 05-28 run |
-| mixtral | Mixtral-8x7B-Instruct-v0.1-4bit | ✅ | 80.96 | 54.25 | 99% | mlx-lm: 54.91; only 73 tokens |
-| qwen2_moe | Qwen1.5-MoE-A2.7B-Chat-4bit | ✅ | 386.79 | 145.88 | **101%** | mlx-lm: 144.98; only 43 tokens |
-| qwen3_moe | Qwen3-30B-A3B-4bit | ✅ | 197.62 | 83.75 | **119%** | mlx-lm: 70.18 |
-| qwen3_5_moe | qwen3.5-35B-A3B-4bit | ✅ | 224.46 | 69.74 | 91% | mlx-lm: 76.44; Hybrid GatedDeltaNet + MoE (256 experts); only 34 tokens |
-| phimoe | Phi-3.5-MoE-instruct-4bit | ✅ | 114.02 | 76.55 | **110%** | mlx-lm: 69.28 |
-| solar_open | Solar-Open-100B-4bit | ✅ | 70.96 | 32.96 | 92% | mlx-lm: 35.69; 128 experts, top-8; layer-eval skip; 54GB |
+| minimax | MiniMax-M2-3bit | ✅ | 80.97 | 33.27 | - | mlx-lm: FAIL on this host; 93GB, fits on the 128GB host since the 05-28 run |
+| mixtral | Mixtral-8x7B-Instruct-v0.1-4bit | ✅ | 80.19 | 54.88 | **100%** | mlx-lm: 54.91; only 73 tokens |
+| qwen2_moe | Qwen1.5-MoE-A2.7B-Chat-4bit | ✅ | 383.02 | 150.86 | **104%** | mlx-lm: 144.98; only 43 tokens |
+| qwen3_moe | Qwen3-30B-A3B-4bit | ✅ | 195.36 | 83.63 | **119%** | mlx-lm: 70.18 |
+| qwen3_5_moe | qwen3.5-35B-A3B-4bit | ✅ | 224.40 | 82.25 | **108%** | mlx-lm: 76.44; Hybrid GatedDeltaNet + MoE (256 experts); only 34 tokens |
+| phimoe | Phi-3.5-MoE-instruct-4bit | ✅ | 110.84 | 77.51 | **112%** | mlx-lm: 69.28 |
+| solar_open | Solar-Open-100B-4bit | ✅ | 74.89 | 36.24 | **102%** | mlx-lm: 35.69; 128 experts, top-8; layer-eval skip; 54GB |
 | solar_open (int4) | Solar-Open-100B-int4 | ✅ | - | 11.55 | - | mlx-lm: fails to load; 128 experts, top-8; int4 quantization; 54GB; not in the 06-12 sweep |
 | olmoe | OLMoE-1B-7B-0125-Instruct-4bit | ⏳ | - | - | - | router scoring fix (#318): full softmax over all experts then gather, not top-k-only softmax; greedy temp-0 output now coherent; perf sweep pending |
 | gpt_oss (20B) | gpt-oss-20b-MXFP4-Q4 | ✅ | 282.44 | 89.72 | **100%** | mlx-lm: 89.51; MXFP4 quantization; 32 experts; bf16 decode fix |
-| gpt_oss (120B) | gpt-oss-120b-4bit | ✅ | 162.21 | 58.41 | **101%** | mlx-lm: 57.58; 128 experts, top-4; 61GB model; bf16 decode fix |
+| gpt_oss (120B) | gpt-oss-120b-4bit | ✅ | 163.97 | 60.08 | **104%** | mlx-lm: 57.58; 128 experts, top-4; 61GB model; bf16 decode fix |
 
 ## DeepSeek Family
 
 | Model | Test Model | Status | Prefill | Decode | vs mlx-lm | Notes |
 |-------|------------|--------|---------|--------|-----------|-------|
-| deepseek | deepseek-coder-1.3b-instruct-4bit | ✅ | 1439.51 | 157.78 | - | mlx-lm: FAIL |
-| deepseek_v2 | DeepSeek-V2-Lite-Chat-4bit | ✅ | 216.67 | 101.56 | 87% | mlx-lm: 117.06; only 18 tokens |
+| deepseek | deepseek-coder-1.3b-instruct-4bit | ✅ | 1379.78 | 164.04 | - | mlx-lm: FAIL |
+| deepseek_v2 | DeepSeek-V2-Lite-Chat-4bit | ✅ | 252.80 | 107.91 | 92% | mlx-lm: 117.06; only 18 tokens |
 | deepseek_r1 | DeepSeek-R1-Distill-Qwen-7B-4bit | ✅ | 172.43 | 111.65 | **100%** | mlx-lm: 111.34 |
 | deepseek_v3 | deepseek-v3-4bit | ⏳ | - | SKIP | - | MoE + MLA; >65GB skipped on 128GB host (99GB) |
 | deepseek_v32 | - | ⏳ | - | - | - | |
@@ -138,41 +138,41 @@ Compatibility and performance testing for mlxcel models on **Mac Studio M1 Ultra
 
 | Model | Test Model | Status | Prefill | Decode | vs mlx-lm | Notes |
 |-------|------------|--------|---------|--------|-----------|-------|
-| minicpm3 | MiniCPM3-4B-4bit | ✅ | 237.75 | 80.22 | **110%** | mlx-lm: 73.26 |
+| minicpm3 | MiniCPM3-4B-4bit | ✅ | 242.40 | 89.43 | **122%** | mlx-lm: 73.26 |
 
 ## Nemotron Family
 
 | Model | Test Model | Status | Prefill | Decode | vs mlx-lm | Notes |
 |-------|------------|--------|---------|--------|-----------|-------|
-| nemotron_h | Nemotron-H-30B-4bit | ✅ | 179.02 | 91.54 | 98% | mlx-lm: 93.34; Hybrid Mamba2+Transformer+MoE; SSM Metal kernel |
+| nemotron_h | Nemotron-H-30B-4bit | ✅ | 179.47 | 91.94 | 99% | mlx-lm: 93.34; Hybrid Mamba2+Transformer+MoE; SSM Metal kernel |
 | nemotron_nas | Nemotron-NAS-30B-A3B-4bit | ✅ | 178.98 | 91.56 | 99% | mlx-lm: 92.93; Hybrid Mamba2+Transformer+MoE |
-| nemotron_h_nano_omni | Nemotron-3-Nano-Omni-30B-A3B-Reasoning-4bit | ✅ | 178.94 | 88.11 | - | mlx-lm: FAIL; NEW (5-19); Mamba2+Transformer+MoE+Parakeet audio; 100 tokens |
+| nemotron_h_nano_omni | Nemotron-3-Nano-Omni-30B-A3B-Reasoning-4bit | ✅ | 178.23 | 86.57 | - | mlx-lm: FAIL; NEW (5-19); Mamba2+Transformer+MoE+Parakeet audio; 100 tokens |
 
 ## SSM / Mamba Models
 
 | Model | Test Model | Status | Prefill | Decode | vs mlx-lm | Notes |
 |-------|------------|--------|---------|--------|-----------|-------|
-| mamba | Falcon-Mamba-7B-4bit | ⚠️ | 92.46 | 37.54 | 41% | mlx-lm: 91.04; only 2 tokens due to chat template EOS |
-| mamba2 | mamba2-1.3b-4bit | ✅ | 164.72 | 79.25 | - | mlx-lm: FAIL |
-| jamba | Jamba-v0.1-4bit | ✅ | 337.33 | 122.38 | 93% | mlx-lm: 131.04; only 76 tokens |
+| mamba | Falcon-Mamba-7B-4bit | ⚠️ | 116.62 | 45.67 | 50% | mlx-lm: 91.04; only 2 tokens due to chat template EOS |
+| mamba2 | mamba2-1.3b-4bit | ✅ | 184.03 | 108.23 | - | mlx-lm: FAIL |
+| jamba | Jamba-v0.1-4bit | ✅ | 339.79 | 130.98 | **100%** | mlx-lm: 131.04; only 76 tokens |
 | rwkv7 | - | ⏳ | - | - | - | RWKV v7 linear attention |
 
 ## Chinese / Asian Language Models
 
 | Model | Test Model | Status | Prefill | Decode | vs mlx-lm | Notes |
 |-------|------------|--------|---------|--------|-----------|-------|
-| baichuan | Baichuan-M1-14B-Instruct-4bit | ✅ | 56.83 | 40.47 | 82% | mlx-lm: 49.11; only 39 tokens |
+| baichuan | Baichuan-M1-14B-Instruct-4bit | ✅ | 55.29 | 37.83 | 77% | mlx-lm: 49.11; only 39 tokens |
 | glm4 | GLM-4-Flash-4bit | ✅ | 127.61 | 45.53 | 92% | mlx-lm: 49.47; Only 18 tokens |
 | glm4_moe | - | ⏳ | - | - | - | |
 | glm4_moe_lite | GLM-4.7-Flash-4bit | ✅ | - | 31.54 | 76% | mlx-lm: 41.55; only 18 tokens |
 | glm5 | GLM-5-4bit | ❌ | - | FAIL | - | warmup failure (persistent) |
-| internlm2 | InternLM2-7B-4bit | ✅ | 217.33 | 109.69 | 98% | mlx-lm: 111.92 |
-| internlm3 | internlm3-8b-instruct-4bit | ✅ | 306.15 | 87.02 | - | mlx-lm: FAIL |
-| ernie4_5 | ERNIE-4.5-0.3B-Instruct-4bit | ✅ | 1141.23 | 495.71 | - | mlx-lm: FAIL |
+| internlm2 | InternLM2-7B-4bit | ✅ | 209.11 | 109.41 | 98% | mlx-lm: 111.92 |
+| internlm3 | internlm3-8b-instruct-4bit | ✅ | 312.53 | 87.36 | - | mlx-lm: FAIL |
+| ernie4_5 | ERNIE-4.5-0.3B-Instruct-4bit | ✅ | 1117.19 | 544.02 | - | mlx-lm: FAIL |
 | ernie4_5_moe | - | ⏳ | - | - | - | |
 | hunyuan_moe | Hunyuan-Large-Instruct-4bit | ✅ | 77.40 | 44.07 | - | mlx-lm: FAIL |
 | hunyuan_moe_13b | HunYuan-MoE-A13B-Instruct (bf16) | ❌ | - | FAIL | - | mlx-lm: fails to load; Tiktoken tokenizer; bf16; warmup failure |
-| hunyuan_v1_dense | Hunyuan-1.8B-Instruct-4bit | ✅ | 268.39 | 182.55 | 91% | mlx-lm: 200.59; only 41 tokens |
+| hunyuan_v1_dense | Hunyuan-1.8B-Instruct-4bit | ✅ | 290.57 | 180.60 | 90% | mlx-lm: 200.59; only 41 tokens |
 | kimi_linear | - | ⏳ | - | - | - | Kimi linear attention (Moonshot) |
 | step3p5 | - | ⏳ | - | - | - | Step 3.5 (StepFun) |
 
@@ -180,72 +180,100 @@ Compatibility and performance testing for mlxcel models on **Mac Studio M1 Ultra
 
 | Model | Test Model | Status | Prefill | Decode | vs mlx-lm | Notes |
 |-------|------------|--------|---------|--------|-----------|-------|
-| ministral3 | Ministral-3B-Instruct-4bit | ✅ | 906.34 | 142.60 | 89% | mlx-lm: 159.34; VLM wrapper; text-only mode; only 34 tokens |
+| ministral3 | Ministral-3B-Instruct-4bit | ✅ | 914.03 | 145.96 | 92% | mlx-lm: 159.34; VLM wrapper; text-only mode; only 34 tokens |
 | mistral4 | - | ⏳ | - | - | - | MLA + MoE; implemented but no MLX model available |
 | moondream3 | moondream3-preview-4bit | ⚠️ | - | 8.45 | - | mlx-lm: fails to load; text-only test; SigLIP + MLP; image output garbled; only 14 tokens |
 | longcat_flash | - | ⏳ | - | - | - | |
 | longcat_flash_ngram | - | ⏳ | - | - | - | |
-| mistral_small | mistral-small-3.1-24b-4bit | ✅ | 35.39 | 31.94 | 100% | mlx-lm: 31.97; text-only mode |
+| mistral_small | mistral-small-3.1-24b-4bit | ✅ | 134.25 | 29.92 | 94% | mlx-lm: 31.97; text-only mode |
 
 ## Vision-Language Models (VLM)
 
 | Model | Test Model | Status | Prefill | Decode | vs mlx-vlm | Notes |
 |-------|------------|--------|---------|--------|------------|-------|
-| gemma3 | gemma-3-4b-it-4bit | ✅ | 230.47 | 86.57 | 92% | mlx-vlm: 93.79; SigLIP + AvgPool; 275 prompt, 16 gen |
-| gemma3n (E2B) | gemma-3n-E2B-it-4bit | ✅ | 780.31 | 72.95 | **122%** | mlx-vlm: 59.57; MobileNetV5 + MSFA; 273 prompt, 29 gen |
+| gemma3 | gemma-3-4b-it-4bit | ✅ | 238.05 | 83.18 | 89% | mlx-vlm: 93.79; SigLIP + AvgPool; 275 prompt, 16 gen |
+| gemma3n (E2B) | gemma-3n-E2B-it-4bit | ✅ | 743.65 | 83.19 | **140%** | mlx-vlm: 59.57; MobileNetV5 + MSFA; 273 prompt, 29 gen |
 | gemma3n (E4B bf16) | gemma-3n-E4B-it (bf16) | ✅ | 650.70 | 32.31 | 89% | mlx-vlm: 36.18; MobileNetV5 + MSFA; bf16 prefill path retune; bf16; 273 prompt, 24 gen |
-| gemma3n (E4B 4bit) | gemma-3n-E4B-it-4bit | ✅ | 483.72 | 57.92 | **116%** | mlx-vlm: 50.00; 273 prompt, 33 gen |
-| gemma4 (12B) | gemma-4-12b-it-4bit | ✅ | 237.69 | 32.07 | - | NEW (6-12); no mlx-vlm baseline; 277 prompt, 25 gen |
-| gemma4 (E2B 4bit) | gemma-4-e2b-it-4bit | ✅ | 717.10 | 106.05 | **109%** | mlx-vlm: 97.19; 274 prompt, 100 gen |
-| gemma4 (E2B 8bit) | gemma-4-e2b-it-8bit | ✅ | 726.49 | 81.82 | 90% | mlx-vlm: 91.06; 274 prompt, 100 gen |
-| gemma4 (E2B QAT) | gemma-4-e2b-it-qat-4bit | ✅ | 715.27 | 84.01 | - | NEW (6-12); QAT variant; 273 prompt, 42 gen |
-| gemma4 (E4B 4bit) | gemma-4-e4b-it-4bit | ✅ | 455.47 | 75.04 | **107%** | mlx-vlm: 70.34; 274 prompt, 54 gen |
-| gemma4 (E4B 8bit) | gemma-4-e4b-it-8bit | ✅ | 451.61 | 55.76 | 88% | mlx-vlm: 63.25; 274 prompt, 35 gen |
-| gemma4 (E4B QAT) | gemma-4-e4b-it-qat-4bit | ✅ | 450.65 | 60.45 | - | NEW (6-12); QAT variant; 273 prompt, 55 gen |
-| gemma4 (31B 4bit) | gemma-4-31b-4bit | ✅ | 79.78 | 15.48 | 76% | mlx-vlm: 20.30; 274 prompt, 100 gen |
-| gemma4 (31B-it 4bit) | gemma-4-31b-it-4bit | ✅ | 86.88 | 18.69 | 94% | mlx-vlm: 19.78; 274 prompt, 100 gen |
-| gemma4 (31B-it QAT) | gemma-4-31B-it-qat-4bit | ✅ | 87.72 | 15.21 | - | NEW (6-12); QAT variant; 277 prompt, 28 gen |
-| gemma4 (26B A4B) | gemma-4-26b-a4b-it-4bit | ✅ | 265.86 | 70.38 | **115%** | mlx-vlm: 61.07; 277 prompt, 28 gen |
-| gemma4 (26B A4B QAT) | gemma-4-26B-A4B-it-qat-4bit | ✅ | 268.42 | 66.77 | - | NEW (6-12); QAT variant; 277 prompt, 31 gen |
-| llava 1.5 | llava-1.5-7b-4bit | ✅ | 754.13 | 104.04 | - | CLIP + MLP; Vicuna-7b; 583 prompt, 100 gen; mlx-vlm requires PyTorch |
-| llava-interleave | llava-interleave-qwen-0.5b-bf16 | ✅ | 3753.62 | 264.66 | **118%** | mlx-vlm: 225.15; SigLIP + MLP; Qwen2-0.5b; 754 prompt, 36 gen |
+| gemma3n (E4B 4bit) | gemma-3n-E4B-it-4bit | ✅ | 487.08 | 63.72 | **127%** | mlx-vlm: 50.00; 273 prompt, 33 gen |
+| gemma4 (12B) | gemma-4-12b-it-4bit | ✅ | 246.21 | 32.66 | - | NEW (6-12); no mlx-vlm baseline; 277 prompt, 25 gen |
+| gemma4 (E2B 4bit) | gemma-4-e2b-it-4bit | ✅ | 732.15 | 111.68 | **115%** | mlx-vlm: 97.19; 277 prompt, 100 gen |
+| gemma4 (E2B 8bit) | gemma-4-e2b-it-8bit | ✅ | 726.48 | 88.40 | 97% | mlx-vlm: 91.06; 277 prompt, 100 gen |
+| gemma4 (E2B QAT) | gemma-4-e2b-it-qat-4bit | ✅ | 715.13 | 89.01 | - | NEW (6-12); QAT variant; 273 prompt, 42 gen |
+| gemma4 (E4B 4bit) | gemma-4-e4b-it-4bit | ✅ | 459.44 | 77.30 | **110%** | mlx-vlm: 70.34; 277 prompt, 92 gen |
+| gemma4 (E4B 8bit) | gemma-4-e4b-it-8bit | ✅ | 454.44 | 57.86 | 91% | mlx-vlm: 63.25; 277 prompt, 64 gen |
+| gemma4 (E4B QAT) | gemma-4-e4b-it-qat-4bit | ✅ | 444.51 | 62.02 | - | NEW (6-12); QAT variant; 273 prompt, 55 gen |
+| gemma4 (31B 4bit) | gemma-4-31b-4bit | ✅ | 83.70 | 15.43 | 76% | mlx-vlm: 20.30; 265 prompt, 5 gen |
+| gemma4 (31B-it 4bit) | gemma-4-31b-it-4bit | ✅ | 86.88 | 18.78 | 95% | mlx-vlm: 19.78; 277 prompt, 24 gen |
+| gemma4 (31B-it QAT) | gemma-4-31B-it-qat-4bit | ✅ | 86.62 | 15.16 | - | NEW (6-12); QAT variant; 277 prompt, 28 gen |
+| gemma4 (26B A4B) | gemma-4-26b-a4b-it-4bit | ✅ | 278.73 | 70.78 | **116%** | mlx-vlm: 61.07; 277 prompt, 27 gen |
+| gemma4 (26B A4B QAT) | gemma-4-26B-A4B-it-qat-4bit | ✅ | 279.51 | 69.07 | - | NEW (6-12); QAT variant; 277 prompt, 31 gen |
+| llava 1.5 | llava-1.5-7b-4bit | ✅ | 760.95 | 103.43 | - | CLIP + MLP; Vicuna-7b; 594 prompt, 100 gen; mlx-vlm requires PyTorch |
+| llava-interleave | llava-interleave-qwen-0.5b-bf16 | ✅ | 3950.41 | 267.71 | **119%** | mlx-vlm: 225.15; SigLIP + MLP; Qwen2-0.5b; 754 prompt, 36 gen |
 | llava-next | llava-v1.6-mistral-7b-4bit | ✅ | 714.95 | 106.80 | 98% | mlx-vlm: 109.51; CLIP + MLP; Mistral; 590 prompt, 100 gen; mlx-vlm template error |
 | llava-bunny | Bunny-Llama-3-8B-V-4bit | ✅ | 634.32 | 94.69 | - | mlx-vlm: FAIL; SigLIP + MLP; Llama3; 746 prompt, 37 gen |
 | llama4 | Llama-4-Scout-17B-16E-Instruct-4bit | ✅ | 182.31 | 34.90 | - | mlx-vlm: FAIL; 230 prompt, 67 gen |
-| aya-vision | aya-vision-8b | ✅ | 416.82 | 109.57 | **106%** | mlx-vlm: 103.74; SigLIP + SwiGLU; Cohere2; 176 prompt, 100 gen |
+| aya-vision | aya-vision-8b | ✅ | 642.06 | 100.45 | 97% | mlx-vlm: 103.74; SigLIP + SwiGLU; Cohere2; 735 prompt, 29 gen |
 | paligemma | paligemma2-3b (6-bit) | ⚠️ | 1481.79 | 50.14 | 71% | mlx-vlm: 70.45; SigLIP + Linear; Gemma2; 1032 prompt, only 2 gen tokens |
-| pixtral | pixtral-12b-4bit | ✅ | 447.38 | 59.76 | - | mlx-vlm: FAIL; Pixtral ViT; Mistral; 4102 prompt, 100 gen |
-| mistral3 | mistral-small-3.1-24b-4bit | ✅ | 128.57 | 29.83 | - | mlx-vlm: FAIL; Pixtral ViT + PatchMerger; Mistral; 3032 prompt, 100 gen; mlx-vlm error |
-| ministral3 | Ministral-3B-Instruct-4bit | ✅ | 527.26 | 124.82 | - | mlx-vlm: FAIL; Pixtral ViT; 3566 prompt, 100 gen |
-| phi3.5-vision | Phi-3.5-vision-instruct-4bit | ✅ | 991.19 | 122.35 | **132%** | mlx-vlm: 92.53; CLIP + HD tiling; Phi3; 773 prompt, 19 gen |
+| pixtral | pixtral-12b-4bit | ✅ | 447.56 | 60.55 | - | mlx-vlm: FAIL; Pixtral ViT; Mistral; 4099 prompt, 100 gen |
+| mistral3 | mistral-small-3.1-24b-4bit | ✅ | 128.93 | 28.55 | - | mlx-vlm: FAIL; Pixtral ViT + PatchMerger; Mistral; 3206 prompt, 29 gen; mlx-vlm error |
+| ministral3 | Ministral-3B-Instruct-4bit | ✅ | 526.26 | 126.52 | - | mlx-vlm: FAIL; Pixtral ViT; 3566 prompt, 100 gen |
+| phi3.5-vision | Phi-3.5-vision-instruct-4bit | ✅ | 977.99 | 123.57 | **134%** | mlx-vlm: 92.53; CLIP + HD tiling; Phi3; 773 prompt, 19 gen |
 | phi4mm | phi-4-multimodal-instruct (bf16) | ✅ | 571.90 | 25.42 | - | SigLIP + HD transform + AvgPool2d; Phi3; SuScaledRoPE + runtime LoRA; 2635 tokens; 12GB bf16; not in the 06-12 sweep |
 | moondream3 | moondream3-preview-4bit | ⚠️ | 1.36 | 10.05 | - | SigLIP + MLP; image output garbled; only 63 tokens; not in the 06-12 sweep |
 | minicpm-o | MiniCPM-o-2_6-4bit | ✅ | 33.67 | 70.80 | - | SigLIP + Resampler; Qwen3; 80 tokens; not in the 06-12 sweep |
-| minicpm-v | MiniCPM-V-4.6-bf16 | ✅ | 419.79 | 176.12 | - | NEW (6-12); bf16; 32 prompt, 23 gen |
-| molmo | Molmo-7B | ✅ | 579.94 | 80.46 | - | CLIP ViT + attention pooling + OLMo text; mlx-vlm baseline is a 1-token anomaly; 327 prompt, 100 gen |
-| molmo2 | molmo2-4b | ✅ | 712.94 | 59.87 | 98% | mlx-vlm: 60.87; fast SDPA vision encoder; 438 prompt, 46 gen |
-| internvl3 | InternVL3-1B | ✅ | 1809.47 | 238.34 | 90% | mlx-vlm: 264.40; InternViT + pixel-shuffle + Qwen2; 293 prompt, 8 gen |
-| nemotron-omni | Nemotron-3-Nano-Omni-30B-A3B-Reasoning-4bit | ✅ | 262.96 | 64.72 | - | mlx-vlm: FAIL; NEW (5-19); Mamba2+Transformer+MoE+Parakeet audio; 6 gen |
-| youtu-vl | youtu-vl-4b-instruct | ⚠️ | 400.75 | 24.19 | - | mlx-vlm: FAIL; NEW (5-19); only 1 gen token |
-| qwen2-vl | Qwen2-VL-2B-Instruct-4bit | ✅ | 775.63 | 126.81 | - | Custom ViT + MRoPE; VLM image mode fixed; 12 gen |
-| qwen2.5-vl | Qwen2.5-VL-3B-Instruct-4bit | ✅ | 602.35 | 97.65 | - | Windowed ViT + MRoPE; 91 prompt, 64 gen; mlx-vlm requires PyTorch |
-| qwen3-vl | Qwen3-VL-2B-Instruct-4bit | ✅ | 747.69 | 160.88 | - | mlx-vlm: FAIL; DeepStack + vectorized MRoPE; 80 gen |
-| qwen3-vl (4B) | Qwen3-VL-4B-Instruct-4bit | ✅ | 479.01 | 89.98 | - | mlx-vlm: FAIL; DeepStack + vectorized MRoPE; 38 gen |
-| qwen3-vl (8B) | Qwen3-VL-8B-Instruct-4bit | ✅ | 310.58 | 63.10 | - | mlx-vlm: FAIL; DeepStack + vectorized MRoPE; 30 gen |
-| qwen3-vl (32B) | Qwen3-VL-32B-Instruct-4bit | ✅ | 89.66 | 17.81 | - | mlx-vlm: FAIL; DeepStack + vectorized MRoPE; 59 gen |
-| qwen3-vl-moe | Qwen3-VL-30B-A3B-Instruct-4bit | ✅ | 295.81 | 40.53 | - | mlx-vlm: FAIL; MoE (128 experts) + DeepStack; 34 gen |
-| qwen3.5-vl (0.8B) | qwen3.5-0.8B-4bit | ✅ | 985.98 | 232.41 | - | mlx-vlm: FAIL; Hybrid GatedDeltaNet VLM; 69 prompt, 100 gen |
-| qwen3.5-vl (2B) | qwen3.5-2B-4bit | ✅ | 550.02 | 169.42 | - | mlx-vlm: FAIL; Hybrid GatedDeltaNet VLM; 69 prompt, 43 gen |
-| qwen3.5-vl (4B) | qwen3.5-4B-4bit | ✅ | 334.11 | 99.40 | - | mlx-vlm: FAIL; Hybrid GatedDeltaNet VLM; 69 prompt, 49 gen |
-| qwen3.5-vl (9B 4bit) | qwen3.5-9B-4bit | ✅ | 197.61 | 72.78 | - | mlx-vlm: FAIL; Hybrid GatedDeltaNet VLM; 69 prompt, 100 gen |
+| minicpm-v | MiniCPM-V-4.6-bf16 | ✅ | 366.61 | 185.05 | - | NEW (6-12); bf16; 32 prompt, 23 gen |
+| molmo | Molmo-7B | ✅ | 579.21 | 79.30 | - | CLIP ViT + attention pooling + OLMo text; mlx-vlm baseline is a 1-token anomaly; 327 prompt, 100 gen |
+| molmo2 | molmo2-4b | ✅ | 724.53 | 59.70 | 98% | mlx-vlm: 60.87; fast SDPA vision encoder; 438 prompt, 46 gen |
+| internvl3 | InternVL3-1B | ✅ | 1836.90 | 236.00 | 89% | mlx-vlm: 264.40; InternViT + pixel-shuffle + Qwen2; 293 prompt, 8 gen |
+| nemotron-omni | Nemotron-3-Nano-Omni-30B-A3B-Reasoning-4bit | ✅ | 258.58 | 63.08 | - | mlx-vlm: FAIL; NEW (5-19); Mamba2+Transformer+MoE+Parakeet audio; 6 gen |
+| youtu-vl | youtu-vl-4b-instruct | ⚠️ | 218.22 | 44.64 | - | mlx-vlm: FAIL; NEW (5-19); only 1 gen token |
+| qwen2-vl | Qwen2-VL-2B-Instruct-4bit | ✅ | 830.96 | 146.44 | - | Custom ViT + MRoPE; VLM image mode fixed; 12 gen |
+| qwen2.5-vl | Qwen2.5-VL-3B-Instruct-4bit | ✅ | 645.99 | 107.97 | - | Windowed ViT + MRoPE; 91 prompt, 64 gen; mlx-vlm requires PyTorch |
+| qwen3-vl | Qwen3-VL-2B-Instruct-4bit | ✅ | 612.11 | 182.33 | - | mlx-vlm: FAIL; DeepStack + vectorized MRoPE; 80 gen |
+| qwen3-vl (4B) | Qwen3-VL-4B-Instruct-4bit | ✅ | 455.27 | 98.76 | - | mlx-vlm: FAIL; DeepStack + vectorized MRoPE; 38 gen |
+| qwen3-vl (8B) | Qwen3-VL-8B-Instruct-4bit | ✅ | 305.96 | 65.36 | - | mlx-vlm: FAIL; DeepStack + vectorized MRoPE; 30 gen |
+| qwen3-vl (32B) | Qwen3-VL-32B-Instruct-4bit | ✅ | 90.88 | 17.98 | - | mlx-vlm: FAIL; DeepStack + vectorized MRoPE; 59 gen |
+| qwen3-vl-moe | Qwen3-VL-30B-A3B-Instruct-4bit | ✅ | 284.40 | 41.85 | - | mlx-vlm: FAIL; MoE (128 experts) + DeepStack; 34 gen |
+| qwen3.5-vl (0.8B) | qwen3.5-0.8B-4bit | ✅ | 832.38 | 279.25 | - | mlx-vlm: FAIL; Hybrid GatedDeltaNet VLM; 69 prompt, 100 gen |
+| qwen3.5-vl (2B) | qwen3.5-2B-4bit | ✅ | 518.65 | 195.20 | - | mlx-vlm: FAIL; Hybrid GatedDeltaNet VLM; 69 prompt, 43 gen |
+| qwen3.5-vl (4B) | qwen3.5-4B-4bit | ✅ | 312.48 | 107.91 | - | mlx-vlm: FAIL; Hybrid GatedDeltaNet VLM; 69 prompt, 49 gen |
+| qwen3.5-vl (9B 4bit) | qwen3.5-9B-4bit | ✅ | 196.14 | 74.97 | - | mlx-vlm: FAIL; Hybrid GatedDeltaNet VLM; 69 prompt, 100 gen |
 | qwen3.5-vl (9B bf16) | qwen3.5-9B (bf16) | ✅ | 272.55 | 32.59 | - | mlx-vlm: FAIL; Hybrid GatedDeltaNet VLM; 69 prompt, 100 gen; bf16 |
-| qwen3.5-vl (27B) | qwen3.5-27B-4bit | ✅ | 73.77 | 24.87 | - | mlx-vlm: FAIL; Hybrid GatedDeltaNet VLM; 69 prompt, 100 gen |
+| qwen3.5-vl (27B) | qwen3.5-27B-4bit | ✅ | 74.30 | 25.27 | - | mlx-vlm: FAIL; Hybrid GatedDeltaNet VLM; 69 prompt, 100 gen |
 | qwen3.5-vl-moe | qwen3.5-35B-A3B-4bit | ✅ | 279.27 | 74.68 | - | mlx-vlm: FAIL; Hybrid GatedDeltaNet + MoE VLM; 69 prompt, 100 gen; gated delta decode RMSNorm fix |
 | qwen3.6-vl-moe | qwen3.6-35B-A3B-4bit | ✅ | 279.77 | 70.25 | - | mlx-vlm: FAIL; Hybrid GatedDeltaNet + MoE VLM; 39 gen |
 | molmo-point | - | ⏳ | - | - | - | Molmo-Point (point detection); implemented but no MLX model available |
+| deepseek_vl2 | deepseek-vl2-small-4bit | ✅ | 440.43 | 102.06 | **112%** | mlx-vlm: 91.35; NEW (7-06, #660); SigLIP + 2D tile mosaic + DeepSeek-V2 MoE; 494 prompt, 24 gen |
+| fastvlm | fastvlm-0.5b-bf16 | ✅ | 1640.23 | 282.88 | - | mlx-vlm: FAIL:warmup; NEW (7-06, #661); FastViTHD + Qwen2; 282 prompt, 100 gen |
+| ernie4_5_moe_vl | ernie-4.5-vl-28b-a3b-thinking-4bit | ✅ | 219.44 | 90.41 | **160%** | mlx-vlm: 56.48; NEW (7-06, #662); modality-split MoE + 3D MRoPE; thinking model; 108 prompt, 100 gen |
+| hunyuan_vl | hunyuanocr-mlx-4bit | ✅ | 1057.94 | 94.29 | 62% | mlx-vlm: 151.14; NEW (7-06, #663); XD-RoPE + perceive merger; 10-token answer makes decode first-token-dominated, ratio not load-bearing; 284 prompt, 10 gen |
+| qwen3_omni_moe | qwen3-omni-30b-a3b-instruct-4bit | ✅ | 289.52 | 23.84 | 58% | mlx-vlm: 40.76; NEW (7-06, #664); thinker (text+image+audio in); 2-token answer makes decode an artifact; text-mode decode is 82.81 (parity with qwen3-vl-30b's 81.80); 69 prompt, 2 gen |
+| dots_ocr | dots.ocr-4bit | ⚠️ | 408.14 | 0.00 | - | NEW (7-06, #657); OCR-only model answers the generic image prompt with 0 tokens on both sides (mlx-vlm decode field also degenerate); OCR validated separately; 74 prompt, 0 gen |
+| deepseekocr | deepseek-ocr-4bit | ✅ | 821.29 | 261.49 | - | mlx-vlm: FAIL:warmup; NEW (7-06, #655); SAM+CLIP dual tower; 281 prompt, 31 gen |
+| deepseekocr2 | deepseek-ocr-2-4bit | ✅ | 793.99 | 172.21 | - | mlx-vlm: FAIL:warmup; NEW (7-06, #656); SAM + Qwen2-0.5B query resampler; 409 prompt, 5 gen |
+| glm_ocr | glm-ocr-4bit | ⚠️ | 882.18 | 0.00 | - | mlx-vlm: 288.66; NEW (7-06, #646); OCR model, 0-token answer on the generic prompt (text-mode decode 261.93); 82 prompt, 0 gen |
+| granite_vision | granite-vision-3.2-2b-4bit | ✅ | 1063.29 | 123.42 | 82% | mlx-vlm: 150.03; NEW (7-06, #647); AnyRes tiling drives the 1539-token prompt; 1539 prompt, 26 gen |
+| granite4_vision | granite-4.0-3b-vision-4bit | ✅ | 647.82 | 125.09 | 99% | mlx-vlm: 126.42; NEW (7-06, #647); 337 prompt, 41 gen |
+| lfm2_vl | lfm2-vl-450m-4bit | ✅ | 1302.06 | 474.75 | - | mlx-vlm: FAIL:warmup; NEW (7-06, #645); 82 prompt, 38 gen |
+| idefics2 | idefics2-8b-4bit | ✅ | 286.21 | 91.33 | 90% | mlx-vlm: 101.77; NEW (7-06, #639); SigLIP + perceiver resampler; 81 prompt, 12 gen |
+| idefics3 | idefics3-8b-llama3-4bit | ✅ | 469.67 | 106.73 | **119%** | mlx-vlm: 89.83; NEW (7-06, #640); SmolVLM path; 186 prompt, 100 gen |
 
 **VLM test conditions**: Image: 224x224 PNG (test_image.png) unless noted. Prompt: "What is in this image?" Max tokens: 100. Prefill includes vision encoder + projector overhead. mlx-vlm baseline uses the `d85ca4d` dev checkout. mlxcel decode speed was measured with `mlxcel-bench-decode` (model load, warmup, and measured pass in one process). Models with unavailable or failed mlx-vlm runs are marked with "-" in the vs mlx-vlm column. Two oversize models (`deepseek-v3-4bit` 99GB, `qwen3-next-480b-4bit` 251GB) do not run on this 128GB host; `minimax-m2-3bit` (93GB) fits and runs on the text side since the 05-28 sweep. Two Gemma 3 VLM rows (gemma-3-4b-it-4bit, gemma3-4b-4bit) were measured with `--warmup-tokens 0` because the prepared 4D attention mask shape is single-use against the first prefill's KV cache offset. The three Gemma 3n VLM rows use the default warmup=20 path.
 
+## New Text Models (2026-07-06 sweep)
+
+| Model | Test Model | Status | Prefill | Decode | vs mlx-lm | Notes |
+|-------|------------|--------|---------|--------|-----------|-------|
+| hunyuan_moe_13b (4bit) | hunyuan-a13b-instruct-4bit | ✅ | 76.81 | 44.46 | - | mlx-lm: FAIL:warmup; the 4-bit export loads where the bf16 one OOMs; 27 prompt, 100 gen |
+| llada2_moe | llada2.0-mini-preview-4bit | ✅ | 479.87 | 156.26 | - | mlx-lm: FAIL:warmup (no masked-diffusion support); NEW (#659); 25 prompt, 100 gen |
+| mellum2 | mellum2-12b-a2.5b-base | ✅ | 127.08 | 55.86 | - | mlx-lm: FAIL:warmup; base model, terse completions; 7 prompt, 6 gen |
+| qwen3_next (80B) | qwen3-next-80b-a3b-instruct-4bit | ✅ | 149.00 | 61.23 | **118%** | mlx-lm: 51.73; hybrid gated-delta + MoE; 15 prompt, 57 gen |
+| llama3.2 (1B instruct bf16) | llama-3.2-1b-instruct | ✅ | 2082.37 | 190.18 | **101%** | mlx-lm: 187.88; 99 prompt, 34 gen |
+| phi3_small (aq4_64) | phi-3-small-8k-instruct-aq4_64 | ✅ | 287.80 | 102.60 | **380%** | mlx-lm: 27.01 (aq4 path unoptimized in python); 22 prompt, 100 gen |
+| mistral_small_4 (119B) | mistral-small-4-119b-2603-4bit | ✅ | 124.03 | 19.46 | - | mlx-lm: FAIL:warmup (load exceeds python budget); 22 prompt, 60 gen |
+| qwen3.5 MoE (35B A3B) | qwen3.5-35b-a3b-4bit | ✅ | 224.40 | 82.25 | - | re-added post #670/#671 sanitize fix (load-regressed since #588); 19 prompt, 31 gen |
+| qwen3.6 MoE (35B A3B) | qwen3.6-35b-a3b-4bit | ✅ | 229.03 | 78.84 | - | re-added post #670/#671 sanitize fix; 19 prompt, 27 gen |
+
 ## Summary Statistics
 
 | Status | Count |
@@ -270,6 +298,10 @@ runtime comparison.
 | Text vs mlx-lm | 74 | 98% | 59/74 (80%) | 24/74 (32%) | 41%-120% |
 | VLM vs mlx-vlm | 18 | 98% | 13/18 (72%) | 8/18 (44%) | 76%-132% |
 
+### Run-over-run (2026-07-06 mlxcel v0.3.3)
+
+The 2026-07-06 sweep (`benchmarks/metal_m1ultra_2026-07-06.csv` + `_vlm_`) lands after the five-family VLM port batch (#660-#664), the slice_update/causal-mask/downloader fix batch (#666-#668), and the qwen3.5-MoE sanitize fix (#671). Compared with 2026-06-15: no decode regressions; the qwen VLM family and small text models improved +10-16% (fused decode-MoE default-on and related work), youtu-vl recovered from a prior 24.2 artifact to 44.6. The sweep itself caught issue #670 (qwen3.5/3.6-35B MoE had silently stopped loading when #588 renamed the shared expert projections), which was fixed and re-benched the same day (82.25 / 78.84 tok/s, above their 2026-06-12 values). New python baselines were measured for 21 recently added models (`benchmarks/pylm_m1ultra_*2026-07-06*_single_*.csv`); mlx-lm/mlx-vlm failed to load 8 of them (fastvlm, lfm2-vl, deepseek-ocr/-2 among the VLMs; hunyuan-a13b-4bit, llada2-mini, mellum2, mistral-small-4-119b among text), so those rows carry no ratio.
+
 ### Run-over-run (2026-06-15 mlxcel v0.2.1, post #289 fix)
 
 The 2026-06-15 sweep runs on mlxcel v0.2.1 after fixing issue #289: a bf16 to f16 quant-scale promotion added in #260 that regressed bf16-scale quantized decode by 33-41% on M1 Ultra. PR #290 keeps quantized models in bf16, restoring the prior behavior. bf16-scale models recovered to roughly 95-121% of their prior baseline (qwen3, nemotron, gpt-oss, solar, minimax, hunyuan-large, jamba, dots all return to or above their pre-regression decode; the qwen3-30B-A3B MoE rows jump to 119-120% of the 05-19 reference). f16-scale models (mixtral, llama, qwen2.5) are unchanged across the fix, as expected. The pre-fix evidence sweep is `benchmarks/metal_m1ultra_2026-06-15_pre289_regressed.csv`.
diff --git a/tests/ernie4_5_moe_vl_parity.rs b/tests/ernie4_5_moe_vl_parity.rs
index 1b4f0dac..48cd809b 100644
--- a/tests/ernie4_5_moe_vl_parity.rs
+++ b/tests/ernie4_5_moe_vl_parity.rs
@@ -14,7 +14,7 @@
 
 //! ERNIE-4.5 MoE VL (`ernie4_5_moe_vl`) real-model parity / smoke tests.
 //!
-//! Gated on the presence of `models/ERNIE-4.5-VL-28B-A3B-Thinking-4bit`; the
+//! Gated on the presence of `models/ernie-4.5-vl-28b-a3b-thinking-4bit`; the
 //! tests `eprintln!` + return when the model is absent, so they are inert in CI
 //! and on machines without the checkpoint. With the model present they
 //! exercise:
@@ -43,7 +43,7 @@ use common::repo_model_dir;
 use mlxcel::models::{ModelType, get_model_type};
 use mlxcel::vision::processors::ernie4_5_vl::Ernie45VlProcessor;
 
-const MODEL_NAME: &str = "ERNIE-4.5-VL-28B-A3B-Thinking-4bit";
+const MODEL_NAME: &str = "ernie-4.5-vl-28b-a3b-thinking-4bit";
 const VOCAB: i32 = 103_424;
 
 fn model_dir() -> Option<PathBuf> {
diff --git a/tests/hunyuan_vl_parity.rs b/tests/hunyuan_vl_parity.rs
index 5420b109..9c98818d 100644
--- a/tests/hunyuan_vl_parity.rs
+++ b/tests/hunyuan_vl_parity.rs
@@ -14,7 +14,7 @@
 
 //! Hunyuan-VL (`hunyuan_vl`) real-model parity / smoke tests.
 //!
-//! Gated on the presence of `models/HunyuanOCR-mlx-4bit`; the tests
+//! Gated on the presence of `models/hunyuanocr-mlx-4bit`; the tests
 //! `eprintln!` + return when the model is absent, so they are inert in CI and
 //! on machines without the checkpoint. With the model present they exercise:
 //!
@@ -37,7 +37,7 @@ use common::repo_model_dir;
 use mlxcel::models::{ModelType, get_model_type};
 use mlxcel::vision::processors::hunyuan_vl::HunyuanVlProcessor;
 
-const MODEL_NAME: &str = "HunyuanOCR-mlx-4bit";
+const MODEL_NAME: &str = "hunyuanocr-mlx-4bit";
 const VOCAB: i32 = 120_818;
 
 fn model_dir() -> Option<PathBuf> {
@@ -79,7 +79,7 @@ fn processor_emits_raster_rows_and_count() {
 fn text_only_forward_produces_finite_logits() {
     let Some(dir) = model_dir() else { return };
 
-    let (model, tokenizer) = mlxcel::load_model(&dir).expect("load HunyuanOCR-mlx-4bit");
+    let (model, tokenizer) = mlxcel::load_model(&dir).expect("load hunyuanocr-mlx-4bit");
     assert!(model.is_vlm(), "Hunyuan-VL must register as a VLM");
 
     let tokens: Vec<i32> = tokenizer
@@ -112,7 +112,7 @@ fn text_only_forward_produces_finite_logits() {
 fn image_forward_produces_finite_logits() {
     let Some(dir) = model_dir() else { return };
 
-    let (model, tokenizer) = mlxcel::load_model(&dir).expect("load HunyuanOCR-mlx-4bit");
+    let (model, tokenizer) = mlxcel::load_model(&dir).expect("load hunyuanocr-mlx-4bit");
 
     let images = vec![fixture_image()];
     let mut prompt_tokens: Vec<i32> = tokenizer
