tt-animatediff on Tenstorrent p150
AnimateDiff text-to-video on Tenstorrent Blackhole: a TTNN Stable Diffusion 1.4 UNet with cross-frame temporal attention, served over HTTP as 512x512 GIF loops. Offers style LoRAs, LCM-LoRA fast sampling, prompt travel, latent chaining, per-step previews and an optional MotionAdapter. Architecture: Stable Diffusion 1.4 UNet (TTNN) with cross-frame temporal attention.
Runs on Tenstorrent p150 โ see the serving profiles below.
Packaged and published with tt-model-manager 0.1.0 (manifest schema 5.1).
At a glance
| Hardware | p150 |
| License | creativeml-openrail-m |
Intended use
Short looping text-to-video clips, style experiments with SD 1.5 LoRAs, and fast previews with LCM.
Prerequisites
- The Tenstorrent CLI,
tt:uv tool install tenstorrent(or use tt-model alone, see the Quickstart) - Docker
- Tenstorrent hardware: p150
Quickstart
tt serve episod/tt-animatediff-container-v5.1
tt serve downloads the Docker image and the CompVis/stable-diffusion-v1-4 weights (into your HF cache; they are not in the image), then starts the model's own HTTP server on port 20000 (or the next free port, if that one is busy). The first start compiles kernels for your device, which takes several minutes; the server is ready when it logs Application startup complete.
Without tt-cli: tt-model serve episod/tt-animatediff-container-v5.1.
Serving profiles
Select a different serving profile using --profile.
| profile | hardware | mesh | description |
|---|---|---|---|
plain |
p150 | P150 | The plain model only. No LoRA catalog and no motion adapter. |
full (default) |
p150 | P150 | Plain model plus a LoRA catalog (pixel, pixel-fast, lcm) and the Phase 3 motion adapter. |
Capabilities
This package exposes the model's own HTTP server on port 20000, not an OpenAI-compatible chat API โ its request and response shapes are the model's own. See the author's notes for the payload it expects.
POST /v1/videos/generations returns a base64 GIF. Fields beyond prompt, num_frames,
num_inference_steps, guidance_scale and seed: lora (a name from GET /v1/models),
prompt_schedule, sampler (pndm or euler), chain_save / chain_from / chain_alpha,
motion_adapter (+ _alpha, _skip), preview / preview_every (read progress from
GET /v1/videos/preview) and temporal_alpha. The full profile (default) offers the
pixel, pixel-fast and lcm LoRA variants and the motion adapter; --profile plain offers
neither. A variant that includes the LCM-LoRA defaults to 4 steps and guidance 1.5 when the
request leaves them out.
Expected performance
One Blackhole chip of a P300c pair, 8 frames at 512x512, warm, median of 3: 15.3 s at 25 steps, 12.8 s at 20, 8.7 s at 12. A style LoRA costs +0.5 s. An LCM variant runs 4 steps in 4.1 s (3.7x faster than 25 steps); style + LCM takes 4.3 s. Prompt schedule +0.2 s, chaining +0.1 s, per-step preview +4.9 s at 20 steps. The first request after start compiles kernels and took 119.6 s. Measured through this container image with scripts/benchmark_modes.py (docs/LORA.md, "Every served mode, timed").
Limitations
One chip, 512x512 only. LoRAs must be single kohya-format SD 1.5 UNet files; SDXL, LoHa, LoKr and DoRA files are refused at startup. LCM clips are less frame-coherent than 25-step clips. The MotionAdapter takes about 24 s for 2 frames at 6 steps with nothing skipped (alpha 0 is just as slow) and 3.4 s with up1 and up2 skipped. The first request to each LoRA variant is about 1.4 s slower than the following ones. No CPU, simulator or Lightning-UNet modes here.
Out of scope: Image-to-video, resolutions other than 512x512, multi-chip or multi-user throughput, and SDXL checkpoints or LoRAs.
The full profile downloads third-party LoRA files and the motion adapter from the Hugging Face Hub at startup, and a file that fails to load stops the server before it reports ready. Check each LoRA's own license before use. Output is AI-generated video and can reproduce biases of the SD 1.4 training data.
Licensing
The weights are CompVis/stable-diffusion-v1-4 under the CreativeML OpenRAIL-M license, fetched at start and not bundled. The TTNN port and serving code in code/ are Apache-2.0. LoRA files carry their own licenses.
Related packages
Source and docs at https://github.com/tenstorrent/tt-animatediff. The diffusers custom pipeline and v6 thin bundle are episod/tt-animatediff.
Feedback
Questions or problems with this package: open a discussion at https://huggingface.co/episod/tt-animatediff-container-v5.1/discussions โ that is what reaches its author. A problem with the tt tooling itself: tt report issue (collects your environment and opens a prefilled issue against tenstorrent/tt-cli). Product feedback: support@tenstorrent.com.
Provenance
The exact sources the image was built from โ code/ in this repo is byte-identical to the model code inside the image:
| component | built from |
|---|---|
| tt-metal | 9f9cd4fd590f4b606bd0981a4fe0b6403eb38ec9 |
code/ digest |
70f09d92f774f3f7 (sha256, first 16 hex digits) |
| built | 2026-10-15T19:53:23+00:00 by tt-model 0.1.0 |
Model tree for episod/tt-animatediff-container-v5.1
Base model
CompVis/stable-diffusion-v1-4