DEV Community

Cover image for Text-to-Video Without CUDA: Running LTX-2 on Apple Silicon
Jaime
Jaime

Posted on

Text-to-Video Without CUDA: Running LTX-2 on Apple Silicon

I found out about this cool model for Text to Video that can run locally.

A lot of packages expect an NVIDIA graphics card (CUDA); the laptop I'm using (Apple M4 Pro with 24 GB RAM) doesn't have one, but I was still able to make it work.

Note: At least 70GB of free space is needed.

https://github.com/garciadiazjaime/garciadiazjaime.github.io/raw/refs/heads/main/assets/2026-08-01-text-to-video-ltx2-m4-pro/video.mp4

  • Clone LTX-2 fork

https://github.com/garciadiazjaime/LTX-2-m4-pro

  • Install dependencies

If you need to install uv do: brew install uv

uv sync
Enter fullscreen mode Exit fullscreen mode
  • Get a huggingface.co Token

Create a .env file and paste the token

HF_TOKEN=[your token]
Enter fullscreen mode Exit fullscreen mode

Very important, otherwise the next step won't work

  • Download models
uv run python extra/download_model.py
Enter fullscreen mode Exit fullscreen mode

This might take a couple of minutes since it's downloading two models ~70GB.

  • Generate video
uv run python extra/text_to_video.py
Enter fullscreen mode Exit fullscreen mode

Now update the prompt, or the image and have fun generating your own videos!

The image in the fork was generated with AI. It's not needed; if you remove the image logic, the model will generate an avatar for you.

Resource Consumption

I had macmon running while the script generated the video.

  • Before starting, this is the laptop idle state.

machine state before running script

  • Ramp up

This is the first task that consumes significant resources on the laptop, it makes a simple, raw version of the video, not ready yet, with a lot of noise.

Note: this is not the video itself, it's data the model generates that eventually will be converted to a video

INFO:ltx_pipelines.utils.blocks:Running denoising loop (8 steps, 128x128 561 frames @ 24.0 fps)
100%|███████████████████████████████████████████████████████████████████████████████| 8/8 [04:25<00:00, 33.15s/it]
Enter fullscreen mode Exit fullscreen mode

first significant resource consumption

  • GPU work

This task is trying to polish the video till it gets the final version. It consumes more GPU simply because it now works with more pixels (128 -> 256), meaning more memory, hence more GPU.

  INFO:ltx_pipelines.utils.blocks:Running denoising loop (3 steps, 256x256 561 frames @ 24.0 fps)
100%|███████████████████████████████████████████████████████████████████████████████| 3/3 [01:39<00:00, 33.30s/it]
Enter fullscreen mode Exit fullscreen mode

more resources consumption

  • GPU spike

This task converts the model output into a real video. This requires less RAM and CPU, but there's a clear GPU spike because in this case, video processing is more GPU expensive than the model work.

Encoding video video.mp4 with 10 chunks
100%|█████████████████████████████████████████████████████████████████████████████| 10/10 [01:08<00:00,  6.88s/it]
INFO:ltx_pipelines.utils.media_io.encode:Video saved to extra/output/video.mp4
Enter fullscreen mode Exit fullscreen mode

gpu spike

Conclusion

While working on the script, there were times it stopped completely because of an out of memory error. Running models locally is challenging, specifically if they are video-related. Additionally, not having an NVIDIA card makes things harder because a lot of packages expect CUDA, and adapters always add extra complexity.

LTX-2 is fun, kudos to the team behind the project.

Top comments (0)