Transfusion - PyTorch
GitHub Repo
MIT
July 24, 2026 at 02:22 PM
0 views

Transfusion - PyTorch

@lucidrainsProject Author

Transfusion: A Practical Multi-Modal Model in PyTorch

Introduction

Transfusion is a PyTorch-based implementation inspired by the paper “Transfusion: Predict the Next Token and Diffuse Images with One Multi-Modal Model” from MetaAI. In this project, the authors explore unifying multiple modalities—most notably text and images—into a single, flexible model capable of both language modeling tasks and generative image synthesis. A noteworthy design choice in this repository is substituting diffusion with flow matching, inspired by the success of Flux from Black Forest Labs. The original paper title is retained to honor the lineage of ideas, even as the implementation experiments with a different mathematical flow (flow matching) behind the scenes. The project is built with a forward-looking goal: to extend to an arbitrary number of modalities, enabling increasingly richer cross-modal capabilities.

Key ideas behind Transfusion are simple in spirit but powerful in practice:

  • A single multi-modal model that can reason about text and other data streams jointly, rather than building separate models for each modality.
  • A streamlined workflow for encoding and decoding under the hood so users can focus on training, inference, and experimentation rather than bespoke modality pipelines.
  • Extensibility to more modalities with a consistent interface for latent representations, shapes, and embeddings.

Appreciation and Community

The project acknowledges contributions from the community, including Pranoy for adding classifier-free guidance. This kind of collaboration highlights the ecosystem-like nature of modern multi-modal research tooling, where small but meaningful improvements (like guidance techniques) can significantly impact the scalability and quality of model outputs.

Getting Started: Installation

To begin, the project provides a straightforward installation command:

  • Install Transfusion PyTorch
  • pip install transfusion-pytorch

This simple command pulls in the core packages needed to instantiate a Transfusion model, configure its modalities, and begin training or sampling. The repository also includes optional dependencies for examples, which can be installed with:

  • pip install .[examples]

Installation is designed to be approachable for researchers and practitioners who want to experiment with one or multiple modalities without building the entire pipeline from scratch.

A Quick Primer on Modality and Latent Structures

Transfusion is designed around a flexible latent representation that can accommodate one or more modalities. Core parameters include:

  • numtexttokens: The number of discrete tokens the language component can consume (for text).
  • dim_latent: The size of the latent embeddings per modality, which can be a single integer or a tuple for multi-modal setups.
  • modalitydefaultshape: The default spatial-temporal shape for a given modality (for example, images might have a default 4x4 grid, while other modalities could have different shapes).
  • transformer: A dictionary that configures the transformer block (e.g., dimension and depth).

Single-Modality Usage: Images as the Example

The Transfusion model can operate with one modality—images—by aligning text tokens and image latents in a shared, learnable space. A typical usage pattern looks like this:

  • Initialize the model

  • model = Transfusion(

    numtexttokens = 256, dimlatent = 384, modalitydefault_shape = (4,), # fallback, in case the language model does not produce a valid modality shape transformer = dict(dim = 512, depth = 8) )

  • Prepare a mixed input consisting of text tokens and latent representations for images

  • textandimages = [ [randint(0, 256, (16,)), randn(4, 384), randint(0, 256, (8,)), randn(6, 384)], [randint(0, 256, (16,)), randn(7, 384), randint(0, 256, (5,)), randn(2, 384), randint(0, 256, (9,))] ]

  • Run a forward pass

  • loss = model(textandimages)

  • loss.backward()

  • Sample a multi-modal output after training advances

  • onemultimodalsample = model.sample()

What this looks like in practice is a streamlined interface where discrete text tokens coexist with continuous latent representations—interpreted as images or other modalities by the model. The code snippet above illustrates a compact pipeline where text tokens, latent image channels, and other modality streams are passed into the model, optimized with backpropagation, and later used to generate new samples.

Multiple Modalities: A Flexible, Scalable Setup

Transfusion is designed to accommodate more than two modalities, including text, images, and potentially audio or other data types. A multi-modality configuration looks like this:

  • Initialize a multi-modality model

  • model = Transfusion(

    numtexttokens = 256, dimlatent = (384, 192), # specify multiple latent dimensions modalitydefault_shape = ((4,), (2,)), # default shapes for first and second modality transformer = dict(dim = 512, depth = 8) )

  • Construct modality-aware inputs

  • textimagesand_audio = [ [randint(0, 256, (16,)), (0, randn(4, 384)), randint(0, 256, (8,)), (1, randn(6, 192))], [randint(0, 256, (16,)), randn(7, 384), randint(0, 256, (5,)), (1, randn(2, 192)), randint(0, 256, (9,))] ]

  • Train and sample

  • loss = model(textimagesand_audio)

  • loss.backward()

  • onemultimodalsample = model.sample()

In this setup:

  • The dim_latent is a tuple, where each element corresponds to the latent dimensionality of a specific modality. This enables diverse latent representations to be learned for each data type while keeping a unified transformer backbone.
  • The modalitydefaultshape is likewise a tuple of shapes, matching the latent structure for each modality, to guide the model when a given modality lacks a formal shape or when models disagree on dimensionality.

Encoding and Decoding: Automatic Image Handling

One of the selling points of Transfusion is its automatic handling of encoding and decoding for image data. The repository demonstrates how to plug in simple encoders and decoders to illustrate the concept without relying on heavy external pipelines. A minimal example uses mock encoders/decoders to show end-to-end processing:

  • Define mock components

  • mock_encoder = nn.Conv2d(3, 384, 3, padding=1)

  • mock_decoder = nn.Conv2d(384, 3, 3, padding=1)

  • Create the Transfusion model with these components

  • model = Transfusion(

    numtexttokens = 12, dimlatent = 384, channelfirstlatent = True, modalitydefaultshape = (4, 4), modalityencoder = mockencoder, modalitydecoder = mock_decoder, transformer = dict(dim = 512, depth = 8) )

  • Prepare multi-modal inputs

  • textandimages = [ [randint(0, 12, (16,)), randn(3, 8, 8), randint(0, 12, (8,)), randn(3, 7, 7)], [randint(0, 12, (16,)), randn(3, 8, 5), randint(0, 12, (5,)), randn(3, 2, 16), randint(0, 12, (9,))] ]

  • Train and generate

  • loss = model(textandimages)

  • loss.backward()

  • onemultimodalsample = model.sample()

  • Optional viewing helper

  • printmodalitysample(onemultimodalsample)

The point of this example is not to claim that the mock encoder/decoder are production-ready, but to illustrate how automatic encoding/decoding integrates with the Transfusion interface. In a full setup, you would swap in your own image encoders (e.g., a learned VQ-VAE encoder) and decoders as needed.

Pretraining on Language: A Text-First Path

Transfusion supports a language-first pretraining path. If you want to ground the model in textual data before introducing other modalities, you can feed in text tokens directly and train the language modeling objective:

  • Language-only pretraining

  • model = Transfusion(

    numtexttokens = 256, dim_latent = 384, transformer = dict(dim = 512, depth = 8) ).cuda()

  • text = torch.randint(0, 256, (2, 1024)).cuda()

  • loss = model(text)

  • loss.backward()

  • Generating text conditioned on partial input

  • sampled = model.generatetextonly(text[:, :1], 1024)

This path is useful for establishing a robust linguistic backbone before linking to perceptual modalities such as images or audio. The design ensures that, even if other modalities lag behind in training, the language component can drive coherent token-level generation.

Examples and How to Run Them

To explore Transfusion in practice, several example scripts are available in the project root. The recommended workflow is straightforward:

  • Install dependencies for examples

  • pip install .[examples]

  • Run a training/example script

  • Python scripts named train{examplename}.py demonstrate the various modality scenarios, from single-modality image training to multi-modal setups.

  • pip install -U diffusers transformers accelerate scipy ftfy safetensors

These steps reflect a practical path from setup to experimentation, with the flexibility to adjust hyperparameters, shapes, and modality configurations as needed.

A Note on Citations and References

The repository includes a set of citations that anchors Transfusion within the broader research landscape. Some notable references include:

  • Transfusion: Predict the Next Token and Diffuse Images with One Multi-Modal Model (Zhou et al., 2024)
  • Works on weight decay, layer normalization, and reparameterization that appear in the surrounding literature
  • Papers on diffusion, all-words ViT backbones, mono-transformers for diffusion and autoregression, and related topics
  • A variety of arXiv and conference papers exploring consistency flow matching, hyper-connections, and related transformer innovations

These citations help situate Transfusion within ongoing conversations about multi-modal modeling, sampling strategies, and the mechanics of combining discrete token spaces with continuous latent representations.

Design Considerations and Practical Takeaways

  • Modularity: The Transfusion design emphasizes a modular approach to modalities, allowing you to plug in custom encoders/decoders or adjust latent shapes without rewriting core logic.
  • Flexibility: By supporting single- and multi-modality configurations, users can start small (text or images) and expand to additional data streams with minimal friction.
  • Latent-centric workflows: The model leverages latent representations to align disparate data forms, creating a shared space where token-based language models and image-like latents can interact.
  • Flow matching inspiration: While diffusion is a popular paradigm for image generation, Transfusion explores flow matching as an alternative that can yield different training dynamics and sampling behaviors. This choice emphasizes the ongoing exploration of optimization techniques for multi-modal synthesis.
  • Practicality: The repository includes practical patterns for training and sampling, as well as straightforward ways to incorporate simple encoders/decoders to illustrate end-to-end processing.

Potential Use Cases

  • Multimodal generation: Create coherent outputs that fuse text and images, or text with other data streams, in a single inference pass.
  • Multimodal understanding: Build systems that reason across modalities, such as text-conditioned image editing or narrative generation grounded in visual context.
  • Language-first pretraining: Ground a model in linguistic structure before expanding into perceptual modalities, achieving robust language capabilities prior to cross-modal learning.
  • Prototyping and research: Use the modular architecture to prototype new ideas around modality integration, latent conditioning, and reconstruction-based objectives.

Conclusion

Transfusion for PyTorch presents a compelling blueprint for building a unified, multi-modal model capable of handling text, images, and beyond through a shared latent space. By experimenting with flow matching in lieu of diffusion, the project invites researchers and practitioners to explore alternative dynamics for cross-modal generation and reconstruction. The repository’s design—characterized by modular encoders/decoders, flexible latent shapes, and an emphasis on practical training and sampling—offers a scalable path to increasingly capable multi-modal models. Whether you start with a simple one-modality setup or dive straight into a rich, multi-modal configuration, Transfusion provides a coherent framework that foregrounds extensibility, experimentation, and integration with the broader ecosystem of machine learning tooling and research.

Images from the Input

  • The primary image that accompanies this project is included at the top of this article: transfusion.png. This visual serves as a contextual anchor for the discussion of multi-modal modeling, illustrating the spirit of combining tokens and latents across modalities within a single architecture. The image reinforces the concept of a unified model that bridges language tokens with perceptual representations, a core idea behind Transfusion.

Practical Tips for Getting the Most Out of Transfusion

  • Start simple: Begin with a single modality (text or images) to understand the training dynamics before introducing a second modality.
  • Tune latent dimensions: Use dim_latent as a lever to balance capacity and computation. Multi-modal setups benefit from carefully chosen latent sizes per modality.
  • Experiment with modality shapes: modalitydefaultshape helps guide consistent dimensionality across modalities. Adjust shapes to match your data while preserving a shared transformer backbone.
  • Leverage pretraining: Language-first pretraining can provide a solid linguistic scaffold, which can improve downstream multi-modal synthesis and alignment.
  • Track sampling quality: When generating samples, pay attention to how the model handles cross-modal conditioning. Adjust the sampling strategy and conditioning prompts to refine outputs.

In Summary

Transfusion embodies a forward-thinking approach to multi-modal AI, blending the strengths of token-based language modeling with the expressive power of latent representations for perceptual data. While diffusion remains a powerful tool, this PyTorch implementation explores flow matching as an alternative, balancing theoretical elegance with practical usability. The project’s emphasis on modularity, extensibility, and practical experimentation makes it a valuable resource for researchers seeking to prototype, test, and iterate on unified multi-modal architectures. The included examples, straightforward installation, and thoughtful design choices provide a clear pathway from toy experiments to more ambitious cross-modal systems. As the landscape of multi-modal AI evolves, Transfusion stands as a thoughtful contribution that invites ongoing exploration and refinement.

Enjoying this project?

Discover more amazing open-source projects on TechLogHub. We curate the best developer tools and projects.

Project
transfusion-pytorch
Created
July 24
Last Updated
July 16, 2026 at 11:54 AM

Maintain Transfusion - PyTorch? Add the badge to your README

Show that the project is featured on TechLogHub and send readers to this write-up.

Featured on TechLogHub
[![Featured on TechLogHub](https://techloghub.com/badge-neutral.svg)](https://techloghub.com/open-source/transfusion-pytorch?utm_source=techloghub_badge&utm_medium=referral&utm_campaign=readme)

Find more projects like this

One email a week: new and trending developer tools, fresh comparisons, and what shipped. Unsubscribe in one click.