roman220220/Nemotron-3.5-Lightning-30B-A3B-JANG-GPTQ-ipsupport-code-lora

Source: 🤗openmdw-1.131.6B params3B activated63 GBsafetensors✓ 6 checksumsupdated 24d ago
or submit a torrent

Nemotron-3.5-Lightning-30B-A3B, JANG bit-allocation + GPTQ calibration + ipsupport-code coding-agent LoRA (MLX)

▶ A coding-agent model — run it in LLMTray, drive it with IPSupport Code

This model is fine-tuned for IPSupport Code, a local AI coding agent for real repositories (analyze · fix · test · report). It is not used standalone: run it in LLMTray, which serves it over an OpenAI-compatible API, then point IPSupport Code at that endpoint. Tool-calling is trained in (see "Tool calling is trained in" below).

NVIDIA's Nemotron-3.5-Lightning-30B-A3B, quantized to MLX using the JANG component-type bit allocation (reverse-engineered from dealignai/Nemotron-3.5-Lightning-30B-A3B-JANG_2L-CRACK's published config.json) applied through this project's own GPTQ Hessian calibration (sequential, block-by-block) instead of JANG's presumed naive RTN — and merged with a LoRA fine-tune for ipsupport-code, a local terminal coding agent, trained to fix real tool-calling reliability failures observed in production usage.

Bit allocation (JANG recipe)

component bits
attention q/k/v/o_proj 8
mamba in_proj/out_proj 6
MoE shared_experts (up+down) 8
MoE routed up (switch_mlp.fc1) 4
MoE routed down (switch_mlp.fc2) 3
embeddings 6
lm_head 8

Group size: 64. Average: 4.237 bits/weight, ~16.4GB on disk.

What's different about THIS release vs. this project's earlier JANG-recipe release

  • Calibration corpus: mixed wikitext-2-raw + real ipsupport-code tool-calling transcripts (not wikitext-only), so quantization error is compensated for the actual agentic/tool-calling text distribution this model is meant to run, not just generic prose.
  • Sequential calibration: each block's activations are captured against the model with all prior blocks already quantized in place (not one-shot against the pristine model).
  • Built on the LoRA-merged model: the base model was first fine-tuned (QLoRA, lora_r=32, targeting attention q/k/v/o + MoE expert up/down_proj) on real + synthetic ipsupport-code tool-call examples, merged back into full precision, and THEN GPTQ-quantized -- so the quantization is calibrated against the actual post-fine-tune model, not the vanilla base.

Perplexity

wikitext-2-raw ipsupport-code tool-call data
bf16 (reference) 5.11 --
vanilla JANG-recipe, one-shot, wikitext-only calib (this project's earlier release) 5.24 2.464
this release (LoRA-merged + sequential + mixed calib) 5.28 2.379
JANG_2L-CRACK (3rd party, presumed naive RTN) 5.43 --

Slightly worse on generic wikitext prose (+0.8%), meaningfully better on the actual target domain (-3.5%) -- the intended trade for a model meant to run as a coding-agent backend, not a general chatbot.

Inference speed (M-series Mac, single-request decode)

Component-type mixed-precision recipes (this release, the earlier wikitext-only release, and JANG_2L-CRACK) all run at essentially the same speed (~42-43 tok/s) regardless of calibration method or claimed average bpw, because runtime speed is governed by the bit-allocation STRUCTURE (which components get 8/6/4/3 bits), not by the specific quantized values. For comparison, a uniform 3-bit release of this same base model runs at ~65-68 tok/s. See this project's session findings, §7r for the full root-cause writeup.

Tool calling is trained in — intended behaviour, not a glitch

This model was fine-tuned for coding agents (ipsupport-code): the training data is tool-call-heavy, so the model has a strong habit of acting through tools. That habit shows up when you give it tools in a general chat. Measured on the -MTP release (same fine-tune as the non-MTP one), with an image-generation tool in the prompt (temperature 1.0, 20 samples each):

prompt calls the tool stock Nemotron-3.5 / this quant without the LoRA
"привет" (hello) 10/20 0/20
"как дела? что умеешь?" (how are you, what can you do) 14/20 —
"нарисуй кота в космосе" (draw a cat in space, should call) 20/20 —

Occasionally (3/20) it also closes its <think> block twice and repeats the answer.

This is what the fine-tune is for. In a coding agent, "reach for a tool" is the right default: read the file, run the command, edit the code. It is the wrong default for small talk in a general chat UI.

What helps if you use it as a chat model with tools attached:

  • A system rule such as "Only call a tool when the user's latest message explicitly asks you to perform that action; for greetings, small talk and questions, answer in text" plus a tool description that says the same. This cut tool calls on questions from 14/20 to 4–6/20. Greetings stay at 7–11/20. LLMTray sends this rule by default.
  • Lower temperature: 0.6 cut greetings to 1/10 in one run.
  • Don't attach tools the conversation doesn't need.
  • For plain chat without tools, the base quant without the LoRA doesn't have this habit.

Details and methodology: FINDINGS §2.5.

The IPSupport local-AI stack

Local-first AI tools for macOS by IPSupport — nothing leaves your Mac.

  • LLMTray — your local AI workstation for macOS: chat with local LLMs, generate and edit images, make music, run agents, and serve an OpenAI-compatible API. Downloads models from Hugging Face in-app, with per-model profiles.
  • IPSupport Code — your AI coding agent for real repositories: analyze, fix, test, report.

Run this model in LLMTray — it serves an OpenAI-compatible API — then point IPSupport Code at that endpoint. That pairing is how it's meant to run.

License

Distributed under NVIDIA's OpenMDW License Agreement v1.1 (same license as the base model) — see LICENSE in this repo.

Usage

pip install mlx-lm
python -m mlx_lm.generate --model roman220220/Nemotron-3.5-Lightning-30B-A3B-JANG-GPTQ-ipsupport-code-lora --prompt "..."

Produced with this project's GPTQ pipeline (poc/gptq_stock_convert.py --quant-recipe-mode component --component-recipe jang --sequential --extra-calib-file <flattened tool-call data>, poc/mlx_convert_recipe.py --mode component). The LoRA adapter used to produce the fine-tuned base is at roman220220/ipsupport-code-nemotron-lora.