World's First 13B Video Diffusion Model on PowerPC Architecture
Run state-of-the-art AI video generation on IBM POWER8 servers with 320GB RAM
Features • Quick Start • Hardware • Results • Technical Details
# Clone the repo
git clone https://github.com/Scottcjn/ltx-video-power8.git
cd ltx-video-power8
# Download models (you need both)
# 1. 13B distilled model → ~/models/ltx-video-13b/ltxv-13b-0.9.8-distilled.safetensors
# 2. Full LTX-Video model → ~/models/ltx-video-full/
# Run inference
cd scripts
python3 ltx_13b_hybrid.py
| Component | Minimum | Recommended |
|---|---|---|
| CPU | IBM POWER8 | POWER8 S824 (dual 8-core) |
| RAM | 64GB | 320GB |
| Storage | 50GB | 100GB SSD |
| OS | Ubuntu 20.04 | Ubuntu 20.04 LTS |
The 13B distilled LTX-Video model uses different key names than standard diffusers:
| Checkpoint Key | Diffusers Key |
|---|---|
patchify_proj.* |
proj_in.* |
attn*.q_norm.* |
attn*.norm_q.* |
attn*.k_norm.* |
attn*.norm_k.* |
adaln_single.* |
time_embed.* |
Our scripts handle this mapping automatically.
ltx_13b_full.pyComplete single-threaded pipeline. Safe but slow. - Resolution: 256×256 | Frames: 9 | Steps: 4 - Time: ~30 seconds
ltx_13b_hybrid.py ⭐ RecommendedHybrid multi-threaded pipeline with 5.7× speedup. - Multi-threading for transformer (safe on POWER8) - Single-thread for VAE decode (required) - Time: ~65 seconds vs 370 seconds
ltx_13b_hires.pyHigh-resolution generation. - Resolution: 512×512 | Frames: 17 | Steps: 8 - Time: ~54 minutes
| Configuration | Resolution | Frames | Time | Output |
|---|---|---|---|---|
| Single-thread | 256×256 | 9 | 30s | 511KB |
| Hybrid | 256×256 | 9 | 65s | 531KB |
| High-res | 512×512 | 17 | 54min | 3.9MB |
256×256 Preview
"A glowing crystal rotating slowly in darkness"
|
512×512 High Resolution
"A majestic phoenix rising from flames"
|
POWER8 exhibits stack smashing errors with multi-threaded PyTorch in certain code paths (particularly VAE decode):
# Force single-threaded for VAE
os.environ["OMP_NUM_THREADS"] = "1"
torch.set_num_threads(1)
The hybrid script dynamically switches between multi-threaded (transformer) and single-threaded (VAE) modes.
The diffusers transformer expects pre-patchified input:
def pack_latents(latents, patch_size=1, patch_size_t=1):
# [B, C, F, H, W] → [B, F*H*W, C]
...
Rotary position embeddings expect latent-space dimensions, not video dimensions:
# Correct: pass latent dimensions
num_frames = (FRAMES - 1) // 8 + 1 # latent frames
height = RESOLUTION // 32 # latent height
width = RESOLUTION // 32 # latent width
torch>=2.1.0
diffusers>=0.32.0
transformers>=4.39.0
safetensors
pillow
numpy
| Project | Description |
|---|---|
| llama-cpp-power8 | AltiVec/VSX optimized llama.cpp for POWER8 |
| nvidia-power8-patches | Modern NVIDIA drivers for POWER8 via OCuLink |
| power8-projects | Ubuntu 22.04 build, PSE LLM, Darwin cross-compile |
MIT License
Made with ⚡ by Elyan Labs
Proving that legacy hardware can run cutting-edge AI
$ claude mcp add ltx-video-power8 \
-- python -m otcore.mcp_server <graph>