Skip to content

[Test] Add Stable Audio offline e2e TeaCache Test#2377

Merged
hsliuustc0106 merged 29 commits into
vllm-project:mainfrom
zhangj1an:jian/add_test_teacache
Apr 14, 2026
Merged

[Test] Add Stable Audio offline e2e TeaCache Test#2377
hsliuustc0106 merged 29 commits into
vllm-project:mainfrom
zhangj1an:jian/add_test_teacache

Conversation

@zhangj1an
Copy link
Copy Markdown
Contributor

@zhangj1an zhangj1an commented Mar 31, 2026

PLEASE FILL IN THE PR DESCRIPTION HERE ENSURING ALL CHECKLIST ITEMS (AT THE BOTTOM) HAVE BEEN CONSIDERED.

Purpose

This PR adds the Stable-Audio-Open offline e2e TeaCache test as part of the diffusion-feature L4 test coverage effort tracked in #1832.

For Stable-Audio-Open, TeaCache (#1314) is currently the only supported diffusion acceleration feature in vllm-omni. Other diffusion features listed in #1217, such as Tensor Parallel (#1406), Cache-DiT (#1341), CFG parallelism, VAE parallelism, and HSDP, are not yet supported for this model, so they are intentionally out of scope for this PR. Extended coverage will be covered in future PRs.

Key changes

  • for Stable Audio test, split into L2 and L4 level. for L4 level, combine quantisation and cache into the same test. right now cache_backend="tea_cache"
  • update Stable-Audio-Open documentation / support matrix to mark TeaCache as supported
  • update Stable Audio configs to expose --cache-backend tea_cache and --tea-cache-rel-l1-thresh, following [skip ci][Doc] Refine the Diffusion Features User Guide #1928

Test plan

Run:

pytest -s -v tests/e2e/offline_inference/test_stable_audio.py tests/e2e/offline_inference/test_stable_audio_expansion.py

Test result

2 passed, 16 warnings in 32.91s.

============================= test session starts ==============================
platform linux -- Python 3.11.10, pytest-9.0.2, pluggy-1.6.0 -- /root/vllm-omni/.venv/bin/python
cachedir: .pytest_cache
rootdir: /root/vllm-omni
configfile: pyproject.toml
plugins: anyio-4.13.0, mock-3.15.1, cov-7.1.0, asyncio-1.3.0
asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collecting ... collected 2 items

tests/e2e/offline_inference/test_stable_audio.py::test_stable_audio[linyueqian/stable_audio_random] PASSED [ 50%]
tests/e2e/offline_inference/test_stable_audio_expansion.py::test_stable_audio_quantization_and_teacache[linyueqian/stable_audio_random] PASSED [100%]

=============================== warnings summary ===============================
<frozen importlib._bootstrap>:241
  <frozen importlib._bootstrap>:241: DeprecationWarning: builtin type SwigPyPacked has no __module__ attribute

<frozen importlib._bootstrap>:241
  <frozen importlib._bootstrap>:241: DeprecationWarning: builtin type SwigPyObject has no __module__ attribute

.venv/lib/python3.11/site-packages/torch/jit/_script.py:362: 14 warnings
  /root/vllm-omni/.venv/lib/python3.11/site-packages/torch/jit/_script.py:362: DeprecationWarning: `torch.jit.script_method` is deprecated. Please switch to `torch.compile` or `torch.export`.
    warnings.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
======================= 2 passed, 16 warnings in 32.91s ========================
sys:1: DeprecationWarning: builtin type swigvarlink has no __module__ attribute

cc: @fhfuih @akshatvishu @linyueqian


Essential Elements of an Effective PR Description Checklist
  • The purpose of the PR, such as "Fix some issue (link existing issues this PR will resolve)".
  • The test plan. Please provide the test scripts & test commands. Please state the reasons if your codes don't require additional test scripts. For test file guidelines, please check the test style doc
  • The test results. Please paste the results comparison before and after, or the e2e results.
  • (Optional) The necessary documentation update, such as updating supported_models.md and examples for a new model. Please run mkdocs serve to sync the documentation editions to ./docs.
  • (Optional) Release notes update. If your change is user-facing, please update the release notes draft.

BEFORE SUBMITTING, PLEASE READ https://github.com/vllm-project/vllm-omni/blob/main/CONTRIBUTING.md (anything written below this line will be removed by GitHub Actions)

Signed-off-by: Zhang <jianmusings@gmail.com>
Signed-off-by: Zhang <jianmusings@gmail.com>
@zhangj1an zhangj1an marked this pull request as ready for review March 31, 2026 11:49
Comment thread tests/e2e/offline_inference/test_stable_audio_model.py Outdated
Signed-off-by: Zhang <jianmusings@gmail.com>
Copy link
Copy Markdown
Contributor

@fhfuih fhfuih left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the contribution. The code itself generally looks good to me. But according to our convention, the expanded coverage test (L4) should be placed in another file test_stable_audio_expansion.

(Also, could you help rename this file to test_stable_audio to match the new L2 test naming convention as well? Thanks)

And the L4 test should have the label advanced_model instead of core_model. You can refer to .buildkite/test-ready and test-merge YAML files to see which and how tests are selected. You can also copy the pytest command with --collect-only to test yourself without actually running.

For the run-validate helper function, could you please also remove this function and reuse assert_audio_valid function in tests/conftest.py? This function can be reused in both two files. This function is currently not used anywhere else (because there is no other audio generation models), so you can debug or change its signature per your need.

Finally, it is possible to combine quantization and cache in one test case in its L4 test? This way the test coverage is more complete.

Thanks for your attention. I presume the maintenance of this model has been stale for quite a while now, and now is a good change to consolidate the new test guidance 😁

Signed-off-by: Zhang <jianmusings@gmail.com>
Signed-off-by: Zhang <jianmusings@gmail.com>
@zhangj1an
Copy link
Copy Markdown
Contributor Author

Hey @fhfuih, thanks for the comprehensive feedback!

I split the original test file into test_stable_audio and test_stable_audio_expansion, also applied all your suggestions. I re-ran the test and they still work, as shown in updated test result in PR description.

Signed-off-by: Zhang <jianmusings@gmail.com>
@zhangj1an zhangj1an requested review from fhfuih and yenuo26 April 2, 2026 03:25
Copy link
Copy Markdown
Contributor

@fhfuih fhfuih left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the contribution. Looks good to me now. A few comments for others who stumble on this PR:

  • Since #1794 is still not available, stable audio test uses offline mode.
  • The offline test execution helper omni_runner as a counterpart to omni_server does not currently support diffusion yet. @yenuo26 and I are aware of this matter and planning to ship update with some other refactoring. It is currently good for now that this tests creates it own helper

@fhfuih
Copy link
Copy Markdown
Contributor

fhfuih commented Apr 2, 2026

Pending a nightly-test tag to run CI. @wtomin @congw729 PTAL

@congw729 congw729 added the nightly-test label to trigger buildkite nightly test CI label Apr 2, 2026
@zhangj1an

This comment was marked as resolved.

@zhangj1an
Copy link
Copy Markdown
Contributor Author

Hey @yenuo26, the CI has passed, please help me add the ready label. Thank you! 🙌

@yenuo26 yenuo26 added ready label to trigger buildkite CI and removed nightly-test label to trigger buildkite nightly test CI labels Apr 2, 2026
Copy link
Copy Markdown
Collaborator

@lishunyang12 lishunyang12 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good overall, just a minor nit

Comment thread tests/e2e/offline_inference/stable_audio_offline_utils.py Outdated
Comment thread .buildkite/test-nightly.yml Outdated
Comment thread tests/e2e/offline_inference/test_stable_audio_expansion.py Outdated
Comment thread .buildkite/test-merge.yml Outdated
Comment thread tests/e2e/offline_inference/test_stable_audio_expansion.py Outdated
Signed-off-by: Zhang Jian <jianmusings@gmail.com>
Comment thread .buildkite/test-merge.yml
@akshatvishu
Copy link
Copy Markdown
Contributor

Hey @zhangj1an ! cache-dit (#1341) got merged today, so feel free to expand the tests for it. If you’re busy with other work, I’m happy to add them myself.

Copy link
Copy Markdown
Collaborator

@lishunyang12 lishunyang12 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Fix conflict please.

@zhangj1an zhangj1an force-pushed the jian/add_test_teacache branch from 3101832 to 9b36b0b Compare April 11, 2026 23:51
Signed-off-by: Zhang <jianmusings@gmail.com>
…_audio

docs/user_guide/examples/offline_inference/*.md is produced at build time;
tea_cache usage remains documented in examples/offline_inference/text_to_audio/README.md.

Signed-off-by: Zhang <jianmusings@gmail.com>
@zhangj1an

This comment was marked as resolved.

@zhangj1an

This comment was marked as resolved.

@fhfuih
Copy link
Copy Markdown
Contributor

fhfuih commented Apr 13, 2026

Hey @zhangj1an ! cache-dit (#1341) got merged today, so feel free to expand the tests for it. If you’re busy with other work, I’m happy to add them myself.

Hey @akshatvishu, congrats on stable audio cache-dit (#1341) getting merged! 🚀 I’ll add the unit test today. 👍

Update: I think it may not be necessary to add a cache-dit unit test for Stable Audio, since it’s not a high-priority model and this PR already covers FP8 + TeaCache. What do you think? @fhfuih

Otherwise, the new test can be added in tests/e2e/offline_inference/test_stable_audio_expansion.py as below.

Agree. No need to cover the complete feature set for this model. Just one or two most common one will do. I think this PR is all good for now. And we can ignore the AMD CI.

And it is OK to not always keep the branch updated (if there is no conflict). Otherwise it keeps aborting CI test and restarting a new one. The repetitive CI request also wastes the GPU resource.

Let's wait for the current version to pass the CI (the CUDA one)

zhangj1an and others added 4 commits April 13, 2026 07:21
…l.py deleted

The test was replaced by test_stable_audio_expansion.py on this branch.
Applied main's refactor (remove sys.path hack) to the expansion test.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Zhang <jianmusings@gmail.com>
@fhfuih
Copy link
Copy Markdown
Contributor

fhfuih commented Apr 14, 2026

Seems the primary CI has passed: https://buildkite.com/vllm/vllm-omni/builds/6480/steps/canvas

But the doc CI fails due to occasional timeout. I think it is OK to remove the nightly tag and put a ready tag, trigger a quick rerun and merge. @wtomin @Gaohan123 PTAL Thanks

@hsliuustc0106 hsliuustc0106 merged commit 17acd05 into vllm-project:main Apr 14, 2026
7 of 8 checks passed
y123456y78 pushed a commit to y123456y78/vllm-omni that referenced this pull request Apr 15, 2026
Signed-off-by: Zhang <jianmusings@gmail.com>
Signed-off-by: Zhang Jian <jianmusings@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
lvliang-intel pushed a commit to lvliang-intel/vllm-omni that referenced this pull request Apr 20, 2026
Signed-off-by: Zhang <jianmusings@gmail.com>
Signed-off-by: Zhang Jian <jianmusings@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
lengrongfu pushed a commit to lengrongfu/vllm-omni that referenced this pull request May 1, 2026
Signed-off-by: Zhang <jianmusings@gmail.com>
Signed-off-by: Zhang Jian <jianmusings@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
clodaghwalsh17 pushed a commit to clodaghwalsh17/nm-vllm-omni-ent that referenced this pull request May 12, 2026
Signed-off-by: Zhang <jianmusings@gmail.com>
Signed-off-by: Zhang Jian <jianmusings@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready label to trigger buildkite CI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants