Qwen2.5-Coder vs DeepSeek-Coder for Solidity Review: What I Actually See Locally A developer compared Qwen2.5-Coder and DeepSeek-Coder for Solidity smart contract review, running both models locally via Ollama on WSL2 at 7B and below. The developer found that Qwen2.5-Coder followed structured output instructions more reliably and provided more precise explanations, while DeepSeek-Coder was slightly better at flagging subtle logic bugs but produced more noise. The comparison was part of model selection for Spectr-AI, an open-source auditor. I keep a folder of ten small Solidity contracts with bugs I planted myself: a classic reentrancy in a withdraw function, a missing access modifier on an initializer, an ERC4626 vault that rounds in the depositor's favor, a signature check that never validates the signer, a few subtler logic bugs. Whenever I'm deciding which local model earns a slot on my disk, I run every candidate against all ten with the same prompts and compare notes. It's not a benchmark, there's no percentage at the end, but after doing this for months the patterns are consistent enough to be worth writing down. This round: qwen2.5-coder against deepseek-coder, both running through Ollama on WSL2, both at the sizes that actually fit comfortably on my hardware, meaning 7B and below. If you can run 33B models locally, your conclusions will differ and you should mostly stop reading benchmarks of small models anyway. Same ten contracts, none over 150 lines. Same three prompts per contract: an open "review this contract for security issues", a targeted "check specifically for reentrancy and access control problems", and a structured one demanding findings as a severity-tagged list. Each combination run a few times because small models are noisy, one lucky sample proves nothing. Temperature low but not zero. I score by hand: did it find the planted bug, did it describe it correctly, and how much noise came along for the ride. Two honest caveats. First, these contracts are small and self-contained, which flatters every model. Real review means cross-contract call graphs and 2000-line diffs, and no 7B model survives contact with that regardless of family. Second, my planted bugs skew toward canonical patterns, the kind that appear in training data constantly. Both facts mean my setup measures "useful assistant on digestible code", not "auditor replacement". That's fine, it's the only job I'd give these models anyway. Instruction following. This is the biggest practical gap and it has nothing to do with security knowledge. When I demand output like: Report findings as a list. For each: SEVERITY: HIGH | MEDIUM | LOW LINE: