File size: 1,552 Bytes
d4c2896
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
[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"]