--- license: apache-2.0 library_name: aether tags: - diffusion - masked-diffusion - language-model - mdlm datasets: - wikitext pipeline_tag: text-generation --- # ameyg910/aether-55m A masked (absorbing-state) diffusion language model trained with [Aether](https://github.com/ameyg910/aether). Unlike an autoregressive model, generation does not proceed left to right. The model starts from an all-`[MASK]` sequence and unmasks progressively, so the number of forward passes (**NFE**) is a knob rather than a function of sequence length. ## Model details | | | | --- | --- | | Architecture | bidirectional DiT denoiser, AdaLN-Zero time conditioning | | Objective | MDLM / SUBS masked-diffusion loss | | Parameters | 55,543,634 | | Width / depth / heads | 384 / 6 / 6 | | Context length | 1024 | | Vocabulary | 50,258 (GPT-2 + `[MASK]`) | | Training steps | 30,000 | | Tokens seen | 3,932,160,000 | | License | Apache-2.0 | ## Evaluation Measured with `aether-eval`; see [the evaluation protocol](https://github.com/ameyg910/aether/blob/main/docs/evaluation.md). | metric | value | | --- | --- | | NELBO (nats/token) | 7.136 | | Bits per dim | 10.3 | | Perplexity (upper bound) | 1257 | | MAUVE | 0.999 | | distinct-2 | 0.971 | | Sampler / steps | ancestral / 128 | > **Perplexity here is an upper bound, not an exact likelihood.** A masked > diffusion model has no exact factorization of `log p(x)`; what is reported is a > Monte Carlo estimate of a variational bound. It is comparable to other diffusion > models evaluated the same way, and **not** directly comparable to an > autoregressive model's exact perplexity, which would flatter the AR model. ## Usage Serve it: ```bash pip install "aether-dlm[serve]" aether-serve serve.model_version=hf:ameyg910/aether-55m@v1.0.0 curl -X POST localhost:8000/generate \ -H 'content-type: application/json' \ -d '{"n_samples":2,"length":64,"steps":64,"sampler":"ancestral"}' ``` Or load it directly: ```python import torch from huggingface_hub import hf_hub_download from aether.models.loading import build_model_from_checkpoint from aether.diffusion.samplers import sample path = hf_hub_download("ameyg910/aether-55m", "latest.pt", revision="v1.0.0") model, config = build_model_from_checkpoint( torch.load(path, map_location="cpu", weights_only=False) ) out = sample(model.eval(), batch=2, length=64, mask_token_id=config.vocab_size - 1, steps=64) print(out.tokens.shape, "NFE:", out.nfe) ``` ## Intended use Research and demonstration of masked diffusion language modelling: studying the NFE-quality tradeoff, comparing sampling strategies, and as a fixture for inference-serving work. ## Limitations - **Small and undertrained.** 55,543,634 parameters and roughly 3,932,160,000 tokens. It captures vocabulary and local phrasing, not long-range coherence or factual grounding. - **Unconditional.** There is no prompt input; it generates from an all-`[MASK]` sequence. Prompt-conditioned infilling is a natural extension the architecture supports but this release does not implement. - **No alignment of any kind.** No instruction tuning, no safety filtering, no RLHF. Output may be offensive, false, or nonsensical. - **Inherits its corpus.** Trained on wikitext, and reproduces the biases and errors in it. Not suitable for production text generation, question answering, or any use where output correctness matters. ## Citation ```bibtex @software{aether, author = {Gupta, Amey}, title = {Aether: a production platform for masked diffusion language models}, year = {2026}, url = {https://github.com/ameyg910/aether} } ```