MLX-VLM is a package for inference and fine-tuning of Vision Language Models (VLMs) on your Mac using MLX.
This report summarizes scanner evidence for Blaizzy/mlx-vlm, a Python project with 5,599 GitHub stars. SynthScan examined 381,047 lines of code across 1690 source files, recording 5324 pattern matches distributed across 20 syntactic categories. The legacy adjusted pattern signal is 15.7 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 2563 finding(s).
Are imports declared and package/API names verified? 1847 finding(s).
Are wrappers, guards, and repeated structures necessary? 2819 finding(s).
Which changes need focused human review? 5324 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 5324 distinct pattern matches across 20 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/nemotron_voicechat_microphone.py | 3 | CODE | |
| LOW | mlx_vlm/moe_offload.py | 16 | CODE | |
| LOW | mlx_vlm/apc_coordinator.py | 9 | CODE | |
| LOW | mlx_vlm/kv_quant.py | 1 | CODE | |
| LOW | mlx_vlm/turboquant.py | 1 | CODE | |
| LOW | mlx_vlm/__init__.py | 8 | CODE | |
| LOW | mlx_vlm/__init__.py | 9 | CODE | |
| LOW | mlx_vlm/__init__.py | 10 | CODE | |
| LOW | mlx_vlm/__init__.py | 10 | CODE | |
| LOW | mlx_vlm/__init__.py | 10 | CODE | |
| LOW | mlx_vlm/__init__.py | 10 | CODE | |
| LOW | mlx_vlm/__init__.py | 10 | CODE | |
| LOW | mlx_vlm/__init__.py | 10 | CODE | |
| LOW | mlx_vlm/__init__.py | 10 | CODE | |
| LOW | mlx_vlm/__init__.py | 10 | CODE | |
| LOW | mlx_vlm/__init__.py | 10 | CODE | |
| LOW | mlx_vlm/__init__.py | 10 | CODE | |
| LOW | mlx_vlm/__init__.py | 22 | CODE | |
| LOW | mlx_vlm/__init__.py | 22 | CODE | |
| LOW | mlx_vlm/__init__.py | 23 | CODE | |
| LOW | mlx_vlm/__init__.py | 23 | CODE | |
| LOW | mlx_vlm/__init__.py | 23 | CODE | |
| LOW | mlx_vlm/__init__.py | 24 | CODE | |
| LOW | mlx_vlm/__init__.py | 25 | CODE | |
| LOW | mlx_vlm/privacy_filter.py | 4 | CODE | |
| LOW | mlx_vlm/apc_adapters.py | 3 | CODE | |
| LOW | mlx_vlm/apc.py | 44 | CODE | |
| LOW | mlx_vlm/apc_storage.py | 3 | CODE | |
| LOW | mlx_vlm/token_classification.py | 8 | CODE | |
| LOW | mlx_vlm/quant/__init__.py | 1 | CODE | |
| LOW | mlx_vlm/quant/__init__.py | 2 | CODE | |
| LOW | mlx_vlm/quant/__init__.py | 2 | CODE | |
| LOW | mlx_vlm/quant/__init__.py | 2 | CODE | |
| LOW | mlx_vlm/quant/__init__.py | 2 | CODE | |
| LOW | mlx_vlm/quant/__init__.py | 2 | CODE | |
| LOW | mlx_vlm/tools/registry.py | 15 | CODE | |
| LOW | mlx_vlm/tools/__init__.py | 12 | CODE | |
| LOW | mlx_vlm/tools/__init__.py | 13 | CODE | |
| LOW | mlx_vlm/tools/__init__.py | 14 | CODE | |
| LOW | mlx_vlm/tools/__init__.py | 15 | CODE | |
| LOW | mlx_vlm/tools/__init__.py | 15 | CODE | |
| LOW | mlx_vlm/tools/__init__.py | 15 | CODE | |
| LOW | mlx_vlm/tools/__init__.py | 15 | CODE | |
| LOW | mlx_vlm/tools/__init__.py | 15 | CODE | |
| LOW | mlx_vlm/tools/__init__.py | 22 | CODE | |
| LOW | mlx_vlm/tools/types.py | 3 | CODE | |
| LOW | mlx_vlm/tools/base.py | 11 | CODE | |
| LOW | mlx_vlm/tools/parsers/harmony.py | 3 | CODE | |
| LOW | mlx_vlm/tests/test_processors.py | 3 | CODE | |
| LOW | mlx_vlm/tests/test_model_ops.py | 3 | CODE | |
| LOW | mlx_vlm/tests/test_generate.py | 3 | CODE | |
| LOW | mlx_vlm/tests/test_image_generation_models.py | 3 | CODE | |
| LOW | mlx_vlm/tests/test_server.py | 3 | CODE | |
| LOW | mlx_vlm/tests/test_models.py | 3 | CODE | |
| LOW | mlx_vlm/tests/test_diffusion_models.py | 3 | CODE | |
| LOW | mlx_vlm/tests/test_extraction_models.py | 3 | CODE | |
| LOW | mlx_vlm/tests/test_audio_models.py | 3 | CODE | |
| LOW | mlx_vlm/tests/test_trainer.py | 3 | CODE | |
| LOW | mlx_vlm/tests/test_cache.py | 3 | CODE | |
| LOW | mlx_vlm/server/runtime_config.py | 3 | CODE | |
| 1741 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | README.md | 891 | def run_disk_eviction_workload() -> None: | CODE |
| LOW | examples/omni.py | 149 | def _voice_activity_detection(self, frame): | CODE |
| LOW | examples/omni.py | 168 | async def _send_transcription_request( | CODE |
| LOW | examples/omni.py | 253 | async def stream_microphone_transcription( | CODE |
| LOW | mlx_vlm/reranker_loader.py | 11 | def is_sequence_classifier_config(config: dict) -> bool: | CODE |
| LOW | mlx_vlm/reranker_loader.py | 25 | def load_sequence_classification_model( | CODE |
| LOW | mlx_vlm/moe_offload.py | 97 | def _group_raw_names_by_layer(names) -> dict: | CODE |
| LOW | mlx_vlm/moe_offload.py | 483 | def _estimate_kv_reserve_bytes(model, max_kv_size: Optional[int]) -> int: | CODE |
| LOW | mlx_vlm/moe_offload.py | 524 | def _default_expert_cache_bytes( | CODE |
| LOW | mlx_vlm/tokenizer_utils.py | 406 | def make_streaming_detokenizer(processor): | CODE |
| LOW | mlx_vlm/convert.py | 58 | def mixed_quant_predicate_builder( | CODE |
| LOW | mlx_vlm/convert.py | 138 | def _build_multimodal_awq_run(model, processor, config, calibration_data): | CODE |
| LOW⚡ | mlx_vlm/turboquant.py | 6600 | def _refresh_fused_attention_eligibility(self): | CODE |
| LOW | mlx_vlm/turboquant.py | 1740 | def _multi_query_prod_score_kernel( | CODE |
| LOW | mlx_vlm/turboquant.py | 1874 | def _fused_integer_decode_single_tile_kernel( | CODE |
| LOW | mlx_vlm/turboquant.py | 2027 | def _fully_fused_decode_kernel( | CODE |
| LOW | mlx_vlm/turboquant.py | 2667 | def _metal_butterfly_wht_inverse( | CODE |
| LOW | mlx_vlm/turboquant.py | 2702 | def _fused_kv_quantize_kernel(key_bits: int, val_bits: int): | CODE |
| LOW | mlx_vlm/turboquant.py | 3148 | def _fused_split_decode_kernel(low_bits: int, high_bits: int, repeat_count: int): | CODE |
| LOW | mlx_vlm/turboquant.py | 3361 | def _compiled_split_decode_kernel(low_bits: int, high_bits: int): | CODE |
| LOW | mlx_vlm/turboquant.py | 4208 | def _quantize_unit_with_estimate( | CODE |
| LOW | mlx_vlm/turboquant.py | 4383 | def weighted_sum_stats_from_scores( | CODE |
| LOW | mlx_vlm/turboquant.py | 4442 | def _dequantize_preconditioned(self, state: TurboQuantPolarState) -> mx.array: | CODE |
| LOW | mlx_vlm/turboquant.py | 4459 | def quantize_unit_with_estimate( | CODE |
| LOW | mlx_vlm/turboquant.py | 4973 | def weighted_sum_stats_from_scores( | CODE |
| LOW | mlx_vlm/turboquant.py | 5653 | def _separate_score_value_decode( | CODE |
| LOW | mlx_vlm/turboquant.py | 5738 | def _compiled_split_decode_attention( | CODE |
| LOW | mlx_vlm/turboquant.py | 5867 | def _compiled_integer_decode_attention( | CODE |
| LOW | mlx_vlm/turboquant.py | 6318 | def _turboquant_memory_profile(c, token_count): | CODE |
| LOW | mlx_vlm/turboquant.py | 436 | def _prod_score_repeat_kernel(repeat_count: int): | STRING |
| LOW | mlx_vlm/turboquant.py | 625 | def _polar_turbo_score_repeat_kernel(level_bits: tuple[int, ...], repeat_count: int): | STRING |
| LOW | mlx_vlm/turboquant.py | 819 | def _mse_weighted_rot_repeat_kernel(repeat_count: int): | STRING |
| LOW | mlx_vlm/turboquant.py | 894 | def _mse_scores_weighted_rot_repeat_kernel(repeat_count: int): | STRING |
| LOW | mlx_vlm/turboquant.py | 982 | def _mse_scores_weighted_rot_sum_repeat_kernel(repeat_count: int): | STRING |
| LOW | mlx_vlm/turboquant.py | 1430 | def _metal_mse_weighted_sum_from_scores( | STRING |
| LOW | mlx_vlm/turboquant.py | 1487 | def _metal_mse_weighted_sum_sum_from_scores( | STRING |
| LOW | mlx_vlm/turboquant.py | 1544 | def _compiled_integer_decode_kernel(bits: int): | STRING |
| LOW | mlx_vlm/turboquant.py | 1595 | def _fused_integer_decode_kernel(bits: int, repeat_count: int, key_mse_bits: int = -1): | STRING |
| LOW | mlx_vlm/turboquant.py | 1809 | def _single_tile_value_weighted_sum_kernel( | STRING |
| LOW | mlx_vlm/turboquant.py | 2631 | def _metal_butterfly_wht_forward( | STRING |
| LOW | mlx_vlm/turboquant.py | 2827 | def _fused_norot_quantize_kernel(bits: int): | STRING |
| LOW | mlx_vlm/turboquant.py | 2903 | def _fused_mse_quantize_kernel(bits: int, use_rht: bool = False): | STRING |
| LOW | mlx_vlm/turboquant.py | 2996 | def _fused_prod_quantize_kernel(mse_bits: int, use_rht: bool = False): | STRING |
| LOW | mlx_vlm/decision.py | 6 | def _validate_question_structure(questions): | CODE |
| LOW | mlx_vlm/chat_ui.py | 166 | def extract_image_from_message(message): | CODE |
| LOW | mlx_vlm/chat_ui.py | 186 | def extract_text_from_message(message): | CODE |
| LOW | mlx_vlm/apc_adapters.py | 126 | def _has_explicit_snapshot_contract(cache: Any) -> bool: | CODE |
| LOW | mlx_vlm/apc_adapters.py | 193 | def reserve_checkpoint_capacity( | CODE |
| LOW | mlx_vlm/apc_adapters.py | 234 | def register_default_capabilities() -> None: | CODE |
| LOW | mlx_vlm/apc_adapters.py | 622 | def build_prefix_cache_plan_from_caches( | CODE |
| LOW | mlx_vlm/utils.py | 84 | def apply_generation_config_defaults(model_config, config: dict): | CODE |
| LOW | mlx_vlm/utils.py | 405 | def _compressed_tensors_group_weights( | CODE |
| LOW | mlx_vlm/utils.py | 481 | def _transform_compressed_tensors_mixed_weights( | CODE |
| LOW | mlx_vlm/utils.py | 596 | def _transform_compressed_tensors_weights( | CODE |
| LOW | mlx_vlm/utils.py | 723 | def _language_model_quantization_config(model): | CODE |
| LOW | mlx_vlm/utils.py | 797 | def _quantization_path_aliases( | CODE |
| LOW | mlx_vlm/utils.py | 812 | def _quantization_for_module_path( | CODE |
| LOW | mlx_vlm/utils.py | 824 | def _drop_modules_without_weights( | CODE |
| LOW | mlx_vlm/utils.py | 1793 | def estimate_num_image_tokens(processor, height: int, width: int, **size_overrides): | CODE |
| LOW | mlx_vlm/utils.py | 2279 | def process_inputs_with_fallback( | CODE |
| 1602 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | examples/nemotron_voicechat_microphone.py | 106 | except NotImplementedError: | CODE |
| HIGH | mlx_vlm/moe_offload.py | 250 | except Exception: | CODE |
| HIGH | mlx_vlm/moe_offload.py | 627 | except Exception: | CODE |
| HIGH | mlx_vlm/encoder_loader.py | 33 | except (ValueError, OSError): | CODE |
| HIGH | mlx_vlm/chat_ui.py | 124 | except Exception: | CODE |
| HIGH | mlx_vlm/chat_ui.py | 109 | except Exception: | CODE |
| HIGH | mlx_vlm/apc_adapters.py | 264 | except ImportError: | CODE |
| HIGH | mlx_vlm/apc_adapters.py | 296 | except (TypeError, ValueError): | CODE |
| HIGH | mlx_vlm/utils.py | 1418 | except json.JSONDecodeError: | CODE |
| HIGH | mlx_vlm/apc.py | 1074 | except Exception: | CODE |
| HIGH | mlx_vlm/apc.py | 457 | except Exception: | CODE |
| HIGH | mlx_vlm/apc.py | 1660 | except OSError: | CODE |
| HIGH | mlx_vlm/apc.py | 2063 | except OSError: | CODE |
| HIGH | mlx_vlm/apc.py | 2241 | except OSError: | CODE |
| HIGH | mlx_vlm/apc.py | 2905 | except OSError: | CODE |
| HIGH | mlx_vlm/apc.py | 2987 | except OSError: | CODE |
| HIGH | mlx_vlm/apc.py | 1599 | except OSError: | CODE |
| HIGH | mlx_vlm/apc.py | 2162 | except OSError: | CODE |
| HIGH | mlx_vlm/apc.py | 2332 | except OSError: | CODE |
| HIGH | mlx_vlm/apc.py | 2901 | except OSError: | CODE |
| HIGH | mlx_vlm/apc.py | 1353 | except OSError: | CODE |
| HIGH | mlx_vlm/evals/mmmu.py | 155 | except Exception: | CODE |
| HIGH | mlx_vlm/evals/math_vista.py | 180 | except Exception: | CODE |
| HIGH | mlx_vlm/evals/math_vista.py | 190 | except Exception: | CODE |
| HIGH | mlx_vlm/evals/math_vista.py | 147 | except Exception: | CODE |
| HIGH | mlx_vlm/evals/math_vista.py | 154 | except Exception: | CODE |
| HIGH | mlx_vlm/evals/math_vista.py | 172 | except Exception: | CODE |
| HIGH | mlx_vlm/evals/math_vista.py | 237 | except Exception: | CODE |
| HIGH | mlx_vlm/evals/math_vista.py | 246 | except Exception: | CODE |
| HIGH | mlx_vlm/evals/math_vista.py | 206 | except Exception: | CODE |
| HIGH | mlx_vlm/evals/math_vista.py | 213 | except Exception: | CODE |
| HIGH | mlx_vlm/evals/math_vista.py | 229 | except Exception: | CODE |
| HIGH | mlx_vlm/tools/parsers/longcat.py | 41 | except Exception: | CODE |
| HIGH | mlx_vlm/tools/parsers/longcat.py | 46 | except Exception: | CODE |
| HIGH | mlx_vlm/tools/parsers/longcat.py | 57 | except json.JSONDecodeError: | CODE |
| HIGH | mlx_vlm/tools/parsers/minicpm5.py | 31 | except json.JSONDecodeError: | CODE |
| HIGH | mlx_vlm/tools/parsers/kimi_k2.py | 31 | except Exception: | CODE |
| HIGH | mlx_vlm/tools/parsers/kimi_k2.py | 36 | except Exception: | CODE |
| HIGH | mlx_vlm/tools/parsers/glm47.py | 46 | except Exception: | CODE |
| HIGH | mlx_vlm/tools/parsers/glm47.py | 51 | except Exception: | CODE |
| HIGH | mlx_vlm/tests/test_server.py | 3389 | except httpx2.TransportError: | CODE |
| HIGH | mlx_vlm/server/generation.py | 965 | except Exception: | CODE |
| HIGH | mlx_vlm/server/generation.py | 1639 | except QueueEmpty: | CODE |
| HIGH | mlx_vlm/server/generation.py | 1728 | except Exception: | CODE |
| HIGH | mlx_vlm/server/generation.py | 1897 | except Exception: | CODE |
| HIGH | mlx_vlm/server/realtime.py | 389 | except WebSocketDisconnect: | CODE |
| HIGH | mlx_vlm/server/openai.py | 1595 | except Exception: | CODE |
| HIGH | mlx_vlm/server/openai.py | 1651 | except Exception: | CODE |
| HIGH | mlx_vlm/server/openai.py | 2383 | except Exception: | CODE |
| HIGH | mlx_vlm/server/openai.py | 2453 | except Exception: | CODE |
| HIGH | mlx_vlm/server/anthropic.py | 980 | except Exception: | CODE |
| HIGH | mlx_vlm/server/anthropic.py | 923 | except Exception: | CODE |
| HIGH | mlx_vlm/server/compaction.py | 130 | except FileExistsError: | CODE |
| HIGH | mlx_vlm/models/cache.py | 127 | except (AttributeError, NotImplementedError): | CODE |
| HIGH | mlx_vlm/models/cache.py | 172 | except (AttributeError, NotImplementedError): | CODE |
| HIGH | mlx_vlm/models/base.py | 652 | except Exception: | CODE |
| HIGH | mlx_vlm/models/falcon_ocr/processing_falcon_ocr.py | 372 | except ImportError: | CODE |
| HIGH | mlx_vlm/models/gemma4_text/language.py | 576 | except (IndexError, ValueError): | CODE |
| HIGH | mlx_vlm/models/gpt_oss/processing_gpt_oss.py | 51 | except (AttributeError, TypeError): | CODE |
| HIGH | mlx_vlm/models/gpt_oss/processing_gpt_oss.py | 61 | except (AttributeError, TypeError): | CODE |
| 42 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | mlx_vlm/turboquant.py | 6610 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | mlx_vlm/turboquant.py | 6612 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6562 | # ── Batch-aware TurboQuant cache for continuous batching ──────────────── | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6628 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6630 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6684 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6686 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6770 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6772 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6823 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6825 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | mlx_vlm/tests/test_generate.py | 712 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | mlx_vlm/tests/test_generate.py | 714 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | mlx_vlm/tests/test_generate.py | 972 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | mlx_vlm/tests/test_generate.py | 974 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | mlx_vlm/tests/test_generate.py | 977 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | mlx_vlm/tests/test_generate.py | 979 | # ============================================================================ | COMMENT |
| MEDIUM | mlx_vlm/tests/test_generate.py | 50 | # ============================================================================ | COMMENT |
| MEDIUM | mlx_vlm/tests/test_generate.py | 52 | # ============================================================================ | COMMENT |
| MEDIUM | mlx_vlm/tests/test_generate.py | 375 | # ============================================================================ | COMMENT |
| MEDIUM | mlx_vlm/tests/test_generate.py | 377 | # ============================================================================ | COMMENT |
| MEDIUM | mlx_vlm/tests/test_generate.py | 391 | # ============================================================================ | COMMENT |
| MEDIUM | mlx_vlm/tests/test_generate.py | 393 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | mlx_vlm/server/generation.py | 591 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | mlx_vlm/server/generation.py | 593 | # ============================================================================= | COMMENT |
| MEDIUM | mlx_vlm/models/falcon_perception/anyup.py | 13 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/falcon_perception/anyup.py | 15 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/falcon_perception/anyup.py | 38 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/falcon_perception/anyup.py | 40 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/falcon_perception/anyup.py | 81 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/falcon_perception/anyup.py | 83 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/falcon_perception/anyup.py | 135 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/falcon_perception/anyup.py | 137 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/falcon_perception/anyup.py | 156 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/falcon_perception/anyup.py | 158 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/falcon_perception/anyup.py | 279 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/falcon_perception/anyup.py | 281 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/falcon_perception/anyup.py | 308 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/falcon_perception/anyup.py | 310 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/sam3_1/convert_weights.py | 34 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/sam3_1/convert_weights.py | 36 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/sam3_1/convert_weights.py | 54 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/sam3_1/convert_weights.py | 56 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/sam3_1/convert_weights.py | 100 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | mlx_vlm/models/sam3_1/convert_weights.py | 102 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | mlx_vlm/models/sam3_1/convert_weights.py | 113 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | mlx_vlm/models/sam3_1/convert_weights.py | 115 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | mlx_vlm/models/sam3_1/convert_weights.py | 119 | # ================================================================== | COMMENT |
| MEDIUM⚡ | mlx_vlm/models/sam3_1/convert_weights.py | 121 | # ================================================================== | COMMENT |
| MEDIUM | mlx_vlm/models/sam3_1/convert_weights.py | 480 | # ================================================================== | COMMENT |
| MEDIUM | mlx_vlm/models/sam3_1/convert_weights.py | 482 | # ================================================================== | COMMENT |
| MEDIUM | mlx_vlm/models/sam3_1/convert_weights.py | 634 | # ================================================================== | COMMENT |
| MEDIUM | mlx_vlm/models/sam3_1/convert_weights.py | 636 | # ================================================================== | COMMENT |
| MEDIUM | mlx_vlm/models/sam3_1/convert_weights.py | 883 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/models/sam3_1/convert_weights.py | 885 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | mlx_vlm/models/sam3_1/tracker.py | 552 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | mlx_vlm/models/sam3_1/tracker.py | 554 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | mlx_vlm/models/sam3_1/tracker.py | 1207 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | mlx_vlm/models/sam3_1/tracker.py | 1209 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/models/sam3_1/tracker.py | 271 | # ------------------------------------------------------------------ | COMMENT |
| 94 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/omni.py | 110 | CODE | |
| LOW | examples/omni.py | 168 | CODE | |
| LOW | examples/omni.py | 253 | CODE | |
| LOW | examples/utils.py | 26 | CODE | |
| LOW | examples/nemotron_voicechat_microphone.py | 65 | CODE | |
| LOW | examples/nemotron_voicechat_microphone.py | 202 | CODE | |
| LOW | mlx_vlm/moe_offload.py | 184 | CODE | |
| LOW | mlx_vlm/moe_offload.py | 219 | CODE | |
| LOW | mlx_vlm/moe_offload.py | 703 | CODE | |
| LOW | mlx_vlm/moe_offload.py | 760 | CODE | |
| LOW | mlx_vlm/apc_coordinator.py | 54 | CODE | |
| LOW | mlx_vlm/tokenizer_utils.py | 453 | CODE | |
| LOW | mlx_vlm/convert.py | 266 | CODE | |
| LOW | mlx_vlm/turboquant.py | 2236 | CODE | |
| LOW | mlx_vlm/turboquant.py | 6090 | CODE | |
| LOW | mlx_vlm/chat_ui.py | 80 | CODE | |
| LOW | mlx_vlm/chat_ui.py | 166 | CODE | |
| LOW | mlx_vlm/chat_ui.py | 186 | CODE | |
| LOW | mlx_vlm/chat_ui.py | 208 | CODE | |
| LOW | mlx_vlm/apc_adapters.py | 100 | CODE | |
| LOW | mlx_vlm/apc_adapters.py | 270 | CODE | |
| LOW | mlx_vlm/apc_adapters.py | 308 | CODE | |
| LOW | mlx_vlm/chat.py | 134 | CODE | |
| LOW | mlx_vlm/chat.py | 155 | CODE | |
| LOW | mlx_vlm/utils.py | 173 | CODE | |
| LOW | mlx_vlm/utils.py | 732 | CODE | |
| LOW | mlx_vlm/utils.py | 888 | CODE | |
| LOW | mlx_vlm/utils.py | 1389 | CODE | |
| LOW | mlx_vlm/utils.py | 1726 | CODE | |
| LOW | mlx_vlm/utils.py | 1825 | CODE | |
| LOW | mlx_vlm/utils.py | 2303 | CODE | |
| LOW | mlx_vlm/utils.py | 2660 | CODE | |
| LOW | mlx_vlm/prompt_utils.py | 140 | CODE | |
| LOW | mlx_vlm/prompt_utils.py | 198 | CODE | |
| LOW | mlx_vlm/prompt_utils.py | 218 | CODE | |
| LOW | mlx_vlm/prompt_utils.py | 710 | CODE | |
| LOW | mlx_vlm/prompt_utils.py | 945 | CODE | |
| LOW | mlx_vlm/prompt_utils.py | 425 | CODE | |
| LOW | mlx_vlm/prompt_utils.py | 749 | CODE | |
| LOW | mlx_vlm/quant_utils.py | 164 | CODE | |
| LOW | mlx_vlm/lora.py | 37 | CODE | |
| LOW | mlx_vlm/lora.py | 65 | CODE | |
| LOW | mlx_vlm/apc.py | 204 | CODE | |
| LOW | mlx_vlm/apc.py | 1062 | CODE | |
| LOW | mlx_vlm/apc.py | 1327 | CODE | |
| LOW | mlx_vlm/apc.py | 1560 | CODE | |
| LOW | mlx_vlm/apc.py | 2573 | CODE | |
| LOW | mlx_vlm/apc.py | 3000 | CODE | |
| LOW | mlx_vlm/apc.py | 3274 | CODE | |
| LOW | mlx_vlm/apc.py | 3328 | CODE | |
| LOW | mlx_vlm/apc.py | 3738 | CODE | |
| LOW | mlx_vlm/token_classification.py | 102 | CODE | |
| LOW | mlx_vlm/quant/calibration.py | 95 | CODE | |
| LOW | mlx_vlm/quant/calibration.py | 129 | CODE | |
| LOW | mlx_vlm/evals/mmmu.py | 69 | CODE | |
| LOW | mlx_vlm/evals/mmmu.py | 245 | CODE | |
| LOW | mlx_vlm/evals/mmstar.py | 22 | CODE | |
| LOW | mlx_vlm/evals/ocrbench.py | 316 | CODE | |
| LOW | mlx_vlm/evals/math_vista.py | 36 | CODE | |
| LOW | mlx_vlm/evals/math_vista.py | 366 | CODE | |
| 452 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/omni.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | mlx_vlm/utils.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | mlx_vlm/structured.py | 82 | def _setup(self, batch_size: int) -> None: | CODE |
| LOW | mlx_vlm/lora.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | mlx_vlm/apc_storage.py | 87 | def set_kv(self, keys: List[mx.array], values: List[mx.array]) -> None: | CODE |
| LOW | mlx_vlm/quant/__init__.py | 10 | __all__ = [ | CODE |
| LOW | mlx_vlm/tools/__init__.py | 24 | __all__ = [ | CODE |
| LOW | mlx_vlm/server/decisions.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | mlx_vlm/server/__init__.py | 193 | __all__ = [ | CODE |
| LOW | mlx_vlm/server/embeddings.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | mlx_vlm/server/reranking.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | mlx_vlm/models/quantized_verifier.py | 2064 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/exact_speculative_verify.py | 258 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/dots1/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/solar_open/solar_open.py | 5 | __all__ = ["Model"] | CODE |
| LOW | mlx_vlm/models/solar_open/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/lfm2_encoder/config.py | 3 | __all__ = ["ModelConfig"] | CODE |
| LOW | mlx_vlm/models/lfm2_encoder/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/llama4/processing_llama4.py | 303 | __all__ = ["Llama4Processor"] | CODE |
| LOW | mlx_vlm/models/spark2_5/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/pixtral/processing_pixtral.py | 209 | __all__ = ["PixtralProcessor"] | CODE |
| LOW | mlx_vlm/models/pixtral/image_processing_pixtral.py | 305 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/laguna/__init__.py | 6 | __all__ = ["LagunaProcessor", "Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/laguna/processing_laguna.py | 76 | __all__ = ["LagunaProcessor"] | CODE |
| LOW | mlx_vlm/models/falcon_ocr/layout.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | mlx_vlm/models/falcon_ocr/processing_falcon_ocr.py | 400 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/olmo3/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/gemma4_text/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/ministral3/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/cohere/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/gemma3_embedding/config.py | 3 | __all__ = ["ModelConfig"] | CODE |
| LOW | mlx_vlm/models/gemma3_embedding/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/kolibri1/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/starcoder2/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/gpt_oss/__init__.py | 5 | __all__ = ["GptOssProcessor", "Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/plamo2vl/__init__.py | 7 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/olmoe/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/gemma/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/colqwen2_5/config.py | 6 | __all__ = ["ModelConfig", "TextConfig", "VisionConfig"] | CODE |
| LOW | mlx_vlm/models/colqwen2_5/__init__.py | 5 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/mllama/processing_mllama.py | 278 | __all__ = ["MllamaProcessor"] | CODE |
| LOW | mlx_vlm/models/nemotron_nas/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/decider2/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/olmo2/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/zaya1_vl/__init__.py | 7 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/zaya1_vl/processing_zaya1_vl.py | 132 | __all__ = ["Zaya1VLProcessor"] | CODE |
| LOW | mlx_vlm/models/laya/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/ideogram4/__init__.py | 3 | __all__ = ["Ideogram4ImageGenerationModel", "load"] | CODE |
| LOW | mlx_vlm/models/ideogram4/model.py | 160 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/lfm2_embedding/config.py | 3 | __all__ = ["ModelConfig"] | CODE |
| LOW | mlx_vlm/models/lfm2_embedding/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/plamo/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/qwen3_next/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/gpt_neox/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/minimax_m3/__init__.py | 5 | __all__ = ["LanguageModel", "Model", "ModelConfig", "TextConfig"] | CODE |
| LOW | mlx_vlm/models/lfm2_colbert/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/exaone4/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/mistral_large3/__init__.py | 5 | __all__ = ["Model", "ModelConfig", "TextConfig", "VisionConfig"] | CODE |
| LOW | mlx_vlm/models/mellum/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/granite/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| 337 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/omni.py | 95 | except Exception as e: | CODE |
| LOW | examples/omni.py | 229 | except Exception as e: | CODE |
| LOW | examples/omni.py | 237 | except Exception as e: | CODE |
| LOW | examples/omni.py | 330 | except Exception as e: | CODE |
| LOW | mlx_vlm/moe_offload.py | 250 | except Exception: | CODE |
| LOW | mlx_vlm/moe_offload.py | 513 | except Exception: | CODE |
| LOW | mlx_vlm/moe_offload.py | 531 | except Exception: | CODE |
| LOW | mlx_vlm/moe_offload.py | 627 | except Exception: | CODE |
| LOW | mlx_vlm/tokenizer_utils.py | 323 | except Exception: | CODE |
| MEDIUM | mlx_vlm/tokenizer_utils.py | 246 | def finalize(self): | CODE |
| LOW | mlx_vlm/convert.py | 252 | except Exception: | CODE |
| LOW | mlx_vlm/convert.py | 426 | except Exception as exc: | CODE |
| LOW | mlx_vlm/chat_ui.py | 109 | except Exception: | CODE |
| LOW⚡ | mlx_vlm/chat_ui.py | 124 | except Exception: | CODE |
| LOW⚡ | mlx_vlm/chat_ui.py | 132 | except Exception as e: | CODE |
| MEDIUM⚡ | mlx_vlm/chat_ui.py | 133 | print(f"Error scanning cache: {e}") | CODE |
| LOW | mlx_vlm/chat_ui.py | 153 | except Exception as e: | CODE |
| LOW | mlx_vlm/apc_adapters.py | 678 | except Exception: | CODE |
| LOW | mlx_vlm/chat.py | 92 | except Exception as e: | CODE |
| LOW | mlx_vlm/chat.py | 185 | except Exception as e: | CODE |
| LOW | mlx_vlm/chat.py | 388 | except Exception as e: | CODE |
| LOW | mlx_vlm/utils.py | 1761 | except Exception as e: | CODE |
| LOW | mlx_vlm/utils.py | 1992 | except Exception as e: | CODE |
| LOW | mlx_vlm/utils.py | 2299 | except Exception as e: | CODE |
| LOW | mlx_vlm/lora.py | 77 | except Exception: | CODE |
| LOW | mlx_vlm/lora.py | 87 | except Exception as e: | CODE |
| MEDIUM | mlx_vlm/apc.py | 100 | def _metal_working_set_bytes() -> Optional[int]: | CODE |
| MEDIUM | mlx_vlm/apc.py | 2994 | def _writer_loop(self) -> None: | CODE |
| LOW | mlx_vlm/apc.py | 171 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 222 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 457 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 1074 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 1095 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 1234 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 1989 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 2120 | except Exception as e: | CODE |
| LOW | mlx_vlm/apc.py | 2835 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 3014 | except Exception as e: | CODE |
| LOW | mlx_vlm/apc.py | 3600 | except Exception as e: | CODE |
| LOW | mlx_vlm/apc.py | 3906 | except Exception as e: | CODE |
| LOW | mlx_vlm/apc.py | 4502 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 4529 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 4537 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 4766 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 4783 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 4793 | except Exception as exc: | CODE |
| LOW | mlx_vlm/apc.py | 4873 | except Exception as exc: | CODE |
| LOW | mlx_vlm/apc.py | 4978 | except Exception as e: | CODE |
| LOW | mlx_vlm/apc_storage.py | 18 | except Exception: | CODE |
| LOW | mlx_vlm/evals/mmmu.py | 65 | except Exception: | CODE |
| LOW | mlx_vlm/evals/mmmu.py | 155 | except Exception: | CODE |
| LOW | mlx_vlm/evals/mmmu.py | 257 | except Exception as e: | CODE |
| LOW | mlx_vlm/evals/mmmu.py | 266 | except Exception as e: | CODE |
| LOW | mlx_vlm/evals/mmmu.py | 439 | except Exception as e: | CODE |
| LOW | mlx_vlm/evals/mmmu.py | 487 | except Exception as e: | CODE |
| MEDIUM | mlx_vlm/evals/mmmu.py | 488 | print(f"Error during inference:", question, images, "error message:", e) | CODE |
| LOW | mlx_vlm/evals/ocrbench.py | 384 | except Exception as e: | CODE |
| LOW | mlx_vlm/evals/ocrbench.py | 447 | except Exception as e: | CODE |
| LOW⚡ | mlx_vlm/evals/math_vista.py | 172 | except Exception: | CODE |
| LOW⚡ | mlx_vlm/evals/math_vista.py | 180 | except Exception: | CODE |
| 183 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/omni.py | 31 | CODE | |
| LOW | mlx_vlm/convert.py | 266 | CODE | |
| LOW | mlx_vlm/privacy_filter.py | 205 | CODE | |
| LOW | mlx_vlm/utils.py | 2303 | CODE | |
| LOW | mlx_vlm/sample_utils.py | 19 | CODE | |
| LOW | mlx_vlm/apc.py | 253 | CODE | |
| LOW | mlx_vlm/tests/test_server.py | 229 | CODE | |
| LOW | mlx_vlm/server/generation.py | 492 | CODE | |
| LOW | mlx_vlm/server/generation.py | 979 | CODE | |
| LOW | mlx_vlm/models/rope_utils.py | 256 | CODE | |
| LOW | mlx_vlm/models/rope_utils.py | 1166 | CODE | |
| LOW | mlx_vlm/models/fast_ops.py | 1166 | CODE | |
| LOW | mlx_vlm/models/kernels.py | 470 | CODE | |
| LOW | mlx_vlm/models/interpolate.py | 122 | CODE | |
| LOW | mlx_vlm/models/llama4/processing_llama4.py | 137 | CODE | |
| LOW | mlx_vlm/models/llama4/vision.py | 344 | CODE | |
| LOW | mlx_vlm/models/llama4/language.py | 190 | CODE | |
| LOW | mlx_vlm/models/pixtral/processing_pixtral.py | 33 | CODE | |
| LOW | mlx_vlm/models/pixtral/language.py | 107 | CODE | |
| LOW | mlx_vlm/models/pixtral/image_processing_pixtral.py | 166 | CODE | |
| LOW | mlx_vlm/models/olmo3/language.py | 125 | CODE | |
| LOW | mlx_vlm/models/ministral3/language.py | 115 | CODE | |
| LOW | mlx_vlm/models/starcoder2/language.py | 96 | CODE | |
| LOW | mlx_vlm/models/plamo2vl/processing.py | 173 | CODE | |
| LOW | mlx_vlm/models/gemma/language.py | 108 | CODE | |
| LOW | mlx_vlm/models/mllama/language.py | 287 | CODE | |
| LOW | mlx_vlm/models/olmo2/language.py | 105 | CODE | |
| LOW | mlx_vlm/models/qwen3_next/language.py | 345 | CODE | |
| LOW | mlx_vlm/models/gpt_neox/language.py | 150 | CODE | |
| LOW | mlx_vlm/models/exaone4/language.py | 106 | CODE | |
| LOW | mlx_vlm/models/llava_bunny/language.py | 102 | CODE | |
| LOW | mlx_vlm/models/granite/language.py | 94 | CODE | |
| LOW | mlx_vlm/models/gemma2/language.py | 133 | CODE | |
| LOW | mlx_vlm/models/mixtral/language.py | 127 | CODE | |
| LOW | mlx_vlm/models/youtu_vl/language.py | 290 | CODE | |
| LOW | mlx_vlm/models/indic_ocr/pipeline.py | 415 | CODE | |
| LOW | mlx_vlm/models/hunyuan_vl/vision.py | 93 | CODE | |
| LOW | mlx_vlm/models/hunyuan_vl/language.py | 306 | CODE | |
| LOW | mlx_vlm/models/hunyuan_vl/processing_hunyuan_vl.py | 83 | CODE | |
| LOW | mlx_vlm/models/sam3_1/generate.py | 433 | CODE | |
| LOW | mlx_vlm/models/sam3_1/generate.py | 580 | CODE | |
| LOW | mlx_vlm/models/sam3_1/tracker.py | 780 | CODE | |
| LOW | mlx_vlm/models/kimi_k3/processing_kimi_k3.py | 174 | CODE | |
| LOW | mlx_vlm/models/kimi_k3/processing_kimi_k3.py | 322 | CODE | |
| LOW | mlx_vlm/models/llmjpvl/language.py | 115 | CODE | |
| LOW | mlx_vlm/models/phi3/language.py | 123 | CODE | |
| LOW | mlx_vlm/models/gemma3/language.py | 176 | CODE | |
| LOW | mlx_vlm/models/inkling/processing_inkling.py | 209 | CODE | |
| LOW | mlx_vlm/models/inkling/audio_feature_extractor.py | 21 | CODE | |
| LOW | mlx_vlm/models/gemma4/gemma4.py | 70 | CODE | |
| LOW | mlx_vlm/models/gemma4/processing_gemma4.py | 140 | CODE | |
| LOW | mlx_vlm/models/gemma4/processing_gemma4.py | 285 | CODE | |
| LOW | mlx_vlm/models/gemma4/language.py | 553 | CODE | |
| LOW | mlx_vlm/models/gemma4/audio_feature_extractor.py | 118 | CODE | |
| LOW | mlx_vlm/models/glm5_next/processing.py | 151 | CODE | |
| LOW | mlx_vlm/models/molmo/vision.py | 111 | CODE | |
| LOW | mlx_vlm/models/molmo/processing_molmo.py | 165 | CODE | |
| LOW | mlx_vlm/models/qwen2/language.py | 94 | CODE | |
| LOW | mlx_vlm/models/flux2/pipeline.py | 63 | CODE | |
| LOW | mlx_vlm/models/flux2/pipeline.py | 124 | CODE | |
| 183 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | mlx_vlm/turboquant.py | 2738 | float total_sq = (sg_id == 0 && sg_lid < 8) ? sg_norms[sg_lid] : 0.0f; | CODE |
| HIGH⚡ | mlx_vlm/turboquant.py | 2740 | if (sg_id == 0 && sg_lid == 0) sg_norms[0] = total_sq; | CODE |
| HIGH⚡ | mlx_vlm/turboquant.py | 2928 | float total_sq = (sg_id == 0 && sg_lid < n_sg) ? sg_norms[sg_lid] : 0.0f; | CODE |
| HIGH⚡ | mlx_vlm/turboquant.py | 2931 | if (sg_id == 0 && sg_lid == 0) sg_norms[0] = total_sq; | CODE |
| HIGH | mlx_vlm/chat_ui.py | 386 | return savedModel || server_model; | CODE |
| HIGH | mlx_vlm/utils.py | 1100 | # text-only quants of unified VLM families set vision_config to null, | STRING |
| HIGH | mlx_vlm/tools/parsers/gemma4.py | 42 | - bare literals (numbers, booleans, null) via json.loads | STRING |
| HIGH | mlx_vlm/models/quantized_verifier.py | 28 | (BITS == 3 || BITS == 5) ? 8 : (BITS == 6 ? 4 : 32 / BITS); | CODE |
| HIGH | mlx_vlm/models/quantized_verifier.py | 43 | if constexpr (BITS == 3 || BITS == 5) { | CODE |
| HIGH | mlx_vlm/models/quantized_verifier.py | 72 | if constexpr (BITS == 2 || BITS == 4) { | CODE |
| HIGH | mlx_vlm/models/quantized_verifier.py | 1032 | if (simd_gid == 0 && simd_lid == 0) { | CODE |
| HIGH | mlx_vlm/models/quantized_verifier.py | 1202 | if (simd_gid == 0 && simd_lid == 0) { | CODE |
| HIGH | mlx_vlm/models/quantized_verifier.py | 1354 | if (n < N_SIZE && rounded > best_value) { | CODE |
| HIGH | mlx_vlm/models/quantized_verifier.py | 1367 | if (simd_gid == 0 && simd_lid == 0) { | CODE |
| HIGH | mlx_vlm/models/quantized_verifier.py | 1406 | "if (n < N_SIZE && rounded > best_value) {", | CODE |
| HIGH | mlx_vlm/models/quantized_verifier.py | 1950 | if (simd_group == 0 && lane == 0) { | CODE |
| HIGH | mlx_vlm/models/sparse_attention.py | 53 | bool valid = key_pos >= 0 && key_pos < key_length; | CODE |
| HIGH | mlx_vlm/models/fast_ops.py | 223 | if (mix_sg == 0 && lane == 0 && out_block < MIX_BLOCKS) { | CODE |
| HIGH | mlx_vlm/models/fast_ops.py | 531 | if ((time & 1) == 0 && time + 1 < VERIFY_T) { | CODE |
| HIGH | mlx_vlm/models/fast_ops.py | 611 | if (simd_lid == 0 && n < N_SIZE) { | CODE |
| HIGH | mlx_vlm/models/fast_ops.py | 677 | if (simd_lid == 0 && n < N_SIZE) { | CODE |
| HIGH | mlx_vlm/models/kernels.py | 67 | if (x_out >= (uint)out_w || y_out >= (uint)out_h || bc_idx >= (uint)(batch_size * channels)) | CODE |
| HIGH | mlx_vlm/models/kernels.py | 326 | if (x_out >= (uint)out_w || y_out >= (uint)out_h || bc_idx >= (uint)(batch_size * channels)) | CODE |
| HIGH | mlx_vlm/models/kernels.py | 336 | if (align_corners && out_w > 1 && out_h > 1) { | CODE |
| HIGH⚡ | mlx_vlm/models/kernels.py | 538 | I_nw = iy_nw >= 0 && iy_nw <= H - 1 && ix_nw >= 0 && ix_nw <= W - 1 ? I_nw : 0; | CODE |
| HIGH⚡ | mlx_vlm/models/kernels.py | 539 | I_ne = iy_ne >= 0 && iy_ne <= H - 1 && ix_ne >= 0 && ix_ne <= W - 1 ? I_ne : 0; | CODE |
| HIGH⚡ | mlx_vlm/models/kernels.py | 540 | I_sw = iy_sw >= 0 && iy_sw <= H - 1 && ix_sw >= 0 && ix_sw <= W - 1 ? I_sw : 0; | CODE |
| HIGH⚡ | mlx_vlm/models/kernels.py | 541 | I_se = iy_se >= 0 && iy_se <= H - 1 && ix_se >= 0 && ix_se <= W - 1 ? I_se : 0; | CODE |
| HIGH | mlx_vlm/models/inkling/language.py | 73 | if (i >= LQ || j >= S || bh >= B * H) return; | CODE |
| HIGH | mlx_vlm/models/inkling/language.py | 79 | } else if (SLIDING > 0 && dist >= (int)SLIDING) { | CODE |
| HIGH | mlx_vlm/models/inkling/language.py | 120 | } else if (SLIDING > 0 && dist >= (int)SLIDING) { | CODE |
| HIGH | mlx_vlm/models/inkling/language.py | 256 | if (c >= C || b >= B) return; | CODE |
| HIGH | mlx_vlm/models/inkling/language.py | 567 | if (lane == (uint)wl && lt >= 0 && sc[lt] == gb) taken[lt] = true; | CODE |
| HIGH | mlx_vlm/models/inkling/language.py | 648 | if (sg == 0 && lane == 0) { | CODE |
| HIGH | mlx_vlm/models/embedding_gemma2/_video_kernel.py | 33 | if (x >= W || y >= H) return; | CODE |
| HIGH | mlx_vlm/models/minimax_m3_vl/language.py | 324 | bool valid = block_idx >= 0 && key_pos < key_length && key_pos <= qpos; | CODE |
| HIGH | mlx_vlm/models/nemotron_voicechat/tts.py | 465 | cond = mx.concatenate([cond[:batch_size], null], axis=0) | CODE |
| HIGH | mlx_vlm/models/nemotron_voicechat/streaming.py | 321 | mel = self._mel_stream.push(frame) | CODE |
| HIGH | mlx_vlm/models/nemotron_voicechat/streaming.py | 322 | chunks = self._conformer_stream.push(mel, emit_partial=True) | CODE |
| HIGH | mlx_vlm/models/qwen4_exp/qsa_kernel.py | 75 | bool valid = block_idx >= 0 && key_pos < key_length && key_pos < query_end; | CODE |
| HIGH | mlx_vlm/models/qwen4_exp/qsa_kernel.py | 115 | bool valid_tail = tail_pos < query_end && tail_pos < key_length; | CODE |
| HIGH | mlx_vlm/quantization/one_bit.py | 71 | if (lane == 0 && output_row < output_dims) { | CODE |
| HIGH | mlx_vlm/quantization/one_bit.py | 193 | if (output_row < M && output_column + element < N) { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | mlx_vlm/models/quantized_verifier.py | 0 | #include <metal_simdgroup> #include <metal_simdgroup_matrix> using namespace metal; | STRING |
| HIGH | mlx_vlm/models/fast_ops.py | 0 | #include <metal_simdgroup> #include <metal_simdgroup_matrix> using namespace metal; | STRING |
| HIGH | mlx_vlm/quantization/one_bit.py | 0 | #include <metal_simdgroup> #include <metal_simdgroup_matrix> using namespace metal; | STRING |
| HIGH | mlx_vlm/models/hunyuan_vl/processing_hunyuan_vl.py | 0 | return combined input names from tokenizer and image processor. | STRING |
| HIGH | mlx_vlm/models/glm_ocr/processing.py | 0 | return combined input names from tokenizer and image processor. | STRING |
| HIGH | mlx_vlm/models/fastvlm/processing.py | 0 | return combined input names from tokenizer and image processor. | STRING |
| HIGH | mlx_vlm/models/glm4v_moe/processing.py | 0 | return combined input names from tokenizer and image processor. | STRING |
| HIGH | mlx_vlm/models/glm4v/processing.py | 0 | return combined input names from tokenizer and image processor. | STRING |
| HIGH | mlx_vlm/models/paddleocr_vl/processing_paddleocr_vl.py | 0 | return combined input names from tokenizer and image processor. | STRING |
| HIGH | mlx_vlm/models/qwen2_5_vl/qwen2_5_vl.py | 0 | merge image features into input embeddings at image token positions. args: image_token_id: the token id for image placeh | STRING |
| HIGH | mlx_vlm/models/glm4v_moe/glm4v_moe.py | 0 | merge image features into input embeddings at image token positions. args: image_token_id: the token id for image placeh | STRING |
| HIGH | mlx_vlm/models/glm4v/glm4v.py | 0 | merge image features into input embeddings at image token positions. args: image_token_id: the token id for image placeh | STRING |
| HIGH | mlx_vlm/models/glm_ocr/processing.py | 0 | processor for glm-4v that wraps an image processor and tokenizer. handles: - image preprocessing via image_processor - t | STRING |
| HIGH | mlx_vlm/models/glm4v_moe/processing.py | 0 | processor for glm-4v that wraps an image processor and tokenizer. handles: - image preprocessing via image_processor - t | STRING |
| HIGH | mlx_vlm/models/glm4v/processing.py | 0 | processor for glm-4v that wraps an image processor and tokenizer. handles: - image preprocessing via image_processor - t | STRING |
| HIGH | mlx_vlm/models/glm_ocr/processing.py | 0 | process images/videos and text for the model. args: images: single image or list of images (pil.image, np.ndarray, etc.) | STRING |
| HIGH | mlx_vlm/models/glm4v_moe/processing.py | 0 | process images/videos and text for the model. args: images: single image or list of images (pil.image, np.ndarray, etc.) | STRING |
| HIGH | mlx_vlm/models/glm4v/processing.py | 0 | process images/videos and text for the model. args: images: single image or list of images (pil.image, np.ndarray, etc.) | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/utils.py | 38 | # Check if bboxes is a list of dictionaries | COMMENT |
| LOW | mlx_vlm/utils.py | 1835 | # Check if ffmpeg is needed for certain formats | COMMENT |
| LOW | mlx_vlm/evals/mmmu.py | 102 | # Check if this is a multiple choice question (answer is A-F or I) | COMMENT |
| LOW | mlx_vlm/evals/mmmu.py | 129 | # Check if match is correct | COMMENT |
| LOW | mlx_vlm/evals/mmstar.py | 153 | # Print results | COMMENT |
| LOW | mlx_vlm/evals/math_vista.py | 53 | # Check if it's a choice letter | COMMENT |
| LOW | mlx_vlm/evals/math_vista.py | 62 | # Check if it's directly one of the choices | COMMENT |
| LOW | mlx_vlm/models/cache.py | 3559 | # Check if all caches are empty | COMMENT |
| LOW⚡ | mlx_vlm/models/base.py | 450 | # Check if the shape has 4 dimensions | COMMENT |
| LOW⚡ | mlx_vlm/models/base.py | 453 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW⚡ | mlx_vlm/models/base.py | 458 | # Check if the shape has 3 dimensions | COMMENT |
| LOW⚡ | mlx_vlm/models/base.py | 461 | # Check if out_channels is the largest | COMMENT |
| LOW | mlx_vlm/models/moondream2/image_crops.py | 81 | # Check if we need local crops | COMMENT |
| LOW | mlx_vlm/models/moondream3/image_crops.py | 81 | # Check if we need local crops | COMMENT |
| LOW⚡ | mlx_vlm/models/qwen2_5_vl/vision.py | 14 | # Check if the shape has 4 dimensions | COMMENT |
| LOW⚡ | mlx_vlm/models/qwen2_5_vl/vision.py | 23 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/qwen2_5_vl/language.py | 451 | # Check if mask shape matches input shape (for chunked prefill compatibility) | COMMENT |
| LOW | mlx_vlm/models/lfm2_vl/processing_lfm2_vl.py | 519 | # Check if we got the fast image processor and need to replace it with the slow one | COMMENT |
| LOW | mlx_vlm/models/lfm2_vl/processing_lfm2_vl.py | 826 | # Check if image_rows/cols/sizes are present (numpy processor with tiling) | COMMENT |
| LOW | mlx_vlm/models/glm_ocr/language.py | 470 | # Check if mask shape matches input shape (for chunked prefill compatibility) | COMMENT |
| LOW | mlx_vlm/models/fastvlm/vision.py | 497 | # Check if SE-ReLU is requested | COMMENT |
| LOW | mlx_vlm/models/phi3_v/processing_phi3_v.py | 447 | # Check if images and text inputs are reversed for BC | COMMENT |
| LOW | mlx_vlm/models/kimi_vl/processing_kimi_vl.py | 45 | # Check if arguments are swapped (text passed as images, images passed as text) | COMMENT |
| LOW | mlx_vlm/models/kimi_vl/processing_kimi_vl.py | 371 | # Check if images and text inputs are reversed for BC | COMMENT |
| LOW | mlx_vlm/models/deepseekocr_2/deepseekocr_2.py | 85 | # Check if we have valid pixel values | COMMENT |
| LOW | mlx_vlm/models/deepseekocr_2/deepseekocr_2.py | 95 | # Check if we have valid patches (non-zero) | COMMENT |
| LOW | mlx_vlm/models/z_image/model.py | 95 | # Check if local path with Z-Image layout | COMMENT |
| LOW⚡ | mlx_vlm/models/glm4v_moe/vision.py | 15 | # Check if the shape has 4 or 5 dimensions | COMMENT |
| LOW⚡ | mlx_vlm/models/glm4v_moe/vision.py | 18 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW⚡ | mlx_vlm/models/glm4v_moe/vision.py | 25 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/glm4v_moe/language.py | 566 | # Check if mask shape matches input shape (for chunked prefill compatibility) | COMMENT |
| LOW⚡ | mlx_vlm/models/qwen3_vl_moe/vision.py | 14 | # Check if the shape has 4 or 5 dimensions | COMMENT |
| LOW⚡ | mlx_vlm/models/qwen3_vl_moe/vision.py | 23 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/qwen3_vl_moe/language.py | 595 | # Check if mask shape matches input shape (for chunked prefill compatibility) | COMMENT |
| LOW⚡ | mlx_vlm/models/qwen2_vl/vision.py | 13 | # Check if the shape has 4 dimensions | COMMENT |
| LOW⚡ | mlx_vlm/models/qwen2_vl/vision.py | 22 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/qwen2_vl/language.py | 444 | # Check if mask shape matches input shape (for chunked prefill compatibility) | COMMENT |
| LOW | mlx_vlm/models/qwen3_5/language.py | 1640 | # Check if mask shape matches input shape (for chunked prefill compatibility) | STRING |
| LOW | mlx_vlm/models/falcon_h1/language.py | 411 | # Check if needs sanitization | COMMENT |
| LOW | mlx_vlm/models/rfdetr/generate.py | 498 | # Set camera to 1280x720 (16:9) for widescreen display | COMMENT |
| LOW⚡ | mlx_vlm/models/glm4v/vision.py | 15 | # Check if the shape has 4 or 5 dimensions | COMMENT |
| LOW⚡ | mlx_vlm/models/glm4v/vision.py | 18 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW⚡ | mlx_vlm/models/glm4v/vision.py | 25 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/glm4v/language.py | 507 | # Check if mask shape matches input shape (for chunked prefill compatibility) | COMMENT |
| LOW | mlx_vlm/models/phi4mm/phi4mm.py | 140 | # Check if this batch item has any special tokens | COMMENT |
| LOW | mlx_vlm/models/molmo2/processing.py | 749 | # Check if this is a molmo2 model | COMMENT |
| LOW | mlx_vlm/models/paddleocr_vl/vision.py | 17 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/paddleocr_vl/language.py | 415 | # Check if mask shape matches input shape | COMMENT |
| LOW⚡ | mlx_vlm/models/qwen3_vl/vision.py | 14 | # Check if the shape has 4 or 5 dimensions | COMMENT |
| LOW⚡ | mlx_vlm/models/qwen3_vl/vision.py | 23 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/qwen3_vl/language.py | 569 | # Check if mask shape matches input shape (for chunked prefill compatibility) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | mlx_vlm/turboquant.py | 2750 | // Step 2: Unit vector → shared | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2755 | // Step 3: Rotate (1 dim per thread, 256 FMAs) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2763 | // Step 4: Comparison-based quantize | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2918 | // Step 1: Load & compute norm (2-stage cross-simdgroup reduction) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2938 | // Step 2: Unit vector → shared for rotation | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2943 | // Step 3: Rotate — 1 dim per thread, 256 FMAs (was 2048 at TG=32) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2951 | // Step 4: Comparison-based quantize | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2961 | // Step 5: Pack indices — thread-per-word, race-free, no atomics. | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 5692 | # Step 1: Key scoring — polymorphic (works for both Prod and MSE keys) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 5698 | # Step 2: Precompute softmax weights (avoids exp() in value kernel) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 5701 | # Step 3: Single-tile value weighted sum with precomputed weights | COMMENT |
| LOW | mlx_vlm/turboquant.py | 2725 | // Step 1: Load vector element | COMMENT |
| LOW | mlx_vlm/turboquant.py | 2778 | // Step 5: Pack indices — thread-per-word, race-free, no atomics. | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 3079 | " // Step 5: Pack MSE indices", | CODE |
| LOW⚡ | mlx_vlm/turboquant.py | 3089 | " // Step 6: Residual norm", | CODE |
| LOW⚡ | mlx_vlm/turboquant.py | 3096 | " // Step 7: QJL projection (rotated_residual @ combined_proj_t)", | CODE |
| LOW | mlx_vlm/turboquant.py | 3009 | " // Step 1: Load & compute norm", | CODE |
| LOW | mlx_vlm/turboquant.py | 3064 | " // Step 4: MSE quantize + compute rotated residual", | CODE |
| LOW | mlx_vlm/turboquant.py | 3115 | " // Step 8: Pack sign bits (1 bit per dim)", | CODE |
| LOW⚡ | mlx_vlm/models/sam3_1/generate.py | 758 | # Step 1: Backbone — always use pre-computed from previous frame | COMMENT |
| LOW⚡ | mlx_vlm/models/sam3_1/generate.py | 763 | # Step 2: Detect or propagate | COMMENT |
| LOW⚡ | mlx_vlm/models/sam3_1/tracker.py | 1138 | # Step 2: encode the incoming masks | COMMENT |
| LOW⚡ | mlx_vlm/models/sam3_1/tracker.py | 1146 | # Step 3: match the high-res resolutions, then append the new objects | COMMENT |
| LOW⚡ | mlx_vlm/models/sam3_1/tracker.py | 1160 | # Step 4: re-encode the spatial memory | COMMENT |
| LOW⚡ | mlx_vlm/models/sam3_1/tracker.py | 1186 | # Step 1: encode the incoming masks | COMMENT |
| LOW⚡ | mlx_vlm/models/sam3_1/tracker.py | 1194 | # Step 2: replace the reconditioned objects in the existing state | COMMENT |
| LOW⚡ | mlx_vlm/models/sam3_1/tracker.py | 1203 | # Step 3: re-encode the spatial memory | COMMENT |
| LOW | mlx_vlm/models/sam3_1/tracker.py | 1125 | # Step 1: extend the multiplex state | COMMENT |
| LOW | mlx_vlm/models/minimax/language.py | 301 | # Step 2: Handle MoE expert weights restructuring | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | mlx_vlm/turboquant.py | 2750 | // Step 2: Unit vector → shared | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2755 | // Step 3: Rotate (1 dim per thread, 256 FMAs) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2763 | // Step 4: Comparison-based quantize | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2918 | // Step 1: Load & compute norm (2-stage cross-simdgroup reduction) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2938 | // Step 2: Unit vector → shared for rotation | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2943 | // Step 3: Rotate — 1 dim per thread, 256 FMAs (was 2048 at TG=32) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2951 | // Step 4: Comparison-based quantize | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2961 | // Step 5: Pack indices — thread-per-word, race-free, no atomics. | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 5692 | # Step 1: Key scoring — polymorphic (works for both Prod and MSE keys) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 5698 | # Step 2: Precompute softmax weights (avoids exp() in value kernel) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 5701 | # Step 3: Single-tile value weighted sum with precomputed weights | COMMENT |
| LOW | mlx_vlm/turboquant.py | 2725 | // Step 1: Load vector element | COMMENT |
| LOW | mlx_vlm/turboquant.py | 2778 | // Step 5: Pack indices — thread-per-word, race-free, no atomics. | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 3079 | " // Step 5: Pack MSE indices", | CODE |
| LOW⚡ | mlx_vlm/turboquant.py | 3089 | " // Step 6: Residual norm", | CODE |
| LOW⚡ | mlx_vlm/turboquant.py | 3096 | " // Step 7: QJL projection (rotated_residual @ combined_proj_t)", | CODE |
| LOW | mlx_vlm/turboquant.py | 3009 | " // Step 1: Load & compute norm", | CODE |
| LOW | mlx_vlm/turboquant.py | 3064 | " // Step 4: MSE quantize + compute rotated residual", | CODE |
| LOW | mlx_vlm/turboquant.py | 3115 | " // Step 8: Pack sign bits (1 bit per dim)", | CODE |
| LOW⚡ | mlx_vlm/models/sam3_1/generate.py | 758 | # Step 1: Backbone — always use pre-computed from previous frame | COMMENT |
| LOW⚡ | mlx_vlm/models/sam3_1/generate.py | 763 | # Step 2: Detect or propagate | COMMENT |
| LOW⚡ | mlx_vlm/models/sam3_1/tracker.py | 1138 | # Step 2: encode the incoming masks | COMMENT |
| LOW⚡ | mlx_vlm/models/sam3_1/tracker.py | 1146 | # Step 3: match the high-res resolutions, then append the new objects | COMMENT |
| LOW⚡ | mlx_vlm/models/sam3_1/tracker.py | 1160 | # Step 4: re-encode the spatial memory | COMMENT |
| LOW⚡ | mlx_vlm/models/sam3_1/tracker.py | 1186 | # Step 1: encode the incoming masks | COMMENT |
| LOW⚡ | mlx_vlm/models/sam3_1/tracker.py | 1194 | # Step 2: replace the reconditioned objects in the existing state | COMMENT |
| LOW⚡ | mlx_vlm/models/sam3_1/tracker.py | 1203 | # Step 3: re-encode the spatial memory | COMMENT |
| LOW | mlx_vlm/models/sam3_1/tracker.py | 1125 | # Step 1: extend the multiplex state | COMMENT |
| LOW | mlx_vlm/models/minimax/language.py | 301 | # Step 2: Handle MoE expert weights restructuring | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | mlx_vlm/models/cache.py | 219 | # Create an instance of cls without calling __init__ | COMMENT |
| MEDIUM | mlx_vlm/models/kernels.py | 400 | # Create the kernel | STRING |
| MEDIUM | mlx_vlm/models/llama4/language.py | 261 | # Create a mask for the chunked attention | COMMENT |
| MEDIUM | mlx_vlm/models/llava_bunny/llava_bunny.py | 152 | # Create a final embedding of shape | COMMENT |
| MEDIUM | mlx_vlm/models/granite_vision/granite_vision.py | 137 | # Create a final embedding of shape | COMMENT |
| MEDIUM | mlx_vlm/models/lfm2_vl/processing_lfm2_vl.py | 713 | # Create the NumPy processor with the same config | COMMENT |
| MEDIUM | mlx_vlm/models/fastvlm/vision.py | 607 | """This class implements global pooling with linear projection.""" | STRING |
| MEDIUM | mlx_vlm/models/llava_next/llava_next.py | 121 | # Create a final embedding of shape | COMMENT |
| MEDIUM | mlx_vlm/models/sam3d_body/mhr_head.py | 330 | # Create a mapping: for each output column d, which input column k provides it? | COMMENT |
| MEDIUM | mlx_vlm/models/multi_modality/multi_modality.py | 320 | # Create a final embedding of shape | COMMENT |
| MEDIUM | mlx_vlm/generate/ar.py | 331 | # Create the KV cache for generation | COMMENT |
| MEDIUM | mlx_vlm/trainer/lora.py | 52 | # Create a new Linear layer with the updated parameters | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | mlx_vlm/models/gemma4/README.md | 70 | - Thinking output uses `<|channel>...<channel|>` delimiters between reasoning and the final answer (see [Thinking mode]( | CODE |
| MEDIUM | mlx_vlm/models/gemma4/README.md | 112 | ### Thinking mode (chain-of-thought) | COMMENT |
| MEDIUM | mlx_vlm/models/deepseek_vl_v2/conversation.py | 33 | # The number of few shot examples | COMMENT |
| MEDIUM | …m/models/diffusion_gemma/processing_diffusion_gemma.py | 61 | # Header scaffolding the model emits around a response channel: | COMMENT |
| MEDIUM | mlx_vlm/models/deepseekocr/conversation.py | 33 | # The number of few shot examples | COMMENT |
| MEDIUM | mlx_vlm/speculative/drafters/mtp_split.py | 174 | # --- shared orchestration (do not override) --- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | mlx_vlm/utils.py | 893 | Load and initialize the model from a given path. Args: model_path (Path): The path to load the model f | STRING |
| HIGH | mlx_vlm/utils.py | 1287 | Load the model and tokenizer from a given path or a huggingface repository. Args: path_or_hf_repo (str | STRING |
| HIGH | mlx_vlm/utils.py | 1390 | Load model configuration from a path or Hugging Face repo. Args: model_path: Local path or Hugging Face rep | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mlx_vlm/turboquant.py | 2841 | # slot was silently zeroed). The result was decode-time KV cache | COMMENT |
| LOW | …/embedding_gemma2/video_processing_embedding_gemma2.py | 1 | # Copyright 2026 the HuggingFace Team. All rights reserved. | COMMENT |
| LOW | …models/embedding_gemma2/processing_embedding_gemma2.py | 1 | # Copyright 2026 the HuggingFace Team. All rights reserved. | COMMENT |
| LOW | mlx_vlm/models/sam3d_objects/mesh_tables.py | 1 | # Copyright (c) Meta Platforms, Inc. and affiliates. | COMMENT |
| LOW | mlx_vlm/models/llada_image/sigvq.py | 1 | # Copyright 2026 The HuggingFace Team. All rights reserved. | COMMENT |
| LOW | mlx_vlm/models/llada_image/transformer.py | 1 | # Copyright 2026 The HuggingFace Team. All rights reserved. | COMMENT |
| LOW | mlx_vlm/models/llada_image/conditioning.py | 1 | # Copyright 2026 The HuggingFace Team. All rights reserved. | COMMENT |
| LOW | mlx_vlm/models/llada_image/vq_sampling.py | 1 | # Copyright 2025 Antgroup and The HuggingFace Inc. team. All rights reserved. | COMMENT |
| LOW | mlx_vlm/models/gemma3n/audio.py | 161 | ) # Shape [F, N, H] | COMMENT |
| LOW | mlx_vlm/models/qwen3_5/language.py | 581 | mx.array([scale], dtype=mx.float32), | COMMENT |
| LOW | mlx_vlm/models/sam3d_body/mhr_body.py | 281 | COMMENT | |
| LOW | mlx_vlm/speculative/drafters/glm4_moe_lite_mtp/split.py | 1 | import argparse | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | mlx_vlm/models/diffusion_gemma/diffusion_gemma.py | 43 | logits = self._parent.model.decoder.embed_tokens.as_linear(hidden_states) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | mlx_vlm/evals/mmstar.py | 121 | # Use comprehensive extraction | COMMENT |
| LOW | mlx_vlm/models/hunyuan_vl/language.py | 431 | # Fallback: just use sequential positions | COMMENT |
| MEDIUM | mlx_vlm/models/florence2/language.py | 450 | # Normalize it to decoder_input_ids so encoder-decoder decoding stays robust | COMMENT |
| LOW | mlx_vlm/models/phi4mm/phi4mm.py | 481 | # weights, so just return. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mlx_vlm/tests/processor_cases.json | 384 | [2, 1, {}, "placeholder"], | CODE |
| LOW | mlx_vlm/tests/processor_cases.json | 385 | [1, 2, {}, "placeholder"], | CODE |