AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기High-performance LLM operator library built on TileLang.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Spec-driven LLM operators across backends — built by agents
The spec is the source; kernels are derived from it and judged against it.
Operators are auto-tuned on first use, CUDA-Graph compatible, and declare their
torch.compile(fullgraph=True) support per op.
An implementation can be regenerated from its spec; a spec cannot be recovered from an
implementation. The project is organised around the spec rather than around the kernels:README 전문 보기 ↗| TileOPsagents answer to specs | TileFoundrythe compiler answers to agents |
|---|---|
| Each op starts with a YAML spec. Tests and benchmarks use the reference implementation, workloads and roofline formula declared in the spec to check correctness and measure performance. | A tile-based AI compiler that coding agents use to generate high-performance programs across hardware platforms. |
TileOPs shows how a coding agent and TileFoundry can work together in a loop to build an operator library. Tests and benchmarks driven by each op's spec report failures and the gap to the roofline bound. The agent and compiler iterate on that feedback. Kernels that pass the checks become part of the library, where later work can build on them. This approach supports a growing, maintainable library rather than a few one-off kernels.
spec ──▶ coding agent ◀──▶ TileFoundry ──▶ kernel
▲ (AI compiler) │
│ ▼
└─ failures, roofline gap ◀── tests + benchmarks
│ pass
▼
TileOPs library
PRs whose kernels were generated with TileFoundry carry the foundry label. The badge above
counts merged PRs with this label. These PRs go through the same CI as every other PR.
import torch
from tileops.gemm import GEMMFwdOp
gemm = GEMMFwdOp() # shapes and dtype are inferred at call time
a = torch.randn(1024, 512, device="cuda", dtype=torch.float16)
b = torch.randn(1024, 512, device="cuda", dtype=torch.float16)
d = gemm(a, b) # equals a @ b.T
Operators autotune after op.request_tune(). CUDA Graph support on H200 is validated,
after warmup, for the calls in the graph test group.
Every op whose manifest entry has a call-time tensor input and no composition supports
torch.compile(fullgraph=True).
The release image contains TileOPs 0.1.0, TileFoundry 0.0.3 and the benchmark baselines, on CUDA 13.2, PyTorch 2.13 and TileLang 0.1.12.
docker run --rm -it --gpus all \
ghcr.io/tile-ai/tileops-release:tileops0.1.0-tilefoundry0.0.3-cuda13.2-torch2.13-tilelang0.1.12
To check the image on a GPU, run from a clone of this repository:
scripts/verify_release_image.sh
scripts/verify_release_image.sh --bench benchmarks/ops/bench_rope.py # also run a benchmark
An implementation can be regenerated from its spec, but a spec cannot be recovered from an implementation. Agents work on the whole library, not only its kernels, so it needs to stay consistent as it grows.
Each op has an entry in
src/tileops/manifest/spec/,
with one file per family. Abridged from gemm.yaml:
GEMMFwdOp:
ref_api: nvmath.linalg.advanced.Matmul.execute
family: gemm
signature:
forall: {M: Dim, N: Dim, K: Dim, T: "DType[float16 | bfloat16]"}
params: {trans_a: {type: bool, default: false}, trans_b: {type: bool, default: true}}
inputs: {a: {dtype: T, shape: "Mat[trans_a, M, K]"}, b: {dtype: T, shape: "Mat[trans_b, K, N]"}}
outputs: {d: {dtype: T, shape: "[M, N]"}}
workloads: [{M: 1024, N: 1024, K: 1024, trans_a: false, trans_b: false, dtype_cases: [{T: float16}, {T: bfloat16}], label: square-1k}]
roofline: {flops: "2 * M * N * K"}
Mat[t, R, C] is a type the entry declares: the shape [R, C], or [C, R] when t is true.
| Field | Role |
|---|---|
ref_api | The API whose semantics the operator follows, when applicable. |
signature | Tensor types over named indices. Each call is checked against it before dispatch. |
workloads | The concrete calls used by contract tests and nightly benchmarks. |
roofline | The performance model. eval_roofline() evaluates it for each checked call. |
A validator checks each entry against its implementation in CI. layer-boundaries.md states what each layer of an op owns.
pip install tileops
pip resolves PyTorch 2.13, TileLang 0.1.12 and PyYAML from PyPI. The machine provides the rest:
nvcc on PATH: TileLang compiles kernels at run timeThe release is verified on H200 with Python 3.12 and 3.13.
Some kernels also have SM80, SM86 or SM89 paths. They are tested on those devices when run there, and are outside the release verification.
To develop TileOPs, install it from source:
git clone https://github.com/tile-ai/TileOPs
cd TileOPs
pip install -e . --group dev -c constraints.txt # constraints.txt pins what CI validates
pre-commit install
python -m pytest -q tests -m smoke # verify; requires a CUDA GPU
A prebuilt Docker image includes the full stack and provides the CI environment. See development.md for details, test tiers, benchmarks and build troubleshooting.
TileOPs is released under the MIT License.