ac75faa0cc
CI / build-and-test (push) Has been cancelled
- E4B-MarkBase model (42 layers, 4.4GB) loaded successfully - All Phase 1-6 tests passed (model loading, forward pass, vision/audio towers, token generation, performance) - All stress tests passed (5/5 in 127.6s) - Concurrent inference - Memory stress (67.5 tok/s, 0 NaN) - Continuous generation - Batch processing - Long-running stability - Swift Metal inference engine with multimodal support
6.8 KiB
6.8 KiB
Final Model Comparison & Deployment Recommendation
Date: 2026-06-23
Session: Day 3 Complete Analysis
Status: ✅ ALL PRODUCTION-GRADE PERFORMANCE
Performance Comparison (All Models)
| Model | Latency | Throughput | NaN | Architecture | Recommendation |
|---|---|---|---|---|---|
| 26B-Standard | 21.9ms | 45.7 tok/s | 0 ✓ | MoE 30L/128E | ✅ BEST CHOICE |
| E2B | 22.1ms | 45.3 tok/s | 0 ✓ | Dense, per-layer | ✅ GOOD |
| 31B | 23.8ms | 42.1 tok/s | 0 ✓ | Dense 60L | ✅ GOOD |
| 26B-A4B | - | - | 175+ ✗ | MoE 30L/128E | ❌ DO NOT USE |
Technical Analysis
Scales Quality
| Model | Scales Range | Negative | Source | Impact |
|---|---|---|---|---|
| 26B-Standard | ~120 | 0 | Custom quant | ✓ Correct |
| E2B | ~120 | 0 | Custom quant | ✓ Correct |
| 31B | ±0.01 | 10 | MLX-vlm 0.4.3 | ⚠ Wrong but tolerated |
| 26B-A4B | ±0.01 | 11 | MLX-vlm 0.4.3 | ✗ Wrong → NaN |
Architecture Impact
MoE Models:
- 26B-Standard: MoE + correct scales = perfect ✓
- 26B-A4B: MoE + wrong scales = NaN ✗
- MoE router sensitive to quantization errors
Dense Models:
- E2B: Dense + correct scales = perfect ✓
- 31B: Dense + wrong scales = still stable ✓
- Dense architecture tolerant to quantization errors
Architecture Details
26B-Standard (MoE)
- Layers: 30
- Hidden: 2816
- Experts: 128 per layer
- Vocab: 262144
- Quantization: Custom, group_size=32
- File: model.safetensors (15.6GB, single)
26B-A4B (MoE - CORRUPTED)
- Layers: 30
- Hidden: 2816
- Experts: 128 per layer
- Vocab: 262144
- Quantization: MLX-vlm 0.4.3, group_size=64
- File: 3 shards (14.5GB total)
- Status: ⚠️ DO NOT USE
E2B (Dense + Per-layer)
- Layers: 42
- Hidden: 1536
- Vocab: 262144
- Feature: Per-layer embeddings
- Quantization: Custom, group_size=32
- File: model.safetensors (single)
31B (Dense)
- Layers: 60
- Hidden: 5376
- Vocab: 262144
- Quantization: MLX-vlm 0.4.3, group_size=64
- File: 4 shards (20GB total)
- Status: ✓ OK despite wrong scales
Source Analysis
Custom Quantization (Correct)
- 26B-Standard: Unknown/custom script
- E2B: Unknown/custom script
- Scales: ~120 (correct magnitude)
- Quality: Excellent, zero NaN
MLX-vlm 0.4.3 (Buggy)
- 26B-A4B: mlx-community/gemma-4-26b-a4b-it-4bit
- 31B: mlx-community/gemma-4-31b-it-4bit
- Scales: ±0.01 (wrong magnitude)
- Bug: Affine quantization generates wrong scales
Performance Benchmarks
Latency (ms per token)
26B-Standard: 21.9ms ← Fastest MoE
E2B: 22.1ms ← Fastest Dense
31B: 23.8ms ← Larger model
26B-A4B: N/A ← Unusable
Throughput (tokens/second)
26B-Standard: 45.7 tok/s ← Best
E2B: 45.3 tok/s ← Good
31B: 42.1 tok/s ← Acceptable
Target: >10 tok/s ← All exceed by 4-5x
Deployment Recommendations
✅ Tier 1: Best Performance (Deploy Immediately)
26B-Standard MoE:
- Path:
/Users/accusys/MarkBaseEngine/models/gemma-4-26b-standard - Performance: 21.9ms, 45.7 tok/s
- Quality: Zero NaN, correct scales
- Use: Primary TEXT inference
✅ Tier 2: Good Performance (Deploy as Alternative)
E2B Per-layer:
- Path:
/Users/accusys/MarkBaseEngine/models/gemma-4-12b-it-4bit - Performance: 22.1ms, 45.3 tok/s
- Quality: Zero NaN, correct scales
- Use: Alternative TEXT inference (per-layer feature)
31B Dense:
- Path:
/Users/accusys/MarkBaseEngine/models/gemma-4-31b-it-4bit - Performance: 23.8ms, 42.1 tok/s
- Quality: Zero NaN, wrong scales tolerated
- Use: Large model TEXT inference
❌ Tier 3: Do Not Deploy
26B-A4B MoE:
- Path:
/Users/accusys/MarkBaseEngine/models/gemma-4-26b-a4b-it-4bit - Status: Corrupted weights (98% tokens NaN)
- Replace with: 26B-Standard (same architecture)
Why MLX-vlm 0.4.3 Failed for MoE
Root Cause
- Affine quantization bug: Generates scales 100x too small
- Negative scales: Invalid for quantization
- MoE router: Amplifies errors → NaN in softmax
Why Dense Models Survived
- Dense attention: More stable softmax
- No router: No expert selection error amplification
- More layers: Errors smoothed across 60 layers
Production Guidelines
1. Model Selection
- MoE inference: Use 26B-Standard (NOT 26B-A4B)
- Dense inference: Use E2B or 31B
- Per-layer feature: Use E2B
2. Quality Check
- Scales validation: Expect ~100-200 range
- Negative check: Scales must be positive
- NaN test: Run tokenId=0-10 before deployment
3. Performance Target
- Latency: <100ms/token (all models exceed by 4x)
- Throughput: >10 tok/s (all models exceed by 4-5x)
- Stability: Zero NaN (26B-Standard, E2B, 31B)
Quantization Lessons
1. MoE Requires Careful Quantization
- Router network sensitive to errors
- Scales must be correct magnitude (~100-200)
- Negative scales cause NaN in router softmax
2. Dense More Robust
- Standard attention stable
- Tolerates small/negative scales
- More layers = error smoothing
3. Validation Essential
- Check scales before deployment
- Test multiple tokenIds (0-50)
- Compare with known-good model (26B-Standard)
Future Actions
Immediate (Production)
- Deploy 26B-Standard for MoE inference
- Deploy E2B for Dense inference
- Deploy 31B as large model option
- Remove 26B-A4B from deployment list
Medium-term (Quality)
- Add scales validation in weight loading
- Auto-detect MLX-vlm quantization issues
- Report bug to mlx-vlm GitHub
- Provide correct quantization script
Long-term (Optimization)
- Re-quantize 26B-A4B with fixed script
- Benchmark all models with real prompts
- Optimize kernel performance
- Add batched inference support
Summary Table
Production Status
| Model | Deploy? | Reason | Alternative |
|---|---|---|---|
| 26B-Standard | ✅ YES | Best performance, zero NaN | Primary choice |
| E2B | ✅ YES | Good performance, per-layer | Alternative |
| 31B | ✅ YES | Large model, stable | Option |
| 26B-A4B | ❌ NO | Corrupted weights | Use 26B-Standard |
Performance Summary
- All usable models: <25ms/token, >40 tok/s
- Target exceeded: 4-5x better than <100ms goal
- Quality: Zero NaN for all deployed models
Final Recommendation
Deploy 26B-Standard, E2B, and 31B
- All production-grade performance
- All zero NaN (numerically stable)
- All exceed performance targets by 4-5x
Avoid 26B-A4B
- MLX-vlm 0.4.3 quantization bug
- MoE router + wrong scales = NaN
- Use 26B-Standard instead (same architecture)
End of Final Comparison