Releases: Andyyyy64/whichllm
Releases · Andyyyy64/whichllm
Release list
v0.5.16
v0.5.16
sorry this release took longer than it should have
- Escape Hugging Face model IDs, GGUF filenames, and quantization types in generated
runandsnippetscripts - Keep synthetic GGUF recommendations tied to direct quantizations of the selected checkpoint
- Reject fine-tunes, merges, conflicting lineage, and artifacts without explicit provenance
- Split benchmark fetching, caching, indexing, lineage, and lookup into focused modules
- Lock the development tools used locally and in required CI checks
Security
v0.5.16 fixes CVE-2026-58474 (GHSA-hfpc-7mr4-p297), a code injection vulnerability affecting versions before 0.5.16.
A malicious Hugging Face repository could use a crafted GGUF filename to alter Python generated by whichllm run or whichllm snippet. Exploitation requires the user to run the affected command or execute the generated snippet.
Users on an earlier version should upgrade to v0.5.16 or later:
python -m pip install --upgrade "whichllm>=0.5.16"Thanks @RaghavRD for the benchmark refactor and @hannibal-lee for the generated-script escaping fix.
v0.5.15
v0.5.15
- Resolves ranked GGUF recommendations to the actual downloadable artifact repo and filename when the ranked base model and runnable GGUF live in different Hugging Face repos.
- Retunes AA index normalization and refreshes the fallback snapshot for the reworked Artificial Analysis scale.
- Validates ranking flags such as
--top,--min-speed, and--min-paramsbefore ranking. - Splits the Hugging Face fetcher into focused modules while keeping the existing
whichllm.models.fetcherimport surface.
v0.5.14
Added
- Sliding-window attention metadata is now used in model fetching and KV cache estimation, improving VRAM estimates for models that use SWA. (#124)
- Intel Arc Pro B70 / Battlemage G31 now has curated detection and simulation defaults, including PCI device
0xe223, 32 GB VRAM, and 608 GB/s bandwidth. (#93, #136)
Fixed
v0.5.13
Added
HF_ENDPOINTsupport for Hugging Face model metadata fetches, so users behind a mirror can point whichllm at a compatible Hub endpoint. (#128, #131)- Manual detected-GPU overrides for usable VRAM and bandwidth, useful for iGPU and unified-memory systems where automatic detection is too conservative. (#132, #133)
- README guidance for safer first-run flags when users want full-GPU, usable-speed recommendations with extra VRAM headroom.
Fixed
v0.5.12
Added
- Markdown ranking output with
--markdown/-mfor pasteable GitHub issues, READMEs, Slack, and Discord. - Runtime-first ranking tables now show memory, estimated speed, fit type, and published date by default.
--speed any|usable|fastand the shorter--fit gpualias for full-GPU recommendations.--vram-headroomand--ram-budgetfor safer fit planning when runtimes or background processes need memory.
Changed
- Speed colors now reflect practical generation speed: red under 4 tok/s, yellow from 4-10, green from 10-30, and bright green at 30+ tok/s.
--detailsrestores the download-focused metadata table when needed.
Fixed
- Invalid
--vram-headroomvalues are now rejected even in CPU-only runs.
v0.5.11
Added
- Multi-GPU simulation for repeated
--gpuflags, comma-separated GPU specs, and count shorthand like2x RTX 4090. python -m whichllmnow runs the CLI.--gpu-onlyand--fit full-gpufilter recommendations to models that fit fully in GPU VRAM.- T5 lineage support for version-aware benchmark handling.
Fixed
- Cached model and benchmark data are read as UTF-8.
- GTX 1650 simulation distinguishes GDDR5 and GDDR6 variants by memory clock.
- RAM reserve logic now uses a bounded reserve formula instead of a fixed 80% usable-RAM cap.
v0.5.10
Fixed
- Strong partial-offload candidates no longer get buried under weaker full-GPU models because the final sort no longer counts GPU fit twice.
- Light partial offload is penalized less aggressively, while heavy dense offload still gets a strong discount.
- MoE partial-offload scoring now gives a milder penalty when the active working set can plausibly stay on GPU.
v0.5.9
Highlights
- GPU bandwidth detection now falls back to the bundled TechPowerUp database (2,824 GPUs) when a card is missing from the curated catalog. Uncatalogued cards no longer show
BW: N/Awith0.0 tok/sestimates and oversized recommendations, and a laptop card can never inherit its desktop sibling's bandwidth. (#74, #98) - Fixed AMD discrete GPU detection on Linux, including RX 6750 XT and the compound lspci name path. (#61)
- Artificial Analysis Intelligence Index is fetched live again after the site's App Router migration. Live scores overlay the curated snapshot, so coverage can only grow. (#87)
- Added MXFP4 and NVFP4 quantization support. These repos were previously labeled FP16, overestimating VRAM by about 3.5x. (#27)
- Added Apple M5-family simulation entries and Kepler-era Quadro catalog coverage.
- Community GGUF repos without
base_modelmetadata now match official benchmark scores by name.
QA
- CI lint: passed
- CI tests: Python 3.11, 3.12, and 3.13 passed
- Local: 329 tests passed; sdist and wheel built successfully
- Real hardware smoke test on Apple M2
v0.5.8
Highlights
- Fixed the A3000 Laptop 6GB ranking regression.
- Added retry/backoff for transient Hugging Face and benchmark fetch failures.
- Improved Error fetching models output when network exceptions have no message.
- Added GPU catalog coverage for A3000 Laptop, RTX 3050, RTX 5060, RTX 5070 Ti, RX 9070, and RX 9070 XT.
- Added context-length shorthand and benchmark source/confidence metadata in JSON output.
QA
- CI lint: passed
- CI tests: Python 3.11, 3.12, and 3.13 passed
- Local build: sdist and wheel built successfully
v0.5.7
What's Changed
- Detect DGX Spark / NVIDIA GB10 as a shared-memory NVIDIA GPU when NVIDIA reports
memory.totalas unavailable. - Fix
whichllm runcrashes for large Transformers models by providing anoffload_folder. - Respect
XDG_CACHE_HOMEfor cache paths, while ignoring relative values per the XDG spec. - Treat Apple Silicon as shared memory in fit detection.
- Inline LiveBench fallback data and speed up benchmark score fetching.
Validation
ruff format --check .ruff check .pytest -q -spython -m buildtwine check dist/*