forked from ccf-ai-infra/TileOPs-Metax
144 lines
4.1 KiB
TOML
144 lines
4.1 KiB
TOML
[project]
|
|
name = "tileops"
|
|
version = "0.0.1.dev2"
|
|
description = "TileOPs kernels for efficient LLM inference."
|
|
readme = "README.md"
|
|
authors = [{ name="Tile-AI"}]
|
|
dependencies = [
|
|
"torch>=2.1.0,<2.11.0",
|
|
# tilelang as a compatibility range, not a source or exact pin. CI does not resolve tilelang
|
|
# from this range: the runner image bakes a specific tilelang build and CI installs tileops
|
|
# with --no-deps against it. constraints.txt pins tilelang's runtime deps (torch, triton,
|
|
# apache-tvm-ffi, ...) for reproducibility but intentionally does NOT pin tilelang itself.
|
|
# Downstream `pip install tileops` resolves a compatible tilelang release; apache-tvm-ffi
|
|
# comes in transitively via tilelang's own metadata — no manual cap here.
|
|
"tilelang>=0.1.9,<0.2.0",
|
|
"einops",
|
|
"pyyaml>=6.0",
|
|
]
|
|
requires-python = ">=3.10"
|
|
license = {text = "MIT"}
|
|
keywords = ["llm", "inference", "gpu", "kernel", "tiling"]
|
|
classifiers = [
|
|
"Development Status :: 3 - Alpha",
|
|
"Intended Audience :: Developers",
|
|
"Intended Audience :: Science/Research",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/tile-ai/TileOPs"
|
|
Repository = "https://github.com/tile-ai/TileOPs"
|
|
Issues = "https://github.com/tile-ai/TileOPs/issues"
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"ruff==0.14.13",
|
|
"codespell==2.4.1",
|
|
"pytest>=8.0",
|
|
"pytest-xdist>=3.0",
|
|
"pyyaml>=6.0",
|
|
]
|
|
bench = [
|
|
"flash-attn==2.8.3",
|
|
"flash-attn-interface>=2.7.2",
|
|
"flash-linear-attention==0.4.0",
|
|
"flashinfer>=0.6.6",
|
|
"vllm==0.18.0",
|
|
"sgl-kernel==0.3.21",
|
|
]
|
|
|
|
[build-system]
|
|
requires = ["setuptools>=68", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["."]
|
|
exclude = ["tests", "tests.*", "benchmarks", "benchmarks.*"]
|
|
|
|
[tool.setuptools.package-data]
|
|
tileops = ["kernels/moe/_atomic_helper.h", "manifest/*.yaml"]
|
|
|
|
[tool.codespell]
|
|
ignore-words-list = "nd, te, ist, LOD, offen, NotIn, HSA"
|
|
skip = [
|
|
"build",
|
|
"dist",
|
|
".venv"
|
|
]
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
|
|
# NOTE: Please gradually tighten static code checks and other validations in the future.
|
|
# The current exemptions are in place to ensure normal project development.
|
|
[tool.ruff.lint]
|
|
select = [
|
|
# pycodestyle
|
|
"E",
|
|
# Pyflakes
|
|
"F",
|
|
# pyupgrade
|
|
# "UP",
|
|
# flake8-bugbear
|
|
"B",
|
|
# flake8-simplify
|
|
"SIM",
|
|
# isort
|
|
"I",
|
|
# pydocstyle (Google Docstrings)
|
|
# "D",
|
|
# pep8-naming (naming conventions)
|
|
"N",
|
|
# ruff-specific: sort __all__
|
|
"RUF022",
|
|
# flake8-annotations (type hints) — enable when codebase has sufficient coverage
|
|
# "ANN",
|
|
]
|
|
ignore = [
|
|
# ambiguous name
|
|
"E741",
|
|
# line too long (allow some flexibility)
|
|
"E501",
|
|
# key in dict.keys()
|
|
"SIM118",
|
|
# memory leaks
|
|
"B019",
|
|
# No such file or directory
|
|
"E902",
|
|
# pep8-naming: allow 'import as T'
|
|
"N812",
|
|
# pep8-naming: ignore naming convention violations (common in ML/kernel code)
|
|
"N801", # Class name should use CapWords convention
|
|
"N802", # Function name should be lowercase
|
|
"N803", # Argument name should be lowercase
|
|
"N806", # Variable in function should be lowercase
|
|
]
|
|
|
|
[tool.ruff.lint.isort]
|
|
known-first-party = ["tileops"]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"__init__.py" = ["F401"]
|
|
"bench_*.py" = ["F401"]
|
|
# __all__ intentionally grouped by category, not alphabetical
|
|
"tileops/kernels/elementwise.py" = ["RUF022"]
|
|
"tileops/ops/__init__.py" = ["RUF022"]
|
|
"tileops/ops/elementwise.py" = ["RUF022"]
|
|
"tileops/ops/reduction/__init__.py" = ["RUF022"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests", "benchmarks/tests"]
|
|
python_files = ["test_*.py", "bench_*.py"]
|
|
markers = [
|
|
"smoke: fast PR critical-path tests",
|
|
"full: standard correctness coverage",
|
|
"nightly: exhaustive or long-running coverage",
|
|
"packaging: minimal wheel-install sanity check (one case per op family)",
|
|
]
|