Repository navigation
[Model] Add circlestone-labs/Anima - #4083
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1e64bd1902
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| pipeline.enable_vae_tiling() | ||
|
|
||
| self._pipeline = pipeline | ||
| self._accept_call_kwargs = set(inspect.signature(pipeline.__call__).parameters.keys()) |
There was a problem hiding this comment.
Preserve ModularPipeline runtime kwargs
When the native Anima path is used, pipeline is a Diffusers ModularPipeline, whose __call__ signature is generic (state, output, **kwargs) rather than listing model inputs like prompt, height, or num_inference_steps. Caching that signature here makes _build_call_kwargs() later reject and drop the actual request fields, so a normal text-to-image request reaches the modular blocks without the required prompt and fails before generation. For modular pipelines this needs to allow block input names (or accept all kwargs) instead of using inspect.signature(pipeline.__call__) directly.
Useful? React with 👍 / 👎.
|
Doing a major refactoring , not ready for review yet! |
|
Hi @akshatvishu, may I ask when this PR will be ready? |
|
@timzsu It's ready review! The benchmarking code is included temporarily for validating this port. Once we're happy with the implementation, I'll run the benchmarks against the native diffuser implementation and remove the benchmarking code afterward before merging! |
|
Hi @akshatvishu, is it possible to split the performance optimizations from the model support? The current PR is too big (>3k lines) and hard to review. I suggest keeping the first PR as an integration with no extra optimizations. Then you can create separate PRs for offloading, quantization, and cache based on it. |
Signed-off-by: akshatvishu <akshatnayak197@gmail.com>
Omni ReviewBot triage noteAutomated triage of commit
These are automated triage suggestions only — the final decision belongs to the maintainers. |
Omni ReviewBot: no human activity for 15 days@akshatvishu this pull request has had no human commit, comment or review since 2026-08-31. Per repository policy it may be closed if it stays inactive. To keep it moving, any one of these is enough: push an update, reply to the open blocker, or post the current plan and timeline. |
Signed-off-by: akshatvishu <akshatnayak197@gmail.com> # Conflicts: # docs/models/supported_models.md # examples/offline_inference/text_to_image/text_to_image.py # tests/entrypoints/test_utils.py # vllm_omni/diffusion/data.py # vllm_omni/diffusion/registry.py # vllm_omni/entrypoints/utils.py
|
Hey @alex-jw-brooks @tzhouam @yuanheng-zhao , following up on the suggestion to replace the Anima allowlist with a local-file plus explicit-class check. My concern is that an explicit class name does not guarantee its loader supports checkpoint files. We could declare that support in the existing Would you prefer the simpler file-plus-class rule or the explicit support check? The native loading path and previously suggested worker guard would stay as they are. |
|
fix the CI error please, thanks |
Signed-off-by: akshatvishu <akshatnayak197@gmail.com>
|
@tzhouam CI was failing because Anima was missing shared tiny-model test settings; I added them and also fixed a CLI bug that treated local checkpoint files as HF model IDs. Can you please re-run the CI? |
|
still failed, please pass the tests locally |
Signed-off-by: akshatvishu <akshatnayak197@gmail.com> # Conflicts: # vllm_omni/config/resolver.py # vllm_omni/entrypoints/cli/serve.py
|
Fixed the conflicts! The CI show 3 failure , none of which is related to changes made in this PR @tzhouam ! Short summary of CI failures:
Checked against |
Signed-off-by: akshatvishu <akshatnayak197@gmail.com>
Signed-off-by: akshatvishu <akshatnayak197@gmail.com> Signed-off-by: Matthieu Laneuville <matthieu.laneuville@surf.nl>
Signed-off-by: akshatvishu <akshatnayak197@gmail.com>
Resolves #3658
Adds native diffusion support for
circlestone-labs/Anima, a Cosmos-style text-to-image model as a local single-file safetensors checkpoint.The new
AnimaPipelineloads the transformer and text-conditioner weights from the checkpoint, maps the original Cosmos-style keys when needed and reuses the existing Diffusers-style component directory for the text encoder, tokenizers, VAE and scheduler.TP, SP, CFG parallel, HSDP, Cache-DiT/TeaCache, quantization, CPU/layerwise offload and step execution are left for follow-up work.
Key Changes
Native Anima Pipeline
vllm_omni/diffusion/models/anima/withAnimaPipeline,AnimaTransformer3DModelandAnimaTextConditioner.custom_pipeline_argsfor Anima-specific paths, for examplecomponents_path.Native Single-File Resolution
AnimaPipelinein the diffusion registry.AnimaModularPipeline, toAnimaPipeline.Worker / Custom Pipeline Args
custom_pipeline_argsworker path soskip_load_modelandre_init_pipeline()only run whenpipeline_classis set.custom_pipeline_argswithout being treated as dynamic custom pipelines.Tests: