[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"]