{"adoption": {"forks": 84, "observed_at": "2026-08-28T04:03:27.176448+00:00", "stars": 1067}, "canonical_url": "https://ross.abutalabs.com/products/batch_invariant_ops", "card": {"archived": false, "artifact_type": "library", "description": null, "domain": ["deep-learning", "large-language-models", "performance"], "enriched": true, "function": ["machine-learning", "llm-inference", "gpu-computing"], "health_score": 50, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "experimental", "member_repos": ["thinking-machines-lab/batch_invariant_ops"], "name": "thinking-machines-lab/batch_invariant_ops", "platform": ["python"], "pushed_at": "2025-11-04T05:08:17+00:00", "repo": "thinking-machines-lab/batch_invariant_ops", "stars": 1067, "tags": ["determinism", "pytorch", "kernels", "vllm", "reproducibility", "gpu", "linux"], "topics": [], "urls": [], "use_cases": ["make llm inference deterministic regardless of batch size", "get reproducible pytorch gpu results", "eliminate nondeterminism in vllm serving", "ensure matrix multiplication gives same output for different batch sizes", "debug floating point nondeterminism in cuda kernels"], "what_it_is": "A Python library that replaces standard PyTorch CUDA kernels with batch-invariant versions, ensuring identical results regardless of batch size. It accompanies Thinking Machines' blog on defeating nondeterminism in LLM inference and includes a proof-of-concept for deterministic vLLM inference.", "when_to_avoid": ["you need maximum inference throughput and can tolerate nondeterminism", "you rely on operations not covered (only mm, addmm, log_softmax, mean are supported)", "you're not using CUDA GPUs"], "when_to_choose": ["you need bit-exact reproducible GPU inference results", "you run vLLM and want deterministic completions", "you're debugging batch-size-dependent numerical differences in PyTorch"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/batch_invariant_ops", "repo": "thinking-machines-lab/batch_invariant_ops", "role": "main", "score": 40}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.176448+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:55:12.071885+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "314d09d5122a34e43f02f58f9a5c7407b89e8bd39416a83084c7bdf2c40ebf9d", "fetched_at": "2026-08-28T04:03:27.176448+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thinking-machines-lab/batch_invariant_ops"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.176448+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:55:12.071885+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "314d09d5122a34e43f02f58f9a5c7407b89e8bd39416a83084c7bdf2c40ebf9d", "fetched_at": "2026-08-28T04:03:27.176448+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thinking-machines-lab/batch_invariant_ops"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:55:12.071885+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "314d09d5122a34e43f02f58f9a5c7407b89e8bd39416a83084c7bdf2c40ebf9d", "fetched_at": "2026-08-28T04:03:27.176448+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thinking-machines-lab/batch_invariant_ops"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.176448+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.176448+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.176448+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:55:12.071885+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "314d09d5122a34e43f02f58f9a5c7407b89e8bd39416a83084c7bdf2c40ebf9d", "fetched_at": "2026-08-28T04:03:27.176448+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thinking-machines-lab/batch_invariant_ops"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.176448+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.176448+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:55:12.071885+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "314d09d5122a34e43f02f58f9a5c7407b89e8bd39416a83084c7bdf2c40ebf9d", "fetched_at": "2026-08-28T04:03:27.176448+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thinking-machines-lab/batch_invariant_ops"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.176448+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.176448+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.176448+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:55:12.071885+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "314d09d5122a34e43f02f58f9a5c7407b89e8bd39416a83084c7bdf2c40ebf9d", "fetched_at": "2026-08-28T04:03:27.176448+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thinking-machines-lab/batch_invariant_ops"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.176448+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.176448+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:55:12.071885+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "314d09d5122a34e43f02f58f9a5c7407b89e8bd39416a83084c7bdf2c40ebf9d", "fetched_at": "2026-08-28T04:03:27.176448+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thinking-machines-lab/batch_invariant_ops"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:55:12.071885+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "314d09d5122a34e43f02f58f9a5c7407b89e8bd39416a83084c7bdf2c40ebf9d", "fetched_at": "2026-08-28T04:03:27.176448+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thinking-machines-lab/batch_invariant_ops"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:55:12.071885+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "314d09d5122a34e43f02f58f9a5c7407b89e8bd39416a83084c7bdf2c40ebf9d", "fetched_at": "2026-08-28T04:03:27.176448+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thinking-machines-lab/batch_invariant_ops"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:55:12.071885+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "314d09d5122a34e43f02f58f9a5c7407b89e8bd39416a83084c7bdf2c40ebf9d", "fetched_at": "2026-08-28T04:03:27.176448+00:00", "kind": "readme", "missing": false, "url": "https://github.com/thinking-machines-lab/batch_invariant_ops"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 50, "longevity": 25, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 358, "days_push": 302, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 40, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}