[project] name = "align" version = "0.1.0" description = "Consolidated post-training alignment stack (SFT / DPO / PPO / GRPO) for Mistral-7B-v0.3 on 4xA10G. Bare-metal: torch + triton + numpy + safetensors, nothing else." requires-python = ">=3.12,<3.13" dependencies = [ # The ENTIRE runtime dependency surface. Enforced by tests/test_dependency_firewall.py, # which AST-scans every module under align/ and scripts/ and fails on any other # third-party import. See docs/DEPENDENCY_POLICY.md for what was removed and what # replaced it. "torch==2.11.0", "triton==3.6.0", "numpy>=1.26", "safetensors>=0.4", ] [project.optional-dependencies] dev = ["pytest>=8", "ruff==0.16.3"] # ONE-TIME ingestion of parquet-only HF datasets (Big-Math, DeepMath). Never imported by # the training half; only align/data/ingest_parquet.py may touch it, lazily, and the # firewall test whitelists exactly that file. ingest = ["pyarrow>=15"] # Optional high-throughput rollout worker (rollout-layer sovereignty amendment, 2026-08-22). # Lives in extras/vllm_rollout/, its own venv, talks to the trainer over the filesystem # protocol in align/rollout/protocol.py. The core never imports it. vllm = ["vllm"] [build-system] requires = ["setuptools>=68"] build-backend = "setuptools.build_meta" [tool.setuptools.packages.find] include = ["align*"] [tool.setuptools.package-data] "align.model" = ["artifacts/*.json"] "align.tokenizer" = ["artifacts/*.json"] "align" = ["py.typed"] [[tool.uv.index]] name = "pytorch-cu128" url = "https://download.pytorch.org/whl/cu128" explicit = true [tool.uv.sources] torch = [{ index = "pytorch-cu128" }] [tool.pytest.ini_options] testpaths = ["tests"] markers = [ "gpu: needs a real GPU and the real 7B checkpoint", "slow: long-running; excluded from the quick loop", "oracle: needs the legacy nano-mistral-o1 venv (transformers/math_verify) as a parity ORACLE; never a runtime dep", ] [tool.ruff] line-length = 100 target-version = "py312" [tool.ruff.lint] select = ["E", "F", "I", "W", "UP", "B"] ignore = ["E501", "E402", "E731", "E741", "F401", "F821", "F841", "B007", "B017", "B023", "B904", "B905"]