Understanding the FLAME/fly runner model for container dependencies

Apologies if this is obvious, but I am trying to understand Fly, Flame and dependencies. The tl;dr is that I’m trying to scale a large amount of image captioning similar to Chris’s recent talk. The bit that is confusing me is how to install container dependencies such as FFmpeg and Ollama.

The mental model I’ve developed so far from watching talks and reading docs is as follows:

  1. KinoFlame needs to run inside Fly so that it can connect easily to the nodes
  2. Therefore, I should switch my Livebook to Remote/Fly-hosted
  3. This creates a machine using a livebook image matching the desktop version

Where my mental model ends is on FLAME runner instances. The bits confusing me:

  1. FLAME documentation implies the image is by default the same as the calling app, though it is possible to override
  2. In theory, if I want to create thumbnails using FFmpeg, I will need that installed. Outside of Livebook, I would just make this part of the application Dockerfile even if it’s only on FLAME nodes.
  3. But this doesn’t seem possible in the Livebook ecosystem because the parent image is either “Livebook” or “Livebook + CUDA”
  4. I’m also not sure how FLAME nodes find each other – the bit that is confusing is that you can specify a custom image, but then I’m not sure what the constraints are for that image? Same Elixir version? Must join a cluster? etc.

Somewhat ironically, what I need to do is pretty much exactly what Chris demo’d recently (except I’m transcribing audio as well – you’d be surprised how much better the summaries are with audio). I’m just missing a piece of the puzzle.

Thanks in advance,
Brendon.