GuildLM · go-lora-adapters

Every LoRA adapter the GuildLM Code Guild trained for Go, in one place, with the number each one scored.

This is the archive behind the three fused specialists (guildlm/go-dev · guildlm/go-test · guildlm/go-review). The fused models are convenient to run; the adapters are what was actually learned, and they are ~100× smaller. Any fused model can be rebuilt from here in one command (see Rebuild a fused model).

Why publish the losers too. GuildLM's bet is that a small specialist wins through the algorithm around it (compile-and-test loop, retrieval, deterministic gates), not through its weights. Measuring that honestly means keeping every adapter that failed to beat its base, with its score. Most of the adapters below are net-negative on the hard unit benchmark. That result is the finding, not a mistake to hide.

The headline measurement (go_dev_bench v2, 48 tasks, greedy, real go build + go test)

Same harness for every row (crucible/mlx_bench.py, direct MLX load, <|im_end|> registered as EOS, generations committed and re-scorable offline with rescore_dev_bench.py).

adapter recipe raw +goimports vs base (+goimports)
(none — base Qwen2.5-Coder-7B-Instruct-4bit) 39 44
go-dev-mixed-v4 SFT, mixed data, 1200 iters, r=8 33 40 −4
go-dev-dapt-replay DAPT (Kaggle) + ~13% chat replay 30 36 −8
go-dev-final SFT 32 35 −9
go-dev-dapt600 DAPT (Kaggle), 600 steps 29 33 −11
go-dev-mixed-v5 SFT, mixed data v5 29 32 −12
go-dev-dapt300 DAPT (Kaggle), 300 steps 26 31 −13
go-dev-mined SFT on GitHub-mined data 23 24 −20
(none — base Qwen2.5-Coder-14B-Instruct-4bit) 36 43
go-dev-14b SFT on the 14B base 27 40 −3

Reading: every specialist ≤ its base at both 7B and 14B, and most of the deficit is Go hygiene (goimports closes most of it), not reasoning. The one place the adapters earn their keep is as complementary ensemble members: the union of base + all specialists solves 47/48, and adding the 14B members reaches 48/48. No single adapter beats the base. Full log: crucible/RESULT-go-dev-bench-v2.txt in guildlm/guild-code.

Secondary benches (test / review / edit) tell the same story; go-test's apparent +3/18 on the mutation bench turned out to be a validity premium that base + goimports also captures (14/18 vs 11/18). Details: crucible/AUDIT-secondary-benchmarks.txt.

What is in this repo

adapters/<name>/adapter_config.json      exact mlx_lm.lora config (base, data dir, iters, rank, lr)
adapters/<name>/adapters.safetensors     the final adapter
adapters/<name>/NNNNNNN_adapters.safetensors   intermediate checkpoints where they were kept
kaggle-dapt/session1, session2           HF-PEFT checkpoints from the Kaggle DAPT runs (free T4)
kaggle-dapt/replay-session1              the replay-mix DAPT run
kaggle-dapt/ckpt-dataset, replay-dataset the Kaggle dataset bundles those runs were resumed from

Adapter inventory (from each adapter_config.json)

adapter base data dir iters rank lr final weights kept checkpoints
go-dapt Qwen2.5-Coder-7B-Instruct-4bit dapt 6000 8 0.0001 no final 0
go-dapt-core-smoke Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-dapt-core-smoke 600 8 5e-05 yes 3
go-dapt-replay-smoke Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-dapt-replay-smoke 600 8 5e-05 yes 3
go-dev Qwen2.5-Coder-7B-Instruct-4bit .mlx-data 400 8 0.0001 yes 4
go-dev-0000200 Qwen2.5-Coder-7B-Instruct-4bit .mlx-data 400 8 0.0001 yes 0
go-dev-0000300 Qwen2.5-Coder-7B-Instruct-4bit .mlx-data 400 8 0.0001 yes 0
go-dev-14b Qwen2.5-Coder-14B-Instruct-4bit .mlx-data 300 8 8e-05 yes 3
go-dev-15b-mixed-v3 Qwen2.5-Coder-1.5B-Instruct-4bit .mlx-data-godev-mixed-v3 1200 8 0.0001 yes 6
go-dev-dapt-replay /Users/fatihturker/Desktop/Personal/Dev/guildlm/.mlx-fused/go-dapt-replay-4bit .mlx-data-godev-mixed2 1200 8 0.0001 yes 6
go-dev-dapt300 /Users/fatihturker/Desktop/Personal/Dev/guildlm/.mlx-fused/go-dapt-7b-4bit .mlx-data-godev-mixed2 1200 8 0.0001 yes 6
go-dev-dapt300-ck0000400 /Users/fatihturker/Desktop/Personal/Dev/guildlm/.mlx-fused/go-dapt-7b-4bit .mlx-data-godev-mixed2 1200 8 0.0001 yes 0
go-dev-dapt300-ck0000800 /Users/fatihturker/Desktop/Personal/Dev/guildlm/.mlx-fused/go-dapt-7b-4bit .mlx-data-godev-mixed2 1200 8 0.0001 yes 0
go-dev-dapt300-ck0001000 /Users/fatihturker/Desktop/Personal/Dev/guildlm/.mlx-fused/go-dapt-7b-4bit .mlx-data-godev-mixed2 1200 8 0.0001 yes 0
go-dev-dapt300-ck0001200 /Users/fatihturker/Desktop/Personal/Dev/guildlm/.mlx-fused/go-dapt-7b-4bit .mlx-data-godev-mixed2 1200 8 0.0001 yes 0
go-dev-dapt600 /Users/fatihturker/Desktop/Personal/Dev/guildlm/.mlx-fused/go-dapt600-7b-4bit .mlx-data-godev-mixed2 1200 8 0.0001 yes 6
go-dev-dapt600-ck0001000 /Users/fatihturker/Desktop/Personal/Dev/guildlm/.mlx-fused/go-dapt600-7b-4bit .mlx-data-godev-mixed2 1200 8 0.0001 yes 0
go-dev-dapt600-ck0001200 /Users/fatihturker/Desktop/Personal/Dev/guildlm/.mlx-fused/go-dapt600-7b-4bit .mlx-data-godev-mixed2 1200 8 0.0001 yes 0
go-dev-final Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-godev-scaled 300 8 8e-05 yes 0
go-dev-id Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-id 200 8 0.0001 yes 0
go-dev-maint Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-godev-maint 160 8 6e-05 yes 0
go-dev-mined Qwen2.5-Coder-7B-Instruct-4bit godev2048 4000 8 0.0001 yes 6
go-dev-mixed Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-godev-mixed 1200 8 0.0001 yes 6
go-dev-mixed-v2 Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-godev-mixed2 1200 8 0.0001 yes 6
go-dev-mixed-v3 Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-godev-mixed-v3-7b 1200 8 0.0001 yes 6
go-dev-mixed-v4 Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-godev-mixed-v4-7b 1200 8 0.0001 yes 6
go-dev-mixed-v5 Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-godev-mixed-v5-7b 1200 8 0.0001 yes 1
go-dev-mixed-v5b Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-godev-mixed-v5-7b 1000 8 0.0001 yes 5
go-dev-v2 Qwen2.5-Coder-7B-Instruct-4bit .mlx-data 300 8 8e-05 yes 3
go-dev-v2-id Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-godev-v2 260 8 0.0001 yes 0
go-dev-v3-id Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-godev-v2 90 8 4e-05 yes 0
go-review Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-review 180 8 0.0001 yes 2
go-review-id Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-review-id 150 8 0.0001 yes 0
go-review-mined Qwen2.5-Coder-7B-Instruct-4bit goreview 1200 8 0.0001 yes 6
go-review-mined-ck0000200 Qwen2.5-Coder-7B-Instruct-4bit goreview 1200 8 0.0001 yes 0
go-review-mined-ck0000400 Qwen2.5-Coder-7B-Instruct-4bit goreview 1200 8 0.0001 yes 0
go-review-mined-ck0000600 Qwen2.5-Coder-7B-Instruct-4bit goreview 1200 8 0.0001 yes 0
go-review-mined-ck0001000 Qwen2.5-Coder-7B-Instruct-4bit goreview 1200 8 0.0001 yes 0
go-review-mined-ck0001200 Qwen2.5-Coder-7B-Instruct-4bit goreview 1200 8 0.0001 yes 0
go-review-scaled Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-goreview-scaled 200 8 0.0001 yes 0
go-test Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-test 150 8 0.0001 yes 2
go-test-id Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-test-id 150 8 0.0001 yes 0
go-test-scaled Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-gotest-scaled 220 8 0.0001 yes 0
go-test-v2 Qwen2.5-Coder-7B-Instruct-4bit .mlx-data-test 120 8 8e-05 yes 2

Use an adapter directly (Apple Silicon, MLX)

pip install mlx-lm huggingface_hub
hf download guildlm/go-lora-adapters --include "adapters/go-dev-mixed-v4/*" --local-dir ./go-lora
python -m mlx_lm.generate \
  --model mlx-community/Qwen2.5-Coder-7B-Instruct-4bit \
  --adapter-path ./go-lora/adapters/go-dev-mixed-v4 \
  --prompt "Write an idiomatic Go function that reverses a string by runes."

Rebuild a fused model

python -m mlx_lm.fuse \
  --model mlx-community/Qwen2.5-Coder-7B-Instruct-4bit \
  --adapter-path ./go-lora/adapters/go-dev-mixed-v4 \
  --save-path ./go-dev-mixed-v4-fused

The go-dev-14b adapter fuses onto mlx-community/Qwen2.5-Coder-14B-Instruct-4bit and go-dev-15b-mixed-v3 onto mlx-community/Qwen2.5-Coder-1.5B-Instruct-4bit. The *-smoke and *-id adapters are pipeline smoke tests and identity probes and carry no benchmark claim. Each adapter's adapter_config.json names its base; the inventory below is rendered from those files, so it cannot drift from the weights.

Reproduce a score

git clone https://github.com/guildlm/guild-code && cd guild-code/go/crucible
python mlx_bench.py --model mlx-community/Qwen2.5-Coder-7B-Instruct-4bit \
  --adapter ./go-lora/adapters/go-dev-mixed-v4 --save-generations out.jsonl
python rescore_dev_bench.py --generations out.jsonl --repair imports

Provenance

  • Base models: mlx-community/Qwen2.5-Coder-{1.5B,7B,14B}-Instruct-4bit (Apache-2.0).
  • SFT data: compile-verified Go generated with Claude as teacher, plus GitHub-mined Go for the mined and DAPT runs.
  • Compute: Apple M1 Max (MLX) for SFT and evaluation; Kaggle free T4 for DAPT. Total spend: $0.
  • Every number above was produced by the real Go toolchain, never by an LLM judge.

Part of GuildLM — small, sharp, open specialists, and an honest log of what they can and cannot do.

Downloads last month

-

Downloads are not tracked for this model. How to track
MLX
Hardware compatibility
Log In to add your hardware

Quantized

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

Model tree for guildlm/go-lora-adapters

Base model

Qwen/Qwen2.5-7B
Adapter
(4)
this model