The model code was spread across eight crates that had grown into each other:
ggml and cuda and mlx each owned part of a tensor runtime, llama and tts and
voice2 each owned part of a model, and libs/diffusion owned everything else.
They are now one tree with an explicit shape:
libs/ai/cuda — kernels and launch surface
libs/ai/metal — Metal shaders and the shim
libs/ai/llm — the language-model runtime (sessions, lanes, contexts,
the CUDA and Metal executors, the compiled Metal path)
libs/ai/models/ — common, flux, h3, music, paint, speech, stems, vision
libs/diffusion is not deleted but demoted: what remains is the VALIDATOR
crate — several dozen `*_validate.rs` oracles that check a native
implementation against a reference, which is where they belong now that the
implementations live next door.
The functional work inside the move is mostly in the LLM runtime: N lanes that
draft while one verify batch serves all of them, per-slot prefill over a shared
folded attention arena, speculation that survives batching, and a scheduler
that reports rather than publishes. And in the CUDA build: a machine without
usable CUDA must still LINK (and say so), the default kernel arch is the
building machine's GPU, `NO_CUDA` forces the stub even where the toolkit
exists, and kernels compile in parallel with progress.
libs/video_flow is new here: classical optical flow estimation and the `mkfl`
motion-field payload — a flow field measured from a clip without a model,
which is what drives free-rate bounce-looping playback and the uprez/tween
enhance pipe.
28 lines
692 B
TOML
28 lines
692 B
TOML
# The AI model workspace: loader (disk), cuda/metal (kernel+residency
|
|
# stores), job (the one cross-model contract), llm + models/* (per-family
|
|
# model crates). Standalone workspace like libs/diffusion before it; the
|
|
# asset-ai service and root-workspace apps reach in via path deps.
|
|
# Plan of record: /aiarch.md
|
|
[workspace]
|
|
members = [
|
|
"loader",
|
|
"cuda",
|
|
"metal",
|
|
"job",
|
|
"llm",
|
|
"models/common",
|
|
"models/paint",
|
|
"models/h3",
|
|
"models/flux",
|
|
"models/vision",
|
|
"models/rig",
|
|
"models/motion",
|
|
"models/rife",
|
|
"models/sfx",
|
|
"models/music",
|
|
"models/speech",
|
|
"models/splat",
|
|
"models/stems",
|
|
"models/trellis",
|
|
]
|
|
resolver = "2"
|