Open-source project
pytorch/ao avatar
pytorch/ao

TorchAO: the newest news post is a year old, and the dependency matrix lives in an issue

PyTorch native quantization for training and inference

3,027 stars683 forksPythonNOASSERTION

At a glance

What is it?
PyTorch's native quantization library, covering integer and floating point weight and activation quantization, quantization aware training, and sparsity, with optional accelerated kernels. The three headline speed and accuracy numbers are the project's own claims. Underneath them the readme routes users to five different package indexes, keeps a dependency matrix in a GitHub issue, and asks for three optional kernel packages at one pinned version.
Who is it for?
Adopt this if you are already inside the PyTorch ecosystem and want quantization that composes with the compiler and the distributed training path rather than replacing them. Three things to check before you pin a version.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • pytorch/ao3,027 ★ · +44
Star history
Repository2026-09-222026-11-13
pytorch/ao3k3k

44 Stars in the last 52 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

The headline numbers are the project's own claims

Three claims sit above the fold, each with a figure in bold. Pre-training a particular large model is stated as one and a half times faster with float8 training. A particular small model is stated to recover sixty seven percent of the accuracy degradation that quantization causes, using quantization aware training. Quantizing a different model to four bits is stated as one point eight nine times faster inference with fifty eight percent less memory. Every one of them is a measurement of a specific model on specific hardware, published by the project, and none of them is a property of the library. A reader should treat them as evidence that the techniques work somewhere, not as an expectation for their own workload, and the three use three different model families so they are not comparable with each other either.

The newest news entry is dated October 2025 while releases keep shipping

The news section is dated by month and year, and the most recent entries are labelled with October of last year. Reading the sequence backwards, it runs from the September before that through the launch announcement, the addition as a quantization backend to a transformers library, a float8 training result, two conference acceptances, an addition as a backend to an inference server, and two fine-tuning integrations. Meanwhile the release list shows versions published in February, March and August of this year, and the last push to the default branch was two days ago. So the project is shipping and being worked on while the section a reader is most likely to consult for current status stopped updating a year ago. Nothing in the file marks the section as archived, which makes the staleness easy to miss.

Three optional kernel packages must share one pinned version

The optional accelerated kernels come from two sources, and the second is where the constraint bites. One package is installed plainly, with no version. The other is three sibling packages that must be pinned to the same number:

bash
pip install nvidia-cutlass-dsl==4.5.2 nvidia-cutlass-dsl-libs-base==4.5.2 nvidia-cutlass-dsl-libs-cu13==4.5.2

All three carry the identical version, and the third is specific to a CUDA major, so the set is not just version-coupled but accelerator-coupled. The first optional package is also coupled in a quieter way: the readme states that a stable release of it goes with a stable release of the library and a nightly goes with a nightly, which is a rule a lockfile cannot express and a resolver will not enforce for you. Both pairs are needed for one of the workflows the library advertises, so getting this wrong fails at the kernel level rather than at install time.

Five package indexes for one package, and a developer install that needs isolation off

The install section offers the same package name from five different indexes, selected by trailing URL: one for nightly builds, one for each of two specific CUDA versions, one for an Intel accelerator, and one for CPU only. The developer route is different again, and the readme flags its own requirement:

bash
USE_CUDA=1 pip install -e . --no-build-isolation

The build configuration file explains why in a comment rather than leaving it as folklore. The framework itself is deliberately not declared as a build-time dependency, so that isolation cannot be used, and the person building has to install the framework into the environment first. That is a real trade with a real cost, and the comment marks it as a known gap with a note that it might be addressed later. The same code block in the readme then stops mid-word, so the developer example is truncated in the file itself.

The dependency compatibility table is a GitHub issue

The readme points readers to the compatibility table for version requirements of dependencies, and the destination is an issue in the repository rather than a file. So the matrix that tells you which combination of the framework, the compiler and the optional kernels works together lives in a discussion thread that can be edited by anyone with a comment, and it is not versioned with the code. That is a genuine weakness for a library whose hardest failure mode is a version mismatch between an accelerated kernel and the framework it plugs into. Two of the readme's own links are affected by the same pattern, since the stable and development documentation are two separate trees at two different addresses, and a reader who follows the wrong one is reading documentation for a different version than the one they installed.

The build turns on experimental paths on ARM64 macOS by itself

The build script reads its behaviour from environment variables with defaults chosen for the common case, and it inspects the host at build time. Two toggles are read, one defaulting on and one defaulting off. Then the machine architecture and the operating system are detected, and there is a comment stating that experimental builds are enabled automatically on ARM64 macOS when the C++ path is on. That last part is the finding: a developer on an Apple Silicon Mac who installs the package normally gets experimental build paths compiled in without passing anything, while a developer on an Intel Mac or on Linux does not. Nothing in the readme mentions it, and the symptom would be a build that differs by machine rather than an error.

The root licence supplies the redistribution terms

The root LICENSE contains a three-clause BSD-style grant. It permits redistribution and use with or without modification subject to retaining notices, reproducing them with binary distributions, and not using contributor names for endorsement without permission. Review the full file and any separately licensed dependencies for your distribution.

The examples directory holds exactly one script

The repository has an examples directory, a tutorials directory, a benchmarks directory and a test directory, and the listing for the examples directory contains two entries: a readme and a single Python script, named for quantizing one particular model family. For a library whose headline claim is that it works across most models of a major ecosystem, one worked example is thin, and the readme points elsewhere for demonstration, linking a quick start guide, a workflows page and a developer cookbook. The tutorials and benchmarks directories are listed but their contents are not shown, so the depth of either cannot be judged from the tree. What the tree does show is that the test suite is present and separate, which is the part that matters for a dependency.

Editorial conclusion

Adopt this if you are already inside the PyTorch ecosystem and want quantization that composes with the compiler and the distributed training path rather than replacing them. Three things to check before you pin a version. The performance numbers at the top of the readme are claims with blog posts behind them, not measurements you can rely on for your own model. The dependency version matrix is not a file, it is an issue, so treat your environment as unpinned until you read it. And read the root LICENSE for redistribution conditions: it contains a three-clause BSD-style grant and notices.

Frequently asked questions

What is pytorch/ao, also called TorchAO?

It is a quantization library for native PyTorch, covering integer and floating point quantization for training and inference, quantization aware training and sparsity. The readme states it works out of the box with the PyTorch compiler and the second generation distributed training path across most models of the transformers ecosystem.

How do I install torchao with the accelerated kernels?

Beyond the base package there are optional extras. One kernel package is installed plainly, and another is three sibling packages that must all be pinned to the same version, one of which is specific to a CUDA major. The readme also states that a stable release of the first should be paired with a stable release of the library and a nightly with a nightly.

Where can I find the torchao dependency version requirements?

In a GitHub issue, which is where the readme's compatibility table link points. The matrix is not versioned with the code, so it can change without a release, and it is the piece a user needs most when an accelerated kernel fails to load.

Why does installing torchao from source need build isolation disabled?

The build configuration states in a comment that the framework is deliberately not declared as a build-time dependency, so isolated builds cannot work, and that a developer must install the framework into the environment first. The comment adds a note that declaring it might be considered in future.

What licence is pytorch/ao released under?

The readme and the packaging metadata do not say. The source files carry a company copyright line and point at a licence file in the repository root without naming a licence, a licence file is present in the tree, and no licence is recorded for the repository itself.

Official sources

  1. Issues
  2. Project website
  3. pytorch/ao on GitHub
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/pytorch-ao.svg)](https://hysenlabs.com/projects/pytorch-ao)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/pytorch-ao.svg)](https://hysenlabs.com/projects/pytorch-ao)

Was this useful?