MLX-VLM is a package for inference and fine-tuning of Vision Language Models (VLMs) on your Mac using MLX.
This report presents the forensic synthetic code analysis of Blaizzy/mlx-vlm, a Python project with 5,160 GitHub stars. SynthScan v2.0 examined 250,610 lines of code across 822 source files, recording 3697 pattern matches distributed across 19 syntactic categories. The overall adjusted score of 17.0 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 3697 distinct pattern matches across 19 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | README.md | 663 | 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/tokenizer_utils.py | 406 | def make_streaming_detokenizer(processor): | CODE |
| LOW | mlx_vlm/convert.py | 74 | def mixed_quant_predicate_builder( | CODE |
| LOW | mlx_vlm/turboquant.py | 1734 | def _multi_query_prod_score_kernel( | CODE |
| LOW | mlx_vlm/turboquant.py | 1868 | def _fused_integer_decode_single_tile_kernel( | CODE |
| LOW | mlx_vlm/turboquant.py | 2021 | def _fully_fused_decode_kernel( | CODE |
| LOW | mlx_vlm/turboquant.py | 2661 | def _metal_butterfly_wht_inverse( | CODE |
| LOW | mlx_vlm/turboquant.py | 2696 | def _fused_kv_quantize_kernel(key_bits: int, val_bits: int): | CODE |
| LOW | mlx_vlm/turboquant.py | 3142 | def _fused_split_decode_kernel(low_bits: int, high_bits: int, repeat_count: int): | CODE |
| LOW | mlx_vlm/turboquant.py | 3355 | def _compiled_split_decode_kernel(low_bits: int, high_bits: int): | CODE |
| LOW | mlx_vlm/turboquant.py | 4188 | def _quantize_unit_with_estimate( | CODE |
| LOW | mlx_vlm/turboquant.py | 4363 | def weighted_sum_stats_from_scores( | CODE |
| LOW | mlx_vlm/turboquant.py | 4422 | def _dequantize_preconditioned(self, state: TurboQuantPolarState) -> mx.array: | CODE |
| LOW | mlx_vlm/turboquant.py | 4439 | def quantize_unit_with_estimate( | CODE |
| LOW | mlx_vlm/turboquant.py | 4917 | def weighted_sum_stats_from_scores( | CODE |
| LOW | mlx_vlm/turboquant.py | 5388 | def _separate_score_value_decode( | CODE |
| LOW | mlx_vlm/turboquant.py | 5473 | def _compiled_split_decode_attention( | CODE |
| LOW | mlx_vlm/turboquant.py | 5602 | def _compiled_integer_decode_attention( | CODE |
| LOW | mlx_vlm/turboquant.py | 430 | def _prod_score_repeat_kernel(repeat_count: int): | STRING |
| LOW | mlx_vlm/turboquant.py | 619 | def _polar_turbo_score_repeat_kernel(level_bits: tuple[int, ...], repeat_count: int): | STRING |
| LOW | mlx_vlm/turboquant.py | 813 | def _mse_weighted_rot_repeat_kernel(repeat_count: int): | STRING |
| LOW | mlx_vlm/turboquant.py | 888 | def _mse_scores_weighted_rot_repeat_kernel(repeat_count: int): | STRING |
| LOW | mlx_vlm/turboquant.py | 976 | def _mse_scores_weighted_rot_sum_repeat_kernel(repeat_count: int): | STRING |
| LOW | mlx_vlm/turboquant.py | 1424 | def _metal_mse_weighted_sum_from_scores( | STRING |
| LOW | mlx_vlm/turboquant.py | 1481 | def _metal_mse_weighted_sum_sum_from_scores( | STRING |
| LOW | mlx_vlm/turboquant.py | 1538 | def _compiled_integer_decode_kernel(bits: int): | STRING |
| LOW | mlx_vlm/turboquant.py | 1589 | def _fused_integer_decode_kernel(bits: int, repeat_count: int, key_mse_bits: int = -1): | STRING |
| LOW | mlx_vlm/turboquant.py | 1803 | def _single_tile_value_weighted_sum_kernel( | STRING |
| LOW | mlx_vlm/turboquant.py | 2625 | def _metal_butterfly_wht_forward( | STRING |
| LOW | mlx_vlm/turboquant.py | 2821 | def _fused_norot_quantize_kernel(bits: int): | STRING |
| LOW | mlx_vlm/turboquant.py | 2897 | def _fused_mse_quantize_kernel(bits: int, use_rht: bool = False): | STRING |
| LOW | mlx_vlm/turboquant.py | 2990 | def _fused_prod_quantize_kernel(mse_bits: int, use_rht: bool = False): | STRING |
| LOW | mlx_vlm/chat_ui.py | 168 | def extract_image_from_message(message): | CODE |
| LOW | mlx_vlm/chat_ui.py | 188 | def extract_text_from_message(message): | CODE |
| LOW | mlx_vlm/utils.py | 67 | def apply_generation_config_defaults(model_config, config: dict): | CODE |
| LOW | mlx_vlm/utils.py | 256 | def _transform_compressed_tensors_weights( | CODE |
| LOW | mlx_vlm/utils.py | 1531 | def process_inputs_with_fallback( | CODE |
| LOW | mlx_vlm/sample_utils.py | 294 | def repetition_penalty_processor(tokens, logits): | CODE |
| LOW | mlx_vlm/sample_utils.py | 326 | def presence_penalty_processor(tokens, logits): | CODE |
| LOW | mlx_vlm/sample_utils.py | 355 | def frequency_penalty_processor(tokens, logits): | CODE |
| LOW | mlx_vlm/structured.py | 146 | def _activate_if_thinking_done(self, token_id: int) -> bool: | CODE |
| LOW | mlx_vlm/structured.py | 155 | def _delegate_process_last_token( | CODE |
| LOW | mlx_vlm/structured.py | 173 | def _last_token_from_input_ids(self, input_ids: mx.array) -> int | None: | CODE |
| LOW | mlx_vlm/structured.py | 206 | def build_json_schema_logits_processor(tokenizer, schema: str | dict[str, Any]): | CODE |
| LOW | mlx_vlm/prompt_utils.py | 123 | def extract_text_from_content(content: Any) -> str: | CODE |
| LOW | mlx_vlm/prompt_utils.py | 171 | def _normalize_tool_call_arguments(message: Dict[str, Any]) -> Dict[str, Any]: | CODE |
| LOW | mlx_vlm/prompt_utils.py | 385 | def _format_list_with_image_type( | CODE |
| LOW | mlx_vlm/prompt_utils.py | 651 | def _messages_to_plain_prompt() -> str: | CODE |
| LOW | mlx_vlm/lora.py | 29 | def transform_dataset_to_messages(dataset, model_type, custom_prompt_format=None): | CODE |
| LOW | mlx_vlm/apc.py | 151 | def _clone_cache_entry_for_apc( | CODE |
| LOW | mlx_vlm/apc.py | 280 | def _clone_prompt_cache_for_apc( | CODE |
| LOW | mlx_vlm/apc.py | 301 | def _clone_layer_major_kv_cache_for_apc( | CODE |
| LOW | mlx_vlm/apc.py | 325 | def _cache_entry_supports_exact_apc(c: Any) -> bool: | CODE |
| LOW | mlx_vlm/apc.py | 350 | def _cache_entry_supports_block_apc(c: Any) -> bool: | CODE |
| LOW | mlx_vlm/apc.py | 406 | def multimodal_token_ids_from_config(config: Any) -> set[int]: | CODE |
| LOW | mlx_vlm/apc.py | 460 | def prefix_leaves_text_only_suffix( | CODE |
| LOW | mlx_vlm/apc.py | 468 | def prefix_contains_media_tokens( | CODE |
| 1325 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mlx_vlm/turboquant.py | 1 | CODE | |
| LOW | mlx_vlm/__init__.py | 6 | CODE | |
| LOW | mlx_vlm/__init__.py | 7 | CODE | |
| LOW | mlx_vlm/__init__.py | 7 | CODE | |
| LOW | mlx_vlm/__init__.py | 7 | CODE | |
| LOW | mlx_vlm/__init__.py | 7 | CODE | |
| LOW | mlx_vlm/__init__.py | 7 | CODE | |
| LOW | mlx_vlm/__init__.py | 7 | CODE | |
| LOW | mlx_vlm/__init__.py | 7 | CODE | |
| LOW | mlx_vlm/__init__.py | 16 | CODE | |
| LOW | mlx_vlm/__init__.py | 16 | CODE | |
| LOW | mlx_vlm/__init__.py | 17 | CODE | |
| LOW | mlx_vlm/__init__.py | 17 | CODE | |
| LOW | mlx_vlm/__init__.py | 17 | CODE | |
| LOW | mlx_vlm/__init__.py | 18 | CODE | |
| LOW | mlx_vlm/__init__.py | 19 | CODE | |
| LOW | mlx_vlm/apc.py | 41 | CODE | |
| LOW | mlx_vlm/tests/test_bonsai.py | 1 | CODE | |
| LOW | mlx_vlm/tests/test_apc_observability.py | 3 | CODE | |
| LOW | mlx_vlm/tests/test_ideogram4.py | 1 | CODE | |
| LOW | mlx_vlm/tests/test_apc_quantized.py | 11 | CODE | |
| LOW | mlx_vlm/tests/test_quant_sdpa_mask_adversarial.py | 9 | CODE | |
| LOW | mlx_vlm/tests/test_flux2.py | 1 | CODE | |
| LOW | mlx_vlm/tests/test_apc_exact_mode.py | 12 | CODE | |
| LOW | mlx_vlm/tests/test_apc.py | 1 | CODE | |
| LOW | mlx_vlm/tests/test_apc_adapters.py | 7 | CODE | |
| LOW | mlx_vlm/tests/test_quant_sdpa_mask.py | 3 | CODE | |
| LOW | mlx_vlm/tests/test_gemma4_assistant_masks_static.py | 3 | CODE | |
| LOW | mlx_vlm/server/generation.py | 11 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 1 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 3 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 5 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 5 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 5 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 5 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 5 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 5 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 5 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 5 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 5 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 5 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 17 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 17 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 18 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 19 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 19 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 20 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 21 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 23 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 23 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 23 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 23 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 23 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 23 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 23 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 23 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 23 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 23 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 23 | CODE | |
| LOW | mlx_vlm/server/__init__.py | 23 | CODE | |
| 927 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | agents/grounded_reasoning/mask_ops.py | 14 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/mask_ops.py | 16 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/mask_ops.py | 58 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/mask_ops.py | 60 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/mask_ops.py | 97 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/mask_ops.py | 99 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/mask_ops.py | 141 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/mask_ops.py | 143 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/mask_ops.py | 208 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/mask_ops.py | 210 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/mask_ops.py | 289 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/mask_ops.py | 291 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | agents/grounded_reasoning/agent.py | 379 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | agents/grounded_reasoning/agent.py | 381 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/agent.py | 58 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/agent.py | 60 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/agent.py | 277 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/agent.py | 279 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/agent.py | 396 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/agent.py | 398 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/agent.py | 463 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/agent.py | 465 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/agent.py | 513 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/agent.py | 515 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/agent.py | 924 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/agent.py | 926 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/agent.py | 963 | # ── core images ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | agents/grounded_reasoning/agent.py | 971 | # ── trace steps ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | agents/grounded_reasoning/agent.py | 987 | # ── assemble JSON ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | agents/grounded_reasoning/agent.py | 1010 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agents/grounded_reasoning/agent.py | 1012 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | agents/grounded_reasoning/agent.py | 240 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | agents/grounded_reasoning/agent.py | 242 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | agents/grounded_reasoning/agent.py | 248 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | agents/grounded_reasoning/agent.py | 250 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | mlx_vlm/turboquant.py | 6107 | # ── Batch-aware TurboQuant cache for continuous batching ──────────────── | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6139 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6141 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6153 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6155 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6209 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6211 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6289 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6291 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6337 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | mlx_vlm/turboquant.py | 6339 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | mlx_vlm/tests/test_gemma4_tool_parser.py | 27 | # ── snake_case (regression: must keep working) ──────────────────────── | COMMENT |
| MEDIUM⚡ | mlx_vlm/tests/test_gemma4_tool_parser.py | 43 | # ── hyphenated names (the bug this PR fixes) ────────────────────────── | COMMENT |
| MEDIUM⚡ | mlx_vlm/tests/test_gemma4_tool_parser.py | 90 | # ── arguments type ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | mlx_vlm/tests/test_gemma4_tool_parser.py | 100 | # ── DiffusionGemma payload tolerance ────────────────────────────────── | COMMENT |
| MEDIUM | mlx_vlm/tests/test_gemma4_tool_parser.py | 139 | # ── error path ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | mlx_vlm/tests/test_processors.py | 10 | # ── Shared mocks ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | mlx_vlm/tests/test_processors.py | 542 | # ── Base class with shared test_with_image / test_text_only ─────────────────── | COMMENT |
| MEDIUM | mlx_vlm/tests/test_processors.py | 588 | # ── Per-model test classes ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | mlx_vlm/tests/test_processors.py | 2272 | # ── AutoProcessor patch tests ───────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | mlx_vlm/tests/test_apc_quantized.py | 53 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | mlx_vlm/tests/test_apc_quantized.py | 55 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | mlx_vlm/tests/test_apc_quantized.py | 236 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | mlx_vlm/tests/test_apc_quantized.py | 238 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | mlx_vlm/tests/test_apc_quantized.py | 299 | # --------------------------------------------------------------------------- | COMMENT |
| 186 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agents/grounded_reasoning/agent.py | 416 | CODE | |
| LOW | agents/grounded_reasoning/agent.py | 518 | CODE | |
| LOW | agents/grounded_reasoning/agent.py | 317 | CODE | |
| 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 | mlx_vlm/tokenizer_utils.py | 453 | CODE | |
| LOW | mlx_vlm/turboquant.py | 2230 | CODE | |
| LOW | mlx_vlm/turboquant.py | 5825 | CODE | |
| LOW | mlx_vlm/chat_ui.py | 82 | CODE | |
| LOW | mlx_vlm/chat_ui.py | 168 | CODE | |
| LOW | mlx_vlm/chat_ui.py | 188 | CODE | |
| LOW | mlx_vlm/chat_ui.py | 210 | CODE | |
| LOW | mlx_vlm/chat.py | 134 | CODE | |
| LOW | mlx_vlm/chat.py | 155 | CODE | |
| LOW | mlx_vlm/utils.py | 462 | CODE | |
| LOW | mlx_vlm/utils.py | 860 | CODE | |
| LOW | mlx_vlm/utils.py | 1239 | CODE | |
| LOW | mlx_vlm/utils.py | 1555 | CODE | |
| LOW | mlx_vlm/utils.py | 1835 | CODE | |
| LOW | mlx_vlm/prompt_utils.py | 123 | CODE | |
| LOW | mlx_vlm/prompt_utils.py | 171 | CODE | |
| LOW | mlx_vlm/prompt_utils.py | 559 | CODE | |
| LOW | mlx_vlm/prompt_utils.py | 794 | CODE | |
| LOW | mlx_vlm/prompt_utils.py | 598 | CODE | |
| LOW | mlx_vlm/lora.py | 29 | CODE | |
| LOW | mlx_vlm/lora.py | 57 | CODE | |
| LOW | mlx_vlm/apc.py | 794 | CODE | |
| LOW | mlx_vlm/apc.py | 1049 | CODE | |
| LOW | mlx_vlm/apc.py | 1318 | CODE | |
| LOW | mlx_vlm/apc.py | 1545 | CODE | |
| LOW | mlx_vlm/apc.py | 1570 | CODE | |
| LOW | mlx_vlm/apc.py | 2194 | CODE | |
| LOW | mlx_vlm/apc.py | 2792 | CODE | |
| LOW | mlx_vlm/apc.py | 2964 | CODE | |
| LOW | mlx_vlm/apc.py | 3288 | CODE | |
| LOW | mlx_vlm/tool_parsers/qwen3_coder.py | 37 | CODE | |
| LOW | mlx_vlm/tool_parsers/minimax_m2.py | 28 | CODE | |
| LOW | mlx_vlm/tool_parsers/minimax_m2.py | 89 | CODE | |
| LOW | mlx_vlm/tool_parsers/minimax_m2.py | 160 | CODE | |
| LOW | mlx_vlm/tool_parsers/gemma4.py | 11 | CODE | |
| LOW | mlx_vlm/tool_parsers/gemma4.py | 71 | CODE | |
| LOW | mlx_vlm/tool_parsers/minimax_m3.py | 32 | CODE | |
| LOW | mlx_vlm/tool_parsers/minimax_m3.py | 133 | CODE | |
| LOW | mlx_vlm/evals/mmmu.py | 64 | CODE | |
| LOW | mlx_vlm/evals/mmmu.py | 240 | CODE | |
| LOW | mlx_vlm/evals/mmstar.py | 17 | CODE | |
| LOW | mlx_vlm/evals/ocrbench.py | 310 | CODE | |
| LOW | mlx_vlm/evals/math_vista.py | 31 | CODE | |
| LOW | mlx_vlm/evals/math_vista.py | 361 | CODE | |
| LOW | mlx_vlm/tests/test_kv_cache_quantization.py | 199 | CODE | |
| LOW | mlx_vlm/tests/test_kv_cache_quantization.py | 243 | CODE | |
| LOW | mlx_vlm/tests/test_kv_cache_quantization.py | 288 | CODE | |
| LOW | mlx_vlm/tests/test_processors.py | 1113 | CODE | |
| LOW | mlx_vlm/tests/test_processors.py | 130 | CODE | |
| LOW | mlx_vlm/tests/test_processors.py | 157 | CODE | |
| LOW | mlx_vlm/tests/test_processors.py | 1141 | CODE | |
| LOW | mlx_vlm/tests/test_server_audio.py | 343 | CODE | |
| LOW | mlx_vlm/tests/test_apc_exact_mode.py | 195 | CODE | |
| 288 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | agents/grounded_reasoning/agent.py | 374 | except Exception as e: | CODE |
| 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/tokenizer_utils.py | 323 | except Exception: | CODE |
| MEDIUM | mlx_vlm/tokenizer_utils.py | 246 | def finalize(self): | CODE |
| LOW | mlx_vlm/chat_ui.py | 111 | except Exception: | CODE |
| LOW⚡ | mlx_vlm/chat_ui.py | 126 | except Exception: | CODE |
| LOW⚡ | mlx_vlm/chat_ui.py | 134 | except Exception as e: | CODE |
| MEDIUM⚡ | mlx_vlm/chat_ui.py | 135 | print(f"Error scanning cache: {e}") | CODE |
| LOW | mlx_vlm/chat_ui.py | 155 | except Exception as e: | 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 | 358 | except Exception as e: | CODE |
| LOW | mlx_vlm/utils.py | 1215 | except Exception as e: | CODE |
| LOW | mlx_vlm/utils.py | 1406 | except Exception as e: | CODE |
| LOW | mlx_vlm/utils.py | 1551 | except Exception as e: | CODE |
| LOW | mlx_vlm/lora.py | 69 | except Exception: | CODE |
| LOW | mlx_vlm/lora.py | 79 | except Exception as e: | CODE |
| LOW | mlx_vlm/apc.py | 385 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 806 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 827 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 1247 | except Exception as e: | CODE |
| LOW | mlx_vlm/apc.py | 1636 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 2807 | except Exception as e: | CODE |
| LOW | mlx_vlm/apc.py | 3157 | except Exception as e: | CODE |
| LOW | mlx_vlm/apc.py | 3429 | except Exception as e: | CODE |
| LOW | mlx_vlm/apc.py | 3895 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 3922 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 3930 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 3989 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 4035 | except Exception: | CODE |
| LOW | mlx_vlm/apc.py | 4045 | except Exception as exc: | CODE |
| LOW | mlx_vlm/apc.py | 4125 | except Exception as exc: | CODE |
| LOW | mlx_vlm/apc.py | 4202 | except Exception as e: | CODE |
| LOW | mlx_vlm/tool_parsers/longcat.py | 41 | except Exception: | CODE |
| LOW | mlx_vlm/tool_parsers/longcat.py | 46 | except Exception: | CODE |
| LOW | mlx_vlm/tool_parsers/kimi_k2.py | 31 | except Exception: | CODE |
| LOW | mlx_vlm/tool_parsers/kimi_k2.py | 36 | except Exception: | CODE |
| LOW | mlx_vlm/tool_parsers/glm47.py | 46 | except Exception: | CODE |
| LOW | mlx_vlm/tool_parsers/glm47.py | 51 | except Exception: | CODE |
| LOW | mlx_vlm/tool_parsers/glm47.py | 82 | except Exception: | CODE |
| LOW | mlx_vlm/evals/mmmu.py | 60 | except Exception: | CODE |
| LOW | mlx_vlm/evals/mmmu.py | 150 | except Exception: | CODE |
| LOW | mlx_vlm/evals/mmmu.py | 252 | except Exception as e: | CODE |
| LOW | mlx_vlm/evals/mmmu.py | 261 | except Exception as e: | CODE |
| LOW | mlx_vlm/evals/mmmu.py | 434 | except Exception as e: | CODE |
| LOW | mlx_vlm/evals/mmmu.py | 482 | except Exception as e: | CODE |
| MEDIUM | mlx_vlm/evals/mmmu.py | 483 | print(f"Error during inference:", question, images, "error message:", e) | CODE |
| LOW | mlx_vlm/evals/ocrbench.py | 378 | except Exception as e: | CODE |
| LOW | mlx_vlm/evals/ocrbench.py | 441 | except Exception as e: | CODE |
| LOW | mlx_vlm/evals/math_vista.py | 142 | except Exception: | CODE |
| LOW | mlx_vlm/evals/math_vista.py | 149 | except Exception: | CODE |
| LOW⚡ | mlx_vlm/evals/math_vista.py | 167 | except Exception: | CODE |
| LOW⚡ | mlx_vlm/evals/math_vista.py | 175 | except Exception: | CODE |
| LOW⚡ | mlx_vlm/evals/math_vista.py | 185 | except Exception: | CODE |
| LOW | mlx_vlm/evals/math_vista.py | 201 | except Exception: | CODE |
| LOW | mlx_vlm/evals/math_vista.py | 208 | except Exception: | CODE |
| LOW⚡ | mlx_vlm/evals/math_vista.py | 224 | except Exception: | CODE |
| 171 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/omni.py | 31 | CODE | |
| LOW | mlx_vlm/convert.py | 145 | CODE | |
| LOW | mlx_vlm/utils.py | 1555 | CODE | |
| LOW | mlx_vlm/sample_utils.py | 10 | CODE | |
| LOW | mlx_vlm/tests/test_processors.py | 1667 | CODE | |
| LOW | mlx_vlm/tests/test_processors.py | 1616 | CODE | |
| LOW | mlx_vlm/server/generation.py | 516 | CODE | |
| LOW | mlx_vlm/server/generation.py | 925 | CODE | |
| LOW | mlx_vlm/server/app.py | 915 | CODE | |
| LOW | mlx_vlm/models/rope_utils.py | 134 | CODE | |
| LOW | mlx_vlm/models/rope_utils.py | 1006 | CODE | |
| LOW | mlx_vlm/models/kernels.py | 468 | CODE | |
| LOW | mlx_vlm/models/interpolate.py | 117 | CODE | |
| LOW | mlx_vlm/models/llama4/processing_llama4.py | 137 | CODE | |
| LOW | mlx_vlm/models/llama4/vision.py | 360 | CODE | |
| LOW | mlx_vlm/models/llama4/language.py | 189 | CODE | |
| LOW | mlx_vlm/models/pixtral/processing_pixtral.py | 33 | CODE | |
| LOW | mlx_vlm/models/pixtral/language.py | 117 | CODE | |
| LOW | mlx_vlm/models/pixtral/image_processing_pixtral.py | 166 | CODE | |
| LOW | mlx_vlm/models/mllama/language.py | 285 | CODE | |
| LOW | mlx_vlm/models/llava_bunny/language.py | 112 | CODE | |
| LOW | mlx_vlm/models/youtu_vl/language.py | 281 | CODE | |
| LOW | mlx_vlm/models/hunyuan_vl/vision.py | 93 | CODE | |
| LOW | mlx_vlm/models/hunyuan_vl/language.py | 311 | CODE | |
| LOW | mlx_vlm/models/hunyuan_vl/processing_hunyuan_vl.py | 83 | CODE | |
| LOW | mlx_vlm/models/sam3_1/generate.py | 507 | CODE | |
| LOW | mlx_vlm/models/sam3_1/generate.py | 654 | CODE | |
| LOW | mlx_vlm/models/gemma3/language.py | 173 | CODE | |
| LOW | mlx_vlm/models/gemma4/gemma4.py | 70 | CODE | |
| LOW | mlx_vlm/models/gemma4/processing_gemma4.py | 113 | CODE | |
| LOW | mlx_vlm/models/gemma4/processing_gemma4.py | 276 | CODE | |
| LOW | mlx_vlm/models/gemma4/language.py | 554 | CODE | |
| LOW | mlx_vlm/models/gemma4/audio_feature_extractor.py | 118 | 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 | 105 | CODE | |
| LOW | mlx_vlm/models/flux2/pipeline.py | 60 | CODE | |
| LOW | mlx_vlm/models/flux2/transformer/transformer.py | 21 | CODE | |
| LOW | mlx_vlm/models/flux2/qwen/mlp.py | 17 | CODE | |
| LOW | mlx_vlm/models/flux2/qwen/text_encoder.py | 10 | CODE | |
| LOW | mlx_vlm/models/minicpmv4_6/processing_minicpmv4_6.py | 117 | CODE | |
| LOW | mlx_vlm/models/minicpmv4_6/processing_minicpmv4_6.py | 1381 | CODE | |
| LOW | mlx_vlm/models/minicpmv4_6/minicpmv4_6.py | 428 | CODE | |
| LOW | mlx_vlm/models/kimi_k25/vision.py | 134 | CODE | |
| LOW | …m/models/granite4_vision/processing_granite4_vision.py | 21 | CODE | |
| LOW | mlx_vlm/models/granite4_vision/language.py | 114 | CODE | |
| LOW | mlx_vlm/models/granite4_vision/qformer.py | 74 | CODE | |
| LOW | mlx_vlm/models/granite4_vision/qformer.py | 115 | CODE | |
| LOW | …x_vlm/models/minimax_m3_vl/processing_minimax_m3_vl.py | 286 | CODE | |
| LOW | …x_vlm/models/minimax_m3_vl/processing_minimax_m3_vl.py | 445 | CODE | |
| LOW | …x_vlm/models/minimax_m3_vl/processing_minimax_m3_vl.py | 835 | CODE | |
| LOW | mlx_vlm/models/lfm2/language.py | 250 | CODE | |
| LOW | mlx_vlm/models/qwen3/language.py | 111 | CODE | |
| LOW | mlx_vlm/models/deepseek_vl_v2/vision.py | 30 | CODE | |
| LOW | …_vlm/models/deepseek_vl_v2/processing_deepsek_vl_v2.py | 116 | CODE | |
| LOW | mlx_vlm/models/deepseek_vl_v2/language.py | 51 | CODE | |
| LOW | mlx_vlm/models/deepseek_vl_v2/language.py | 451 | CODE | |
| LOW | mlx_vlm/models/minicpmo/processing_minicpmo.py | 119 | CODE | |
| LOW | mlx_vlm/models/minicpmo/processing_minicpmo.py | 485 | CODE | |
| LOW | mlx_vlm/models/minicpmo/processing_minicpmo.py | 597 | CODE | |
| 111 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/utils.py | 38 | # Check if bboxes is a list of dictionaries | COMMENT |
| LOW | mlx_vlm/utils.py | 1249 | # Check if ffmpeg is needed for certain formats | COMMENT |
| LOW | mlx_vlm/evals/mmmu.py | 97 | # Check if this is a multiple choice question (answer is A-F or I) | COMMENT |
| LOW | mlx_vlm/evals/mmmu.py | 124 | # Check if match is correct | COMMENT |
| LOW | mlx_vlm/evals/mmstar.py | 148 | # Print results | COMMENT |
| LOW | mlx_vlm/evals/math_vista.py | 48 | # Check if it's a choice letter | COMMENT |
| LOW | mlx_vlm/evals/math_vista.py | 57 | # Check if it's directly one of the choices | COMMENT |
| LOW | mlx_vlm/models/cache.py | 2384 | # Check if all caches are empty | COMMENT |
| LOW⚡ | mlx_vlm/models/base.py | 380 | # Check if the shape has 4 dimensions | COMMENT |
| LOW⚡ | mlx_vlm/models/base.py | 383 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW⚡ | mlx_vlm/models/base.py | 388 | # Check if the shape has 3 dimensions | COMMENT |
| LOW⚡ | mlx_vlm/models/base.py | 391 | # Check if out_channels is the largest | COMMENT |
| LOW | mlx_vlm/models/llama4/vision.py | 13 | # Check if the shape has 4 dimensions | COMMENT |
| LOW | mlx_vlm/models/llama4/vision.py | 19 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/pixtral/vision.py | 12 | # Check if the shape has 4 dimensions | COMMENT |
| LOW | mlx_vlm/models/pixtral/vision.py | 18 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/mllama/vision.py | 12 | # Check if the shape has 4 dimensions | COMMENT |
| LOW | mlx_vlm/models/mllama/vision.py | 18 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/moondream2/image_crops.py | 81 | # Check if we need local crops | COMMENT |
| LOW | mlx_vlm/models/llava_bunny/vision.py | 13 | # Check if the shape has 4 dimensions | COMMENT |
| LOW | mlx_vlm/models/llava_bunny/vision.py | 19 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/moondream3/image_crops.py | 81 | # Check if we need local crops | COMMENT |
| LOW | mlx_vlm/models/gemma3/vision.py | 13 | # Check if the shape has 4 dimensions | COMMENT |
| LOW | mlx_vlm/models/gemma3/vision.py | 19 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/kimi_k25/vision.py | 34 | # Check if the shape has 4 dimensions | COMMENT |
| LOW | mlx_vlm/models/kimi_k25/vision.py | 40 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/deepseek_vl_v2/vision.py | 14 | # Check if the shape has 4 dimensions | COMMENT |
| LOW | mlx_vlm/models/deepseek_vl_v2/vision.py | 20 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/qwen2_5_vl/vision.py | 13 | # Check if the shape has 4 dimensions | COMMENT |
| LOW | mlx_vlm/models/qwen2_5_vl/vision.py | 22 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/qwen2_5_vl/language.py | 455 | # Check if mask shape matches input shape (for chunked prefill compatibility) | COMMENT |
| LOW | mlx_vlm/models/lfm2_vl/processing_lfm2_vl.py | 280 | # 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 | 548 | # Check if image_rows/cols/sizes are present (fast processor case) | 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/paligemma/vision.py | 13 | # Check if the shape has 4 dimensions | COMMENT |
| LOW | mlx_vlm/models/paligemma/vision.py | 19 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/phi3_v/vision.py | 14 | # Check if the shape has 4 dimensions | COMMENT |
| LOW | mlx_vlm/models/phi3_v/vision.py | 20 | # Check if out_channels is the largest, and kH and KW are the same | 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 | 364 | # Check if images and text inputs are reversed for BC | COMMENT |
| LOW⚡ | mlx_vlm/models/kimi_vl/vision.py | 28 | # Check if the shape has 4 dimensions | COMMENT |
| LOW⚡ | mlx_vlm/models/kimi_vl/vision.py | 34 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/deepseekocr_2/vision.py | 12 | # Check if the shape has 4 dimensions | COMMENT |
| LOW | mlx_vlm/models/deepseekocr_2/vision.py | 18 | # Check if out_channels is the largest, and kH and KW are the same | 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/idefics3/vision.py | 12 | # Check if the shape has 4 dimensions | COMMENT |
| LOW | mlx_vlm/models/idefics3/vision.py | 18 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/deepseekocr/vision.py | 15 | # Check if the shape has 4 dimensions | COMMENT |
| LOW | mlx_vlm/models/deepseekocr/vision.py | 21 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/idefics2/vision.py | 13 | # Check if the shape has 4 dimensions | COMMENT |
| LOW | mlx_vlm/models/idefics2/vision.py | 19 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/llava_next/vision.py | 13 | # Check if the shape has 4 dimensions | COMMENT |
| LOW | mlx_vlm/models/llava_next/vision.py | 19 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW | mlx_vlm/models/aya_vision/vision.py | 14 | # Check if the shape has 4 dimensions | COMMENT |
| LOW | mlx_vlm/models/aya_vision/vision.py | 20 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| LOW⚡ | mlx_vlm/models/glm4v_moe/vision.py | 13 | # Check if the shape has 4 or 5 dimensions | COMMENT |
| LOW⚡ | mlx_vlm/models/glm4v_moe/vision.py | 16 | # Check if out_channels is the largest, and kH and KW are the same | COMMENT |
| 31 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| 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 |
| HIGH | computer_use/gui_agent_voice.py | 0 | format the action as a dictionary with the following keys: {'action': 'action_type', 'value': 'element', 'position': [x, | STRING |
| HIGH | computer_use/autonomous_gui_agent.py | 0 | format the action as a dictionary with the following keys: {'action': 'action_type', 'value': 'element', 'position': [x, | STRING |
| HIGH | computer_use/gui_agent.py | 0 | format the action as a dictionary with the following keys: {'action': 'action_type', 'value': 'element', 'position': [x, | STRING |
| HIGH | computer_use/autonomous_gui_agent_voice.py | 0 | format the action as a dictionary with the following keys: {'action': 'action_type', 'value': 'element', 'position': [x, | STRING |
| HIGH | computer_use/gui_agent_voice.py | 0 | 1. `click`: click on an element, value is not applicable and the position [x,y] is required. 2. `input`: type a string i | STRING |
| HIGH | computer_use/gui_agent.py | 0 | 1. `click`: click on an element, value is not applicable and the position [x,y] is required. 2. `input`: type a string i | STRING |
| HIGH | computer_use/autonomous_gui_agent.py | 0 | 1. `click`: click on an element, value is not applicable and the position [x,y] is required. 2. `input`: type a string i | STRING |
| HIGH | computer_use/autonomous_gui_agent_voice.py | 0 | 1. `click`: click on an element, value is not applicable and the position [x,y] is required. 2. `input`: type a string i | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/omni.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | mlx_vlm/structured.py | 28 | def _setup(self, batch_size: int) -> None: | CODE |
| LOW | mlx_vlm/lora.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | mlx_vlm/server/__init__.py | 184 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/llama4/processing_llama4.py | 303 | __all__ = ["Llama4Processor"] | 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 | 4 | __all__ = ["Model", "ModelConfig"] | 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 | 399 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/mllama/processing_mllama.py | 278 | __all__ = ["MllamaProcessor"] | 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/ideogram4/__init__.py | 3 | __all__ = ["Ideogram4ImageGenerationModel", "load"] | CODE |
| LOW | mlx_vlm/models/ideogram4/model.py | 126 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/minimax_m3/__init__.py | 5 | __all__ = ["LanguageModel", "Model", "ModelConfig", "TextConfig"] | CODE |
| LOW | …dels/falcon_perception/processing_falcon_perception.py | 358 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/hunyuan_vl/processing_hunyuan_vl.py | 620 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/gemma3/processing_gemma3.py | 228 | __all__ = ["Gemma3Processor"] | CODE |
| LOW | mlx_vlm/models/nemotron_h/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/gemma4/processing_gemma4.py | 1037 | __all__ = ["Gemma4ImageProcessor", "Gemma4Processor", "Gemma4VideoProcessor"] | CODE |
| LOW | mlx_vlm/models/gemma4/audio_feature_extractor.py | 371 | __all__ = ["Gemma4AudioFeatureExtractor"] | CODE |
| LOW | mlx_vlm/models/deepseek_v32/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/qwen2/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/flux2/__init__.py | 8 | __all__ = ["Flux2ImageEditModel", "Flux2ImageGenerationModel", "load", "load_edit"] | CODE |
| LOW | mlx_vlm/models/flux2/model.py | 251 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/flux2/tokenizer.py | 76 | __all__ = ["Flux2Tokenizer", "TokenizerOutput"] | CODE |
| LOW | mlx_vlm/models/flux2/transformer/__init__.py | 3 | __all__ = ["Flux2Transformer"] | CODE |
| LOW | mlx_vlm/models/flux2/qwen/__init__.py | 3 | __all__ = ["Qwen3TextEncoder"] | CODE |
| LOW | mlx_vlm/models/flux2/vae/__init__.py | 3 | __all__ = ["Flux2VAE"] | CODE |
| LOW | mlx_vlm/models/flux2/vae/encoder/__init__.py | 3 | __all__ = ["Flux2Encoder"] | CODE |
| LOW | mlx_vlm/models/flux2/vae/decoder/__init__.py | 3 | __all__ = ["Flux2Decoder"] | CODE |
| LOW | mlx_vlm/models/flux2/vae/common/__init__.py | 8 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/minicpmv4_6/__init__.py | 11 | __all__ = [ | CODE |
| LOW | …m/models/granite4_vision/processing_granite4_vision.py | 226 | __all__ = ["Granite4VisionProcessor"] | CODE |
| LOW | …x_vlm/models/minimax_m3_vl/processing_minimax_m3_vl.py | 1071 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/minimax_m3_vl/__init__.py | 12 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/lfm2/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/qwen3/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/gemma3_text/__init__.py | 4 | __all__ = ["Model", "ModelConfig"] | CODE |
| LOW | mlx_vlm/models/minicpmo/__init__.py | 7 | __all__ = [ | CODE |
| LOW | …vlm/models/granite_vision/processing_granite_vision.py | 233 | __all__ = ["GraniteVisionProcessor"] | STRING |
| LOW | mlx_vlm/models/hrm_text/processing_hrm_text.py | 128 | __all__ = [ | CODE |
| LOW | …vlm/models/gemma4_unified/processing_gemma4_unified.py | 452 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/gemma4_unified/__init__.py | 14 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/diffusion_gemma/__init__.py | 6 | __all__ = [ | CODE |
| LOW | …m/models/diffusion_gemma/processing_diffusion_gemma.py | 190 | __all__ = ["DiffusionGemma4Processor"] | CODE |
| LOW | mlx_vlm/models/diffusion_gemma/visualizer.py | 139 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/qwen2_5_vl/processing_qwen2_5_vl.py | 203 | __all__ = ["Qwen2_5_VLProcessor"] | CODE |
| LOW | mlx_vlm/models/gemma3n/processing_gemma3n.py | 234 | __all__ = ["Gemma3nProcessor"] | CODE |
| LOW | mlx_vlm/models/glm_ocr/processing.py | 467 | __all__ = ["GlmOcrProcessor", "Glm46VImageProcessor", "smart_resize"] | CODE |
| LOW | mlx_vlm/models/fastvlm/processing.py | 501 | __all__ = ["FastVLMImageProcessor", "FastVLMProcessor"] | CODE |
| LOW | mlx_vlm/models/dots_ocr/processing_dots_ocr.py | 85 | __all__ = ["DotsVLProcessor"] | CODE |
| LOW | mlx_vlm/models/paligemma/processing_paligemma.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | mlx_vlm/models/paligemma/processing_paligemma.py | 338 | __all__ = ["PaliGemmaProcessor"] | CODE |
| LOW | mlx_vlm/models/bonsai/__init__.py | 4 | __all__ = ["BonsaiImage", "BonsaiVariant", "get_variant", "list_variants"] | CODE |
| LOW | mlx_vlm/models/bonsai/model.py | 134 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/bonsai/weights.py | 112 | def _set_nested_value(tree: dict, path: str, value: mx.array) -> None: | CODE |
| LOW | mlx_vlm/models/bonsai/klein_fast/__init__.py | 27 | __all__ = [ | CODE |
| LOW | mlx_vlm/models/bonsai/klein_fast/loader.py | 255 | __all__ = [ | CODE |
| 56 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | mlx_vlm/turboquant.py | 2732 | float total_sq = (sg_id == 0 && sg_lid < 8) ? sg_norms[sg_lid] : 0.0f; | CODE |
| HIGH⚡ | mlx_vlm/turboquant.py | 2734 | if (sg_id == 0 && sg_lid == 0) sg_norms[0] = total_sq; | CODE |
| HIGH⚡ | mlx_vlm/turboquant.py | 2922 | float total_sq = (sg_id == 0 && sg_lid < n_sg) ? sg_norms[sg_lid] : 0.0f; | CODE |
| HIGH⚡ | mlx_vlm/turboquant.py | 2925 | if (sg_id == 0 && sg_lid == 0) sg_norms[0] = total_sq; | CODE |
| HIGH | mlx_vlm/chat_ui.py | 388 | return savedModel || server_model; | CODE |
| HIGH | mlx_vlm/tool_parsers/gemma4.py | 42 | - bare literals (numbers, booleans, null) via json.loads | STRING |
| HIGH | mlx_vlm/models/kernels.py | 65 | if (x_out >= (uint)out_w || y_out >= (uint)out_h || bc_idx >= (uint)(batch_size * channels)) | CODE |
| HIGH | mlx_vlm/models/kernels.py | 324 | if (x_out >= (uint)out_w || y_out >= (uint)out_h || bc_idx >= (uint)(batch_size * channels)) | CODE |
| HIGH | mlx_vlm/models/kernels.py | 334 | if (align_corners && out_w > 1 && out_h > 1) { | CODE |
| HIGH⚡ | mlx_vlm/models/kernels.py | 536 | 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 | 537 | 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 | 538 | 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 | 539 | I_se = iy_se >= 0 && iy_se <= H - 1 && ix_se >= 0 && ix_se <= W - 1 ? I_se : 0; | CODE |
| HIGH | mlx_vlm/models/minimax_m3_vl/language.py | 315 | bool valid = block_idx >= 0 && key_pos < key_length && key_pos <= qpos; | CODE |
| HIGH | mlx_vlm/models/qwen3_5/language.py | 421 | if (simd_gid == 0 && simd_lid == 0) { | CODE |
| HIGH | mlx_vlm/models/qwen3_5/gated_delta.py | 456 | bool use_intermediate = step >= 0 && step < T; | CODE |
| HIGH | mlx_vlm/models/qwen3_5/gated_delta.py | 475 | bool use_intermediate = step >= 0 && step < T; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | mlx_vlm/tests/test_kv_cache_quantization.py | 147 | # Create a mock for maybe_quantize_kv_cache | COMMENT |
| MEDIUM⚡ | mlx_vlm/tests/test_kv_cache_quantization.py | 160 | # Create a proper mock cache | COMMENT |
| MEDIUM | mlx_vlm/tests/test_kv_cache_quantization.py | 59 | # Create a return_value attribute for tests that need to modify it | COMMENT |
| MEDIUM | mlx_vlm/tests/test_kv_cache_quantization.py | 436 | # Create a longer input sequence | COMMENT |
| MEDIUM | mlx_vlm/tests/test_kv_cache_quantization.py | 477 | # Create a mock prompt cache | COMMENT |
| MEDIUM⚡ | mlx_vlm/tests/test_apc_quantized.py | 849 | # Create a 2-row batch cache with different values per row | COMMENT |
| MEDIUM | mlx_vlm/tests/test_models.py | 3380 | # Create the model | COMMENT |
| MEDIUM | mlx_vlm/server/app.py | 894 | # Create a list of available models | COMMENT |
| MEDIUM | mlx_vlm/models/cache.py | 114 | # Create an instance of cls without calling __init__ | COMMENT |
| MEDIUM | mlx_vlm/models/kernels.py | 398 | # Create the kernel | STRING |
| MEDIUM | mlx_vlm/models/llama4/language.py | 260 | # 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/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 | 290 | # Create the KV cache for generation | COMMENT |
| MEDIUM | mlx_vlm/trainer/lora.py | 52 | # Create a new Linear layer with the updated parameters | COMMENT |
| MEDIUM | computer_use/autonomous_gui_agent.py | 77 | # Create a canvas for the circle | COMMENT |
| MEDIUM | computer_use/autonomous_gui_agent_voice.py | 77 | # Create a canvas for the circle | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | mlx_vlm/turboquant.py | 2744 | // Step 2: Unit vector → shared | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2749 | // Step 3: Rotate (1 dim per thread, 256 FMAs) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2757 | // Step 4: Comparison-based quantize | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2912 | // Step 1: Load & compute norm (2-stage cross-simdgroup reduction) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2932 | // Step 2: Unit vector → shared for rotation | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2937 | // Step 3: Rotate — 1 dim per thread, 256 FMAs (was 2048 at TG=32) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2945 | // Step 4: Comparison-based quantize | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2955 | // Step 5: Pack indices — thread-per-word, race-free, no atomics. | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 5427 | # Step 1: Key scoring — polymorphic (works for both Prod and MSE keys) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 5433 | # Step 2: Precompute softmax weights (avoids exp() in value kernel) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 5436 | # Step 3: Single-tile value weighted sum with precomputed weights | COMMENT |
| LOW | mlx_vlm/turboquant.py | 2719 | // Step 1: Load vector element | COMMENT |
| LOW | mlx_vlm/turboquant.py | 2772 | // Step 5: Pack indices — thread-per-word, race-free, no atomics. | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 3073 | " // Step 5: Pack MSE indices", | CODE |
| LOW⚡ | mlx_vlm/turboquant.py | 3083 | " // Step 6: Residual norm", | CODE |
| LOW⚡ | mlx_vlm/turboquant.py | 3090 | " // Step 7: QJL projection (rotated_residual @ combined_proj_t)", | CODE |
| LOW | mlx_vlm/turboquant.py | 3003 | " // Step 1: Load & compute norm", | CODE |
| LOW | mlx_vlm/turboquant.py | 3058 | " // Step 4: MSE quantize + compute rotated residual", | CODE |
| LOW | mlx_vlm/turboquant.py | 3109 | " // Step 8: Pack sign bits (1 bit per dim)", | CODE |
| LOW⚡ | mlx_vlm/models/sam3_1/generate.py | 821 | # Step 1: Backbone — always use pre-computed from previous frame | COMMENT |
| LOW⚡ | mlx_vlm/models/sam3_1/generate.py | 826 | # Step 2: Detect or propagate | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | mlx_vlm/turboquant.py | 2744 | // Step 2: Unit vector → shared | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2749 | // Step 3: Rotate (1 dim per thread, 256 FMAs) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2757 | // Step 4: Comparison-based quantize | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2912 | // Step 1: Load & compute norm (2-stage cross-simdgroup reduction) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2932 | // Step 2: Unit vector → shared for rotation | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2937 | // Step 3: Rotate — 1 dim per thread, 256 FMAs (was 2048 at TG=32) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2945 | // Step 4: Comparison-based quantize | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 2955 | // Step 5: Pack indices — thread-per-word, race-free, no atomics. | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 5427 | # Step 1: Key scoring — polymorphic (works for both Prod and MSE keys) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 5433 | # Step 2: Precompute softmax weights (avoids exp() in value kernel) | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 5436 | # Step 3: Single-tile value weighted sum with precomputed weights | COMMENT |
| LOW | mlx_vlm/turboquant.py | 2719 | // Step 1: Load vector element | COMMENT |
| LOW | mlx_vlm/turboquant.py | 2772 | // Step 5: Pack indices — thread-per-word, race-free, no atomics. | COMMENT |
| LOW⚡ | mlx_vlm/turboquant.py | 3073 | " // Step 5: Pack MSE indices", | CODE |
| LOW⚡ | mlx_vlm/turboquant.py | 3083 | " // Step 6: Residual norm", | CODE |
| LOW⚡ | mlx_vlm/turboquant.py | 3090 | " // Step 7: QJL projection (rotated_residual @ combined_proj_t)", | CODE |
| LOW | mlx_vlm/turboquant.py | 3003 | " // Step 1: Load & compute norm", | CODE |
| LOW | mlx_vlm/turboquant.py | 3058 | " // Step 4: MSE quantize + compute rotated residual", | CODE |
| LOW | mlx_vlm/turboquant.py | 3109 | " // Step 8: Pack sign bits (1 bit per dim)", | CODE |
| LOW⚡ | mlx_vlm/models/sam3_1/generate.py | 821 | # Step 1: Backbone — always use pre-computed from previous frame | COMMENT |
| LOW⚡ | mlx_vlm/models/sam3_1/generate.py | 826 | # Step 2: Detect or propagate | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | mlx_vlm/utils.py | 463 | 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 | 758 | 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 | 861 | 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 |
|---|---|---|---|---|
| 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 | mlx_vlm/models/deepseekocr/conversation.py | 33 | # The number of few shot examples | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | mlx_vlm/evals/mmstar.py | 116 | # Use comprehensive extraction | COMMENT |
| LOW | mlx_vlm/models/hunyuan_vl/language.py | 436 | # Fallback: just use sequential positions | COMMENT |
| LOW | mlx_vlm/models/lfm2_vl/processing_lfm2_vl.py | 571 | # (no tiling support, just add image tokens) | COMMENT |
| MEDIUM | mlx_vlm/models/florence2/language.py | 448 | # 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 |
|---|---|---|---|---|
| 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 |
|---|---|---|---|---|
| LOW | mlx_vlm/turboquant.py | 2821 | def _fused_norot_quantize_kernel(bits: int): | COMMENT |
| LOW | mlx_vlm/apc.py | 2861 | # If free RAM (best-effort reading) drops below this, skip disk | COMMENT |
| LOW | mlx_vlm/apc.py | 2881 | # Number of disk blocks to coalesce into one direct byte-range read. | COMMENT |
| LOW | mlx_vlm/models/gemma3n/audio.py | 161 | ) # Shape [F, N, H] | COMMENT |
| LOW | mlx_vlm/models/sam3d_body/mhr_body.py | 281 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mlx_vlm/tests/test_models.py | 4644 | # TODO: Add test for vision model. Ensure I can pass input type and shapes. | COMMENT |