| [project] | |
| name = "speculative-decoding-lab" | |
| version = "0.1.0" | |
| description = "Empirical study of speculative decoding on an RTX 4060 Ti 16 GB: Gemma-4/Qwen-3 GGUF with modern drafters (EAGLE-3, DFlash, DSpark)" | |
| readme = "README.md" | |
| requires-python = ">=3.12" | |
| dependencies = [ | |
| "numpy>=2.0", | |
| # matplotlib: figures for the analysis/paper (F1a-F4); pinned in uv.lock. | |
| "matplotlib>=3.9", | |
| # NVIDIA wheels for Python runtime. NOTE: the nvcc binary is NOT distributed | |
| # on PyPI (only ptxas) — the real CUDA toolkit is installed with the runfile | |
| # in $HOME/cuda without sudo (see scripts/spec-env.sh). Verified 2026-08-03. | |
| "nvidia-cuda-runtime-cu12>=12.4,<12.5", | |
| "nvidia-cublas-cu12>=12.4,<12.5", | |
| "nvidia-nvjitlink-cu12>=12.4,<12.5", | |
| "safetensors>=0.8.0", | |
| "sentencepiece>=0.2.2", | |
| "tiktoken>=0.13.0", | |
| "torch>=2.13.0", | |
| "pyyaml>=6.0.3", | |
| "transformers>=5.14.1", | |
| ] | |
| [dependency-groups] | |
| dev = [ | |
| "ruff>=0.8", | |
| "pyright>=1.1", | |
| "cmake>=4.4.0", | |
| "ninja>=1.13.0", | |
| ] | |
| [tool.ruff] | |
| line-length = 100 | |
| target-version = "py312" | |
| [tool.ruff.lint] | |
| select = ["E", "F", "W", "I", "B", "UP", "S"] | |
| # S-* = bandit: false positives in download utilities (fixed repo URLs, | |
| # read-only arXiv feed; S603/S607 are pdftotext with owned paths). | |
| [tool.ruff.lint.per-file-ignores] | |
| "scripts/dl.py" = ["S310"] | |
| [tool.pyright] | |
| pythonVersion = "3.12" | |
| typeCheckingMode = "basic" | |
| exclude = ["models", "papers", "notes"] | |
| # scripts/ is a root module without a package; pyright needs it as extraPaths. | |
| extraPaths = ["scripts"] | |