Team Ai
Modelpublic

guildlm/go-lora-adapters

sourceHugging Faceapache-2.0updated 22d agoView on Hugging Face
0likes
Model Card

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 (godevbench 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).

adapterreciperaw+goimportsvs base (+goimports)
(none — base Qwen2.5-Coder-7B-Instruct-4bit)—3944—
go-dev-mixed-v4SFT, mixed data, 1200 iters, r=83340−4
go-dev-dapt-replayDAPT (Kaggle) + ~13% chat replay3036−8
go-dev-finalSFT3235−9
go-dev-dapt600DAPT (Kaggle), 600 steps2933−11
go-dev-mixed-v5SFT, mixed data v52932−12
go-dev-dapt300DAPT (Kaggle), 300 steps2631−13
go-dev-minedSFT on GitHub-mined data2324−20
(none — base Qwen2.5-Coder-14B-Instruct-4bit)—3643—
go-dev-14bSFT on the 14B base2740−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)

adapterbasedata diritersranklrfinal weightskept checkpoints
go-daptQwen2.5-Coder-7B-Instruct-4bitdapt600080.0001no final0
go-dapt-core-smokeQwen2.5-Coder-7B-Instruct-4bit.mlx-data-dapt-core-smoke60085e-05yes3
go-dapt-replay-smokeQwen2.5-Coder-7B-Instruct-4bit.mlx-data-dapt-replay-smoke60085e-05yes3
go-devQwen2.5-Coder-7B-Instruct-4bit.mlx-data40080.0001yes4
go-dev-0000200Qwen2.5-Coder-7B-Instruct-4bit.mlx-data40080.0001yes0
go-dev-0000300Qwen2.5-Coder-7B-Instruct-4bit.mlx-data40080.0001yes0
go-dev-14bQwen2.5-Coder-14B-Instruct-4bit.mlx-data30088e-05yes3
go-dev-15b-mixed-v3Qwen2.5-Coder-1.5B-Instruct-4bit.mlx-data-godev-mixed-v3120080.0001yes6
go-dev-dapt-replay/Users/fatihturker/Desktop/Personal/Dev/guildlm/.mlx-fused/go-dapt-replay-4bit.mlx-data-godev-mixed2120080.0001yes6
go-dev-dapt300/Users/fatihturker/Desktop/Personal/Dev/guildlm/.mlx-fused/go-dapt-7b-4bit.mlx-data-godev-mixed2120080.0001yes6
go-dev-dapt300-ck0000400/Users/fatihturker/Desktop/Personal/Dev/guildlm/.mlx-fused/go-dapt-7b-4bit.mlx-data-godev-mixed2120080.0001yes0
go-dev-dapt300-ck0000800/Users/fatihturker/Desktop/Personal/Dev/guildlm/.mlx-fused/go-dapt-7b-4bit.mlx-data-godev-mixed2120080.0001yes0
go-dev-dapt300-ck0001000/Users/fatihturker/Desktop/Personal/Dev/guildlm/.mlx-fused/go-dapt-7b-4bit.mlx-data-godev-mixed2120080.0001yes0
go-dev-dapt300-ck0001200/Users/fatihturker/Desktop/Personal/Dev/guildlm/.mlx-fused/go-dapt-7b-4bit.mlx-data-godev-mixed2120080.0001yes0
go-dev-dapt600/Users/fatihturker/Desktop/Personal/Dev/guildlm/.mlx-fused/go-dapt600-7b-4bit.mlx-data-godev-mixed2120080.0001yes6
go-dev-dapt600-ck0001000/Users/fatihturker/Desktop/Personal/Dev/guildlm/.mlx-fused/go-dapt600-7b-4bit.mlx-data-godev-mixed2120080.0001yes0
go-dev-dapt600-ck0001200/Users/fatihturker/Desktop/Personal/Dev/guildlm/.mlx-fused/go-dapt600-7b-4bit.mlx-data-godev-mixed2120080.0001yes0
go-dev-finalQwen2.5-Coder-7B-Instruct-4bit.mlx-data-godev-scaled30088e-05yes0
go-dev-idQwen2.5-Coder-7B-Instruct-4bit.mlx-data-id20080.0001yes0
go-dev-maintQwen2.5-Coder-7B-Instruct-4bit.mlx-data-godev-maint16086e-05yes0
go-dev-minedQwen2.5-Coder-7B-Instruct-4bitgodev2048400080.0001yes6
go-dev-mixedQwen2.5-Coder-7B-Instruct-4bit.mlx-data-godev-mixed120080.0001yes6
go-dev-mixed-v2Qwen2.5-Coder-7B-Instruct-4bit.mlx-data-godev-mixed2120080.0001yes6
go-dev-mixed-v3Qwen2.5-Coder-7B-Instruct-4bit.mlx-data-godev-mixed-v3-7b120080.0001yes6
go-dev-mixed-v4Qwen2.5-Coder-7B-Instruct-4bit.mlx-data-godev-mixed-v4-7b120080.0001yes6
go-dev-mixed-v5Qwen2.5-Coder-7B-Instruct-4bit.mlx-data-godev-mixed-v5-7b120080.0001yes1
go-dev-mixed-v5bQwen2.5-Coder-7B-Instruct-4bit.mlx-data-godev-mixed-v5-7b100080.0001yes5
go-dev-v2Qwen2.5-Coder-7B-Instruct-4bit.mlx-data30088e-05yes3
go-dev-v2-idQwen2.5-Coder-7B-Instruct-4bit.mlx-data-godev-v226080.0001yes0
go-dev-v3-idQwen2.5-Coder-7B-Instruct-4bit.mlx-data-godev-v29084e-05yes0
go-reviewQwen2.5-Coder-7B-Instruct-4bit.mlx-data-review18080.0001yes2
go-review-idQwen2.5-Coder-7B-Instruct-4bit.mlx-data-review-id15080.0001yes0
go-review-minedQwen2.5-Coder-7B-Instruct-4bitgoreview120080.0001yes6
go-review-mined-ck0000200Qwen2.5-Coder-7B-Instruct-4bitgoreview120080.0001yes0
go-review-mined-ck0000400Qwen2.5-Coder-7B-Instruct-4bitgoreview120080.0001yes0
go-review-mined-ck0000600Qwen2.5-Coder-7B-Instruct-4bitgoreview120080.0001yes0
go-review-mined-ck0001000Qwen2.5-Coder-7B-Instruct-4bitgoreview120080.0001yes0
go-review-mined-ck0001200Qwen2.5-Coder-7B-Instruct-4bitgoreview120080.0001yes0
go-review-scaledQwen2.5-Coder-7B-Instruct-4bit.mlx-data-goreview-scaled20080.0001yes0
go-testQwen2.5-Coder-7B-Instruct-4bit.mlx-data-test15080.0001yes2
go-test-idQwen2.5-Coder-7B-Instruct-4bit.mlx-data-test-id15080.0001yes0
go-test-scaledQwen2.5-Coder-7B-Instruct-4bit.mlx-data-gotest-scaled22080.0001yes0
go-test-v2Qwen2.5-Coder-7B-Instruct-4bit.mlx-data-test12088e-05yes2

Use an adapter directly (Apple Silicon, MLX)

bash
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

bash
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

bash
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.