HAWQ-SEC-RE-v1 — MLX 4-bit (multimodal)

Apple Silicon MLX build of lancejames221b/hawq-sec-re-v1 — a reverse-engineering analysis model (LoRA SFT on HAWQ-v1, itself built on Qwen3.6-35B-A3B). Trained to produce faithful structured analysis of x86-64 assembly and decompiled C: purpose, inputs/outputs, algorithm, control flow, and security-relevant behavior.

This build is vision-enabled. The GGUF in the parent repo is text-only.

Format MLX, mixed 4-bit / 8-bit
Size ≈19 GB (4.649 bpw average)
Quantization 4-bit, group size 64; MoE router (mlp.gate) and shared_expert_gate kept at 8-bit per-layer
Vision Yes — 333 vision tensors, Qwen3-VL-style encoder
Context 262,144

Usage

Requires mlx-vlmnot mlx-lm alone (see the note below).

pip install mlx-vlm

# text
python3 -m mlx_vlm.generate --model lancejames221b/hawq-sec-re-v1-mlx-4bit \
  --prompt "Analyze: xor eax,eax; mov ecx,10; loop_start: add eax,ecx; dec ecx; jnz loop_start; ret" \
  --temperature 0.6 --max-tokens 300

# image + text
python3 -m mlx_vlm.generate --model lancejames221b/hawq-sec-re-v1-mlx-4bit \
  --image disassembly.png --temperature 0.6 --max-tokens 300 \
  --prompt "Read the assembly in this image and explain what it computes."

Or point LM Studio's MLX engine at this repo.

Sampler defaults follow the Qwen3.6-35B-A3B thinking-mode preset: temperature 0.6, top_p 0.95, top_k 20, min_p 0.0.

Verification

Measured on an M4 Max (mlx-vlm 0.6.8, mlx 0.32.0):

Path Prompt tokens Generation Peak RAM Result
Text-only 43 120 tok @ 94.6 tok/s 20.95 GB Coherent RE analysis
Image + text 168 58 tok @ 100.8 tok/s 21.07 GB Transcribed all 7 rendered instructions verbatim, then analyzed them

The prompt-token jump (43 → 168) is image patch tokens, confirming the vision encoder is actually in the graph rather than being silently skipped.

Why mlx-vlm and not mlx-lm

mlx-lm's qwen3_5_moe handler strips every key beginning vision_tower or model.visual during sanitization. Converting this architecture through mlx-lm therefore yields a silently text-only model that still presents as multimodal — no error, no warning. mlx-vlm has a real VLM handler for qwen3_5_moe (separate language.py / vision.py) and preserves the tower.

Also worth knowing if you convert this architecture yourself: plain mlx_lm.convert / mlx_vlm.convert on a 35B-class MoE tends to die at save time with a Metal command-buffer watchdog timeout (kIOGPUCommandBufferCallbackErrorSubmissionsIgnored). It's a watchdog trip, not OOM — pinning the convert to CPU (mx.set_default_device(mx.cpu)) sidesteps it.

Thinking mode

Reasoning is enabled by default and returned in a separate field (reasoning_content), not inline in content. Two consequences:

  • Give generous max_tokens. Reasoning is emitted before any tool call or final answer, so a small cap truncates mid-thought and yields empty content.
  • Clients must read the reasoning field from its own key and keep it associated with the turn that carries the tool call, or tool calls can be dropped once the model starts thinking.

Limitations

  • The vision tower is stock Qwen3.6, grafted back from the Qwen3.6-35B-A3B anchor. It was not fine-tuned by this model's RE-analysis SFT — image understanding is base-Qwen quality, while the text backbone carries the RE tuning.
  • Win-rate not benchmarked. Coherence-validated, not yet scored against the base model on held-out RE tasks.
  • Long chain-of-thought on hard problems can approach the card's 81,920-token cap; budget max_tokens accordingly.

License

Apache 2.0, matching the base model.

Downloads last month
47
Safetensors
Model size
6B params
Tensor type
BF16
·
U32
·
MLX
Hardware compatibility
Log In to add your hardware

4-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for lancejames221b/hawq-sec-re-v1-mlx-4bit

Quantized
(1)
this model